summaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/1upkeyboards/1up60hse/config.h4
-rw-r--r--keyboards/1upkeyboards/1up60hse/keymaps/via/keymap.c91
-rw-r--r--keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md1
-rw-r--r--keyboards/1upkeyboards/1up60hse/keymaps/via/rules.mk3
-rw-r--r--keyboards/1upkeyboards/1up60hse/rules.mk12
-rw-r--r--keyboards/1upkeyboards/1up60hte/config.h4
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c47
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/via/rules.mk2
-rw-r--r--keyboards/1upkeyboards/1up60hte/rules.mk9
-rw-r--r--keyboards/1upkeyboards/1up60rgb/config.h4
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/via/keymap.c34
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/via/rules.mk2
-rw-r--r--keyboards/1upkeyboards/1up60rgb/rules.mk8
-rw-r--r--keyboards/1upkeyboards/super16/rules.mk12
-rw-r--r--keyboards/2_milk/rules.mk8
-rw-r--r--keyboards/2key2crawl/rules.mk8
-rw-r--r--keyboards/30wer/rules.mk8
-rw-r--r--keyboards/40percentclub/25/rules.mk12
-rw-r--r--keyboards/40percentclub/4x4/rules.mk12
-rw-r--r--keyboards/40percentclub/5x5/rules.mk12
-rw-r--r--keyboards/40percentclub/6lit/rules.mk12
-rw-r--r--keyboards/40percentclub/foobar/rules.mk12
-rw-r--r--keyboards/40percentclub/gherkin/rules.mk8
-rw-r--r--keyboards/40percentclub/half_n_half/rules.mk12
-rw-r--r--keyboards/40percentclub/i75/rules.mk12
-rw-r--r--keyboards/40percentclub/luddite/config.h2
-rw-r--r--keyboards/40percentclub/luddite/rules.mk8
-rw-r--r--keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c2
-rw-r--r--keyboards/40percentclub/mf68/rules.mk8
-rw-r--r--keyboards/40percentclub/nano/config.h3
-rw-r--r--keyboards/40percentclub/nano/rules.mk8
-rw-r--r--keyboards/40percentclub/nein/rules.mk12
-rw-r--r--keyboards/40percentclub/nori/rules.mk12
-rw-r--r--keyboards/40percentclub/tomato/rules.mk8
-rw-r--r--keyboards/40percentclub/ut47/rules.mk10
-rw-r--r--keyboards/6ball/rules.mk8
-rw-r--r--keyboards/7skb/rev1/config.h2
-rw-r--r--keyboards/8pack/rules.mk8
-rw-r--r--keyboards/9key/rules.mk8
-rw-r--r--keyboards/abstract/ellipse/rev1/config.h2
-rw-r--r--keyboards/abstract/ellipse/rev1/rules.mk12
-rw-r--r--keyboards/acr60/rules.mk8
-rw-r--r--keyboards/adkb96/rev1/config.h2
-rw-r--r--keyboards/adkb96/rules.mk8
-rw-r--r--keyboards/aeboards/aegis/rules.mk10
-rw-r--r--keyboards/aeboards/ext65/rules.mk10
-rw-r--r--keyboards/ai03/lunar/rules.mk12
-rw-r--r--keyboards/ai03/orbit/config.h2
-rw-r--r--keyboards/ai03/orbit/rules.mk12
-rw-r--r--keyboards/ai03/quasar/rules.mk12
-rw-r--r--keyboards/ai03/soyuz/rules.mk12
-rw-r--r--keyboards/akb/eb46/rules.mk12
-rw-r--r--keyboards/akb/raine/keymaps/mehadviceguy/keymap.c75
-rw-r--r--keyboards/akb/raine/keymaps/mehadviceguy/readme.md68
-rw-r--r--keyboards/akb/raine/rules.mk12
-rw-r--r--keyboards/al1/rules.mk10
-rw-r--r--keyboards/alf/dc60/rules.mk12
-rw-r--r--keyboards/alf/x11/rules.mk12
-rw-r--r--keyboards/alf/x2/rules.mk8
-rwxr-xr-xkeyboards/alpha/rules.mk8
-rw-r--r--keyboards/alps64/config.h2
-rw-r--r--keyboards/alps64/rules.mk8
-rwxr-xr-xkeyboards/alu84/rules.mk8
-rw-r--r--keyboards/amj40/keymaps/default/rules.mk8
-rwxr-xr-xkeyboards/amj40/rules.mk12
-rw-r--r--keyboards/amj60/rules.mk12
-rw-r--r--keyboards/amj96/config.h16
-rw-r--r--keyboards/amj96/rules.mk14
-rw-r--r--keyboards/amjkeyboard/amj66/rules.mk10
-rw-r--r--keyboards/amjpad/rules.mk12
-rw-r--r--keyboards/angel17/alpha/rules.mk12
-rw-r--r--keyboards/angel17/rev1/rules.mk12
-rw-r--r--keyboards/angel17/rules.mk12
-rw-r--r--keyboards/angel64/rules.mk12
-rw-r--r--keyboards/ares/ares.c33
-rw-r--r--keyboards/ares/config.h4
-rw-r--r--keyboards/ares/rules.mk2
-rw-r--r--keyboards/at101_blackheart/rules.mk8
-rw-r--r--keyboards/at_at/660m/chconf.h4
-rw-r--r--keyboards/at_at/660m/rules.mk3
-rw-r--r--keyboards/atomic/rules.mk8
-rw-r--r--keyboards/atreus/atreus.h2
-rw-r--r--keyboards/atreus/keymaps/ibnuda/config.h5
-rw-r--r--keyboards/atreus/keymaps/ibnuda/keymap.c258
-rw-r--r--keyboards/atreus/keymaps/ibnuda/rules.mk7
-rw-r--r--keyboards/atreus/keymaps/ridingqwerty/keymap.c143
-rw-r--r--keyboards/atreus/keymaps/ridingqwerty/rules.mk15
-rw-r--r--keyboards/atreus/promicro/config.h40
-rw-r--r--keyboards/atreus/promicro/promicro.c16
-rw-r--r--keyboards/atreus/promicro/promicro.h (renamed from keyboards/mechlovin/hannah910/keymaps/default/config.h)4
-rw-r--r--keyboards/atreus/promicro/rules.mk12
-rw-r--r--keyboards/atreus/readme.md5
-rw-r--r--keyboards/atreus/rules.mk12
-rw-r--r--keyboards/atreus62/keymaps/xyverz/keymap.c3
-rw-r--r--keyboards/atreus62/keymaps/xyverz/readme.md4
-rw-r--r--keyboards/atreus62/rules.mk8
-rw-r--r--keyboards/baguette/rules.mk12
-rw-r--r--keyboards/bantam44/rules.mk8
-rw-r--r--keyboards/bfake/bfake.c34
-rw-r--r--keyboards/bfake/config.h9
-rw-r--r--keyboards/bfake/rules.mk2
-rwxr-xr-xkeyboards/bigseries/rules.mk8
-rwxr-xr-xkeyboards/bigswitch/rules.mk8
-rw-r--r--keyboards/blackplum/config.h2
-rw-r--r--keyboards/blockey/rules.mk10
-rw-r--r--keyboards/bm16a/rules.mk12
-rw-r--r--keyboards/bm43a/rules.mk12
-rw-r--r--keyboards/boardwalk/config.h2
-rw-r--r--keyboards/boardwalk/rules.mk10
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk8
-rw-r--r--keyboards/bpiphany/frosty_flake/rules.mk8
-rw-r--r--keyboards/bpiphany/kitten_paw/rules.mk8
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk8
-rw-r--r--keyboards/bpiphany/pegasushoof/rules.mk8
-rw-r--r--keyboards/bpiphany/sixshooter/rules.mk10
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk8
-rw-r--r--keyboards/bpiphany/tiger_lily/rules.mk8
-rw-r--r--keyboards/bpiphany/unloved_bastard/rules.mk10
-rw-r--r--keyboards/bthlabs/geekpad/rules.mk12
-rw-r--r--keyboards/business_card/alpha/rules.mk12
-rw-r--r--keyboards/business_card/beta/rules.mk12
-rw-r--r--keyboards/business_card/rules.mk12
-rw-r--r--keyboards/butterstick/rules.mk6
-rwxr-xr-xkeyboards/c39/rules.mk8
-rw-r--r--keyboards/candybar/chconf.h4
-rw-r--r--keyboards/candybar/rules.mk4
-rw-r--r--keyboards/cannonkeys/an_c/chconf.h4
-rw-r--r--keyboards/cannonkeys/an_c/config.h6
-rw-r--r--keyboards/cannonkeys/an_c/rules.mk4
-rw-r--r--keyboards/cannonkeys/bluepill/keyboard.c6
-rw-r--r--keyboards/cannonkeys/chimera65/chconf.h4
-rw-r--r--keyboards/cannonkeys/chimera65/rules.mk4
-rw-r--r--keyboards/cannonkeys/instant60/chconf.h4
-rw-r--r--keyboards/cannonkeys/instant60/config.h6
-rw-r--r--keyboards/cannonkeys/instant60/rules.mk4
-rw-r--r--keyboards/cannonkeys/iron165/chconf.h4
-rw-r--r--keyboards/cannonkeys/iron165/config.h3
-rw-r--r--keyboards/cannonkeys/iron165/rules.mk4
-rw-r--r--keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/cannonkeys/ortho48/chconf.h4
-rw-r--r--keyboards/cannonkeys/ortho48/ld/MKL26Z64.ld105
-rw-r--r--keyboards/cannonkeys/ortho48/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/cannonkeys/ortho48/rules.mk7
-rw-r--r--keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/cannonkeys/ortho60/chconf.h4
-rw-r--r--keyboards/cannonkeys/ortho60/ld/MKL26Z64.ld105
-rw-r--r--keyboards/cannonkeys/ortho60/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/cannonkeys/ortho60/rules.mk7
-rw-r--r--keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/cannonkeys/ortho75/chconf.h4
-rw-r--r--keyboards/cannonkeys/ortho75/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/cannonkeys/ortho75/rules.mk7
-rw-r--r--keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/cannonkeys/practice60/chconf.h4
-rw-r--r--keyboards/cannonkeys/practice60/ld/MKL26Z64.ld105
-rw-r--r--keyboards/cannonkeys/practice60/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/cannonkeys/practice60/rules.mk7
-rw-r--r--keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/cannonkeys/practice65/chconf.h4
-rw-r--r--keyboards/cannonkeys/practice65/ld/MKL26Z64.ld105
-rw-r--r--keyboards/cannonkeys/practice65/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/cannonkeys/practice65/rules.mk7
-rw-r--r--keyboards/cannonkeys/satisfaction75/chconf.h4
-rw-r--r--keyboards/cannonkeys/satisfaction75/config.h3
-rw-r--r--keyboards/cannonkeys/satisfaction75/keymaps/default/keymap.c2
-rw-r--r--keyboards/cannonkeys/satisfaction75/led_custom.h2
-rw-r--r--keyboards/cannonkeys/satisfaction75/rules.mk4
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction75.c63
-rw-r--r--keyboards/cannonkeys/savage65/chconf.h4
-rw-r--r--keyboards/cannonkeys/savage65/config.h6
-rw-r--r--keyboards/cannonkeys/savage65/rules.mk3
-rw-r--r--keyboards/cannonkeys/stm32f072/keyboard.c78
-rw-r--r--keyboards/cannonkeys/stm32f072/led_custom.h2
-rw-r--r--keyboards/cannonkeys/tmov2/chconf.h4
-rw-r--r--keyboards/cannonkeys/tmov2/config.h6
-rw-r--r--keyboards/cannonkeys/tmov2/rules.mk3
-rw-r--r--keyboards/catch22/rules.mk8
-rw-r--r--keyboards/chidori/board.c366
-rw-r--r--keyboards/chidori/board.h190
-rw-r--r--keyboards/chidori/chidori.c15
-rw-r--r--keyboards/chidori/chidori.h59
-rw-r--r--keyboards/chidori/config.h253
-rw-r--r--keyboards/chidori/info.json25
-rw-r--r--keyboards/chidori/keymaps/default/config.h48
-rw-r--r--keyboards/chidori/keymaps/default/keymap.c176
-rw-r--r--keyboards/chidori/keymaps/default/readme.md1
-rw-r--r--keyboards/chidori/keymaps/extended/config.h59
-rw-r--r--keyboards/chidori/keymaps/extended/keymap.c181
-rw-r--r--keyboards/chidori/keymaps/extended/readme.md1
-rw-r--r--keyboards/chidori/matrix.c113
-rw-r--r--keyboards/chidori/readme.md15
-rw-r--r--keyboards/chidori/rules.mk44
-rw-r--r--keyboards/chidori/usbconfig.h397
-rw-r--r--keyboards/chimera_ergo/rules.mk8
-rw-r--r--keyboards/chimera_ls/rules.mk8
-rw-r--r--keyboards/chimera_ortho/rules.mk8
-rw-r--r--keyboards/choco60/rules.mk12
-rw-r--r--keyboards/christmas_tree/rules.mk8
-rwxr-xr-xkeyboards/ckeys/handwire_101/rules.mk8
-rw-r--r--keyboards/ckeys/nakey/rules.mk10
-rw-r--r--keyboards/ckeys/obelus/rules.mk8
-rwxr-xr-xkeyboards/ckeys/thedora/config.h2
-rwxr-xr-xkeyboards/ckeys/thedora/readme.md10
-rw-r--r--keyboards/claw44/rev1/rules.mk8
-rw-r--r--keyboards/claw44/rules.mk8
-rw-r--r--keyboards/clueboard/17/rules.mk11
-rw-r--r--keyboards/clueboard/2x1800/rules.mk10
-rw-r--r--keyboards/clueboard/66/rev1/rules.mk8
-rw-r--r--keyboards/clueboard/66/rev2/rules.mk9
-rw-r--r--keyboards/clueboard/66/rev3/rules.mk9
-rw-r--r--keyboards/clueboard/66/rev4/rules.mk8
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/led.c1
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/matrix.c1
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/rules.mk1
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/rules.mk1
-rw-r--r--keyboards/clueboard/card/keymaps/default/rules.mk8
-rw-r--r--keyboards/clueboard/card/rules.mk13
-rw-r--r--keyboards/cocoa40/rules.mk12
-rw-r--r--keyboards/comet46/rules.mk8
-rwxr-xr-xkeyboards/contra/rules.mk8
-rw-r--r--keyboards/converter/adb_usb/rules.mk6
-rw-r--r--keyboards/converter/hp_46010a/rules.mk8
-rw-r--r--keyboards/converter/ibm_5291/rules.mk8
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/default/rules.mk8
-rw-r--r--keyboards/converter/ibm_terminal/rules.mk8
-rw-r--r--keyboards/converter/m0110_usb/rules.mk6
-rw-r--r--keyboards/converter/modelm101/rules.mk12
-rw-r--r--keyboards/converter/numeric_keypad_IIe/rules.mk12
-rw-r--r--keyboards/converter/palm_usb/config.h2
-rw-r--r--keyboards/converter/palm_usb/rules.mk8
-rw-r--r--keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/converter/siemens_tastatur/chconf.h4
-rw-r--r--keyboards/converter/siemens_tastatur/ld/MKL26Z64.ld105
-rw-r--r--keyboards/converter/siemens_tastatur/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/converter/siemens_tastatur/rules.mk5
-rw-r--r--keyboards/converter/sun_usb/config.h2
-rw-r--r--keyboards/converter/sun_usb/rules.mk8
-rw-r--r--keyboards/converter/usb_usb/ble/rules.mk12
-rw-r--r--keyboards/converter/usb_usb/config.h9
-rw-r--r--keyboards/converter/usb_usb/rules.mk8
-rw-r--r--keyboards/converter/xt_usb/rules.mk8
-rwxr-xr-xkeyboards/copenhagen_click/click_pad_v1/rules.mk12
-rw-r--r--keyboards/coseyfannitutti/discipad/rules.mk12
-rw-r--r--keyboards/coseyfannitutti/discipline/rules.mk12
-rw-r--r--keyboards/coseyfannitutti/mullet/config.h2
-rw-r--r--keyboards/coseyfannitutti/mullet/rules.mk12
-rw-r--r--keyboards/coseyfannitutti/mulletpad/config.h2
-rw-r--r--keyboards/coseyfannitutti/mulletpad/rules.mk12
-rw-r--r--keyboards/coseyfannitutti/mysterium/rules.mk2
-rw-r--r--keyboards/cospad/config.h192
-rw-r--r--keyboards/cospad/cospad.c23
-rw-r--r--keyboards/cospad/cospad.h163
-rw-r--r--keyboards/cospad/info.json192
-rw-r--r--keyboards/cospad/keymaps/default/keymap.c103
-rw-r--r--keyboards/cospad/readme.md17
-rw-r--r--keyboards/cospad/rules.mk24
-rwxr-xr-xkeyboards/crawlpad/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/curry/keymap.c4
-rw-r--r--keyboards/crkbd/keymaps/dsanchezseco/config.h2
-rw-r--r--keyboards/crkbd/keymaps/dsanchezseco/rules.mk2
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/config.h99
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/enums.h10
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/keymap.c149
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/layer.c69
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/layer.h9
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/rules.mk9
-rw-r--r--keyboards/crkbd/keymaps/ninjonas/config.h6
-rw-r--r--keyboards/crkbd/rev1/split_util.c12
-rw-r--r--keyboards/crkbd/rules.mk8
-rw-r--r--keyboards/cu24/rules.mk10
-rw-r--r--keyboards/cu75/keymaps/default/rules.mk8
-rw-r--r--keyboards/cu75/rules.mk5
-rw-r--r--keyboards/cutie_club/wraith/rules.mk12
-rw-r--r--keyboards/daisy/config.h129
-rw-r--r--keyboards/daisy/daisy.c46
-rw-r--r--keyboards/daisy/daisy.h58
-rw-r--r--keyboards/daisy/info.json117
-rw-r--r--keyboards/daisy/keymaps/default/keymap.c159
-rw-r--r--keyboards/daisy/keymaps/default/readme.md6
-rw-r--r--keyboards/daisy/readme.md28
-rw-r--r--keyboards/daisy/rules.mk28
-rw-r--r--keyboards/db/db63/config.h3
-rw-r--r--keyboards/dc01/arrow/rules.mk12
-rw-r--r--keyboards/dc01/left/rules.mk12
-rw-r--r--keyboards/dc01/numpad/rules.mk12
-rw-r--r--keyboards/dc01/right/rules.mk12
-rw-r--r--keyboards/deltasplit75/deltasplit75.h9
-rw-r--r--keyboards/deltasplit75/eeprom-lefthand.eep2
-rw-r--r--keyboards/deltasplit75/eeprom-righthand.eep2
-rw-r--r--keyboards/deltasplit75/i2c.c162
-rw-r--r--keyboards/deltasplit75/i2c.h31
-rw-r--r--keyboards/deltasplit75/matrix.c454
-rw-r--r--keyboards/deltasplit75/readme.md11
-rw-r--r--keyboards/deltasplit75/rules.mk37
-rw-r--r--keyboards/deltasplit75/serial.c228
-rw-r--r--keyboards/deltasplit75/serial.h26
-rw-r--r--keyboards/deltasplit75/split_util.c86
-rw-r--r--keyboards/deltasplit75/split_util.h19
-rw-r--r--keyboards/deltasplit75/v2/config.h10
-rw-r--r--keyboards/deltasplit75/v2/v2.c15
-rw-r--r--keyboards/deltasplit75/v2/v2.h5
-rwxr-xr-xkeyboards/dichotomy/rules.mk8
-rw-r--r--keyboards/diverge3/rules.mk8
-rw-r--r--keyboards/divergetm2/rules.mk8
-rw-r--r--keyboards/dk60/rules.mk12
-rw-r--r--keyboards/do60/rules.mk8
-rw-r--r--keyboards/donutcables/budget96/budget96.c34
-rw-r--r--keyboards/donutcables/budget96/config.h4
-rw-r--r--keyboards/donutcables/budget96/rules.mk2
-rw-r--r--keyboards/donutcables/scrabblepad/rules.mk10
-rw-r--r--keyboards/doro67/multi/rules.mk12
-rw-r--r--keyboards/doro67/regular/rules.mk12
-rw-r--r--keyboards/doro67/rgb/rules.mk12
-rw-r--r--keyboards/dozen0/config.h2
-rw-r--r--keyboards/duck/eagle_viper/v2/rules.mk13
-rw-r--r--keyboards/duck/jetfire/rules.mk15
-rw-r--r--keyboards/duck/lightsaver/rules.mk13
-rw-r--r--keyboards/duck/octagon/v1/rules.mk13
-rw-r--r--keyboards/duck/octagon/v2/rules.mk13
-rw-r--r--keyboards/duck/orion/v3/rules.mk13
-rw-r--r--keyboards/dumbpad/rules.mk12
-rw-r--r--keyboards/dz60/config.h7
-rw-r--r--keyboards/dz60/keymaps/billiams_layout2/build_flash.sh (renamed from keyboards/dz60/keymaps/billiams/build_flash.sh)5
-rw-r--r--keyboards/dz60/keymaps/billiams_layout2/config.h (renamed from keyboards/dz60/keymaps/billiams/config.h)0
-rw-r--r--keyboards/dz60/keymaps/billiams_layout2/keymap.c48
-rw-r--r--keyboards/dz60/keymaps/billiams_layout2/readme.md68
-rw-r--r--keyboards/dz60/keymaps/billiams_layout4/build_flash.sh6
-rw-r--r--keyboards/dz60/keymaps/billiams_layout4/config.h1
-rw-r--r--keyboards/dz60/keymaps/billiams_layout4/keymap.c48
-rw-r--r--keyboards/dz60/keymaps/billiams_layout4/readme.md71
-rw-r--r--keyboards/dz60/keymaps/via/keymap.c29
-rw-r--r--keyboards/dz60/keymaps/via/rules.mk2
-rw-r--r--keyboards/dz60/rules.mk8
-rw-r--r--keyboards/eco/keymaps/default/rules.mk8
-rw-r--r--keyboards/eco/keymaps/xyverz/keymap.c4
-rw-r--r--keyboards/eco/rules.mk8
-rw-r--r--keyboards/emptystring/NQG/rules.mk8
-rw-r--r--keyboards/ep/40/rules.mk12
-rw-r--r--keyboards/ep/96/rules.mk12
-rw-r--r--keyboards/ep/comsn/hs68/config.h2
-rw-r--r--keyboards/ep/comsn/hs68/rules.mk12
-rw-r--r--keyboards/ep/comsn/mollydooker/config.h2
-rw-r--r--keyboards/ep/comsn/mollydooker/rules.mk12
-rw-r--r--keyboards/ep/comsn/tf_longeboye/rules.mk12
-rw-r--r--keyboards/ergodash/mini/config.h2
-rw-r--r--keyboards/ergodash/rev1/config.h6
-rw-r--r--keyboards/ergodash/rules.mk8
-rw-r--r--keyboards/ergodone/rules.mk8
-rw-r--r--keyboards/ergodox_ez/keymaps/danielo515/config.h37
-rw-r--r--keyboards/ergodox_ez/keymaps/danielo515/keymap.c318
-rw-r--r--keyboards/ergodox_ez/keymaps/danielo515/rules.mk9
-rw-r--r--keyboards/ergodox_ez/rules.mk8
-rw-r--r--keyboards/ergodox_infinity/rules.mk9
-rw-r--r--keyboards/ergodox_stm32/chconf.h4
-rw-r--r--keyboards/ergodox_stm32/rules.mk4
-rw-r--r--keyboards/ergoinu/keymaps/default/rules.mk8
-rw-r--r--keyboards/ergoinu/rules.mk8
-rw-r--r--keyboards/ergosaurus/config.h251
-rw-r--r--keyboards/ergosaurus/ergosaurus.c (renamed from keyboards/westfoxtrot/cypher/keymaps/default/config.h)8
-rw-r--r--keyboards/ergosaurus/ergosaurus.h38
-rw-r--r--keyboards/ergosaurus/info.json82
-rw-r--r--keyboards/ergosaurus/keymaps/default/keymap.c47
-rw-r--r--keyboards/ergosaurus/keymaps/default/readme.md3
-rw-r--r--keyboards/ergosaurus/readme.md15
-rw-r--r--keyboards/ergosaurus/rules.mk33
-rw-r--r--keyboards/ergoslab/rev1/rules.mk3
-rw-r--r--keyboards/ergotravel/rules.mk8
-rwxr-xr-xkeyboards/espectro/rules.mk8
-rw-r--r--keyboards/eve/meteor/config.h3
-rw-r--r--keyboards/eve/meteor/meteor.c34
-rw-r--r--keyboards/evil80/rules.mk8
-rw-r--r--keyboards/exclusive/e65/rules.mk8
-rw-r--r--keyboards/exclusive/e6v2/le/rules.mk8
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/config.h3
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/le_bmc.c34
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/rules.mk14
-rw-r--r--keyboards/exclusive/e6v2/oe/rules.mk8
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/config.h3
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c34
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/rules.mk14
-rw-r--r--keyboards/exclusive/e7v1/rules.mk8
-rw-r--r--keyboards/exent/config.h4
-rw-r--r--keyboards/exent/exent.c20
-rw-r--r--keyboards/exent/rules.mk2
-rw-r--r--keyboards/facew/config.h4
-rw-r--r--keyboards/facew/facew.c36
-rw-r--r--keyboards/facew/rules.mk2
-rw-r--r--keyboards/fc660c/keymaps/mikefightsbears/keymap.c34
-rw-r--r--keyboards/fc660c/keymaps/mikefightsbears/rules.mk6
-rw-r--r--keyboards/fc660c/rules.mk8
-rw-r--r--keyboards/fc980c/rules.mk8
-rw-r--r--keyboards/felix/rules.mk12
-rw-r--r--keyboards/fleuron/rules.mk10
-rw-r--r--keyboards/fluorite/config.h2
-rw-r--r--keyboards/flx/virgo/info.json3
-rw-r--r--keyboards/flx/virgo/keymaps/default/keymap.c40
-rw-r--r--keyboards/flx/virgo/keymaps/via/keymap.c52
-rw-r--r--keyboards/flx/virgo/keymaps/via/readme.md1
-rw-r--r--keyboards/flx/virgo/keymaps/via/rules.mk (renamed from keyboards/hs60/v2/keymaps/ansi_via/rules.mk)0
-rw-r--r--keyboards/flx/virgo/readme.md2
-rw-r--r--keyboards/flx/virgo/rules.mk7
-rw-r--r--keyboards/flx/virgo/virgo.c3
-rw-r--r--keyboards/flx/virgo/virgo.h39
-rw-r--r--keyboards/fortitude60/rules.mk8
-rw-r--r--keyboards/four_banger/rules.mk8
-rw-r--r--keyboards/foxlab/leaf60/hotswap/rules.mk12
-rw-r--r--keyboards/foxlab/leaf60/universal/rules.mk12
-rwxr-xr-xkeyboards/fractal/rules.mk8
-rw-r--r--keyboards/freyr/rules.mk12
-rw-r--r--keyboards/ft/mars80/config.h4
-rw-r--r--keyboards/ft/mars80/mars80.c34
-rw-r--r--keyboards/geekboards/tester/rules.mk10
-rw-r--r--keyboards/gergo/keymaps/colemak/rules.mk2
-rw-r--r--keyboards/gergo/keymaps/default/rules.mk2
-rw-r--r--keyboards/gergo/keymaps/oled/rules.mk2
-rw-r--r--keyboards/getta25/config.h (renamed from keyboards/deltasplit75/config.h)6
-rw-r--r--keyboards/getta25/getta25.c1
-rw-r--r--keyboards/getta25/getta25.h7
-rw-r--r--keyboards/getta25/info.json38
-rw-r--r--keyboards/getta25/keymaps/default/config.h24
-rw-r--r--keyboards/getta25/keymaps/default/keymap.c61
-rw-r--r--keyboards/getta25/keymaps/oled/config.h25
-rw-r--r--keyboards/getta25/keymaps/oled/glcdfont.c231
-rw-r--r--keyboards/getta25/keymaps/oled/keymap.c204
-rw-r--r--keyboards/getta25/readme.md17
-rw-r--r--keyboards/getta25/rev1/config.h76
-rw-r--r--keyboards/getta25/rev1/rev1.c1
-rw-r--r--keyboards/getta25/rev1/rev1.h35
-rw-r--r--keyboards/getta25/rev1/rules.mk3
-rw-r--r--keyboards/getta25/rules.mk33
-rw-r--r--keyboards/gh60/revc/revc.h10
-rw-r--r--keyboards/gh60/revc/rules.mk8
-rw-r--r--keyboards/gh60/satan/keymaps/colemak/rules.mk8
-rw-r--r--keyboards/gh60/satan/keymaps/default/rules.mk8
-rw-r--r--keyboards/gh60/satan/keymaps/isoHHKB/rules.mk8
-rw-r--r--keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk12
-rw-r--r--keyboards/gh60/satan/keymaps/midi/rules.mk10
-rw-r--r--keyboards/gh60/satan/rules.mk12
-rw-r--r--keyboards/gh80_3000/rules.mk8
-rw-r--r--keyboards/gingham/matrix.c2
-rw-r--r--keyboards/gingham/rules.mk12
-rw-r--r--keyboards/gonnerd/keymaps/default/rules.mk8
-rw-r--r--keyboards/gonnerd/keymaps/tkl/rules.mk8
-rw-r--r--keyboards/gonnerd/rules.mk8
-rw-r--r--keyboards/gray_studio/cod67/rules.mk10
-rw-r--r--keyboards/gray_studio/hb85/config.h3
-rw-r--r--keyboards/gray_studio/hb85/hb85.c34
-rw-r--r--keyboards/gray_studio/hb85/rules.mk2
-rw-r--r--keyboards/gray_studio/space65/keymaps/billiams/config.h20
-rw-r--r--keyboards/gray_studio/space65/keymaps/billiams/keymap.c85
-rw-r--r--keyboards/gray_studio/space65/keymaps/billiams/readme.md80
-rw-r--r--keyboards/gray_studio/space65/rules.mk12
-rw-r--r--keyboards/gray_studio/think65/solder/readme.md2
-rw-r--r--keyboards/gray_studio/think65/solder/solder.c22
-rw-r--r--keyboards/gray_studio/think65/solder/solder.h8
-rw-r--r--keyboards/grid600/press/rules.mk12
-rwxr-xr-xkeyboards/gskt00/rules.mk8
-rw-r--r--keyboards/hadron/ver2/rules.mk8
-rw-r--r--keyboards/halberd/config.h2
-rw-r--r--keyboards/halberd/rules.mk12
-rw-r--r--keyboards/handwired/42/config.h2
-rw-r--r--keyboards/handwired/aek64/config.h2
-rw-r--r--keyboards/handwired/bluepill/bluepill70/chconf.h4
-rw-r--r--keyboards/handwired/bluepill/bluepill70/rules.mk6
-rw-r--r--keyboards/handwired/ck4x4/chconf.h4
-rw-r--r--keyboards/handwired/ck4x4/rules.mk4
-rw-r--r--keyboards/handwired/co60/rev1/config.h2
-rw-r--r--keyboards/handwired/co60/rev6/config.h2
-rw-r--r--keyboards/handwired/co60/rev7/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x7/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/dmote/62key/config.h2
-rw-r--r--keyboards/handwired/dactyl_promicro/config.h2
-rw-r--r--keyboards/handwired/daishi/config.h2
-rw-r--r--keyboards/handwired/eagleii/config.h19
-rw-r--r--keyboards/handwired/eagleii/eagleii.c1
-rw-r--r--keyboards/handwired/eagleii/eagleii.h24
-rw-r--r--keyboards/handwired/eagleii/info.json88
-rw-r--r--keyboards/handwired/eagleii/keymaps/default/keymap.c12
-rw-r--r--keyboards/handwired/eagleii/readme.md15
-rw-r--r--keyboards/handwired/eagleii/rules.mk26
-rw-r--r--keyboards/handwired/hacked_motospeed/config.h4
-rw-r--r--keyboards/handwired/lovelive9/config.h2
-rw-r--r--keyboards/handwired/minorca/keymaps/ridingqwerty/config.h7
-rw-r--r--keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c123
-rw-r--r--keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md1
-rw-r--r--keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk10
-rw-r--r--keyboards/handwired/nicekey/config.h2
-rw-r--r--keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.c56
-rw-r--r--keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.h166
-rw-r--r--keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.mk5
-rw-r--r--keyboards/handwired/onekey/bluepill/chconf.h4
-rw-r--r--keyboards/handwired/onekey/bluepill/ld/STM32F103x8_stm32duino_bootloader.ld88
-rw-r--r--keyboards/handwired/onekey/bluepill/rules.mk6
-rw-r--r--keyboards/handwired/onekey/config.h2
-rw-r--r--keyboards/handwired/onekey/stm32f0_disco/chconf.h4
-rw-r--r--keyboards/handwired/onekey/stm32f0_disco/rules.mk4
-rw-r--r--keyboards/handwired/onekey/teensy_32/chconf.h4
-rw-r--r--keyboards/handwired/onekey/teensy_32/ld/MK20DX256.ld101
-rw-r--r--keyboards/handwired/onekey/teensy_32/rules.mk4
-rw-r--r--keyboards/handwired/onekey/teensy_lc/chconf.h4
-rw-r--r--keyboards/handwired/onekey/teensy_lc/ld/MKL26Z64.ld105
-rw-r--r--keyboards/handwired/onekey/teensy_lc/rules.mk4
-rw-r--r--keyboards/handwired/owlet60/matrix.c5
-rw-r--r--keyboards/handwired/splittest/config.h2
-rw-r--r--keyboards/handwired/steamvan/rev1/config.h2
-rw-r--r--keyboards/handwired/tennie/config.h2
-rw-r--r--keyboards/handwired/wulkan/config.h2
-rw-r--r--keyboards/hecomi/alpha/config.h2
-rw-r--r--keyboards/hecomi/alpha/rules.mk12
-rw-r--r--keyboards/hecomi/rules.mk12
-rw-r--r--keyboards/helix/pico/keymaps/default/rules.mk2
-rw-r--r--keyboards/helix/rev2/split_util.c12
-rw-r--r--keyboards/helix/rules.mk8
-rw-r--r--keyboards/hhkb/rules.mk8
-rwxr-xr-xkeyboards/hid_liber/rules.mk10
-rw-r--r--keyboards/hifumi/rules.mk8
-rw-r--r--keyboards/hineybush/h87a/keymaps/wkl/keymap.c2
-rw-r--r--keyboards/hineybush/h87a/rules.mk10
-rw-r--r--keyboards/hineybush/h88/h88.c2
-rw-r--r--keyboards/hineybush/hineyg80/rules.mk12
-rwxr-xr-xkeyboards/honeycomb/rules.mk8
-rw-r--r--keyboards/hotdox/keymaps/ninjonas/README.md22
-rw-r--r--keyboards/hotdox/keymaps/ninjonas/keymap.c72
-rw-r--r--keyboards/hotdox/keymaps/ninjonas/rules.mk1
-rw-r--r--keyboards/hotdox/rules.mk8
-rw-r--r--keyboards/hs60/v1/rules.mk10
-rw-r--r--keyboards/hs60/v2/ansi/ansi.h38
-rw-r--r--keyboards/hs60/v2/ansi/config.h148
-rw-r--r--keyboards/hs60/v2/ansi/info.json333
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/default/keymap.c (renamed from keyboards/hs60/v2/keymaps/ansi/keymap.c)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/default/readme.md (renamed from keyboards/hs60/v2/keymaps/ansi/readme.md)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h (renamed from keyboards/hs60/v2/keymaps/stanrc85/config.h)5
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c (renamed from keyboards/hs60/v2/keymaps/stanrc85/keymap.c)4
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md (renamed from keyboards/hs60/v2/keymaps/stanrc85/readme.md)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/stanrc85/rules.mk (renamed from keyboards/hs60/v2/keymaps/default_via/rules.mk)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/via/keymap.c (renamed from keyboards/hs60/v2/keymaps/ansi_via/keymap.c)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/via/readme.md (renamed from keyboards/hs60/v2/keymaps/ansi_via/readme.md)0
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/via/rules.mk (renamed from keyboards/hs60/v2/keymaps/goatmaster/rules.mk)0
-rw-r--r--keyboards/hs60/v2/ansi/rules.mk (renamed from keyboards/hs60/v2/rules.mk)4
-rw-r--r--keyboards/hs60/v2/hhkb/config.h148
-rw-r--r--keyboards/hs60/v2/hhkb/hhkb.h (renamed from keyboards/hs60/v2/v2.h)28
-rw-r--r--keyboards/hs60/v2/hhkb/info.json12
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/default/keymap.c (renamed from keyboards/hs60/v2/keymaps/hhkb/keymap.c)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/default/readme.md (renamed from keyboards/hs60/v2/keymaps/hhkb/readme.md)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/goatmaster/config.h (renamed from keyboards/hs60/v2/keymaps/ansi_via/config.h)5
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c (renamed from keyboards/hs60/v2/keymaps/goatmaster/keymap.c)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/goatmaster/readme.md (renamed from keyboards/hs60/v2/keymaps/goatmaster/readme.md)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/goatmaster/rules.mk (renamed from keyboards/hs60/v2/keymaps/hhkb_via/rules.mk)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/via/keymap.c (renamed from keyboards/hs60/v2/keymaps/hhkb_via/keymap.c)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/via/readme.md (renamed from keyboards/hs60/v2/keymaps/hhkb_via/readme.md)0
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/via/rules.mk (renamed from keyboards/hs60/v2/keymaps/iso_andys8/rules.mk)0
-rw-r--r--keyboards/hs60/v2/hhkb/rules.mk31
-rw-r--r--keyboards/hs60/v2/info.json1650
-rw-r--r--keyboards/hs60/v2/iso/config.h (renamed from keyboards/hs60/v2/config.h)8
-rw-r--r--keyboards/hs60/v2/iso/info.json76
-rw-r--r--keyboards/hs60/v2/iso/iso.h38
-rw-r--r--keyboards/hs60/v2/iso/keymaps/default/keymap.c (renamed from keyboards/hs60/v2/keymaps/default/keymap.c)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/default/readme.md (renamed from keyboards/hs60/v2/keymaps/default/readme.md)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c (renamed from keyboards/hs60/v2/keymaps/iso_andys8/keymap.c)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/iso_andys8/readme.md (renamed from keyboards/hs60/v2/keymaps/iso_andys8/readme.md)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/iso_andys8/rules.mk (renamed from keyboards/hs60/v2/keymaps/stanrc85/rules.mk)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/via/keymap.c (renamed from keyboards/hs60/v2/keymaps/default_via/keymap.c)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/via/readme.md (renamed from keyboards/hs60/v2/keymaps/default_via/readme.md)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/via/rules.mk (renamed from keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c (renamed from keyboards/hs60/v2/keymaps/win_osx_dual/keymap.c)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/win_osx_dual/readme.md (renamed from keyboards/hs60/v2/keymaps/win_osx_dual/readme.md)0
-rw-r--r--keyboards/hs60/v2/iso/keymaps/win_osx_dual/rules.mk1
-rw-r--r--keyboards/hs60/v2/iso/rules.mk33
-rw-r--r--keyboards/hs60/v2/keymaps/goatmaster/config.h37
-rw-r--r--keyboards/hs60/v2/keymaps/hhkb_via/config.h34
-rw-r--r--keyboards/hs60/v2/readme.md4
-rw-r--r--keyboards/hs60/v2/v2.c3
-rw-r--r--keyboards/idobo/rules.mk12
-rw-r--r--keyboards/illuminati/is0/rules.mk12
-rw-r--r--keyboards/infinity60/chconf.h4
-rw-r--r--keyboards/infinity60/rules.mk4
-rw-r--r--keyboards/ivy/rules.mk8
-rw-r--r--keyboards/j80/j80.c13
-rw-r--r--keyboards/jc65/v32a/config.h4
-rw-r--r--keyboards/jc65/v32a/v32a.c36
-rw-r--r--keyboards/jc65/v32u4/rules.mk8
-rw-r--r--keyboards/jd40/rules.mk8
-rw-r--r--keyboards/jd45/rules.mk8
-rw-r--r--keyboards/jj40/config.h2
-rw-r--r--keyboards/jj40/rules.mk12
-rw-r--r--keyboards/jj4x4/README.md20
-rw-r--r--keyboards/jj4x4/config.h2
-rw-r--r--keyboards/jj4x4/rules.mk12
-rw-r--r--keyboards/jj50/backlight.c213
-rw-r--r--keyboards/jj50/backlight_custom.h15
-rw-r--r--keyboards/jj50/breathing_custom.h140
-rw-r--r--keyboards/jj50/config.h2
-rw-r--r--keyboards/jj50/jj50.c17
-rw-r--r--keyboards/jj50/rules.mk2
-rw-r--r--keyboards/jm60/chconf.h4
-rw-r--r--keyboards/jm60/rules.mk8
-rw-r--r--keyboards/jnao/rules.mk12
-rw-r--r--keyboards/k_type/chconf.h4
-rw-r--r--keyboards/k_type/rules.mk4
-rw-r--r--keyboards/kagamidget/config.h2
-rw-r--r--keyboards/kagamidget/rules.mk12
-rw-r--r--keyboards/katana60/rules.mk10
-rw-r--r--keyboards/kbdfans/kbd19x/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd4x/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd66/rules.mk10
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/mikefightsbears/keymap.c8
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c29
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/config.h6
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/config.h6
-rw-r--r--keyboards/kbdfans/kbd67/rev1/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd67/rev2/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd6x/rules.mk12
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c1
-rw-r--r--keyboards/kbdfans/kbd75/readme.md10
-rw-r--r--keyboards/kbdfans/kbd75/rev1/rules.mk8
-rw-r--r--keyboards/kbdfans/kbd75/rev2/rules.mk8
-rw-r--r--keyboards/kbdfans/kbd8x/rules.mk10
-rw-r--r--keyboards/kbdfans/kbdpad/mk1/mk1.c18
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/rules.mk12
-rw-r--r--keyboards/kc60/keymaps/ws2812/rules.mk8
-rw-r--r--keyboards/kc60/rules.mk8
-rw-r--r--keyboards/kc60se/rules.mk10
-rw-r--r--keyboards/keebio/bdn9/rules.mk12
-rw-r--r--keyboards/keebio/bfo9000/config.h2
-rw-r--r--keyboards/keebio/bfo9000/rules.mk8
-rw-r--r--keyboards/keebio/chocopad/rules.mk8
-rw-r--r--keyboards/keebio/dilly/rules.mk8
-rw-r--r--keyboards/keebio/ergodicity/rules.mk12
-rw-r--r--keyboards/keebio/fourier/config.h2
-rw-r--r--keyboards/keebio/fourier/rules.mk8
-rw-r--r--keyboards/keebio/iris/keymaps/jasondunsmore/config.h8
-rw-r--r--keyboards/keebio/iris/keymaps/jasondunsmore/keymap.c133
-rw-r--r--keyboards/keebio/iris/keymaps/jasondunsmore/readme.md10
-rw-r--r--keyboards/keebio/iris/keymaps/jasondunsmore/rules.mk1
-rw-r--r--keyboards/keebio/iris/rev1/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev1_led/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev2/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev3/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev4/rules.mk8
-rw-r--r--keyboards/keebio/laplace/rules.mk8
-rw-r--r--keyboards/keebio/levinson/keymaps/steno/rules.mk4
-rw-r--r--keyboards/keebio/levinson/rev1/config.h2
-rw-r--r--keyboards/keebio/levinson/rev2/config.h2
-rw-r--r--keyboards/keebio/levinson/rev3/config.h2
-rw-r--r--keyboards/keebio/levinson/rules.mk8
-rw-r--r--keyboards/keebio/nyquist/rev1/rules.mk8
-rw-r--r--keyboards/keebio/nyquist/rev2/rules.mk8
-rw-r--r--keyboards/keebio/nyquist/rev3/rules.mk8
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65/keymap.c17
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65macro/keymap.c17
-rw-r--r--keyboards/keebio/quefrency/keymaps/yoryer/config.h (renamed from keyboards/hs60/v2/keymaps/ansi/config.h)14
-rw-r--r--keyboards/keebio/quefrency/keymaps/yoryer/keymap.c50
-rw-r--r--keyboards/keebio/quefrency/quefrency.h3
-rw-r--r--keyboards/keebio/quefrency/rev1/config.h2
-rw-r--r--keyboards/keebio/quefrency/rev2/config.h62
-rw-r--r--keyboards/keebio/quefrency/rev2/rev2.c1
-rw-r--r--keyboards/keebio/quefrency/rev2/rev2.h194
-rw-r--r--keyboards/keebio/quefrency/rev2/rules.mk3
-rw-r--r--keyboards/keebio/quefrency/rules.mk10
-rw-r--r--keyboards/keebio/rorschach/rules.mk8
-rw-r--r--keyboards/keebio/tragicforce68/rules.mk8
-rw-r--r--keyboards/keebio/tukey/rules.mk12
-rw-r--r--keyboards/keebio/viterbi/rules.mk8
-rw-r--r--keyboards/keebio/wavelet/config.h2
-rw-r--r--keyboards/keebio/wavelet/rules.mk8
-rw-r--r--keyboards/keycapsss/o4l_5x12/rules.mk8
-rw-r--r--keyboards/keyhive/maypad/rules.mk12
-rw-r--r--keyboards/kinesis/keymaps/carpalx/rules.mk8
-rw-r--r--keyboards/kinesis/keymaps/default/rules.mk8
-rw-r--r--keyboards/kinesis/keymaps/default_pretty/rules.mk8
-rw-r--r--keyboards/kinesis/keymaps/dvorak/rules.mk8
-rw-r--r--keyboards/kinesis/rules.mk8
-rw-r--r--keyboards/kingly_keys/little_foot/rules.mk8
-rw-r--r--keyboards/kingly_keys/romac/keymaps/stanrc85/rules.mk2
-rw-r--r--keyboards/kingly_keys/romac/rules.mk8
-rw-r--r--keyboards/kingly_keys/romac_plus/rules.mk10
-rw-r--r--keyboards/kingly_keys/ropro/rules.mk8
-rw-r--r--keyboards/kingly_keys/smd_milk/rules.mk8
-rw-r--r--keyboards/kingly_keys/soap/rules.mk8
-rw-r--r--keyboards/kira75/rules.mk10
-rw-r--r--keyboards/kmac/config.h2
-rw-r--r--keyboards/kmac/matrix.c2
-rw-r--r--keyboards/kmac/rules.mk12
-rwxr-xr-xkeyboards/kmini/config.h2
-rwxr-xr-xkeyboards/kmini/rules.mk12
-rw-r--r--keyboards/knops/mini/keymaps/mverteuil/config.h25
-rw-r--r--keyboards/knops/mini/keymaps/mverteuil/keymap.c306
-rw-r--r--keyboards/knops/mini/keymaps/mverteuil/readme.md1
-rw-r--r--keyboards/knops/mini/keymaps/mverteuil/rules.mk6
-rw-r--r--keyboards/knops/mini/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/ansi/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/default/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/iso/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/iso_arrows/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/iso_split/rules.mk10
-rw-r--r--keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk10
-rw-r--r--keyboards/kona_classic/rules.mk8
-rw-r--r--keyboards/kudox/rules.mk10
-rw-r--r--keyboards/kudox_game/rules.mk10
-rw-r--r--keyboards/kv/revt/config.h39
-rw-r--r--keyboards/kv/revt/keymaps/default/keymap.c64
-rw-r--r--keyboards/kv/revt/keymaps/default/readme.md1
-rw-r--r--keyboards/kv/revt/readme.md18
-rw-r--r--keyboards/kv/revt/revt.c25
-rw-r--r--keyboards/kv/revt/revt.h36
-rw-r--r--keyboards/kv/revt/rules.mk22
-rw-r--r--keyboards/kyria/keymaps/ninjonas/config.h37
-rw-r--r--keyboards/kyria/keymaps/ninjonas/encoder.c84
-rw-r--r--keyboards/kyria/keymaps/ninjonas/keymap.c105
-rw-r--r--keyboards/kyria/keymaps/ninjonas/oled.c168
-rw-r--r--keyboards/kyria/keymaps/ninjonas/rules.mk7
-rw-r--r--keyboards/laptreus/rules.mk8
-rw-r--r--keyboards/launchpad/rules.mk8
-rw-r--r--keyboards/lazydesigners/dimple/rules.mk8
-rw-r--r--keyboards/lazydesigners/the50/rules.mk8
-rw-r--r--keyboards/lazydesigners/the60/rules.mk8
-rw-r--r--keyboards/lets_split/keymaps/DE_programming/config.h (renamed from keyboards/hs60/v2/keymaps/hhkb/config.h)26
-rw-r--r--keyboards/lets_split/keymaps/DE_programming/keymap.c97
-rw-r--r--keyboards/lets_split/keymaps/DE_programming/readme.md57
-rw-r--r--keyboards/lets_split/keymaps/DE_programming/rules.mk0
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/rules.mk8
-rw-r--r--keyboards/lets_split/rev1/config.h2
-rw-r--r--keyboards/lets_split/rev2/config.h2
-rw-r--r--keyboards/lets_split/rules.mk8
-rw-r--r--keyboards/lets_split/sockets/config.h2
-rw-r--r--keyboards/lets_split_eh/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk78/rules.mk9
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk87/rules.mk11
-rw-r--r--keyboards/lfkeyboards/lfkpad/config.h131
-rw-r--r--keyboards/lfkeyboards/lfkpad/info.json40
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/default/config.h3
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c50
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md2
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfkpad/lfkpad.c92
-rw-r--r--keyboards/lfkeyboards/lfkpad/lfkpad.h22
-rw-r--r--keyboards/lfkeyboards/lfkpad/readme.md31
-rw-r--r--keyboards/lfkeyboards/lfkpad/rules.mk43
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk8
-rw-r--r--keyboards/lfkeyboards/mini1800/rules.mk5
-rw-r--r--keyboards/lfkeyboards/smk65/keymaps/default/rules.mk8
-rw-r--r--keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk8
-rw-r--r--keyboards/lily58/keymaps/default/rules.mk8
-rw-r--r--keyboards/lily58/keymaps/ninjonas/keymap.c6
-rw-r--r--keyboards/lily58/rules.mk8
-rw-r--r--keyboards/m0lly/rules.mk8
-rw-r--r--keyboards/m10a/rules.mk8
-rw-r--r--keyboards/maartenwut/atom47/rev2/rules.mk2
-rw-r--r--keyboards/maartenwut/atom47/rev3/rules.mk2
-rw-r--r--keyboards/maartenwut/atom47/rules.mk10
-rw-r--r--keyboards/maartenwut/mx5160/config.h252
-rw-r--r--keyboards/maartenwut/mx5160/info.json12
-rw-r--r--keyboards/maartenwut/mx5160/keymaps/default/keymap.c41
-rw-r--r--keyboards/maartenwut/mx5160/keymaps/default/readme.md1
-rw-r--r--keyboards/maartenwut/mx5160/mx5160.c58
-rw-r--r--keyboards/maartenwut/mx5160/mx5160.h47
-rw-r--r--keyboards/maartenwut/mx5160/readme.md15
-rw-r--r--keyboards/maartenwut/mx5160/rules.mk33
-rw-r--r--keyboards/maartenwut/ta65/rules.mk12
-rw-r--r--keyboards/maartenwut/wasdat/matrix.c246
-rw-r--r--keyboards/maartenwut/wasdat/rules.mk2
-rwxr-xr-xkeyboards/maartenwut/wonderland/keymaps/rafael-azevedo/keymap.c42
-rw-r--r--keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/readme.md9
-rwxr-xr-xkeyboards/maartenwut/wonderland/rules.mk12
-rw-r--r--keyboards/manta60/config.h130
-rw-r--r--keyboards/manta60/info.json81
-rw-r--r--keyboards/manta60/keymaps/default/config.h (renamed from keyboards/mechlovin/hannah910/keymaps/ansi/config.h)4
-rw-r--r--keyboards/manta60/keymaps/default/keymap.c131
-rw-r--r--keyboards/manta60/keymaps/default/readme.md1
-rw-r--r--keyboards/manta60/manta60.c1
-rw-r--r--keyboards/manta60/manta60.h45
-rw-r--r--keyboards/manta60/readme.md15
-rw-r--r--keyboards/manta60/rules.mk40
-rw-r--r--keyboards/massdrop/alt/rules.mk12
-rw-r--r--keyboards/massdrop/ctrl/rules.mk12
-rw-r--r--keyboards/maxipad/rules.mk12
-rw-r--r--keyboards/maxr1998/phoebe/config.h7
-rw-r--r--keyboards/maxr1998/phoebe/keymaps/default/keymap.c12
-rw-r--r--keyboards/maxr1998/phoebe/phoebe.c2
-rw-r--r--keyboards/maxr1998/phoebe/rules.mk8
-rw-r--r--keyboards/maxr1998/pulse4k/info.json2
-rw-r--r--keyboards/maxr1998/pulse4k/keymaps/default/keymap.c13
-rw-r--r--keyboards/maxr1998/pulse4k/pulse4k.c16
-rw-r--r--keyboards/maxr1998/pulse4k/rules.mk8
-rw-r--r--keyboards/mc_76k/config.h104
-rw-r--r--keyboards/mc_76k/info.json12
-rw-r--r--keyboards/mc_76k/keymaps/default/keymap.c50
-rw-r--r--keyboards/mc_76k/keymaps/default/readme.md5
-rw-r--r--keyboards/mc_76k/keymaps/via/keymap.c50
-rw-r--r--keyboards/mc_76k/keymaps/via/readme.md1
-rw-r--r--keyboards/mc_76k/keymaps/via/rules.mk1
-rw-r--r--keyboards/mc_76k/mc_76k.c34
-rw-r--r--keyboards/mc_76k/mc_76k.h46
-rw-r--r--keyboards/mc_76k/readme.md15
-rw-r--r--keyboards/mc_76k/rules.mk32
-rw-r--r--keyboards/mechkeys/mk60/rules.mk12
-rw-r--r--keyboards/mechlovin/hannah910/config.h36
-rw-r--r--keyboards/mechlovin/hannah910/hannah910.h56
-rw-r--r--keyboards/mechlovin/hannah910/keymaps/ansi/readme.md1
-rw-r--r--keyboards/mechlovin/hannah910/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/hannah910/readme.md14
-rw-r--r--keyboards/mechlovin/hannah910/rev1/config.h6
-rw-r--r--keyboards/mechlovin/hannah910/rev1/info.json (renamed from keyboards/mechlovin/hannah910/info.json)0
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/ansi/keymap.c (renamed from keyboards/mechlovin/hannah910/keymaps/ansi/keymap.c)16
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/ansi/readme.md1
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/default/keymap.c (renamed from keyboards/mechlovin/hannah910/keymaps/default/keymap.c)21
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/via/keymap.c48
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/hannah910/rev1/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/hannah910/rev1/readme.md15
-rw-r--r--keyboards/mechlovin/hannah910/rev1/rev1.h48
-rw-r--r--keyboards/mechlovin/hannah910/rev1/rules.mk33
-rw-r--r--keyboards/mechlovin/hannah910/rev2/config.h6
-rw-r--r--keyboards/mechlovin/hannah910/rev2/info.json87
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/ansi/keymap.c47
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/ansi/readme.md2
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/default/keymap.c48
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/default/readme.md2
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/via/keymap.c48
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/via/readme.md2
-rw-r--r--keyboards/mechlovin/hannah910/rev2/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/hannah910/rev2/readme.md19
-rw-r--r--keyboards/mechlovin/hannah910/rev2/rev2.h50
-rw-r--r--keyboards/mechlovin/hannah910/rev2/rules.mk33
-rw-r--r--keyboards/mechlovin/hannah910/rules.mk34
-rw-r--r--keyboards/mechlovin/infinityce/config.h49
-rw-r--r--keyboards/mechlovin/infinityce/infinityce.c42
-rw-r--r--keyboards/mechlovin/infinityce/infinityce.h67
-rw-r--r--keyboards/mechlovin/infinityce/info.json293
-rw-r--r--keyboards/mechlovin/infinityce/keymaps/default/keymap.c29
-rw-r--r--keyboards/mechlovin/infinityce/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/infinityce/keymaps/via/keymap.c53
-rw-r--r--keyboards/mechlovin/infinityce/keymaps/via/readme.md3
-rw-r--r--keyboards/mechlovin/infinityce/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/infinityce/readme.md19
-rw-r--r--keyboards/mechlovin/infinityce/rules.mk32
-rw-r--r--keyboards/mechmini/v1/config.h8
-rw-r--r--keyboards/mechmini/v1/rules.mk2
-rwxr-xr-xkeyboards/mechmini/v2/rules.mk8
-rw-r--r--keyboards/mehkee96/config.h3
-rw-r--r--keyboards/mehkee96/mehkee96.c18
-rw-r--r--keyboards/mehkee96/rules.mk10
-rw-r--r--keyboards/meira/rules.mk10
-rw-r--r--keyboards/meishi/rules.mk10
-rw-r--r--keyboards/meishi2/rules.mk12
-rw-r--r--keyboards/melody96/rules.mk8
-rw-r--r--keyboards/meme/rules.mk10
-rw-r--r--keyboards/meson/rules.mk12
-rw-r--r--keyboards/miniaxe/rules.mk12
-rw-r--r--keyboards/minidox/config.h9
-rw-r--r--keyboards/minidox/eeprom-lefthand.eep2
-rw-r--r--keyboards/minidox/eeprom-righthand.eep2
-rw-r--r--keyboards/minidox/i2c.c162
-rw-r--r--keyboards/minidox/i2c.h49
-rw-r--r--keyboards/minidox/keymaps/xyverz/keymap.c4
-rw-r--r--keyboards/minidox/matrix.c307
-rw-r--r--keyboards/minidox/minidox.h5
-rw-r--r--keyboards/minidox/readme.md66
-rw-r--r--keyboards/minidox/rev1/config.h12
-rw-r--r--keyboards/minidox/rev1/rev1.h7
-rw-r--r--keyboards/minidox/rules.mk38
-rw-r--r--keyboards/minidox/serial.c228
-rw-r--r--keyboards/minidox/serial.h26
-rw-r--r--keyboards/minidox/split_util.c84
-rw-r--r--keyboards/minidox/split_util.h20
-rw-r--r--keyboards/mint60/config.h11
-rw-r--r--keyboards/mint60/i2c.c162
-rw-r--r--keyboards/mint60/i2c.h49
-rw-r--r--keyboards/mint60/keymaps/default/keymap.c28
-rw-r--r--keyboards/mint60/matrix.c343
-rw-r--r--keyboards/mint60/mint60.c27
-rw-r--r--keyboards/mint60/mint60.h19
-rw-r--r--keyboards/mint60/rules.mk23
-rw-r--r--keyboards/mint60/serial.c295
-rw-r--r--keyboards/mint60/serial.h27
-rw-r--r--keyboards/mint60/serial_config.h16
-rw-r--r--keyboards/mint60/split_util.c70
-rw-r--r--keyboards/mint60/split_util.h19
-rw-r--r--keyboards/mitosis/rules.mk8
-rw-r--r--keyboards/miuni32/rules.mk8
-rw-r--r--keyboards/model01/rules.mk12
-rw-r--r--keyboards/montsinger/rebound/config.h62
-rw-r--r--keyboards/montsinger/rebound/keymaps/curry/keymap.c63
-rw-r--r--keyboards/montsinger/rebound/keymaps/curry/rules.mk1
-rw-r--r--keyboards/montsinger/rebound/keymaps/default/keymap.c163
-rw-r--r--keyboards/montsinger/rebound/keymaps/rossman360/keymap.c55
-rwxr-xr-xkeyboards/montsinger/rebound/readme.md15
-rw-r--r--keyboards/montsinger/rebound/rebound.c1
-rw-r--r--keyboards/montsinger/rebound/rebound.h39
-rw-r--r--keyboards/montsinger/rebound/rules.mk32
-rw-r--r--keyboards/moon/rules.mk12
-rw-r--r--keyboards/mt40/rules.mk8
-rw-r--r--keyboards/mt980/rules.mk8
-rw-r--r--keyboards/mxss/config.h13
-rw-r--r--keyboards/mxss/keymaps/default/keymap.c19
-rw-r--r--keyboards/mxss/keymaps/via/config.h (renamed from keyboards/westfoxtrot/cypher/keymaps/default-iso/config.h)4
-rw-r--r--keyboards/mxss/keymaps/via/keymap.c33
-rw-r--r--keyboards/mxss/keymaps/via/rules.mk1
-rw-r--r--keyboards/mxss/mxss.c205
-rw-r--r--keyboards/mxss/mxss.h19
-rw-r--r--keyboards/mxss/mxss_frontled.c264
-rw-r--r--keyboards/mxss/mxss_frontled.h57
-rw-r--r--keyboards/mxss/readme.md7
-rw-r--r--keyboards/mxss/rgblight.c1628
-rw-r--r--keyboards/mxss/rgblight.h362
-rw-r--r--keyboards/mxss/rules.mk14
-rw-r--r--keyboards/mxss/templates/keymap.c19
-rw-r--r--keyboards/nafuda/config.h2
-rw-r--r--keyboards/naked48/rev1/config.h2
-rw-r--r--keyboards/naked48/rules.mk8
-rw-r--r--keyboards/naked60/rev1/config.h2
-rw-r--r--keyboards/naked60/rules.mk8
-rw-r--r--keyboards/naked64/rev1/config.h2
-rw-r--r--keyboards/naked64/rules.mk8
-rw-r--r--keyboards/namecard2x4/rules.mk12
-rw-r--r--keyboards/ncc1701kb/info.json12
-rw-r--r--keyboards/ncc1701kb/keymaps/brushsize/keymap.c51
-rw-r--r--keyboards/nek_type_a/rules.mk12
-rw-r--r--keyboards/newgame40/rules.mk8
-rw-r--r--keyboards/nightmare/rules.mk12
-rwxr-xr-xkeyboards/nk65/config.h5
-rw-r--r--keyboards/nomu30/rules.mk12
-rwxr-xr-xkeyboards/novelpad/rules.mk8
-rw-r--r--keyboards/noxary/220/rules.mk12
-rw-r--r--keyboards/noxary/260/rules.mk12
-rw-r--r--keyboards/noxary/268/rules.mk8
-rw-r--r--keyboards/noxary/268_2/268_2.c1
-rw-r--r--keyboards/noxary/268_2/rules.mk12
-rw-r--r--keyboards/noxary/280/280.c43
-rw-r--r--keyboards/noxary/280/keymaps/via/keymap.c118
-rw-r--r--keyboards/noxary/280/keymaps/via/readme.md1
-rw-r--r--keyboards/noxary/280/keymaps/via/rules.mk2
-rw-r--r--keyboards/noxary/280/rules.mk12
-rw-r--r--keyboards/noxary/x268/rules.mk12
-rw-r--r--keyboards/numatreus/config.h100
-rw-r--r--keyboards/numatreus/info.json12
-rw-r--r--keyboards/numatreus/keymaps/default/keymap.c60
-rw-r--r--keyboards/numatreus/keymaps/hdbx/keymap.c230
-rw-r--r--keyboards/numatreus/keymaps/hdbx/rules.mk3
-rw-r--r--keyboards/numatreus/keymaps/like_jis/config.h59
-rw-r--r--keyboards/numatreus/keymaps/like_jis/keymap.c196
-rw-r--r--keyboards/numatreus/keymaps/like_jis/rules.mk8
-rw-r--r--keyboards/numatreus/keymaps/yohewi/keymap.c61
-rw-r--r--keyboards/numatreus/numatreus.c1
-rw-r--r--keyboards/numatreus/numatreus.h20
-rw-r--r--keyboards/numatreus/readme.md13
-rw-r--r--keyboards/numatreus/rules.mk36
-rw-r--r--keyboards/ogre/ergo_single/config.h45
-rw-r--r--keyboards/ogre/ergo_single/ergo_single.c17
-rw-r--r--keyboards/ogre/ergo_single/ergo_single.h39
-rw-r--r--keyboards/ogre/ergo_single/keymaps/default/keymap.c41
-rw-r--r--keyboards/ogre/ergo_single/keymaps/default/readme.md1
-rw-r--r--keyboards/ogre/ergo_single/readme.md15
-rw-r--r--keyboards/ogre/ergo_single/rules.mk33
-rw-r--r--keyboards/ogre/ergo_split/config.h52
-rw-r--r--keyboards/ogre/ergo_split/ergo_split.c17
-rw-r--r--keyboards/ogre/ergo_split/ergo_split.h39
-rw-r--r--keyboards/ogre/ergo_split/keymaps/default/keymap.c41
-rw-r--r--keyboards/ogre/ergo_split/keymaps/default/readme.md1
-rw-r--r--keyboards/ogre/ergo_split/readme.md15
-rw-r--r--keyboards/ogre/ergo_split/rules.mk33
-rw-r--r--keyboards/ok60/rules.mk8
-rw-r--r--keyboards/omnikey_blackheart/rules.mk8
-rw-r--r--keyboards/orange75/rules.mk8
-rw-r--r--keyboards/org60/rules.mk8
-rw-r--r--keyboards/orthodox/keymaps/xyverz/keymap.c4
-rw-r--r--keyboards/orthodox/rules.mk8
-rw-r--r--keyboards/otaku_split/rev0/rules.mk12
-rw-r--r--keyboards/otaku_split/rev1/rules.mk12
-rwxr-xr-xkeyboards/paladin64/rules.mk8
-rw-r--r--keyboards/panc60/config.h4
-rw-r--r--keyboards/panc60/panc60.c34
-rw-r--r--keyboards/pancake/feather/rules.mk8
-rw-r--r--keyboards/pancake/promicro/rules.mk8
-rw-r--r--keyboards/pdxkbc/rules.mk12
-rw-r--r--keyboards/pearl/config.h3
-rw-r--r--keyboards/pearl/pearl.c34
-rw-r--r--keyboards/peiorisboards/ixora/chconf.h6
-rw-r--r--keyboards/peiorisboards/ixora/config.h2
-rw-r--r--keyboards/peiorisboards/ixora/rules.mk4
-rw-r--r--keyboards/percent/canoe/canoe.c36
-rw-r--r--keyboards/percent/canoe/config.h4
-rw-r--r--keyboards/percent/canoe/rules.mk2
-rw-r--r--keyboards/percent/skog/backlight.c211
-rw-r--r--keyboards/percent/skog/backlight_custom.h13
-rw-r--r--keyboards/percent/skog/breathing_custom.h140
-rw-r--r--keyboards/percent/skog/config.h6
-rw-r--r--keyboards/percent/skog/rules.mk4
-rw-r--r--keyboards/percent/skog/skog.c24
-rw-r--r--keyboards/percent/skog_lite/config.h6
-rw-r--r--keyboards/percent/skog_lite/info.json292
-rwxr-xr-xkeyboards/percent/skog_lite/keymaps/binman/keymap.c20
-rwxr-xr-xkeyboards/percent/skog_lite/keymaps/binman/readme.md3
-rw-r--r--keyboards/percent/skog_lite/rules.mk18
-rw-r--r--keyboards/percent/skog_lite/skog_lite.c34
-rw-r--r--keyboards/phantom/keymaps/rgbmod/rules.mk10
-rw-r--r--keyboards/phantom/rules.mk10
-rw-r--r--keyboards/pinky/rules.mk12
-rw-r--r--keyboards/plaid/rules.mk12
-rw-r--r--keyboards/planck/ez/rules.mk8
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c4
-rw-r--r--keyboards/planck/keymaps/samuel/README.org952
-rw-r--r--keyboards/planck/keymaps/samuel/keymap.c228
-rw-r--r--keyboards/planck/light/rules.mk8
-rw-r--r--keyboards/planck/rev1/rules.mk8
-rw-r--r--keyboards/planck/rev2/rules.mk8
-rw-r--r--keyboards/planck/rev3/rules.mk8
-rw-r--r--keyboards/planck/rev4/rules.mk8
-rw-r--r--keyboards/planck/rev5/rules.mk8
-rw-r--r--keyboards/planck/rev6/rules.mk8
-rw-r--r--keyboards/playkbtw/ca66/rules.mk6
-rw-r--r--keyboards/playkbtw/pk60/rules.mk8
-rw-r--r--keyboards/preonic/keymaps/alfrdmalr/config.h40
-rw-r--r--keyboards/preonic/keymaps/alfrdmalr/keymap.c192
-rw-r--r--keyboards/preonic/keymaps/alfrdmalr/readme.md80
-rw-r--r--keyboards/preonic/keymaps/alfrdmalr/rules.mk3
-rw-r--r--keyboards/preonic/keymaps/mverteuil/config.h39
-rw-r--r--keyboards/preonic/keymaps/mverteuil/keymap.c508
-rw-r--r--keyboards/preonic/keymaps/mverteuil/readme.md2
-rw-r--r--keyboards/preonic/keymaps/mverteuil/rules.mk5
-rw-r--r--keyboards/preonic/keymaps/mverteuil_2x2u/config.h39
-rw-r--r--keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c413
-rw-r--r--keyboards/preonic/keymaps/mverteuil_2x2u/rules.mk6
-rw-r--r--keyboards/preonic/rev1/rules.mk8
-rw-r--r--keyboards/preonic/rev2/rules.mk8
-rw-r--r--keyboards/preonic/rev3/rules.mk8
-rw-r--r--keyboards/primekb/prime_e/config.h2
-rw-r--r--keyboards/primekb/prime_e/rules.mk12
-rw-r--r--keyboards/primekb/prime_l/rules.mk12
-rw-r--r--keyboards/primekb/prime_m/rules.mk12
-rw-r--r--keyboards/primekb/prime_o/rules.mk12
-rw-r--r--keyboards/primekb/prime_r/rules.mk8
-rw-r--r--keyboards/projectkb/alice/chconf.h4
-rw-r--r--keyboards/projectkb/alice/config.h6
-rw-r--r--keyboards/projectkb/alice/rules.mk4
-rw-r--r--keyboards/puck/rules.mk8
-rw-r--r--keyboards/quantrik/kyuu/rules.mk12
-rw-r--r--keyboards/qwertyydox/rules.mk8
-rw-r--r--keyboards/rabbit/rabbit68/rules.mk12
-rw-r--r--keyboards/redox/rules.mk10
-rw-r--r--keyboards/redox_w/rules.mk8
-rwxr-xr-xkeyboards/redscarf_iiplus/verb/rules.mk12
-rwxr-xr-xkeyboards/redscarf_iiplus/verc/rules.mk12
-rwxr-xr-xkeyboards/reviung34/rules.mk12
-rw-r--r--keyboards/reviung39/rules.mk12
-rw-r--r--keyboards/rgbkb/sol/config.h2
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/rules.mk2
-rw-r--r--keyboards/rgbkb/sol/rev1/rules.mk8
-rw-r--r--keyboards/rgbkb/sol/rev2/rules.mk2
-rw-r--r--keyboards/rgbkb/zen/rules.mk8
-rw-r--r--keyboards/rgbkb/zygomorph/rev1/config.h2
-rw-r--r--keyboards/rgbkb/zygomorph/rules.mk12
-rw-r--r--keyboards/runner3680/3x6/config.h2
-rw-r--r--keyboards/runner3680/3x7/config.h2
-rw-r--r--keyboards/runner3680/3x8/config.h2
-rw-r--r--keyboards/runner3680/4x6/config.h2
-rw-r--r--keyboards/runner3680/4x7/config.h2
-rw-r--r--keyboards/runner3680/4x8/config.h2
-rw-r--r--keyboards/runner3680/5x6/config.h2
-rw-r--r--keyboards/runner3680/5x7/config.h2
-rw-r--r--keyboards/runner3680/5x8/config.h2
-rw-r--r--keyboards/runner3680/rules.mk12
-rw-r--r--keyboards/s7_elephant/rules.mk8
-rw-r--r--keyboards/scarletbandana/rules.mk10
-rw-r--r--keyboards/sck/neiso/rules.mk2
-rw-r--r--keyboards/sck/osa/rules.mk12
-rw-r--r--keyboards/scythe/config.h2
-rw-r--r--keyboards/scythe/rules.mk12
-rw-r--r--keyboards/sentraq/number_pad/rules.mk12
-rw-r--r--keyboards/sentraq/s60_x/default/rules.mk6
-rw-r--r--keyboards/sentraq/s60_x/rgb/rules.mk8
-rw-r--r--keyboards/sentraq/s65_plus/rules.mk6
-rw-r--r--keyboards/sentraq/s65_x/rules.mk6
-rw-r--r--keyboards/setta21/rev1/config.h2
-rw-r--r--keyboards/shiro/rules.mk12
-rw-r--r--keyboards/signum/3_0/elitec/config.h2
-rw-r--r--keyboards/signum/3_0/elitec/rules.mk8
-rw-r--r--keyboards/singa/config.h4
-rw-r--r--keyboards/singa/rules.mk2
-rw-r--r--keyboards/singa/singa.c34
-rw-r--r--keyboards/sirius/uni660/config.h78
-rw-r--r--keyboards/sirius/uni660/info.json12
-rw-r--r--keyboards/sirius/uni660/keymaps/default/keymap.c11
-rw-r--r--keyboards/sirius/uni660/keymaps/via/keymap.c35
-rw-r--r--keyboards/sirius/uni660/keymaps/via/rules.mk1
-rw-r--r--keyboards/sirius/uni660/matrix.c160
-rw-r--r--keyboards/sirius/uni660/readme.md13
-rw-r--r--keyboards/sirius/uni660/rules.mk32
-rw-r--r--keyboards/sirius/uni660/uni660.c35
-rw-r--r--keyboards/sirius/uni660/uni660.h61
-rw-r--r--keyboards/sirius/unigo66/config.h5
-rw-r--r--keyboards/sirius/unigo66/rules.mk8
-rw-r--r--keyboards/sixkeyboard/rules.mk8
-rw-r--r--keyboards/smk60/rules.mk10
-rw-r--r--keyboards/snagpad/rules.mk8
-rw-r--r--keyboards/snampad/config.h2
-rw-r--r--keyboards/snampad/rules.mk12
-rw-r--r--keyboards/southpole/rules.mk8
-rw-r--r--keyboards/spacetime/rules.mk12
-rw-r--r--keyboards/speedo/rules.mk10
-rw-r--r--keyboards/standaside/config.h2
-rw-r--r--keyboards/standaside/rules.mk12
-rwxr-xr-xkeyboards/staryu/rules.mk12
-rw-r--r--keyboards/stella/rules.mk12
-rw-r--r--keyboards/subatomic/rules.mk8
-rw-r--r--keyboards/suihankey/rules.mk12
-rw-r--r--keyboards/switchplate/README.md4
-rw-r--r--keyboards/switchplate/southpaw_fullsize/config.h143
-rw-r--r--keyboards/switchplate/southpaw_fullsize/info.json242
-rw-r--r--keyboards/switchplate/southpaw_fullsize/keymaps/default/keymap.c42
-rw-r--r--keyboards/switchplate/southpaw_fullsize/keymaps/default/readme.md3
-rw-r--r--keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/keymap.c43
-rw-r--r--keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/readme.md3
-rw-r--r--keyboards/switchplate/southpaw_fullsize/readme.md15
-rw-r--r--keyboards/switchplate/southpaw_fullsize/rules.mk32
-rw-r--r--keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.c51
-rw-r--r--keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.h70
-rwxr-xr-xkeyboards/sx60/rules.mk8
-rw-r--r--keyboards/tada68/keymaps/iso-nor/rules.mk8
-rw-r--r--keyboards/tada68/keymaps/iso-uk/rules.mk8
-rw-r--r--keyboards/tada68/keymaps/rgb/rules.mk8
-rw-r--r--keyboards/tanuki/config.h2
-rw-r--r--keyboards/tanuki/rules.mk12
-rw-r--r--keyboards/tartan/config.h248
-rw-r--r--keyboards/tartan/info.json34
-rw-r--r--keyboards/tartan/keymaps/default/keymap.c34
-rw-r--r--keyboards/tartan/keymaps/default/readme.md1
-rw-r--r--keyboards/tartan/readme.md25
-rw-r--r--keyboards/tartan/rules.mk41
-rw-r--r--keyboards/tartan/tartan.c16
-rw-r--r--keyboards/tartan/tartan.h111
-rw-r--r--keyboards/tartan/usbconfig.h383
-rw-r--r--keyboards/telophase/rules.mk8
-rwxr-xr-xkeyboards/tetris/rules.mk8
-rw-r--r--keyboards/tgr/alice/alice.c20
-rw-r--r--keyboards/tgr/alice/config.h3
-rw-r--r--keyboards/tgr/alice/rules.mk2
-rw-r--r--keyboards/tgr/jane/config.h3
-rw-r--r--keyboards/tgr/jane/jane.c34
-rw-r--r--keyboards/thevankeyboards/bananasplit/rules.mk8
-rw-r--r--keyboards/thevankeyboards/caravan/rules.mk8
-rw-r--r--keyboards/thevankeyboards/minivan/rules.mk8
-rw-r--r--keyboards/thevankeyboards/roadkit/rules.mk8
-rw-r--r--keyboards/tkc1800/rules.mk8
-rw-r--r--keyboards/tmo50/config.h4
-rw-r--r--keyboards/tmo50/keymaps/via/keymap.c52
-rw-r--r--keyboards/tmo50/keymaps/via/readme.md1
-rw-r--r--keyboards/tmo50/keymaps/via/rules.mk1
-rw-r--r--keyboards/tmo50/rules.mk12
-rw-r--r--keyboards/toad/rules.mk8
-rw-r--r--keyboards/tokyo60/rules.mk8
-rw-r--r--keyboards/touchpad/rules.mk8
-rw-r--r--keyboards/treadstone32/config.h2
-rw-r--r--keyboards/treadstone32/rules.mk8
-rw-r--r--keyboards/treadstone48/rev1/rules.mk3
-rw-r--r--keyboards/treasure/type9/rules.mk12
-rw-r--r--keyboards/uk78/rules.mk8
-rw-r--r--keyboards/unikorn/config.h4
-rw-r--r--keyboards/unikorn/unikorn.c34
-rw-r--r--keyboards/ut472/rules.mk10
-rw-r--r--keyboards/uzu42/rev1/config.h2
-rw-r--r--keyboards/uzu42/rules.mk8
-rw-r--r--keyboards/v60_type_r/rules.mk10
-rw-r--r--keyboards/vinta/chconf.h6
-rw-r--r--keyboards/vinta/rules.mk6
-rw-r--r--keyboards/vision_division/rules.mk8
-rw-r--r--keyboards/vitamins_included/rev1/config.h2
-rw-r--r--keyboards/vitamins_included/rev2/config.h2
-rw-r--r--keyboards/vitamins_included/rules.mk8
-rw-r--r--keyboards/vn66/rules.mk12
-rw-r--r--keyboards/waldo/rules.mk8
-rw-r--r--keyboards/westfoxtrot/aanzee/rules.mk12
-rw-r--r--keyboards/westfoxtrot/cyclops/rules.mk12
-rw-r--r--keyboards/westfoxtrot/cypher/cypher.c56
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/config.h (renamed from keyboards/westfoxtrot/cypher/config.h)2
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/info.json (renamed from keyboards/westfoxtrot/cypher/info.json)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/default/keymap.c (renamed from keyboards/westfoxtrot/cypher/keymaps/default/keymap.c)28
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/default/readme.md (renamed from keyboards/westfoxtrot/cypher/keymaps/default/readme.md)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/keymap.c (renamed from keyboards/westfoxtrot/cypher/keymaps/default-iso/keymap.c)28
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/readme.md (renamed from keyboards/westfoxtrot/cypher/keymaps/default-iso/readme.md)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/config.h (renamed from keyboards/westfoxtrot/cypher/keymaps/kwer/config.h)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c (renamed from keyboards/westfoxtrot/cypher/keymaps/kwer/keymap.c)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/readme.md (renamed from keyboards/westfoxtrot/cypher/keymaps/kwer/readme.md)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/rules.mk (renamed from keyboards/westfoxtrot/cypher/keymaps/kwer/rules.mk)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/readme.md (renamed from keyboards/westfoxtrot/cypher/readme.md)10
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/rev1.c31
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/rev1.h (renamed from keyboards/westfoxtrot/cypher/cypher.h)0
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/rules.mk (renamed from keyboards/westfoxtrot/cypher/rules.mk)12
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/config.h81
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/info.json110
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/default/keymap.c37
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/default/readme.md1
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/keymap.c37
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/readme.md1
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c49
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/max/readme.md1
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/readme.md13
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/rev5.c31
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/rev5.h48
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/rules.mk33
-rw-r--r--keyboards/whitefox/chconf.h4
-rw-r--r--keyboards/whitefox/info.json74
-rw-r--r--keyboards/whitefox/rules.mk5
-rw-r--r--keyboards/whitefox/whitefox.h32
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/config.h5
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/info.json1
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/rules.mk10
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/config.h3
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/info.json1
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/config.h3
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/config.h3
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/config.h3
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/info.json1
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt60_a/config.h2
-rw-r--r--keyboards/wilba_tech/wt60_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt60_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt60_b/config.h118
-rw-r--r--keyboards/wilba_tech/wt60_b/info.json12
-rw-r--r--keyboards/wilba_tech/wt60_b/keymaps/default/keymap.c38
-rw-r--r--keyboards/wilba_tech/wt60_b/keymaps/via/keymap.c38
-rw-r--r--keyboards/wilba_tech/wt60_b/keymaps/via/rules.mk1
-rw-r--r--keyboards/wilba_tech/wt60_b/readme.md18
-rw-r--r--keyboards/wilba_tech/wt60_b/rules.mk46
-rw-r--r--keyboards/wilba_tech/wt60_b/wt60_b.c1
-rw-r--r--keyboards/wilba_tech/wt60_b/wt60_b.h37
-rw-r--r--keyboards/wilba_tech/wt60_bx/config.h118
-rw-r--r--keyboards/wilba_tech/wt60_bx/info.json12
-rw-r--r--keyboards/wilba_tech/wt60_bx/keymaps/default/keymap.c38
-rw-r--r--keyboards/wilba_tech/wt60_bx/keymaps/via/keymap.c38
-rw-r--r--keyboards/wilba_tech/wt60_bx/keymaps/via/rules.mk1
-rw-r--r--keyboards/wilba_tech/wt60_bx/readme.md18
-rw-r--r--keyboards/wilba_tech/wt60_bx/rules.mk46
-rw-r--r--keyboards/wilba_tech/wt60_bx/wt60_bx.c1
-rw-r--r--keyboards/wilba_tech/wt60_bx/wt60_bx.h37
-rw-r--r--keyboards/wilba_tech/wt60_d/info.json1
-rw-r--r--keyboards/wilba_tech/wt60_d/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt65_a/config.h2
-rw-r--r--keyboards/wilba_tech/wt65_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt65_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt65_b/config.h2
-rw-r--r--keyboards/wilba_tech/wt65_b/info.json1
-rw-r--r--keyboards/wilba_tech/wt65_b/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt69_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt69_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt75_a/config.h2
-rw-r--r--keyboards/wilba_tech/wt75_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt75_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt75_b/config.h2
-rw-r--r--keyboards/wilba_tech/wt75_b/info.json1
-rw-r--r--keyboards/wilba_tech/wt75_b/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt75_c/config.h2
-rw-r--r--keyboards/wilba_tech/wt75_c/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt80_a/config.h3
-rw-r--r--keyboards/wilba_tech/wt80_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt80_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt8_a/info.json1
-rw-r--r--keyboards/wilba_tech/wt8_a/rules.mk10
-rw-r--r--keyboards/wilba_tech/wt_main.c6
-rw-r--r--keyboards/wilba_tech/wt_mono_backlight.c6
-rw-r--r--keyboards/wilba_tech/wt_rgb_backlight.c72
-rw-r--r--keyboards/wilba_tech/zeal60/config.h5
-rw-r--r--keyboards/wilba_tech/zeal60/info.json1
-rw-r--r--keyboards/wilba_tech/zeal60/rules.mk8
-rw-r--r--keyboards/wilba_tech/zeal65/config.h3
-rw-r--r--keyboards/wilba_tech/zeal65/info.json1
-rw-r--r--keyboards/wilba_tech/zeal65/rules.mk8
-rw-r--r--keyboards/winkeyless/bface/bface.c34
-rw-r--r--keyboards/winkeyless/bface/config.h9
-rw-r--r--keyboards/winkeyless/bface/rules.mk2
-rw-r--r--keyboards/winkeyless/bmini/bmini.c20
-rw-r--r--keyboards/winkeyless/bmini/config.h8
-rw-r--r--keyboards/winkeyless/bmini/readme.md8
-rw-r--r--keyboards/winkeyless/bmini/rules.mk2
-rw-r--r--keyboards/winkeyless/bminiex/backlight.c211
-rw-r--r--keyboards/winkeyless/bminiex/backlight_custom.h13
-rw-r--r--keyboards/winkeyless/bminiex/bminiex.c26
-rw-r--r--keyboards/winkeyless/bminiex/breathing_custom.h140
-rw-r--r--keyboards/winkeyless/bminiex/config.h1
-rw-r--r--keyboards/winkeyless/bminiex/rules.mk3
-rw-r--r--keyboards/winkeyless/readme.md12
-rw-r--r--keyboards/wsk/jerkin/config.h46
-rw-r--r--keyboards/wsk/jerkin/info.json12
-rw-r--r--keyboards/wsk/jerkin/jerkin.c1
-rw-r--r--keyboards/wsk/jerkin/jerkin.h13
-rw-r--r--keyboards/wsk/jerkin/keymaps/default/keymap.c65
-rw-r--r--keyboards/wsk/jerkin/readme.md15
-rw-r--r--keyboards/wsk/jerkin/rules.mk29
-rw-r--r--keyboards/wsk/tkl30/config.h48
-rw-r--r--keyboards/wsk/tkl30/info.json12
-rw-r--r--keyboards/wsk/tkl30/keymaps/default/keymap.c24
-rw-r--r--keyboards/wsk/tkl30/readme.md16
-rw-r--r--keyboards/wsk/tkl30/rules.mk32
-rw-r--r--keyboards/wsk/tkl30/tkl30.c1
-rw-r--r--keyboards/wsk/tkl30/tkl30.h14
-rw-r--r--keyboards/xbows/woody/rules.mk2
-rw-r--r--keyboards/xd004/v1/rules.mk6
-rw-r--r--keyboards/xd60/rev2/rules.mk8
-rw-r--r--keyboards/xd60/rev3/rules.mk8
-rw-r--r--keyboards/xd75/keymaps/atomic_style_jp/keymap.c81
-rw-r--r--keyboards/xd75/keymaps/atomic_style_jp/readme.md4
-rw-r--r--keyboards/xd75/rules.mk10
-rw-r--r--keyboards/xd84/rules.mk12
-rw-r--r--keyboards/xd87/rules.mk12
-rw-r--r--keyboards/xd96/rules.mk12
-rw-r--r--keyboards/xelus/dawn60/config.h3
-rw-r--r--keyboards/xelus/dawn60/dawn60.h4
-rw-r--r--keyboards/xelus/dawn60/info.json77
-rw-r--r--keyboards/xelus/dawn60/keymaps/default/keymap.c16
-rw-r--r--keyboards/xelus/dawn60/keymaps/via/keymap.c16
-rw-r--r--keyboards/xmmx/rules.mk8
-rw-r--r--keyboards/xw60/rules.mk8
-rw-r--r--keyboards/yatara/drink_me/config.h37
-rw-r--r--keyboards/yatara/drink_me/drink_me.c17
-rw-r--r--keyboards/yatara/drink_me/drink_me.h25
-rw-r--r--keyboards/yatara/drink_me/info.json34
-rw-r--r--keyboards/yatara/drink_me/keymaps/caterpillar/keymap.c10
-rw-r--r--keyboards/yatara/drink_me/keymaps/caterpillar/readme.md9
-rw-r--r--keyboards/yatara/drink_me/keymaps/cheshire_cat/keymap.c10
-rw-r--r--keyboards/yatara/drink_me/keymaps/cheshire_cat/readme.md13
-rw-r--r--keyboards/yatara/drink_me/keymaps/default/keymap.c10
-rw-r--r--keyboards/yatara/drink_me/keymaps/default/readme.md11
-rw-r--r--keyboards/yatara/drink_me/keymaps/dormouse/keymap.c10
-rw-r--r--keyboards/yatara/drink_me/keymaps/dormouse/readme.md11
-rw-r--r--keyboards/yatara/drink_me/keymaps/dormouse/rules.mk1
-rw-r--r--keyboards/yatara/drink_me/keymaps/queen/config.h1
-rw-r--r--keyboards/yatara/drink_me/keymaps/queen/keymap.c67
-rw-r--r--keyboards/yatara/drink_me/keymaps/queen/readme.md20
-rw-r--r--keyboards/yatara/drink_me/keymaps/queen/rules.mk2
-rw-r--r--keyboards/yatara/drink_me/keymaps/via/keymap.c28
-rw-r--r--keyboards/yatara/drink_me/keymaps/via/readme.md7
-rw-r--r--keyboards/yatara/drink_me/keymaps/via/rules.mk2
-rw-r--r--keyboards/yatara/drink_me/readme.md17
-rw-r--r--keyboards/yatara/drink_me/rules.mk32
-rw-r--r--keyboards/yd60mq/rules.mk8
-rw-r--r--keyboards/yd60mq/yd60mq.c1
-rw-r--r--keyboards/yd68/rules.mk12
-rw-r--r--keyboards/ymd75/backlight.c216
-rw-r--r--keyboards/ymd75/backlight_custom.h15
-rw-r--r--keyboards/ymd75/breathing_custom.h140
-rw-r--r--keyboards/ymd75/config.h6
-rw-r--r--keyboards/ymd75/rules.mk6
-rw-r--r--keyboards/ymd75/ymd75.c22
-rw-r--r--keyboards/ymd96/backlight.c214
-rw-r--r--keyboards/ymd96/backlight_custom.h15
-rw-r--r--keyboards/ymd96/breathing_custom.h140
-rw-r--r--keyboards/ymd96/config.h8
-rw-r--r--keyboards/ymd96/rules.mk3
-rw-r--r--keyboards/ymd96/ymd96.c24
-rw-r--r--keyboards/ymdk/bface/bface.c26
-rw-r--r--keyboards/ymdk/bface/config.h2
-rw-r--r--keyboards/ymdk/bface/rules.mk3
-rw-r--r--keyboards/ymdk_np21/backlight.c213
-rw-r--r--keyboards/ymdk_np21/backlight_custom.h15
-rw-r--r--keyboards/ymdk_np21/breathing_custom.h140
-rw-r--r--keyboards/ymdk_np21/config.h10
-rw-r--r--keyboards/ymdk_np21/rules.mk3
-rw-r--r--keyboards/ymdk_np21/ymdk_np21.c22
-rw-r--r--keyboards/yosino58/rules.mk8
-rw-r--r--keyboards/z150_blackheart/rules.mk8
-rw-r--r--keyboards/zinc/keymaps/default/rules.mk8
-rw-r--r--keyboards/zinc/rules.mk8
-rw-r--r--keyboards/zj68/rules.mk8
-rwxr-xr-xkeyboards/zlant/rules.mk8
1395 files changed, 24852 insertions, 16551 deletions
diff --git a/keyboards/1upkeyboards/1up60hse/config.h b/keyboards/1upkeyboards/1up60hse/config.h
index 9ab969797e..e2de955c45 100644
--- a/keyboards/1upkeyboards/1up60hse/config.h
+++ b/keyboards/1upkeyboards/1up60hse/config.h
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
+#define VENDOR_ID 0x6F75 // OU
+#define PRODUCT_ID 0x6873
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1up60hse
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/via/keymap.c b/keyboards/1upkeyboards/1up60hse/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cd4ea637aa
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/via/keymap.c
@@ -0,0 +1,91 @@
+/* Copyright 2018 MechMerlin
+ * Copyright 2018 Logan Huskins
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty
+ * ,-----------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
+ * |-----------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+ * |-----------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |-----------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift |
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl | GUI | Alt | Space | Alt | GUI | L1 | Ctrl |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_60_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+
+ /* Function
+ * ,-----------------------------------------------------------------------------------------.
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | Up | | | | | | | |PrtSc|ScrLk|Pause| |
+ * |-----------------------------------------------------------------------------------------+
+ * | |Left |Down |Right| | | | | | Ins |Home |PgUp | |
+ * |-----------------------------------------------------------------------------------------+
+ * | |VolUp|VolDn|VolMu| | | | | | End |PgDn | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | L2 | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_60_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS
+ ),
+
+ /* RGB
+ * ,-----------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | Reset |
+ * |-----------------------------------------------------------------------------------------+
+ * | BL Tog |BLInc|BLDec|BLStp| | | | | | | | | | |
+ * |-----------------------------------------------------------------------------------------+
+ * | RGB Tog |Mode |Hue I|Sat I|Val I|Spd I|Plain|Breat|Rnbow|Swirl| | | |
+ * |-----------------------------------------------------------------------------------------+
+ * | |RMode|Hue D|Sat D|Val D|Spd D|Snake|Knigh|Xmas |Gradi| | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [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,
+ 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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_60_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md b/keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md
new file mode 100644
index 0000000000..3eca320761
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md
@@ -0,0 +1 @@
+# 1up60hse via keymap
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/via/rules.mk b/keyboards/1upkeyboards/1up60hse/keymaps/via/rules.mk
new file mode 100644
index 0000000000..6305f94a35
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/1upkeyboards/1up60hse/rules.mk b/keyboards/1upkeyboards/1up60hse/rules.mk
index 09caf0045a..bce414e25a 100644
--- a/keyboards/1upkeyboards/1up60hse/rules.mk
+++ b/keyboards/1upkeyboards/1up60hse/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
EXTRAFLAGS += -flto
LAYOUTS = 60_ansi
diff --git a/keyboards/1upkeyboards/1up60hte/config.h b/keyboards/1upkeyboards/1up60hte/config.h
index bcf6329f76..8c4d2fc308 100644
--- a/keyboards/1upkeyboards/1up60hte/config.h
+++ b/keyboards/1upkeyboards/1up60hte/config.h
@@ -21,8 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define VENDOR_ID 0x6F75 // OU
+#define PRODUCT_ID 0x6874 // HT
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1up60hte
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ecd5a9040c
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/*
+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/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_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_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(1),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
+
+ [1] = LAYOUT_tsangan(
+ 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_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/via/rules.mk b/keyboards/1upkeyboards/1up60hte/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk
index d2bedea1b6..048407bed2 100644
--- a/keyboards/1upkeyboards/1up60hte/rules.mk
+++ b/keyboards/1upkeyboards/1up60hte/rules.mk
@@ -14,15 +14,16 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
+LTO_ENABLE = yes
LAYOUTS = 60_hhkb
diff --git a/keyboards/1upkeyboards/1up60rgb/config.h b/keyboards/1upkeyboards/1up60rgb/config.h
index 6cf5b69045..46e08a5160 100644
--- a/keyboards/1upkeyboards/1up60rgb/config.h
+++ b/keyboards/1upkeyboards/1up60rgb/config.h
@@ -3,8 +3,8 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define VENDOR_ID 0x6F75 // OU
+#define PRODUCT_ID 0x7267 // RG
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1UP RGB Underglow PCB
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/via/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1ff6ef5b40
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/via/keymap.c
@@ -0,0 +1,34 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [1] = LAYOUT_all(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/1upkeyboards/1up60rgb/keymaps/via/rules.mk b/keyboards/1upkeyboards/1up60rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/1upkeyboards/1up60rgb/rules.mk b/keyboards/1upkeyboards/1up60rgb/rules.mk
index 98a1e93a1b..24f737398e 100644
--- a/keyboards/1upkeyboards/1up60rgb/rules.mk
+++ b/keyboards/1upkeyboards/1up60rgb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/1upkeyboards/super16/rules.mk b/keyboards/1upkeyboards/super16/rules.mk
index 07a403cc11..3a3cee8c6b 100644
--- a/keyboards/1upkeyboards/super16/rules.mk
+++ b/keyboards/1upkeyboards/super16/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x4 numpad_4x4
diff --git a/keyboards/2_milk/rules.mk b/keyboards/2_milk/rules.mk
index 57c6d32c81..4e6c5f7039 100644
--- a/keyboards/2_milk/rules.mk
+++ b/keyboards/2_milk/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/2key2crawl/rules.mk b/keyboards/2key2crawl/rules.mk
index c7bacab796..e6ef0a288f 100644
--- a/keyboards/2key2crawl/rules.mk
+++ b/keyboards/2key2crawl/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/30wer/rules.mk b/keyboards/30wer/rules.mk
index 1aeca9a545..9a80d5a18a 100644
--- a/keyboards/30wer/rules.mk
+++ b/keyboards/30wer/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/40percentclub/25/rules.mk b/keyboards/40percentclub/25/rules.mk
index 3321a84025..483619f189 100644
--- a/keyboards/40percentclub/25/rules.mk
+++ b/keyboards/40percentclub/25/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Enable generic behavior for split boards
SPLIT_KEYBOARD = yes
diff --git a/keyboards/40percentclub/4x4/rules.mk b/keyboards/40percentclub/4x4/rules.mk
index c653c6753d..c4257a070d 100644
--- a/keyboards/40percentclub/4x4/rules.mk
+++ b/keyboards/40percentclub/4x4/rules.mk
@@ -14,21 +14,21 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12 ortho_4x16
diff --git a/keyboards/40percentclub/5x5/rules.mk b/keyboards/40percentclub/5x5/rules.mk
index d8b82248c6..ec0f656d08 100644
--- a/keyboards/40percentclub/5x5/rules.mk
+++ b/keyboards/40percentclub/5x5/rules.mk
@@ -14,21 +14,21 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x5 ortho_5x10 ortho_5x15
diff --git a/keyboards/40percentclub/6lit/rules.mk b/keyboards/40percentclub/6lit/rules.mk
index db09b6c5f6..4faa9610b8 100644
--- a/keyboards/40percentclub/6lit/rules.mk
+++ b/keyboards/40percentclub/6lit/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Enable generic behavior for split boards
SPLIT_KEYBOARD = yes
diff --git a/keyboards/40percentclub/foobar/rules.mk b/keyboards/40percentclub/foobar/rules.mk
index 4b77d4cdba..f378e39b6e 100644
--- a/keyboards/40percentclub/foobar/rules.mk
+++ b/keyboards/40percentclub/foobar/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Enable generic behavior for split boards
SPLIT_KEYBOARD = yes
diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk
index 190aea355a..d8c4894a85 100644
--- a/keyboards/40percentclub/gherkin/rules.mk
+++ b/keyboards/40percentclub/gherkin/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/40percentclub/half_n_half/rules.mk b/keyboards/40percentclub/half_n_half/rules.mk
index 62d9e37ada..98b2924707 100644
--- a/keyboards/40percentclub/half_n_half/rules.mk
+++ b/keyboards/40percentclub/half_n_half/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Enable generic behavior for split boards
SPLIT_KEYBOARD = yes
diff --git a/keyboards/40percentclub/i75/rules.mk b/keyboards/40percentclub/i75/rules.mk
index 6f79143a18..e99830b853 100644
--- a/keyboards/40percentclub/i75/rules.mk
+++ b/keyboards/40percentclub/i75/rules.mk
@@ -1,10 +1,10 @@
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -12,12 +12,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x15
DEFAULT_FOLDER = 40percentclub/i75/promicro
diff --git a/keyboards/40percentclub/luddite/config.h b/keyboards/40percentclub/luddite/config.h
index 36bda06143..005cb7a705 100644
--- a/keyboards/40percentclub/luddite/config.h
+++ b/keyboards/40percentclub/luddite/config.h
@@ -19,6 +19,8 @@
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* number of backlight levels */
#define BACKLIGHT_PIN B5
#ifdef BACKLIGHT_PIN
diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk
index 02e0abe9a6..6da5cd05a6 100644
--- a/keyboards/40percentclub/luddite/rules.mk
+++ b/keyboards/40percentclub/luddite/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c b/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
index 546f862a6e..eb281f5f18 100644
--- a/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
+++ b/keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
@@ -48,8 +48,6 @@ void led_set_user(uint8_t usb_led){
} else {
//set to Hi-Z
setPinInput(B0);
- writePinLow(B0);
setPinInput(D5);
- writePinLow(D5);
}
}
diff --git a/keyboards/40percentclub/mf68/rules.mk b/keyboards/40percentclub/mf68/rules.mk
index 1113d34a23..65d1870355 100644
--- a/keyboards/40percentclub/mf68/rules.mk
+++ b/keyboards/40percentclub/mf68/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/40percentclub/nano/config.h b/keyboards/40percentclub/nano/config.h
index 5eb65c74ad..8ee6963e49 100644
--- a/keyboards/40percentclub/nano/config.h
+++ b/keyboards/40percentclub/nano/config.h
@@ -50,9 +50,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
}
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
-//#define DIODE_DIRECTION CUSTOM_MATRIX
-
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/40percentclub/nano/rules.mk b/keyboards/40percentclub/nano/rules.mk
index d55a40889b..e9658c4b55 100644
--- a/keyboards/40percentclub/nano/rules.mk
+++ b/keyboards/40percentclub/nano/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/40percentclub/nein/rules.mk b/keyboards/40percentclub/nein/rules.mk
index 7805bac176..47742c4b46 100644
--- a/keyboards/40percentclub/nein/rules.mk
+++ b/keyboards/40percentclub/nein/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/40percentclub/nori/rules.mk b/keyboards/40percentclub/nori/rules.mk
index 75aa26e496..e9b24fc92a 100644
--- a/keyboards/40percentclub/nori/rules.mk
+++ b/keyboards/40percentclub/nori/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12
diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk
index a3e442e09e..312134b7c0 100644
--- a/keyboards/40percentclub/tomato/rules.mk
+++ b/keyboards/40percentclub/tomato/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk
index 043a62906a..9d21750b44 100644
--- a/keyboards/40percentclub/ut47/rules.mk
+++ b/keyboards/40percentclub/ut47/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/6ball/rules.mk b/keyboards/6ball/rules.mk
index 05a642e6e9..e4f7093f74 100644
--- a/keyboards/6ball/rules.mk
+++ b/keyboards/6ball/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/7skb/rev1/config.h b/keyboards/7skb/rev1/config.h
index 01b1ef4a1c..b1096c4d69 100644
--- a/keyboards/7skb/rev1/config.h
+++ b/keyboards/7skb/rev1/config.h
@@ -34,6 +34,8 @@ 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, B5 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/8pack/rules.mk b/keyboards/8pack/rules.mk
index 625f8b201f..4ed443daa5 100644
--- a/keyboards/8pack/rules.mk
+++ b/keyboards/8pack/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/9key/rules.mk b/keyboards/9key/rules.mk
index 5e6e882e9c..b6c0c73be9 100644
--- a/keyboards/9key/rules.mk
+++ b/keyboards/9key/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/abstract/ellipse/rev1/config.h b/keyboards/abstract/ellipse/rev1/config.h
index 36a4fc40f2..15606f3d44 100644
--- a/keyboards/abstract/ellipse/rev1/config.h
+++ b/keyboards/abstract/ellipse/rev1/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F0, B6, B5 }
#define UNUSED_PINS { B0, D0, D1, D2, D4, D6, D7, F1, F4, F5, F6, F7 }
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN C6
diff --git a/keyboards/abstract/ellipse/rev1/rules.mk b/keyboards/abstract/ellipse/rev1/rules.mk
index 6c7f5fea32..214b0a3975 100644
--- a/keyboards/abstract/ellipse/rev1/rules.mk
+++ b/keyboards/abstract/ellipse/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
ENCODER_ENABLE = yes # Enable support for rotary encoders
diff --git a/keyboards/acr60/rules.mk b/keyboards/acr60/rules.mk
index 1e6d4bb7cd..c1f1f22ba3 100644
--- a/keyboards/acr60/rules.mk
+++ b/keyboards/acr60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/adkb96/rev1/config.h b/keyboards/adkb96/rev1/config.h
index cff135c261..42685123b1 100644
--- a/keyboards/adkb96/rev1/config.h
+++ b/keyboards/adkb96/rev1/config.h
@@ -33,6 +33,8 @@ 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 { B6, B2, B3, B1, F7, F6, F5, F4 }
+#define DIODE_DIRECTION COL2ROW
+
#define SOFT_SERIAL_PIN D0
/* define tapping term */
diff --git a/keyboards/adkb96/rules.mk b/keyboards/adkb96/rules.mk
index cb4ce2dd7b..95fbc1d48a 100644
--- a/keyboards/adkb96/rules.mk
+++ b/keyboards/adkb96/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/aeboards/aegis/rules.mk b/keyboards/aeboards/aegis/rules.mk
index 2e39dae173..cb9ad1acf1 100644
--- a/keyboards/aeboards/aegis/rules.mk
+++ b/keyboards/aeboards/aegis/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/aeboards/ext65/rules.mk b/keyboards/aeboards/ext65/rules.mk
index a5c98a1c60..6e5ad12f8d 100644
--- a/keyboards/aeboards/ext65/rules.mk
+++ b/keyboards/aeboards/ext65/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/ai03/lunar/rules.mk b/keyboards/ai03/lunar/rules.mk
index dd3d71baa9..62da535e1f 100644
--- a/keyboards/ai03/lunar/rules.mk
+++ b/keyboards/ai03/lunar/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ai03/orbit/config.h b/keyboards/ai03/orbit/config.h
index 00945ac796..051b924b87 100644
--- a/keyboards/ai03/orbit/config.h
+++ b/keyboards/ai03/orbit/config.h
@@ -54,7 +54,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
diff --git a/keyboards/ai03/orbit/rules.mk b/keyboards/ai03/orbit/rules.mk
index 758a73cd2a..706ba9b065 100644
--- a/keyboards/ai03/orbit/rules.mk
+++ b/keyboards/ai03/orbit/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
USE_I2C = no # I2C for split communication
CUSTOM_MATRIX = yes # For providing custom matrix.c (in this case, override regular matrix.c with split matrix.c)
# SPLIT_KEYBOARD = yes # Split keyboard flag disabled as manual edits had to be done to the split common files
diff --git a/keyboards/ai03/quasar/rules.mk b/keyboards/ai03/quasar/rules.mk
index 6b67847791..3cb2d3ab70 100644
--- a/keyboards/ai03/quasar/rules.mk
+++ b/keyboards/ai03/quasar/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ai03/soyuz/rules.mk b/keyboards/ai03/soyuz/rules.mk
index f092cb35be..bcf4f80bb8 100644
--- a/keyboards/ai03/soyuz/rules.mk
+++ b/keyboards/ai03/soyuz/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x4
diff --git a/keyboards/akb/eb46/rules.mk b/keyboards/akb/eb46/rules.mk
index 5360459cf7..bd3cd09a9f 100644
--- a/keyboards/akb/eb46/rules.mk
+++ b/keyboards/akb/eb46/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c b/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c
new file mode 100644
index 0000000000..0014d699a3
--- /dev/null
+++ b/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c
@@ -0,0 +1,75 @@
+/* Copyright 2019 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+/*
+BLANK
+ ,----------------------------------------------------------------. ,--------------.
+ | | | | | | | | | | | | | | | | | |
+ |----------------------------------------------------------------| |--------------|
+ | | | | | | | | | | | | | | | | |
+ |------------------------------------------------------------ | |--------------|
+ | | | | | | | | | | | | | | | | |
+ |----------------------------------------------------------------' |--------------|
+ | | | | | | | | | | | | ,----. | | | |
+ |-----------------------------------------------------------' | | `--------------|
+ | | | | | | ,--------------. | | |
+ `------` '------------------------------` '-----' | | | | `---------'
+ `--------------'
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( /* Base
+ ,----------------------------------------------------------------. ,--------------.
+ |Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bac| | / | * | + |
+ |----------------------------------------------------------------| |--------------|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Enter| | 7 | 8 | 9 |
+ |------------------------------------------------------------ | |--------------|
+ |CapsLock | A | S | D | F | G | H | J | K | L | : | | | 4 | 5 | 6 |
+ |----------------------------------------------------------------' |--------------|
+ |Shift | \ | Z | X | C | V | B | N | M | , | . | ,----. | 1 | 2 | 3 |
+ |-----------------------------------------------------------' | Up | `--------------|
+ | Ctrl | | SPACE | |AltGr| ,--------------. | 0 | . |
+ `------` '------------------------------` '-----' |L/fn|Down|Rght| `---------'
+ `--------------'
+ */
+KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_PSLS, KC_PAST, KC_PPLS,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, KC_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_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_COMMA, KC_DOT, KC_UP, KC_P1, KC_P2, KC_P3,
+KC_LCTL, _______, _______, _______, KC_SPC, _______, _______, KC_RALT, LT(1, KC_LEFT), KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ [1] = LAYOUT( /* Second
+ ,----------------------------------------------------------------. ,--------------.
+ | GRV| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9| F10| F11| F12 | |Nlck|Pscr| = |
+ |----------------------------------------------------------------| |--------------|
+ | | | | | | | | | | | ? | DEL | |Home| Up |PgUp|
+ |------------------------------------------------------------ | |--------------|
+ | | | | | | | | | | | ' |DEL | |Left|ScrL|Rght|
+ |----------------------------------------------------------------' |--------------|
+ | | | | | | | | | | [ | ] | ,----. |End |Down|PgDn|
+ |-----------------------------------------------------------' | | `--------------|
+ | GUI | | | | | ,--------------. | |Rest|
+ `------` '------------------------------` '-----' | | | | `---------'
+ `--------------'
+ */
+KC_GRV, KC_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_PSCR, KC_EQUAL,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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),
+};
+
diff --git a/keyboards/akb/raine/keymaps/mehadviceguy/readme.md b/keyboards/akb/raine/keymaps/mehadviceguy/readme.md
new file mode 100644
index 0000000000..e9e411bc5b
--- /dev/null
+++ b/keyboards/akb/raine/keymaps/mehadviceguy/readme.md
@@ -0,0 +1,68 @@
+# Eyecandy
+![Eyecandy](https://i.imgur.com/gYWNDlF.png)
+
+# MehAdviceGuy Raine layout
+
+Welcome to one of the most useless layouts you will find this side of town!
+The layout is born out of the need for AltGr to get to æø and å when you don't have a full bottom row.
+
+## Base Layer (0)
+The base layer borrows alot from the Default Raine layer in regards to the alphas, and the numpad. But deviates ever so slightly by putting the layer key on the Left arrow key, relacing it from its original location with AltGr. And putting , and . on what was normally ? and right shift.
+```
+ ,----------------------------------------------------------------. ,--------------.
+ |Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bac| | / | * | + |
+ |----------------------------------------------------------------| |--------------|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Enter| | 7 | 8 | 9 |
+ |------------------------------------------------------------ | |--------------|
+ |CapsLock | A | S | D | F | G | H | J | K | L | : | | | 4 | 5 | 6 |
+ |----------------------------------------------------------------' |--------------|
+ |Shift | \ | Z | X | C | V | B | N | M | , | . | ,----. | 1 | 2 | 3 |
+ |-----------------------------------------------------------' | Up | `--------------|
+ | Ctrl | | SPACE | |AltGr| ,--------------. | 0 | . |
+ `------` '------------------------------` '-----' |L/fn|Down|Rght| `---------'
+ `--------------'
+```
+
+## Modifier Layer (1)
+The Modifier layer also borrows a few things from the Default Raine layout, but changes a fair bit of things in it. These changes include:
+* Moving Delete to Enter and completing the F-row
+* Moving [ and ] to , and .
+* Adding GUI to Left Ctrl
+* Replacing insert with =
+* Adding / to the P position
+* Moving ' one to the left
+
+```
+ ,----------------------------------------------------------------. ,--------------.
+ | GRV| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9| F10| F11| F12 | |Nlck|Pscr| = |
+ |----------------------------------------------------------------| |--------------|
+ | | | | | | | | | | | ? | DEL | |Home| Up |PgUp|
+ |------------------------------------------------------------ | |--------------|
+ | | | | | | | | | | | ' |DEL | |Left|ScrL|Rght|
+ |----------------------------------------------------------------' |--------------|
+ | | | | | | | | | | [ | ] | ,----. |End |Down|PgDn|
+ |-----------------------------------------------------------' | | `--------------|
+ | GUI | | | | | ,--------------. | |Rest|
+ `------` '------------------------------` '-----' | | | | `---------'
+ `--------------'
+```
+
+### Blank ASKII version if anyone needs!
+```
+ ,----------------------------------------------------------------. ,--------------.
+ | | | | | | | | | | | | | | | | | |
+ |----------------------------------------------------------------| |--------------|
+ | | | | | | | | | | | | | | | | |
+ |------------------------------------------------------------ | |--------------|
+ | | | | | | | | | | | | | | | | |
+ |----------------------------------------------------------------' |--------------|
+ | | | | | | | | | | | | ,----. | | | |
+ |-----------------------------------------------------------' | | `--------------|
+ | | | | | | ,--------------. | | |
+ `------` '------------------------------` '-----' | | | | `---------'
+ `--------------'
+```
+
+### KLE
+![KLE Layout](https://i.imgur.com/JDc1oM4.png)
+![KLE Link](http://www.keyboard-layout-editor.com/##@@=Esc%0A%60&=!%0A1&=%2F@%0A2&=%23%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=%2F&%0A7&=*%0A8&=(%0A9&=)%0A0&=%2F_%0A-&=+%0A%2F=&_x:0.25%3B&=%2F%2F&=*&=+%3B&@_w:1.5%3B&=Tab&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&_x:0.25&w:1.25&h:2&w2:1.5&h2:1&x2:-0.25%3B&=Enter&_x:0.25%3B&=7&=8&=9%3B&@_w:1.75%3B&=Caps%20Lock&=A&=S&=D&=F&=G&=H&=J&=K&=L&=%2F:%0A%2F%3B&_x:1.5%3B&=4&=5&=6%3B&@_w:1.25%3B&=Shift&=%7C%0A%5C&=Z&=X&=C&=V&=B&=N&=M&=%3C%0A,&_w:1.5%3B&=%3E%0A.&_x:1.5%3B&=1&=2&=3%3B&@_y:-0.75&x:12%3B&=%E2%86%91%3B&@_y:-0.25&w:1.25%3B&=Ctrl&_x:1&a:7&w:6.25%3B&=&_x:1&a:4&w:1.25%3B&=AltGr&_x:3.5%3B&=0&=.%3B&@_y:-0.75&x:11%3B&=%E2%86%90%0AFN&=%E2%86%93&=%E2%86%92%3B&@_y:0.25%3B&=%60&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=F10&=F11&=F12&_x:0.25%3B&=NLock&=Print&=%2F=%3B&@_a:7&w:1.5%3B&=&=&=&=&=&=&=&=&=&=&_a:4%3B&=%2F%2F&_x:0.25&w:1.25&h:2&w2:1.5&h2:1&x2:-0.25%3B&=Del&_x:0.25%3B&=Home&=Up&=PgUp%3B&@_a:7&w:1.75%3B&=&=&=&=&=&=&=&=&=&=&_a:4%3B&='&_x:1.5%3B&=Left&=ScrLc&=Right%3B&@_a:7&w:1.25%3B&=&=&=&=&=&=&=&=&=&_a:4%3B&=%5B&_w:1.5%3B&=%5D&_x:1.5%3B&=End&=Down&=PgDn%3B&@_y:-0.75&x:12&a:7%3B&=%3B&@_y:-0.25&a:4&w:1.25%3B&=Win&_x:1&w:6.25%3B&=RAlt&_x:1&a:7&w:1.25%3B&=&_x:3.5%3B&=&_a:4%3B&=Rst%3B&@_y:-0.75&x:11&a:7%3B&=&=&=) \ No newline at end of file
diff --git a/keyboards/akb/raine/rules.mk b/keyboards/akb/raine/rules.mk
index 5360459cf7..bd3cd09a9f 100644
--- a/keyboards/akb/raine/rules.mk
+++ b/keyboards/akb/raine/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/al1/rules.mk b/keyboards/al1/rules.mk
index 175adfd5d7..b4d4f87d91 100644
--- a/keyboards/al1/rules.mk
+++ b/keyboards/al1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/alf/dc60/rules.mk b/keyboards/alf/dc60/rules.mk
index 8df6c4c7c5..7c87642acc 100644
--- a/keyboards/alf/dc60/rules.mk
+++ b/keyboards/alf/dc60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/alf/x11/rules.mk b/keyboards/alf/x11/rules.mk
index 3439ac47f3..decff4f791 100644
--- a/keyboards/alf/x11/rules.mk
+++ b/keyboards/alf/x11/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
EXTRAFLAGS += -flto
diff --git a/keyboards/alf/x2/rules.mk b/keyboards/alf/x2/rules.mk
index 1e6d4bb7cd..c1f1f22ba3 100644
--- a/keyboards/alf/x2/rules.mk
+++ b/keyboards/alf/x2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/alpha/rules.mk b/keyboards/alpha/rules.mk
index 13a720d8c1..773655f2fb 100755
--- a/keyboards/alpha/rules.mk
+++ b/keyboards/alpha/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/alps64/config.h b/keyboards/alps64/config.h
index cc7eada11a..237dfbbe77 100644
--- a/keyboards/alps64/config.h
+++ b/keyboards/alps64/config.h
@@ -35,6 +35,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, C2 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/alps64/rules.mk b/keyboards/alps64/rules.mk
index 79d9cb3607..7dbe8e7dd0 100644
--- a/keyboards/alps64/rules.mk
+++ b/keyboards/alps64/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change to no to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/alu84/rules.mk b/keyboards/alu84/rules.mk
index 680b13dc07..b5f2490574 100755
--- a/keyboards/alu84/rules.mk
+++ b/keyboards/alu84/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/amj40/keymaps/default/rules.mk b/keyboards/amj40/keymaps/default/rules.mk
index cbfa35e631..957f209b71 100644
--- a/keyboards/amj40/keymaps/default/rules.mk
+++ b/keyboards/amj40/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk
index 423e66aeef..5d6cff9891 100755
--- a/keyboards/amj40/rules.mk
+++ b/keyboards/amj40/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
MIDI_ENABLE ?= no # MIDI controls
AUDIO_ENABLE ?= no
UNICODE_ENABLE ?= no # Unicode
diff --git a/keyboards/amj60/rules.mk b/keyboards/amj60/rules.mk
index bccdd66811..7bc8ffe181 100644
--- a/keyboards/amj60/rules.mk
+++ b/keyboards/amj60/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/amj96/config.h b/keyboards/amj96/config.h
index 1f1be03ce2..8b56aaf7f8 100644
--- a/keyboards/amj96/config.h
+++ b/keyboards/amj96/config.h
@@ -47,22 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-// #define BACKLIGHT_PIN D4
-// #define BACKLIGHT_BREATHING
-// #define BACKLIGHT_LEVELS 3
-
-/* number of backlight levels */
-#ifdef BREATHING_LED_ENABLE
-#ifdef FADING_LED_ENABLE
-#define BACKLIGHT_LEVELS 8
-#else
-#define BACKLIGHT_LEVELS 6
-#endif
-#else
-#define BACKLIGHT_LEVELS 3
-#endif
-#define BACKLIGHT_CUSTOM
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/amj96/rules.mk b/keyboards/amj96/rules.mk
index 52f610d7d5..4fd8585096 100644
--- a/keyboards/amj96/rules.mk
+++ b/keyboards/amj96/rules.mk
@@ -14,18 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE ?= yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/amjkeyboard/amj66/rules.mk b/keyboards/amjkeyboard/amj66/rules.mk
index 4102c0eb28..b5d3f1ee35 100644
--- a/keyboards/amjkeyboard/amj66/rules.mk
+++ b/keyboards/amjkeyboard/amj66/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/amjpad/rules.mk b/keyboards/amjpad/rules.mk
index fe28924852..f807eddc22 100644
--- a/keyboards/amjpad/rules.mk
+++ b/keyboards/amjpad/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/angel17/alpha/rules.mk b/keyboards/angel17/alpha/rules.mk
index 5a26a2e0be..51660ce5fc 100644
--- a/keyboards/angel17/alpha/rules.mk
+++ b/keyboards/angel17/alpha/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_5x4
diff --git a/keyboards/angel17/rev1/rules.mk b/keyboards/angel17/rev1/rules.mk
index c76c0244a8..7384c23de1 100644
--- a/keyboards/angel17/rev1/rules.mk
+++ b/keyboards/angel17/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_5x4
diff --git a/keyboards/angel17/rules.mk b/keyboards/angel17/rules.mk
index ca2563a6e2..bd5ae48de9 100644
--- a/keyboards/angel17/rules.mk
+++ b/keyboards/angel17/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_5x4
diff --git a/keyboards/angel64/rules.mk b/keyboards/angel64/rules.mk
index 0f2b29096d..1c44782e2c 100644
--- a/keyboards/angel64/rules.mk
+++ b/keyboards/angel64/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OLED_DRIVER_ENABLE = yes
CUSTOM_MATRIX = yes
diff --git a/keyboards/ares/ares.c b/keyboards/ares/ares.c
index 07276491c5..95d4b878f1 100644
--- a/keyboards/ares/ares.c
+++ b/keyboards/ares/ares.c
@@ -17,27 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "ares.h"
-#ifdef BACKLIGHT_ENABLE
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+void led_init_ports(void) {
+ setPinOutput(D1);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h
index f0aa926ea5..e298dfc959 100644
--- a/keyboards/ares/config.h
+++ b/keyboards/ares/config.h
@@ -37,7 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
diff --git a/keyboards/ares/rules.mk b/keyboards/ares/rules.mk
index 58d36bc673..f540741721 100644
--- a/keyboards/ares/rules.mk
+++ b/keyboards/ares/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
WS2812_DRIVER = i2c
diff --git a/keyboards/at101_blackheart/rules.mk b/keyboards/at101_blackheart/rules.mk
index d8cfbd289f..1930d9f27f 100644
--- a/keyboards/at101_blackheart/rules.mk
+++ b/keyboards/at101_blackheart/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/at_at/660m/chconf.h b/keyboards/at_at/660m/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/at_at/660m/chconf.h
+++ b/keyboards/at_at/660m/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk
index b893d8031b..0b3685f09e 100644
--- a/keyboards/at_at/660m/rules.mk
+++ b/keyboards/at_at/660m/rules.mk
@@ -17,3 +17,6 @@ CUSTOM_MATRIX = no # Custom matrix file
# RGBLIGHT_ENABLE = yes
NO_USB_STARTUP_CHECK = yes # Workaround for issue 6369
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/atomic/rules.mk b/keyboards/atomic/rules.mk
index 8ccbcb11b4..5a057f973c 100644
--- a/keyboards/atomic/rules.mk
+++ b/keyboards/atomic/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/atreus/atreus.h b/keyboards/atreus/atreus.h
index 88dd4d9dc8..a3d3507759 100644
--- a/keyboards/atreus/atreus.h
+++ b/keyboards/atreus/atreus.h
@@ -24,6 +24,8 @@
#include "astar_mirrored.h"
#elif KEYBOARD_atreus_teensy2
#include "teensy2.h"
+#elif KEYBOARD_atreus_promicro
+ #include "promicro.h"
#endif
// This a shortcut to help you visually see your layout.
diff --git a/keyboards/atreus/keymaps/ibnuda/config.h b/keyboards/atreus/keymaps/ibnuda/config.h
new file mode 100644
index 0000000000..625abe488f
--- /dev/null
+++ b/keyboards/atreus/keymaps/ibnuda/config.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#define TAPPING_TERM 200
+#define IGNORE_MOD_TAP_INTERRUPT
+#define COMBO_COUNT 15
diff --git a/keyboards/atreus/keymaps/ibnuda/keymap.c b/keyboards/atreus/keymaps/ibnuda/keymap.c
new file mode 100644
index 0000000000..3c1c0f4503
--- /dev/null
+++ b/keyboards/atreus/keymaps/ibnuda/keymap.c
@@ -0,0 +1,258 @@
+#include QMK_KEYBOARD_H
+
+typedef enum {
+ SINGLE_TAP,
+ SINGLE_HOLD,
+ DOUBLE_TAP,
+} td_state_t;
+
+static td_state_t td_state;
+
+int current_dance(qk_tap_dance_state_t *state);
+
+void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data);
+void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data);
+
+// enum for tap dances.
+enum {
+ TD_DLT_CTLDLT = 0,
+ TD_SCLN_CLN,
+ TD_LEFT_THUMB,
+};
+
+// enum for combos.
+enum combos {
+ // left hand combinations.
+ COLON_COMMA,
+ COMMA_DOT,
+ DOT_P,
+ Q_J,
+ J_K,
+
+ // right hand combinations.
+ L_R,
+ R_C,
+ C_G,
+ V_W,
+ W_M,
+
+ // both hands combinations.
+ DOT_C,
+ J_W,
+ P_G,
+ U_H,
+ K_M,
+};
+
+enum {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _MUIS
+};
+
+// thumb keys.
+#define ALT_ENT ALT_T(KC_ENT)
+#define SFT_ESC SFT_T(KC_ESC)
+
+// home row mods.
+#define CT_O RCTL_T(KC_O)
+#define CT_N RCTL_T(KC_N)
+#define SH_A RSFT_T(KC_A)
+#define SH_S RSFT_T(KC_S)
+#define AL_E RALT_T(KC_E)
+#define AL_T RALT_T(KC_T)
+#define GU_I RGUI_T(KC_I)
+#define GU_D RGUI_T(KC_D)
+
+// layer toggle.
+#define LW_BSPC LT(_LOWER, KC_BSPC)
+#define RS_SPC LT(_RAISE, KC_SPC)
+#define RS_D LT(_RAISE, KC_D)
+#define LW_I LT(_LOWER, KC_I)
+#define MU_QUOT LT(_MUIS, KC_QUOT)
+#define MU_Z LT(_MUIS, KC_Z)
+
+// idk, man. not used, i guess.
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#define ADDDD MO(_ADJUST)
+#define MUIS MO(_MUIS)
+
+// common shortcuts for windows and linux that i use.
+#define NXTTAB LCTL(KC_PGDN)
+#define PRVTAB LCTL(KC_PGUP)
+#define UPTAB LCTL(LSFT(KC_PGUP))
+#define DNTAB LCTL(LSFT(KC_PGDN))
+#define NXTWIN LALT(KC_TAB)
+#define PRVWIN LALT(LSFT(KC_TAB))
+#define CALDL LCTL(LALT(KC_DELT))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+#define EXPLR LGUI(KC_E)
+#define LCKGUI LGUI(KC_L)
+#define CONPST LSFT(KC_INS)
+#define CLSGUI LALT(KC_F4)
+
+// tap dances
+#define CTL_DLT TD(TD_DLT_CTLDLT)
+#define SM_CLN TD(TD_SCLN_CLN)
+#define LFT_TMB TD(TD_LEFT_THUMB)
+
+// left hand combinations.
+const uint16_t PROGMEM colon_comma_combo[] = {KC_SCLN, KC_COMM, COMBO_END};
+const uint16_t PROGMEM comma_dot_combo[] = {KC_COMM, KC_DOT, COMBO_END};
+const uint16_t PROGMEM dot_p_combo[] = {KC_DOT, KC_P, COMBO_END};
+const uint16_t PROGMEM q_j_combo[] = {KC_Q, KC_J, COMBO_END};
+const uint16_t PROGMEM j_k_combo[] = {KC_J, KC_K, COMBO_END};
+
+// right hand combinations.
+const uint16_t PROGMEM l_r_combo[] = {KC_L, KC_R, COMBO_END};
+const uint16_t PROGMEM r_c_combo[] = {KC_R, KC_C, COMBO_END};
+const uint16_t PROGMEM c_g_combo[] = {KC_C, KC_G, COMBO_END};
+const uint16_t PROGMEM v_w_combo[] = {KC_V, KC_W, COMBO_END};
+const uint16_t PROGMEM w_m_combo[] = {KC_W, KC_M, COMBO_END};
+
+// both hand combinations.
+const uint16_t PROGMEM dot_c_combo[] = {KC_DOT, KC_C, COMBO_END};
+const uint16_t PROGMEM j_w_combo[] = {KC_J, KC_W, COMBO_END};
+const uint16_t PROGMEM u_h_combo[] = {KC_U, KC_H, COMBO_END};
+const uint16_t PROGMEM p_g_combo[] = {KC_P, KC_G, COMBO_END};
+const uint16_t PROGMEM k_m_combo[] = {KC_K, KC_M, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ // left hand combinations.
+ [COLON_COMMA] = COMBO(colon_comma_combo, KC_TAB),
+ [COMMA_DOT] = COMBO(comma_dot_combo, KC_QUES),
+ [DOT_P] = COMBO(dot_p_combo, KC_UNDS),
+ [Q_J] = COMBO(q_j_combo, LCTL(KC_W)),
+ [J_K] = COMBO(j_k_combo, KC_DELT),
+
+ // right hand combinations.
+ [L_R] = COMBO(l_r_combo, KC_BSPC),
+ [R_C] = COMBO(r_c_combo, KC_SLSH),
+ [C_G] = COMBO(c_g_combo, KC_MINS),
+ [V_W] = COMBO(v_w_combo, KC_APP),
+ [W_M] = COMBO(w_m_combo, KC_DELT),
+
+ // both hand combinations.
+ [DOT_C] = COMBO(dot_c_combo, KC_PGUP),
+ [J_W] = COMBO(j_w_combo, KC_PGDN),
+ [U_H] = COMBO(u_h_combo, KC_ENT),
+ [P_G] = COMBO(p_g_combo, KC_HOME),
+ [K_M] = COMBO(k_m_combo, KC_END),
+};
+
+void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code16(KC_DELT);
+ } else {
+ register_code16(C(KC_DELT));
+ }
+}
+
+void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code16(KC_DELT);
+ } else {
+ unregister_code16(C(KC_DELT));
+ }
+}
+
+void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code(KC_LSFT);
+ }
+ register_code(KC_SCLN);
+}
+
+void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code(KC_LSFT);
+ }
+ unregister_code(KC_SCLN);
+}
+
+int current_dance(qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) {
+ return SINGLE_TAP;
+ } else {
+ return SINGLE_HOLD;
+ }
+ }
+ if (state->count == 2) {
+ return DOUBLE_TAP;
+ } else {
+ return 3;
+ }
+}
+
+void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) {
+ td_state = current_dance(state);
+ switch (td_state) {
+ case SINGLE_TAP:
+ register_code16(KC_ESC);
+ break;
+ case SINGLE_HOLD:
+ register_mods(MOD_BIT(KC_LSFT));
+ break;
+ case DOUBLE_TAP:
+ register_code16(KC_DELT);
+ break;
+ }
+}
+
+void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (td_state) {
+ case SINGLE_TAP:
+ unregister_code16(KC_ESC);
+ break;
+ case SINGLE_HOLD:
+ unregister_mods(MOD_BIT(KC_LSFT));
+ break;
+ case DOUBLE_TAP:
+ unregister_code16(KC_DELT);
+ break;
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset),
+ [TD_SCLN_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
+ [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_BASE] = LAYOUT(
+ SM_CLN, KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
+ SH_A, CT_O, AL_E, KC_U, GU_I, GU_D, KC_H, AL_T, CT_N, SH_S,
+ MU_QUOT,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, MU_Z,
+ _______,_______,_______,_______,LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC, _______,_______,_______,_______
+),
+
+[_RAISE] = LAYOUT(
+ KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR ,
+ KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR, KC_EQL, KC_4, KC_5, KC_6, KC_TILD ,
+ KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS ,
+ _______,_______,_______,_______,ADDDD, _______, ALT_ENT,RS_SPC, _______,KC_0, _______,_______
+),
+[_LOWER] = LAYOUT(
+ KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC ,
+ KC_LSFT,KC_TAB, KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT ,
+ KC_CLCK,KC_SLCK,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH ,
+ _______,_______,_______,_______,ADDDD, _______, KC_DELT,ADDDD, _______,_______,_______,_______
+),
+[_ADJUST] = LAYOUT(
+ _______,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, _______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
+),
+[_MUIS] = LAYOUT(
+ _______,KC_BTN2,KC_MS_U,KC_BTN1,_______, _______,KC_BTN1,KC_MS_U,KC_BTN2,_______,
+ _______,KC_MS_L,KC_MS_D,KC_MS_R,_______, _______,KC_MS_L,KC_MS_D,KC_MS_R,_______,
+ _______,_______,KC_WH_D,KC_WH_U,_______, _______,KC_WH_U,KC_WH_D,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
+),
+};
diff --git a/keyboards/atreus/keymaps/ibnuda/rules.mk b/keyboards/atreus/keymaps/ibnuda/rules.mk
new file mode 100644
index 0000000000..ce80219d1a
--- /dev/null
+++ b/keyboards/atreus/keymaps/ibnuda/rules.mk
@@ -0,0 +1,7 @@
+# Build Options
+# change yes to no to disable
+#
+
+MOUSEKEY_ENABLE = yes
+COMBO_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/atreus/keymaps/ridingqwerty/keymap.c b/keyboards/atreus/keymaps/ridingqwerty/keymap.c
index 336df49730..1eeb17fd17 100644
--- a/keyboards/atreus/keymaps/ridingqwerty/keymap.c
+++ b/keyboards/atreus/keymaps/ridingqwerty/keymap.c
@@ -30,9 +30,7 @@
MODS // LAYERS // MODS //
*/
-#ifdef LAYOUT
-#undef LAYOUT
-#define LAYOUT( \
+#define LAYOUT_atreus( \
K00, K01, K02, K03, K04, K40, K41, K42, K43, K44, \
K10, K11, K12, K13, K14, K50, K51, K52, K53, K54, \
K20, K21, K22, K23, K24, K60, K61, K62, K63, K64, \
@@ -47,70 +45,109 @@
{ K64, K63, K62, K61, K60, KC_NO }, \
{ K75, K74, K73, K72, K71, K70 } \
}
-#endif
+
+//#define ALPHA XP(UCM_LDEL, UCM_UDEL)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( /* Qwerty */
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- ED_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NM_SCLN,
- LS_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, FK_DOT, RS_SLSH,
- LC_ESC, LG_TAB, LA_LBRC, LS_RBRC, NM_BSPC, ED_ESC, SC_TAB, SM_SPC, RS_MINS, RA_EQL, RG_QUOT, RC_ENT
+ [_QWERTY] = LAYOUT_atreus_wrapper( /* Qwerty */
+ ________________ATREUS_L1__________________, ________________ATREUS_R1__________________,
+ ________________ATREUS_L2__________________, ________________ATREUS_R2__________________,
+ ________________ATREUS_L3__________________, ________________ATREUS_R3__________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
+ ),
+ [_DVORAK] = LAYOUT_atreus_wrapper( /* Qwerty */
+ ________________DVORAK_L1__________________, ________________DVORAK_R1__________________,
+ ________________DVORAK_L2__________________, ________________DVORAK_R2__________________,
+ ________________DVORAK_L3__________________, ________________DVORAK_R3__________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
+ ),
+ [_COLEMAK] = LAYOUT_atreus_wrapper( /* Qwerty */
+ ________________COLEMAK_L1_________________, ________________COLEMAK_R1_________________,
+ ________________COLEMAK_L2_________________, ________________COLEMAK_R2_________________,
+ ________________COLEMAK_L3_________________, ________________COLEMAK_R3_________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
+ ),
+//#if defined(UNICODEMAP_ENABLE)
+//#ifdef UNICODE_H
+#ifdef UNICODEMAP_ENABLE
+ [_GREEK] = LAYOUT_atreus_wrapper(
+ ________________GREEK_L1___________________, ________________GREEK_R1___________________,
+ ________________GREEK_L2___________________, ________________GREEK_R2___________________,
+ ________________GREEK_L3___________________, ________________GREEK_R3___________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
+ ),
+ [_RUSSIAN] = LAYOUT_atreus_wrapper(
+ ________________CYRLC_L1___________________, ________________CYRLC_R1___________________,
+ ________________CYRLC_L2___________________, ________________CYRLC_R2___________________,
+ ________________CYRLC_L3___________________, ________________CYRLC_R3___________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________CYRLC_R4___________________
+ ),
+ [_RUNES] = LAYOUT_atreus_wrapper(
+ ________________FTHRK_L1___________________, ________________FTHRK_R1___________________,
+ ________________FTHRK_L2___________________, ________________FTHRK_R2___________________,
+ ________________FTHRK_L3___________________, ________________FTHRK_R3___________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
+ ),
+ [_HIRA1] = LAYOUT_atreus_wrapper(
+ ________________JIS1_L1____________________, ________________JIS1_R1____________________,
+ ________________JIS1_L2____________________, ________________JIS1_R2____________________,
+ ________________JIS1_L3____________________, ________________JIS1_R3____________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
),
- [_EDITOR] = LAYOUT( /* ED_A, ED_ESC */
- KC_GRV, _______, KC_END, _______, KC_TAB, _______, _______, KC_INS, _______, KC_PGUP,
- KC_HOME, _______, KC_DELT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT,
- _______, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, KC_BSLS,
- _______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______
+ [_HIRA2] = LAYOUT_atreus_wrapper(
+ ________________JIS2_L1____________________, ________________JIS2_R1____________________,
+ ________________JIS2_L2____________________, ________________JIS2_R2____________________,
+ ________________JIS2_L3____________________, ________________JIS2_R3____________________,
+ ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________
),
- [_NUMBER] = LAYOUT( /* NM_SCLN, NM_BSPC */
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_4, KC_5, KC_6, _______,
- _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_BSLS,
- _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_0, KC_0, KC_DOT, _______, _______
+#endif
+ [_EDITOR] = LAYOUT_atreus_wrapper( /* ED_A, ED_ESC */
+ ________________EDITOR_L1__________________, ________________EDITOR_R1__________________,
+ ________________EDITOR_L2__________________, ________________EDITOR_R2__________________,
+ ________________EDITOR_L3__________________, ________________EDITOR_R3__________________,
+ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______
+ ),
+ [_NUMBER] = LAYOUT_atreus_wrapper( /* NM_SCLN, NM_BSPC */
+ ________________NUMROW_L1__________________, ________________NUMROW_R1__________________,
+ ________________NUMROW_R1__________________, ________________NUMPAD_R2__________________,
+ ___________________________________________, ________________NUMPAD_R3__________________,
+ ___________________________________________, ________________, ________________NUMPAD_R4__________________
),
- [_SYMBOL] = LAYOUT( /* SM_SPC */
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
- KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, KC_COLN,
+ [_SYMBOL] = LAYOUT_atreus_wrapper( /* SM_SPC */
+ ________________SYMROW_L1__________________, ________________SYMROW_R1__________________,
+ ________________SYMROW_R1__________________, ________________SYMROW_R1__________________,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS,
- _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______
+ KC_LBRC, _______, _______, _______, _______, ________________, _______, _______, _______, _______, KC_RBRC
),
- [_F_KEYS] = LAYOUT( /* FK_DOT */
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
- KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, KC_F11,
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_F12,
+ [_F_KEYS] = LAYOUT_atreus_wrapper( /* FK_DOT */
+ ________________FKEYROW_L1_________________, ________________FKEYROW_R1_________________,
+ ________________FKEYROW_R1_________________, ________________FKEYROW_L1_________________,
+ KC_F11, KC_F12, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [_SECRET] = LAYOUT( /* shhhh... */
- RESET, _______, _______, RUSTY, FUEL, KC_F13, _______, _______, _______, _______,
+ [_DEBUG] = LAYOUT_atreus_wrapper( /* shhhh... */
+ ________________DEBUG_L1___________________, ________________DEBUG_R1___________________,
+ ________________DEBUG_L2___________________, ________________DEBUG_R2___________________,
+ ________________DEBUG_L3___________________, ________________DEBUG_R3___________________,
+ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______
+ ),
+ [_SECRET] = LAYOUT_atreus_wrapper( /* shhhh... */
+/*
+ _______, _______, _______, RUSTY, FUEL, _______, _______, _______, _______, _______,
AR1ST, SYSNOC, _______, _______, _______, _______, _______, _______, OS_LAB, _______,
- CDLOCAL, _______, C0RE, VAXIS, _______, _______, MUNKY, _______, _______, _______,
+ CDLOCAL, _______, C0RE, VAXIS, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+*/
+ ________________SECRET_L1__________________, ________________SECRET_R1__________________,
+ ________________SECRET_L2__________________, ________________SECRET_R2__________________,
+ ________________SECRET_L3__________________, ________________SECRET_R3__________________,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+
),
- [_FINAL] = LAYOUT( /* . */
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ [_FINAL] = LAYOUT_atreus( /* . */
+ _______, _______, _______, _______, TESTING, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-// custom tap/hold keys
-uint16_t key_timer;
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- switch(keycode) {
- case RG_QUOT:
- if (record->event.pressed) {
- key_timer = timer_read();
- layer_on(_NUMBER);
- register_mods(MOD_BIT(KC_RGUI));
- } else {
- unregister_mods(MOD_BIT(KC_RGUI));
- layer_off(_NUMBER);
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code(KC_QUOT);
- }
- }
- return false; break;
- }
- return true;
-};
diff --git a/keyboards/atreus/keymaps/ridingqwerty/rules.mk b/keyboards/atreus/keymaps/ridingqwerty/rules.mk
index 95b257f758..5c89d5481d 100644
--- a/keyboards/atreus/keymaps/ridingqwerty/rules.mk
+++ b/keyboards/atreus/keymaps/ridingqwerty/rules.mk
@@ -5,13 +5,14 @@ MCU = STM32F303
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
-#MOUSEKEY_ENABLE = yes # Mouse keys
+MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
-AUDIO_ENABLE = yes
+AUDIO_ENABLE = yes # Doot
RGBLIGHT_ENABLE = no
-# SERIAL_LINK_ENABLE = yes
-#TAP_DANCE_ENABLE = yes
+TAP_DANCE_ENABLE = no
+UNICODE_ENABLE = no
+UNICODEMAP_ENABLE = yes
+
diff --git a/keyboards/atreus/promicro/config.h b/keyboards/atreus/promicro/config.h
new file mode 100644
index 0000000000..03b63f6ff3
--- /dev/null
+++ b/keyboards/atreus/promicro/config.h
@@ -0,0 +1,40 @@
+/* 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"
+
+/*
+ * 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, B4, B5 }
+#if defined(PCBDOWN)
+ #define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B6, B3, B1, F7, F6, F5 }
+#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/promicro/promicro.c b/keyboards/atreus/promicro/promicro.c
new file mode 100644
index 0000000000..ad08ac9f01
--- /dev/null
+++ b/keyboards/atreus/promicro/promicro.c
@@ -0,0 +1,16 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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/mechlovin/hannah910/keymaps/default/config.h b/keyboards/atreus/promicro/promicro.h
index 3d1156ac06..bf74ceb17f 100644
--- a/keyboards/mechlovin/hannah910/keymaps/default/config.h
+++ b/keyboards/atreus/promicro/promicro.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 Mechlovin
+/* 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
@@ -15,5 +15,3 @@
*/
#pragma once
-
-// place overrides here
diff --git a/keyboards/atreus/promicro/rules.mk b/keyboards/atreus/promicro/rules.mk
new file mode 100644
index 0000000000..e6fef51727
--- /dev/null
+++ b/keyboards/atreus/promicro/rules.mk
@@ -0,0 +1,12 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
diff --git a/keyboards/atreus/readme.md b/keyboards/atreus/readme.md
index 0dbd098ca7..0f499ca2a2 100644
--- a/keyboards/atreus/readme.md
+++ b/keyboards/atreus/readme.md
@@ -16,8 +16,9 @@ Make example for this keyboard (after setting up your build environment):
If you would like to use one of the alternative controllers:
- make atreus/astar:default:avrdude
- make atreus/teensy2:default:teensy
+ make atreus/astar:default:flash
+ make atreus/teensy2:default:flash
+ make atreus/promicro:default:flash
If your keyboard layout is a mirror image of what you expected (i.e. you do not get QWERTY on the left but YTREWQ on the right), then you have an A-Star powered Atreus (older than March 2016) with PCB labels facing *down* instead of up. Specify that by adding `PCBDOWN=yes` to your `make` commands, e.g.
diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk
index 403b0b0ca2..eb16f2f46e 100644
--- a/keyboards/atreus/rules.mk
+++ b/keyboards/atreus/rules.mk
@@ -1,10 +1,10 @@
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -12,11 +12,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = yes # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
DEFAULT_FOLDER = atreus/astar
diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
index 4babed4c11..b852d5d7b9 100644
--- a/keyboards/atreus62/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -30,6 +30,7 @@ CHANGELOG:
0.6 - Swapped ESC and GRV in all layers.
0.7 - Brought code up to current standards.
0.8 - Added MACLOCK macro.
+ 0.9 - Updated code to correspond to new setPinInput behaviour
TODO:
@@ -124,9 +125,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
- writePinLow(D5);
setPinInput(B0);
- writePinLow(B0);
#endif
};
diff --git a/keyboards/atreus62/keymaps/xyverz/readme.md b/keyboards/atreus62/keymaps/xyverz/readme.md
index f91a87da4f..531e3b28d9 100644
--- a/keyboards/atreus62/keymaps/xyverz/readme.md
+++ b/keyboards/atreus62/keymaps/xyverz/readme.md
@@ -30,6 +30,10 @@ The bottom row is fairly Kinesis-ish since the Contour and Advantage keyboards h
### 0.7
* Brought code up to new standards (as of 27 June 2019).
* Updated this readme file.
+### 0.8
+ * Added MACLOCK macro.
+### 0.9
+ * Updated code to correspond to new setPinInput behaviour.
### TODO:
diff --git a/keyboards/atreus62/rules.mk b/keyboards/atreus62/rules.mk
index 323976c2c2..5f9cd6c78d 100644
--- a/keyboards/atreus62/rules.mk
+++ b/keyboards/atreus62/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/baguette/rules.mk b/keyboards/baguette/rules.mk
index 351322b859..f911fb5d37 100644
--- a/keyboards/baguette/rules.mk
+++ b/keyboards/baguette/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk
index a15b451f31..d90f8155e8 100644
--- a/keyboards/bantam44/rules.mk
+++ b/keyboards/bantam44/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
diff --git a/keyboards/bfake/bfake.c b/keyboards/bfake/bfake.c
index 9039fe5465..6d0c927462 100644
--- a/keyboards/bfake/bfake.c
+++ b/keyboards/bfake/bfake.c
@@ -17,30 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "bfake.h"
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h
index 65f1f3a759..ef7a866d3d 100644
--- a/keyboards/bfake/config.h
+++ b/keyboards/bfake/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef BFAKE_CONFIG_H
-#define BFAKE_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -38,9 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
-
-#endif
diff --git a/keyboards/bfake/rules.mk b/keyboards/bfake/rules.mk
index 107bb4fa90..ab6af983ce 100644
--- a/keyboards/bfake/rules.mk
+++ b/keyboards/bfake/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
WS2812_DRIVER = i2c
diff --git a/keyboards/bigseries/rules.mk b/keyboards/bigseries/rules.mk
index a3dd1ad6c5..2f52d95586 100755
--- a/keyboards/bigseries/rules.mk
+++ b/keyboards/bigseries/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/bigswitch/rules.mk b/keyboards/bigswitch/rules.mk
index 14cc0c85b3..88844733f0 100755
--- a/keyboards/bigswitch/rules.mk
+++ b/keyboards/bigswitch/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/blackplum/config.h b/keyboards/blackplum/config.h
index 0fd7e21cb6..256603744e 100644
--- a/keyboards/blackplum/config.h
+++ b/keyboards/blackplum/config.h
@@ -19,6 +19,8 @@
#define MATRIX_COL_PINS { D0, D1, D2, F7, F6, F5, F4, F1 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/blockey/rules.mk b/keyboards/blockey/rules.mk
index 83bc96c11f..3233ee2f78 100644
--- a/keyboards/blockey/rules.mk
+++ b/keyboards/blockey/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/bm16a/rules.mk b/keyboards/bm16a/rules.mk
index 50f0ff1211..3e994588f5 100644
--- a/keyboards/bm16a/rules.mk
+++ b/keyboards/bm16a/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x4
diff --git a/keyboards/bm43a/rules.mk b/keyboards/bm43a/rules.mk
index 66a778b6c2..5fa842c8bb 100644
--- a/keyboards/bm43a/rules.mk
+++ b/keyboards/bm43a/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/boardwalk/config.h b/keyboards/boardwalk/config.h
index 7747502083..fa80673d80 100644
--- a/keyboards/boardwalk/config.h
+++ b/keyboards/boardwalk/config.h
@@ -43,7 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN F5
diff --git a/keyboards/boardwalk/rules.mk b/keyboards/boardwalk/rules.mk
index 215dfe34ee..88cce16313 100644
--- a/keyboards/boardwalk/rules.mk
+++ b/keyboards/boardwalk/rules.mk
@@ -15,14 +15,14 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = yes # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
index 5dcea84672..a5a411e8f2 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk
index a890c4a594..d5f9434300 100644
--- a/keyboards/bpiphany/frosty_flake/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# 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/bpiphany/kitten_paw/rules.mk b/keyboards/bpiphany/kitten_paw/rules.mk
index 72a7f14b3f..23546e4f0a 100644
--- a/keyboards/bpiphany/kitten_paw/rules.mk
+++ b/keyboards/bpiphany/kitten_paw/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
index 8254a83891..d6ebcd5d79 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk
index 0910feb61b..ffb642a9cf 100644
--- a/keyboards/bpiphany/pegasushoof/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/bpiphany/sixshooter/rules.mk b/keyboards/bpiphany/sixshooter/rules.mk
index ad76051eb2..ed6caaa5d0 100644
--- a/keyboards/bpiphany/sixshooter/rules.mk
+++ b/keyboards/bpiphany/sixshooter/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
index 7a331cd530..46af5cd7b4 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/bpiphany/tiger_lily/rules.mk b/keyboards/bpiphany/tiger_lily/rules.mk
index edd3ab6a4a..f6c3a48941 100644
--- a/keyboards/bpiphany/tiger_lily/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk
index 65123020f3..7afc2d0396 100644
--- a/keyboards/bpiphany/unloved_bastard/rules.mk
+++ b/keyboards/bpiphany/unloved_bastard/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/bthlabs/geekpad/rules.mk b/keyboards/bthlabs/geekpad/rules.mk
index e05730c69e..4b7193da49 100644
--- a/keyboards/bthlabs/geekpad/rules.mk
+++ b/keyboards/bthlabs/geekpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/business_card/alpha/rules.mk b/keyboards/business_card/alpha/rules.mk
index e03f942e9d..13cbddc3c8 100644
--- a/keyboards/business_card/alpha/rules.mk
+++ b/keyboards/business_card/alpha/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OLED_DRIVER_ENABLE = yes
diff --git a/keyboards/business_card/beta/rules.mk b/keyboards/business_card/beta/rules.mk
index e03f942e9d..13cbddc3c8 100644
--- a/keyboards/business_card/beta/rules.mk
+++ b/keyboards/business_card/beta/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OLED_DRIVER_ENABLE = yes
diff --git a/keyboards/business_card/rules.mk b/keyboards/business_card/rules.mk
index 7e37685de6..591261d286 100644
--- a/keyboards/business_card/rules.mk
+++ b/keyboards/business_card/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
DEFAULT_FOLDER = business_card/beta
diff --git a/keyboards/butterstick/rules.mk b/keyboards/butterstick/rules.mk
index 764e7d6aa2..b73ed405ad 100644
--- a/keyboards/butterstick/rules.mk
+++ b/keyboards/butterstick/rules.mk
@@ -11,9 +11,9 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
STENO_ENABLE = yes # Needed for chording
diff --git a/keyboards/c39/rules.mk b/keyboards/c39/rules.mk
index c7a902045a..ed3554aac4 100755
--- a/keyboards/c39/rules.mk
+++ b/keyboards/c39/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/candybar/chconf.h b/keyboards/candybar/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/candybar/chconf.h
+++ b/keyboards/candybar/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/candybar/rules.mk b/keyboards/candybar/rules.mk
index 0e1a8517fa..cb1b832886 100644
--- a/keyboards/candybar/rules.mk
+++ b/keyboards/candybar/rules.mk
@@ -18,3 +18,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
SERIAL_LINK_ENABLE = no
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/an_c/chconf.h b/keyboards/cannonkeys/an_c/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/an_c/chconf.h
+++ b/keyboards/cannonkeys/an_c/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h
index 55414ba509..6390e07897 100644
--- a/keyboards/cannonkeys/an_c/config.h
+++ b/keyboards/cannonkeys/an_c/config.h
@@ -62,6 +62,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
+// Let VIA handle the QMK RGBLIGHT
+#define VIA_QMK_RGBLIGHT_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk
index 151f72fd0f..2050ba34c4 100644
--- a/keyboards/cannonkeys/an_c/rules.mk
+++ b/keyboards/cannonkeys/an_c/rules.mk
@@ -22,3 +22,7 @@ CUSTOM_MATRIX = no # Custom matrix file
RGBLIGHT_ENABLE = yes
LAYOUTS = 60_ansi 60_tsangan_hhkb
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/bluepill/keyboard.c b/keyboards/cannonkeys/bluepill/keyboard.c
index 865628eccd..7eb30ea132 100644
--- a/keyboards/cannonkeys/bluepill/keyboard.c
+++ b/keyboards/cannonkeys/bluepill/keyboard.c
@@ -4,10 +4,14 @@
#include "util.h"
#include "quantum.h"
-#ifdef BOARD_GENERIC_STM32_F103
+#ifdef BOARD_STM32_F103_STM32DUINO
#define LED_ON() do { palClearPad(GPIOC, 13) ;} while (0)
#define LED_OFF() do { palSetPad(GPIOC, 13); } while (0)
#define LED_TGL() do { palTogglePad(GPIOC, 13); } while (0)
+#else
+#define LED_ON()
+#define LED_OFF()
+#define LED_TGL()
#endif
void matrix_init_kb(void){
diff --git a/keyboards/cannonkeys/chimera65/chconf.h b/keyboards/cannonkeys/chimera65/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/chimera65/chconf.h
+++ b/keyboards/cannonkeys/chimera65/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk
index 1e300a99c7..9b1ab58991 100644
--- a/keyboards/cannonkeys/chimera65/rules.mk
+++ b/keyboards/cannonkeys/chimera65/rules.mk
@@ -20,3 +20,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = no
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/instant60/chconf.h b/keyboards/cannonkeys/instant60/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/instant60/chconf.h
+++ b/keyboards/cannonkeys/instant60/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/instant60/config.h b/keyboards/cannonkeys/instant60/config.h
index 2d23d5f83c..4fa76cb883 100644
--- a/keyboards/cannonkeys/instant60/config.h
+++ b/keyboards/cannonkeys/instant60/config.h
@@ -62,6 +62,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
+// Let VIA handle the QMK RGBLIGHT
+#define VIA_QMK_RGBLIGHT_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk
index db753884da..0b4afd8da8 100644
--- a/keyboards/cannonkeys/instant60/rules.mk
+++ b/keyboards/cannonkeys/instant60/rules.mk
@@ -22,3 +22,7 @@ CUSTOM_MATRIX = no # Custom matrix file
RGBLIGHT_ENABLE = yes
LAYOUTS = 60_ansi 60_tsangan_hhkb
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/iron165/chconf.h b/keyboards/cannonkeys/iron165/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/iron165/chconf.h
+++ b/keyboards/cannonkeys/iron165/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/iron165/config.h b/keyboards/cannonkeys/iron165/config.h
index 640f6fb659..6350514d75 100644
--- a/keyboards/cannonkeys/iron165/config.h
+++ b/keyboards/cannonkeys/iron165/config.h
@@ -54,6 +54,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk
index edc84edd51..33529718eb 100644
--- a/keyboards/cannonkeys/iron165/rules.mk
+++ b/keyboards/cannonkeys/iron165/rules.mk
@@ -20,3 +20,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = no
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.h b/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.mk b/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/cannonkeys/ortho48/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/cannonkeys/ortho48/chconf.h b/keyboards/cannonkeys/ortho48/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/cannonkeys/ortho48/chconf.h
+++ b/keyboards/cannonkeys/ortho48/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/ortho48/ld/MKL26Z64.ld b/keyboards/cannonkeys/ortho48/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/cannonkeys/ortho48/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/ortho48/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/cannonkeys/ortho48/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/cannonkeys/ortho48/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/ortho48/rules.mk b/keyboards/cannonkeys/ortho48/rules.mk
index 4bca8fde05..59c12681cf 100644
--- a/keyboards/cannonkeys/ortho48/rules.mk
+++ b/keyboards/cannonkeys/ortho48/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,6 +22,11 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes
LAYOUTS = ortho_4x12
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.h b/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.mk b/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/cannonkeys/ortho60/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/cannonkeys/ortho60/chconf.h b/keyboards/cannonkeys/ortho60/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/cannonkeys/ortho60/chconf.h
+++ b/keyboards/cannonkeys/ortho60/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/ortho60/ld/MKL26Z64.ld b/keyboards/cannonkeys/ortho60/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/cannonkeys/ortho60/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/ortho60/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/cannonkeys/ortho60/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/cannonkeys/ortho60/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/ortho60/rules.mk b/keyboards/cannonkeys/ortho60/rules.mk
index d2fa535f41..2077eea66f 100644
--- a/keyboards/cannonkeys/ortho60/rules.mk
+++ b/keyboards/cannonkeys/ortho60/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,6 +22,11 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes
LAYOUTS = ortho_5x12
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.h b/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.mk b/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/cannonkeys/ortho75/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/cannonkeys/ortho75/chconf.h b/keyboards/cannonkeys/ortho75/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/cannonkeys/ortho75/chconf.h
+++ b/keyboards/cannonkeys/ortho75/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/ortho75/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/cannonkeys/ortho75/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/cannonkeys/ortho75/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk
index 5b90e87fd7..3be309924c 100644
--- a/keyboards/cannonkeys/ortho75/rules.mk
+++ b/keyboards/cannonkeys/ortho75/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,7 +22,12 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
LAYOUTS = ortho_5x15
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.h b/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.mk b/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/cannonkeys/practice60/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/cannonkeys/practice60/chconf.h b/keyboards/cannonkeys/practice60/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/cannonkeys/practice60/chconf.h
+++ b/keyboards/cannonkeys/practice60/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/practice60/ld/MKL26Z64.ld b/keyboards/cannonkeys/practice60/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/cannonkeys/practice60/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/practice60/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/cannonkeys/practice60/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/cannonkeys/practice60/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/practice60/rules.mk b/keyboards/cannonkeys/practice60/rules.mk
index 7c3fec31e6..be1584d729 100644
--- a/keyboards/cannonkeys/practice60/rules.mk
+++ b/keyboards/cannonkeys/practice60/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,8 +22,13 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes
LAYOUTS = 60_ansi
DEFAULT_FOLDER = cannonkeys/practice60
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.h b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.mk b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/cannonkeys/practice65/chconf.h b/keyboards/cannonkeys/practice65/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/cannonkeys/practice65/chconf.h
+++ b/keyboards/cannonkeys/practice65/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld b/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/practice65/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/cannonkeys/practice65/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/cannonkeys/practice65/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk
index b43e591aeb..d4a396120a 100644
--- a/keyboards/cannonkeys/practice65/rules.mk
+++ b/keyboards/cannonkeys/practice65/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,4 +22,9 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/satisfaction75/chconf.h b/keyboards/cannonkeys/satisfaction75/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/satisfaction75/chconf.h
+++ b/keyboards/cannonkeys/satisfaction75/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h
index 7a4354c8a7..69d02806e2 100644
--- a/keyboards/cannonkeys/satisfaction75/config.h
+++ b/keyboards/cannonkeys/satisfaction75/config.h
@@ -73,6 +73,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 6 for 3x custom encoder settings, left, right, and press (18 bytes)
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 21
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/satisfaction75/keymaps/default/keymap.c b/keyboards/cannonkeys/satisfaction75/keymaps/default/keymap.c
index 61a9d097a3..10a4b60ee1 100644
--- a/keyboards/cannonkeys/satisfaction75/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/satisfaction75/keymaps/default/keymap.c
@@ -32,6 +32,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLOCK_SET,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/cannonkeys/satisfaction75/led_custom.h b/keyboards/cannonkeys/satisfaction75/led_custom.h
index fe5c9e5dcf..d818b48ce9 100644
--- a/keyboards/cannonkeys/satisfaction75/led_custom.h
+++ b/keyboards/cannonkeys/satisfaction75/led_custom.h
@@ -3,3 +3,5 @@
void backlight_task(void);
void breathing_interrupt_disable(void);
void breathing_interrupt_enable(void);
+void breathing_enable(void);
+void breathing_disable(void);
diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk
index 7e0b15b92b..5fd8018194 100644
--- a/keyboards/cannonkeys/satisfaction75/rules.mk
+++ b/keyboards/cannonkeys/satisfaction75/rules.mk
@@ -22,3 +22,7 @@ QWIIC_ENABLE += MICRO_OLED
#BACKLIGHT_ENABLE = yes
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index 0fe09c384f..f92067c98f 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -55,6 +55,54 @@ backlight_config_t kb_backlight_config = {
};
#ifdef VIA_ENABLE
+
+void backlight_get_value( uint8_t *data )
+{
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch (*value_id)
+ {
+ case id_qmk_backlight_brightness:
+ {
+ // level / BACKLIGHT_LEVELS * 255
+ value_data[0] = ((uint16_t)kb_backlight_config.level) * 255 / BACKLIGHT_LEVELS;
+ break;
+ }
+ case id_qmk_backlight_effect:
+ {
+ value_data[0] = kb_backlight_config.breathing ? 1 : 0;
+ break;
+ }
+ }
+}
+
+void backlight_set_value( uint8_t *data )
+{
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch (*value_id)
+ {
+ case id_qmk_backlight_brightness:
+ {
+ // level / 255 * BACKLIGHT_LEVELS
+ kb_backlight_config.level = ((uint16_t)value_data[0]) * BACKLIGHT_LEVELS / 255;
+ backlight_set(kb_backlight_config.level);
+ break;
+ }
+ case id_qmk_backlight_effect:
+ {
+ if ( value_data[0] == 0 ) {
+ kb_backlight_config.breathing = false;
+ breathing_disable();
+ } else {
+ kb_backlight_config.breathing = true;
+ breathing_enable();
+ }
+ break;
+ }
+ }
+}
+
void raw_hid_receive_kb( uint8_t *data, uint8_t length )
{
uint8_t *command_id = &(data[0]);
@@ -139,6 +187,21 @@ void raw_hid_receive_kb( uint8_t *data, uint8_t length )
}
break;
}
+ case id_lighting_set_value:
+ {
+ backlight_set_value(command_data);
+ break;
+ }
+ case id_lighting_get_value:
+ {
+ backlight_get_value(command_data);
+ break;
+ }
+ case id_lighting_save:
+ {
+ backlight_config_save();
+ break;
+ }
default:
{
// Unhandled message.
diff --git a/keyboards/cannonkeys/savage65/chconf.h b/keyboards/cannonkeys/savage65/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/savage65/chconf.h
+++ b/keyboards/cannonkeys/savage65/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h
index b69aba39eb..98ec1067a8 100644
--- a/keyboards/cannonkeys/savage65/config.h
+++ b/keyboards/cannonkeys/savage65/config.h
@@ -62,6 +62,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
+// Let VIA handle the QMK RGBLIGHT
+#define VIA_QMK_RGBLIGHT_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk
index 199dd10780..1c1c4c2ec4 100644
--- a/keyboards/cannonkeys/savage65/rules.mk
+++ b/keyboards/cannonkeys/savage65/rules.mk
@@ -21,3 +21,6 @@ CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/stm32f072/keyboard.c b/keyboards/cannonkeys/stm32f072/keyboard.c
index bf35a76c18..fdda018fc4 100644
--- a/keyboards/cannonkeys/stm32f072/keyboard.c
+++ b/keyboards/cannonkeys/stm32f072/keyboard.c
@@ -126,8 +126,86 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return process_record_user(keycode, record);;
}
+#ifdef VIA_ENABLE
+void backlight_get_value( uint8_t *data )
+{
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch (*value_id)
+ {
+ case id_qmk_backlight_brightness:
+ {
+ // level / BACKLIGHT_LEVELS * 255
+ value_data[0] = ((uint16_t)kb_backlight_config.level) * 255 / BACKLIGHT_LEVELS;
+ break;
+ }
+ case id_qmk_backlight_effect:
+ {
+ value_data[0] = kb_backlight_config.breathing ? 1 : 0;
+ break;
+ }
+ }
+}
+void backlight_set_value( uint8_t *data )
+{
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch (*value_id)
+ {
+ case id_qmk_backlight_brightness:
+ {
+ // level / 255 * BACKLIGHT_LEVELS
+ kb_backlight_config.level = ((uint16_t)value_data[0]) * BACKLIGHT_LEVELS / 255;
+ backlight_set(kb_backlight_config.level);
+ break;
+ }
+ case id_qmk_backlight_effect:
+ {
+ if ( value_data[0] == 0 ) {
+ kb_backlight_config.breathing = false;
+ breathing_disable();
+ } else {
+ kb_backlight_config.breathing = true;
+ breathing_enable();
+ }
+ break;
+ }
+ }
+}
+
+void raw_hid_receive_kb( uint8_t *data, uint8_t length )
+{
+ uint8_t *command_id = &(data[0]);
+ uint8_t *command_data = &(data[1]);
+ switch ( *command_id )
+ {
+ case id_lighting_set_value:
+ {
+ backlight_set_value(command_data);
+ break;
+ }
+ case id_lighting_get_value:
+ {
+ backlight_get_value(command_data);
+ break;
+ }
+ case id_lighting_save:
+ {
+ backlight_config_save();
+ break;
+ }
+ default:
+ {
+ // Unhandled message.
+ *command_id = id_unhandled;
+ break;
+ }
+ }
+ // DO NOT call raw_hid_send(data,length) here, let caller do this
+}
+#endif
//
// In the case of VIA being disabled, we still need to check if
diff --git a/keyboards/cannonkeys/stm32f072/led_custom.h b/keyboards/cannonkeys/stm32f072/led_custom.h
index 28e0f02ed3..550d5b84cc 100644
--- a/keyboards/cannonkeys/stm32f072/led_custom.h
+++ b/keyboards/cannonkeys/stm32f072/led_custom.h
@@ -4,3 +4,5 @@ void backlight_task(void);
void breathing_interrupt_disable(void);
void breathing_interrupt_enable(void);
void breathing_toggle(void);
+void breathing_enable(void);
+void breathing_disable(void);
diff --git a/keyboards/cannonkeys/tmov2/chconf.h b/keyboards/cannonkeys/tmov2/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/cannonkeys/tmov2/chconf.h
+++ b/keyboards/cannonkeys/tmov2/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h
index d5f1d07884..159382fbcb 100644
--- a/keyboards/cannonkeys/tmov2/config.h
+++ b/keyboards/cannonkeys/tmov2/config.h
@@ -62,6 +62,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
+// Let VIA handle the QMK RGBLIGHT
+#define VIA_QMK_RGBLIGHT_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk
index e6f0ce30a1..646288504c 100644
--- a/keyboards/cannonkeys/tmov2/rules.mk
+++ b/keyboards/cannonkeys/tmov2/rules.mk
@@ -21,3 +21,6 @@ CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 right now
RGBLIGHT_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/catch22/rules.mk b/keyboards/catch22/rules.mk
index 227117b766..1622b95c5a 100644
--- a/keyboards/catch22/rules.mk
+++ b/keyboards/catch22/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/chidori/board.c b/keyboards/chidori/board.c
new file mode 100644
index 0000000000..ff5b76a3af
--- /dev/null
+++ b/keyboards/chidori/board.c
@@ -0,0 +1,366 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <stdint.h>
+#include <stdbool.h>
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "matrix.h"
+#include "quantum.h"
+#include "board.h"
+#include "i2c_master.h"
+
+static board_info_t boards[NUM_BOARDS] = BOARD_INFOS;
+static board_info_t* master_board = NULL;
+
+static bool board_is_master(board_info_t* board);
+static bool board_is_initialized(board_info_t* board);
+static board_info_t* get_board_by_index(uint8_t board_index);
+static uint8_t board_merge_led_config(board_info_t* board, uint8_t iodir);
+static uint8_t board_merge_led_status(board_info_t* board, uint8_t data);
+static void board_master_init(void);
+static void board_slave_init(void);
+
+//
+// board interface
+//
+static void board_select_master_row(board_info_t* board, uint8_t row);
+static void board_unselect_master_row(board_info_t* board, uint8_t row);
+static void board_unselect_master_rows(board_info_t* board);
+static bool board_read_cols_on_master_row(board_info_t* board, matrix_row_t current_matrix[], uint8_t row);
+static void board_set_master_led(board_info_t* board, uint8_t led_index, bool status);
+static void board_select_slave_row(board_info_t* board, uint8_t row);
+static void board_unselect_slave_row(board_info_t* board, uint8_t row);
+static void board_unselect_slave_rows(board_info_t* board);
+static bool board_read_cols_on_slave_row(board_info_t* board, matrix_row_t current_matrix[], uint8_t row);
+static void board_set_slave_led(board_info_t* board, uint8_t led_index, bool status);
+
+static board_interface_t master_interface = {board_select_master_row, board_unselect_master_row, board_unselect_master_rows, board_read_cols_on_master_row, board_set_master_led};
+static board_interface_t slave_interface = {board_select_slave_row, board_unselect_slave_row, board_unselect_slave_rows, board_read_cols_on_slave_row, board_set_slave_led};
+
+static board_interface_t* get_interface(board_info_t* board) {
+ if (board_is_master(board)) {
+ return &master_interface;
+ }
+ return &slave_interface;
+}
+
+static void board_set_master_led(board_info_t* board, uint8_t led_index, bool status) {
+ pin_t pin = board->led_pins[led_index];
+ board->led_status[led_index] = status;
+ setPinOutput(pin);
+ status ? writePinHigh(pin) : writePinLow(pin);
+}
+
+static void board_set_slave_led(board_info_t* board, uint8_t led_index, bool status) {
+ board->led_status[led_index] = status;
+ uint8_t iodir = board_merge_led_config(board, 0xff);
+ uint8_t data = board_merge_led_status(board, 0x00);
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
+}
+
+static uint8_t board_merge_led_config(board_info_t* board, uint8_t iodir) {
+ for (uint8_t i = 0; i < NUM_LEDS; i++) {
+ iodir &= PIN2MASK(board->led_pins[i]);
+ }
+ return iodir;
+}
+
+static bool board_slave_config(board_info_t* board) {
+ uint8_t set = 0xff;
+ uint8_t clear = 0x00;
+ i2c_status_t res = 0;
+
+ // Set to input
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+ // RESTRICTION: LEDs only on PORT B.
+ set = board_merge_led_config(board, set);
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+ set = 0xff;
+
+ // Pull up for input - enable
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+
+ // Disable interrupt
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+
+ // Polarity - same logic
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+ res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ if (res < 0) return false;
+
+ return true;
+}
+
+static void board_slave_init(void) {
+ i2c_init();
+ _delay_ms(500);
+
+ for (uint8_t i = 0; i < NUM_BOARDS; i++) {
+ board_info_t* board = &boards[i];
+ if (board_is_master(board)) {
+ continue;
+ }
+ if (i2c_start(EXPANDER_ADDR(board->i2c_address), BOARD_I2C_TIMEOUT) != I2C_STATUS_SUCCESS) {
+ continue;
+ }
+ i2c_stop();
+ if (board_slave_config(board)) {
+ board->initialized = true;
+ }
+ }
+}
+
+inline bool board_is_master(board_info_t* board) {
+ if (board) {
+ return board->master;
+ }
+ return false;
+}
+
+inline uint8_t matrix_rows(void) { return MATRIX_ROWS; }
+
+inline uint8_t matrix2board(uint8_t row) { return row % NUM_ROWS; }
+
+inline uint8_t board_index(uint8_t row) { return row / NUM_ROWS; }
+
+static board_info_t* get_master_board(void) {
+ if (master_board == NULL) {
+ for (uint8_t i = 0; i < NUM_BOARDS; i++) {
+ if (boards[i].master) {
+ master_board = &boards[i];
+ return master_board;
+ }
+ }
+ }
+ return NULL;
+}
+
+inline bool board_is_initialized(board_info_t* board) { return board == NULL ? false : board->initialized; }
+
+static board_info_t* get_board_by_index(uint8_t board_index) {
+ if (board_index >= 0 && board_index < NUM_BOARDS) {
+ if (!board_is_initialized(&boards[board_index])) {
+ return NULL;
+ }
+ return &boards[board_index];
+ }
+ return NULL;
+}
+
+static board_info_t* get_board(uint8_t row) {
+ uint8_t idx = board_index(row);
+ if (idx >= 0 && idx < NUM_BOARDS) {
+ if (!board_is_initialized(&boards[idx])) {
+ return NULL;
+ }
+ return &boards[idx];
+ }
+ return NULL;
+}
+
+static uint8_t board_merge_led_status(board_info_t* board, uint8_t data) {
+ if (!board_is_initialized(board)) {
+ return data;
+ }
+ for (uint8_t i = 0; i < NUM_LEDS; i++) {
+ bool status = board->led_status[i];
+ if (status) {
+ data |= (uint8_t)1 << PIN2INDEX(board->led_pins[i]);
+ } else {
+ data &= PIN2MASK(board->led_pins[i]);
+ }
+ }
+ return data;
+}
+
+//
+// Functions for slave
+//
+static uint8_t board_read_slave_cols(board_info_t* board) {
+ if (!board_is_initialized(board)) {
+ return 0xff;
+ }
+ uint8_t data = 0xff;
+ i2c_status_t res = i2c_readReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPIOA, &data, sizeof(data), BOARD_I2C_TIMEOUT);
+ return (res < 0) ? 0xff : data;
+}
+
+static void board_select_slave_row(board_info_t* board, uint8_t board_row) {
+ if (!board_is_initialized(board)) {
+ return;
+ }
+ uint8_t pin = board->row_pins[board_row];
+ uint8_t iodir = board_merge_led_config(board, PIN2MASK(pin));
+ uint8_t status = board_merge_led_status(board, PIN2MASK(pin));
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&status, sizeof(status), BOARD_I2C_TIMEOUT);
+}
+
+static void board_unselect_slave_rows(board_info_t* board) {
+ if (!board_is_initialized(board)) {
+ return;
+ }
+ uint8_t iodir = board_merge_led_config(board, 0xff);
+ uint8_t data = board_merge_led_status(board, 0x00);
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
+}
+
+static void board_unselect_slave_row(board_info_t* board, uint8_t board_row) { board_unselect_slave_rows(board); }
+
+/*
+ * row : matrix row (not board row)
+ */
+static bool board_read_cols_on_slave_row(board_info_t* board, matrix_row_t current_matrix[], uint8_t row) {
+ matrix_row_t last_row_value = current_matrix[row];
+ current_matrix[row] = 0;
+
+ uint8_t board_row = matrix2board(row);
+ board_select_slave_row(board, board_row);
+ wait_us(30);
+
+ uint8_t cols = board_read_slave_cols(board);
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+ uint8_t pin = board->col_pins[col_index];
+ uint8_t pin_state = cols & PIN2BIT(pin);
+ current_matrix[row] |= pin_state ? 0 : (1 << col_index);
+ }
+ board_unselect_slave_row(board, board_row);
+
+ return (last_row_value != current_matrix[row]);
+}
+
+//
+// Functions for master board
+//
+static void board_select_master_row(board_info_t* board, uint8_t board_row) {
+ setPinOutput(board->row_pins[board_row]);
+ writePinLow(board->row_pins[board_row]);
+}
+
+static void board_unselect_master_row(board_info_t* board, uint8_t board_row) { setPinInputHigh(board->row_pins[board_row]); }
+
+static void board_unselect_master_rows(board_info_t* board) {
+ if (!board) {
+ return;
+ }
+ for (uint8_t x = 0; x < NUM_ROWS; x++) {
+ setPinInput(board->row_pins[x]);
+ }
+}
+
+/*
+ * row : matrix row (not board row)
+ */
+static bool board_read_cols_on_master_row(board_info_t* board, matrix_row_t current_matrix[], uint8_t row) {
+ matrix_row_t last_row_value = current_matrix[row];
+ current_matrix[row] = 0;
+
+ uint8_t board_row = matrix2board(row);
+ board_select_master_row(board, board_row);
+ wait_us(30);
+
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+ uint8_t pin_state = readPin(board->col_pins[col_index]);
+ current_matrix[row] |= pin_state ? 0 : (1 << col_index);
+ }
+ board_unselect_master_row(board, board_row);
+
+ return (last_row_value != current_matrix[row]);
+}
+
+static void board_master_init(void) {
+ board_info_t* board = get_master_board();
+ if (!board) {
+ return;
+ }
+ for (uint8_t x = 0; x < NUM_COLS; x++) {
+ setPinInputHigh(board->col_pins[x]);
+ }
+ board->initialized = true;
+}
+
+static void board_setup(void) {
+ for (uint8_t i = 0; i < NUM_BOARDS; i++) {
+ board_info_t* board = &boards[i];
+ board->interface = get_interface(board);
+ }
+}
+
+//
+// Public functions
+//
+
+// NOTE: Do not call this while matrix scanning...
+void board_set_led_by_index(uint8_t board_index, uint8_t led_index, bool status) {
+ board_info_t* board = get_board_by_index(board_index);
+ if (!board) return;
+ if (led_index < 0 || led_index > NUM_LEDS) return;
+ (*board->interface->set_led)(board, led_index, status);
+}
+
+bool board_read_cols_on_row(matrix_row_t current_matrix[], uint8_t row) {
+ bool result = false;
+ board_info_t* board = get_board(row);
+ if (!board) {
+ return false;
+ }
+ result = (*board->interface->read_cols_on_row)(board, current_matrix, row);
+ return result;
+}
+
+void board_select_row(uint8_t row) {
+ board_info_t* board = get_board(row);
+ if (!board) {
+ return;
+ }
+ uint8_t board_row = matrix2board(row);
+ (*board->interface->select_row)(board, board_row);
+}
+
+void board_unselect_row(uint8_t row) {
+ board_info_t* board = get_board(row);
+ if (!board) {
+ return;
+ }
+ uint8_t board_row = matrix2board(row);
+ (*board->interface->unselect_row)(board, board_row);
+}
+
+void board_unselect_rows(void) {
+ for (uint8_t i = 0; i < NUM_BOARDS; i++) {
+ board_info_t* board = &boards[i];
+ (*board->interface->unselect_rows)(board);
+ }
+}
+
+void board_init(void) {
+ board_setup();
+ board_master_init();
+ board_slave_init();
+ board_unselect_rows();
+}
diff --git a/keyboards/chidori/board.h b/keyboards/chidori/board.h
new file mode 100644
index 0000000000..892ea6c0f1
--- /dev/null
+++ b/keyboards/chidori/board.h
@@ -0,0 +1,190 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define NUM_ROWS 4
+#define NUM_COLS 6
+#define NUM_LEDS 2
+
+#define LED_GREEN 0
+#define LED_YELLOW 1
+
+typedef struct board_info_t board_info_t;
+typedef struct board_interface_t board_interface_t;
+
+struct board_info_t {
+ bool master;
+ bool initialized;
+ uint8_t i2c_address;
+ pin_t row_pins[NUM_ROWS];
+ pin_t col_pins[NUM_COLS];
+ pin_t led_pins[NUM_LEDS];
+ bool led_status[NUM_LEDS];
+ board_interface_t* interface;
+};
+
+struct board_interface_t {
+ void (*select_row)(board_info_t* board, uint8_t row);
+ void (*unselect_row)(board_info_t* board, uint8_t row);
+ void (*unselect_rows)(board_info_t* board);
+ bool (*read_cols_on_row)(board_info_t* board, matrix_row_t current_matrix[], uint8_t row);
+ void (*set_led)(board_info_t* board, uint8_t led_index, bool status);
+};
+
+#define BOARD_I2C_TIMEOUT 20
+
+#define GPA0 0x00
+#define GPA1 0x01
+#define GPA2 0x02
+#define GPA3 0x03
+#define GPA4 0x04
+#define GPA5 0x05
+#define GPA6 0x06
+#define GPA7 0x07
+#define GPB0 0x08
+#define GPB1 0x09
+#define GPB2 0x0A
+#define GPB3 0x0B
+#define GPB4 0x0C
+#define GPB5 0x0D
+#define GPB6 0x0E
+#define GPB7 0x0F
+
+//#define PORTA 0x00
+//#define PORTB 0x01
+#define PORT_MASK 0x08
+#define PIN_MASK 0x07
+
+#define PIN2REGISTER(reg, pin) (reg & ((pin & PORT_MASK) >> 3))
+#define PIN2PORT(pin) ((pin & PORT_MASK) >> 3)
+#define PIN2MASK(pin) (~(1 << PIN2INDEX(pin)))
+#define PIN2INDEX(pin) (pin & ~PORT_MASK)
+#define PIN2BIT(pin) (1 << PIN2INDEX(pin))
+
+#define EXPANDER_ADDR(addr) (addr << 1)
+
+#define EXPANDER_IODIR(pin) (0x00 | PIN2PORT(pin))
+#define EXPANDER_IPOL(pin) (0x02 | PIN2PORT(pin))
+#define EXPANDER_GPINTEN(pin) (0x04 | PIN2PORT(pin))
+#define EXPANDER_DEFVAL(pin) (0x06 | PIN2PORT(pin))
+#define EXPANDER_INTCON(pin) (0x08 | PIN2PORT(pin))
+#define EXPANDER_IOCON(pin) (0x0A | PIN2PORT(pin))
+#define EXPANDER_GPPU(pin) (0x0C | PIN2PORT(pin))
+#define EXPANDER_INTF(pin) (0x0E | PIN2PORT(pin))
+#define EXPANDER_INTCAP(pin) (0x10 | PIN2PORT(pin))
+#define EXPANDER_GPIO(pin) (0x12 | PIN2PORT(pin))
+#define EXPANDER_OLAT(pin) (0x14 | PIN2PORT(pin))
+
+#define EXPANDER_IODIRA 0x00
+#define EXPANDER_IODIRB 0x01
+#define EXPANDER_IPOLA 0x02
+#define EXPANDER_IPOLB 0x03
+#define EXPANDER_GPINTENA 0x04
+#define EXPANDER_GPINTENB 0x05
+#define EXPANDER_DEFVALA 0x06
+#define EXPANDER_DEFVALB 0x07
+#define EXPANDER_INTCONA 0x08
+#define EXPANDER_INTCONB 0x09
+#define EXPANDER_IOCONA 0x0A
+#define EXPANDER_IOCONB 0x0B
+#define EXPANDER_GPPUA 0x0C
+#define EXPANDER_GPPUB 0x0D
+#define EXPANDER_INTFA 0x0E
+#define EXPANDER_INTFB 0x0F
+#define EXPANDER_INTCAPA 0x10
+#define EXPANDER_INTCAPB 0x11
+#define EXPANDER_GPIOA 0x12
+#define EXPANDER_GPIOB 0x13
+#define EXPANDER_OLATA 0x14
+#define EXPANDER_OLATB 0x15
+
+//
+// Default board config
+//
+#ifndef NUM_BOARDS
+# define NUM_BOARDS 2
+#endif
+
+// clang-format off
+#ifndef BOARD_INFOS
+#if NUM_BOARDS == 2
+#define BOARD_INFOS \
+{ \
+ { \
+ true, \
+ false, \
+ 0x00, \
+ { D4, D5, D6, D7 }, \
+ { D1, D0, C3, C2, C1, C0 }, \
+ { B1, B2 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x20, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+}
+#elif NUM_BOARDS == 3
+#define BOARD_INFOS \
+{ \
+ { \
+ true, \
+ false, \
+ 0x00, \
+ { D4, D5, D6, D7 }, \
+ { D1, D0, C3, C2, C1, C0 }, \
+ { B1, B2 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x20, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x21, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+}
+#endif
+#endif
+// clang-format on
+
+void board_set_led_by_index(uint8_t board_index, uint8_t led_index, bool status);
+bool board_read_cols_on_row(matrix_row_t current_matrix[], uint8_t row);
+void board_select_row(uint8_t row);
+void board_unselect_row(uint8_t row);
+void board_unselect_rows(void);
+void board_init(void);
diff --git a/keyboards/chidori/chidori.c b/keyboards/chidori/chidori.c
new file mode 100644
index 0000000000..a3b6f2c041
--- /dev/null
+++ b/keyboards/chidori/chidori.c
@@ -0,0 +1,15 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
diff --git a/keyboards/chidori/chidori.h b/keyboards/chidori/chidori.h
new file mode 100644
index 0000000000..efaff71948
--- /dev/null
+++ b/keyboards/chidori/chidori.h
@@ -0,0 +1,59 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+// clang-format off
+#define LAYOUT( \
+ L01, L02, L03, L04, L05, L06, R01, R02, R03, R04, R05, R06, \
+ L07, L08, L09, L10, L11, L12, R07, R08, R09, R10, R11, R12, \
+ L13, L14, L15, L16, L17, L18, R13, R14, R15, R16, R17, R18, \
+ L19, L20, L21, L22, L23, L24, R19, R20, R21, R22, R23, R24 \
+ ) \
+ { \
+ { L01, L02, L03, L04, L05, L06 }, \
+ { L07, L08, L09, L10, L11, L12 }, \
+ { L13, L14, L15, L16, L17, L18 }, \
+ { L19, L20, L21, L22, L23, L24 }, \
+ { R01, R02, R03, R04, R05, R06 }, \
+ { R07, R08, R09, R10, R11, R12 }, \
+ { R13, R14, R15, R16, R17, R18 }, \
+ { R19, R20, R21, R22, R23, R24 } \
+ }
+
+#define LAYOUT_extended( \
+ L01, L02, L03, L04, L05, L06, M01, M02, M03, M04, M05, M06, R01, R02, R03, R04, R05, R06, \
+ L07, L08, L09, L10, L11, L12, M07, M08, M09, M10, M11, M12, R07, R08, R09, R10, R11, R12, \
+ L13, L14, L15, L16, L17, L18, M13, M14, M15, M16, M17, M18, R13, R14, R15, R16, R17, R18, \
+ L19, L20, L21, L22, L23, L24, M19, M20, M21, M22, M23, M24, R19, R20, R21, R22, R23, R24 \
+ ) \
+ { \
+ { L01, L02, L03, L04, L05, L06 }, \
+ { L07, L08, L09, L10, L11, L12 }, \
+ { L13, L14, L15, L16, L17, L18 }, \
+ { L19, L20, L21, L22, L23, L24 }, \
+ { M01, M02, M03, M04, M05, M06 }, \
+ { M07, M08, M09, M10, M11, M12 }, \
+ { M13, M14, M15, M16, M17, M18 }, \
+ { M19, M20, M21, M22, M23, M24 }, \
+ { R01, R02, R03, R04, R05, R06 }, \
+ { R07, R08, R09, R10, R11, R12 }, \
+ { R13, R14, R15, R16, R17, R18 }, \
+ { R19, R20, R21, R22, R23, R24 } \
+ }
+
+// clang-format on
diff --git a/keyboards/chidori/config.h b/keyboards/chidori/config.h
new file mode 100644
index 0000000000..669b68a247
--- /dev/null
+++ b/keyboards/chidori/config.h
@@ -0,0 +1,253 @@
+/*
+Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#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
+#define DESCRIPTION Yet another split keyboard made with only through - hole components
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#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 \
+ { D0, D5 }
+#define MATRIX_COL_PINS \
+ { F1, F0, B0 }
+*/
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+// #define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL)))
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/chidori/info.json b/keyboards/chidori/info.json
new file mode 100644
index 0000000000..49e8c5d40f
--- /dev/null
+++ b/keyboards/chidori/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "Chidori",
+ "url": "",
+ "maintainer": "ka2hiro",
+ "width": 12,
+ "height": 4,
+ "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":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":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":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}
+ ]
+ },
+ "LAYOUT_extended": {
+ "layout": [
+ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":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":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":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":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/chidori/keymaps/default/config.h b/keyboards/chidori/keymaps/default/config.h
new file mode 100644
index 0000000000..1501061e79
--- /dev/null
+++ b/keyboards/chidori/keymaps/default/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/*
+ * Board config
+ */
+/*
+#define NUM_BOARDS 2
+
+#define BOARD_INFOS \
+{ \
+ { \
+ true, \
+ false, \
+ 0x00, \
+ { D4, D5, D6, D7 }, \
+ { D1, D0, C3, C2, C1, C0 }, \
+ { B1, B2 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x20, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+}
+*/
diff --git a/keyboards/chidori/keymaps/default/keymap.c b/keyboards/chidori/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4aacdfb742
--- /dev/null
+++ b/keyboards/chidori/keymaps/default/keymap.c
@@ -0,0 +1,176 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include "board.h"
+
+enum layer_number { _QWERTY = 0, _COLEMAK, _DVORAK, _LOWER, _RAISE, _ADJUST };
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK };
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |ADJUST| Esc | 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, 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 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |ADJUST| Esc | 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_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Dvorak
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |ADJUST| Esc | 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_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Lower
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | - | _ | + | { | } | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | 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_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+ /* Raise
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------' `-----------------------------------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+ /* Adjust (Lower + Raise)
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | Reset| | | | | | |Qwerty|Colemk|Dvorak| | Ins |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Caps | | | | | Mac | | Win | - | = |Print |ScLock|Pause |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | KANA | | Home |PageDn|PageUp| End |
+ * `-----------------------------------------' `-----------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, RESET, _______, _______, _______, _______, _______, 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
+ )
+};
+// clang-format on
+
+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;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ }
+ return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ board_set_led_by_index(0, LED_YELLOW, true);
+ } else {
+ board_set_led_by_index(0, LED_YELLOW, false);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ board_set_led_by_index(1, LED_YELLOW, true);
+ } else {
+ board_set_led_by_index(1, LED_YELLOW, false);
+ }
+}
diff --git a/keyboards/chidori/keymaps/default/readme.md b/keyboards/chidori/keymaps/default/readme.md
new file mode 100644
index 0000000000..8e66dc4b39
--- /dev/null
+++ b/keyboards/chidori/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for chidori
diff --git a/keyboards/chidori/keymaps/extended/config.h b/keyboards/chidori/keymaps/extended/config.h
new file mode 100644
index 0000000000..0c07b315a8
--- /dev/null
+++ b/keyboards/chidori/keymaps/extended/config.h
@@ -0,0 +1,59 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/*
+ * Board config
+ */
+#define NUM_BOARDS 3
+
+/*
+#define BOARD_INFOS \
+{ \
+ { \
+ true, \
+ false, \
+ 0x00, \
+ { D4, D5, D6, D7 }, \
+ { D1, D0, C3, C2, C1, C0 }, \
+ { B1, B2 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x20, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+ { \
+ false, \
+ false, \
+ 0x21, \
+ { GPB4, GPB5, GPB6, GPB7 }, \
+ { GPA7, GPA6, GPA5, GPA4, GPA3, GPA2 }, \
+ { GPB0, GPB1 }, \
+ { false, false }, \
+ NULL \
+ }, \
+}
+*/
+
diff --git a/keyboards/chidori/keymaps/extended/keymap.c b/keyboards/chidori/keymaps/extended/keymap.c
new file mode 100644
index 0000000000..a5c9769f0c
--- /dev/null
+++ b/keyboards/chidori/keymaps/extended/keymap.c
@@ -0,0 +1,181 @@
+/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include "board.h"
+
+enum layer_number { _QWERTY = 0, _COLEMAK, _DVORAK, _LOWER, _RAISE, _ADJUST };
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK };
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right| | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_QWERTY] = LAYOUT_extended(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, 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_P4, KC_P5, KC_P6, _______, KC_PSLS, 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_ENT , KC_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
+ ),
+ /* Colemak
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right| | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_COLEMAK] = LAYOUT_extended(
+ 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_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
+ KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_P4, KC_P5, KC_P6, _______, KC_PSLS, KC_TAB,
+ 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_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
+ ),
+
+ /* Dvorak
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * |ADJUST| Esc | Alt | GUI |LOWER |Space | | Space| RAISE| Left | Down | Up | Right| | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_DVORAK] = LAYOUT_extended(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_P4, KC_P5, KC_P6, _______, KC_PSLS, KC_TAB,
+ 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_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
+ ),
+
+ /* Lower
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | | | | | | | | - | _ | + | { | } | | | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | Home | End | | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * | | | | | | | | | | Next | Vol- | Vol+ | Play | | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_LOWER] = LAYOUT_extended(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
+ _______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_P4, KC_P5, KC_P6, _______, KC_PSLS, KC_TAB,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, KC_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
+ ),
+
+ /* Raise
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * | | | | | | | | | | Next | Vol- | Vol+ | Play | | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_RAISE] = LAYOUT_extended(
+ 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_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_P4, KC_P5, KC_P6, _______, KC_PSLS, KC_TAB,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
+ ),
+
+ /* Adjust (Lower + Raise)
+ * ,-----------------------------------------. ,-----------------------------------------. ,-----------------------------------------.
+ * | | Reset| | | | | | |Qwerty|Colemk|Dvorak| | Ins | | 7 | 8 | 9 | |NumLck| Esc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------| + |------+------|
+ * | Caps | | | | | Mac | | Win | - | = |Print |ScLock|Pause | | 4 | 5 | 6 | | / | Tab |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | 1 | 2 | 3 | | * | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------| |-------------+------|Enter |------+------|
+ * | | | | | | | | | | Home |PageDn|PageUp| End | | 0 | . | | - | Bksp |
+ * `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
+ */
+ [_ADJUST] = LAYOUT_extended(
+ _______, RESET, _______, _______, _______, _______, _______, 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
+ )
+};
+// clang-format on
+
+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;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ }
+ return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ board_set_led_by_index(0, LED_YELLOW, true);
+ } else {
+ board_set_led_by_index(0, LED_YELLOW, false);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ board_set_led_by_index(1, LED_YELLOW, true);
+ } else {
+ board_set_led_by_index(1, LED_YELLOW, false);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ board_set_led_by_index(2, LED_YELLOW, true);
+ } else {
+ board_set_led_by_index(2, LED_YELLOW, false);
+ }
+}
diff --git a/keyboards/chidori/keymaps/extended/readme.md b/keyboards/chidori/keymaps/extended/readme.md
new file mode 100644
index 0000000000..5bfdbedcce
--- /dev/null
+++ b/keyboards/chidori/keymaps/extended/readme.md
@@ -0,0 +1 @@
+# The extended keymap for chidori
diff --git a/keyboards/chidori/matrix.c b/keyboards/chidori/matrix.c
new file mode 100644
index 0000000000..204f236a6e
--- /dev/null
+++ b/keyboards/chidori/matrix.c
@@ -0,0 +1,113 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include <stdint.h>
+#include <stdbool.h>
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "debounce.h"
+#include "quantum.h"
+#include "board.h"
+
+#if (MATRIX_COLS <= 8)
+# define print_matrix_header() print("\nr/c 01234567\n")
+# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop(matrix[i])
+# define ROW_SHIFTER ((uint8_t)1)
+#elif (MATRIX_COLS <= 16)
+# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
+# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop16(matrix[i])
+# define ROW_SHIFTER ((uint16_t)1)
+#elif (MATRIX_COLS <= 32)
+# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
+# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop32(matrix[i])
+# define ROW_SHIFTER ((uint32_t)1)
+#endif
+
+#ifdef MATRIX_MASKED
+extern const matrix_row_t matrix_mask[];
+#endif
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
+static matrix_row_t matrix[MATRIX_ROWS]; // debounced values
+
+__attribute__((weak)) void matrix_init_quantum(void) { matrix_init_kb(); }
+
+__attribute__((weak)) void matrix_scan_quantum(void) { matrix_scan_kb(); }
+
+__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 matrix_row_t matrix_get_row(uint8_t row) {
+ // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
+ // switch blocker installed and the switch is always pressed.
+#ifdef MATRIX_MASKED
+ return matrix[row] & matrix_mask[row];
+#else
+ return matrix[row];
+#endif
+}
+
+void matrix_print(void) {
+ print_matrix_header();
+
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ phex(row);
+ print(": ");
+ print_matrix_row(row);
+ print("\n");
+ }
+}
+
+void matrix_init(void) {
+ // initialize key pins
+ board_init();
+
+ // initialize matrix state: all keys off
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ raw_matrix[i] = 0;
+ matrix[i] = 0;
+ }
+
+ debounce_init(MATRIX_ROWS);
+
+ matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+ bool changed = false;
+
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
+ changed |= board_read_cols_on_row(raw_matrix, current_row);
+ }
+
+ debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
+
+ matrix_scan_quantum();
+ return 1;
+}
diff --git a/keyboards/chidori/readme.md b/keyboards/chidori/readme.md
new file mode 100644
index 0000000000..d02b50a758
--- /dev/null
+++ b/keyboards/chidori/readme.md
@@ -0,0 +1,15 @@
+# chidori
+
+![Chidori](https://i.imgur.com/QvpLiOvl.jpg)
+
+Yet another split keyboard made with only through-hole components.
+
+* Keyboard Maintainer: [ka2hiro](https://github.com/ka2hiro) [@ka2hiro](https://twitter.com/ka2hiro)
+* Hardware Supported: Chidori PCB, ATMEGA328P
+* Hardware Availability: [@kagizaraya](https://twitter.com/kagizaraya)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make chidori:default:usbasp
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.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/chidori/rules.mk b/keyboards/chidori/rules.mk
new file mode 100644
index 0000000000..2e88146bac
--- /dev/null
+++ b/keyboards/chidori/rules.mk
@@ -0,0 +1,44 @@
+# MCU name
+MCU = atmega328p
+ARCH = AVR8
+F_USB = $(F_CPU)
+
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = USBasp
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+
+CUSTOM_MATRIX = yes
+
+# project specific files
+SRC += matrix.c
+SRC += board.c
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/chidori/usbconfig.h b/keyboards/chidori/usbconfig.h
new file mode 100644
index 0000000000..361868d281
--- /dev/null
+++ b/keyboards/chidori/usbconfig.h
@@ -0,0 +1,397 @@
+/* Name: usbconfig.h
+ * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
+ */
+
+#ifndef __usbconfig_h_included__
+#define __usbconfig_h_included__
+
+#include "config.h"
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
+also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
+wire the lines to any other port, as long as D+ is also wired to INT0 (or any
+other hardware interrupt, as long as it is the highest level interrupt, see
+section at the end of this file).
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#define USB_CFG_IOPORTNAME D
+/* This is the port where the USB bus is connected. When you configure it to
+ * "B", the registers PORTB, PINB and DDRB will be used.
+ */
+#define USB_CFG_DMINUS_BIT 3
+/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
+ * This may be any bit in the port.
+ */
+#define USB_CFG_DPLUS_BIT 2
+/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
+ * This may be any bit in the port. Please note that D+ must also be connected
+ * to interrupt pin INT0! [You can also use other interrupts, see section
+ * "Optional MCU Description" below, or you can connect D- to the interrupt, as
+ * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
+ * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
+ * markers every millisecond.]
+ */
+#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
+/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
+ * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
+ * require no crystal, they tolerate +/- 1% deviation from the nominal
+ * frequency. All other rates require a precision of 2000 ppm and thus a
+ * crystal!
+ * Since F_CPU should be defined to your actual clock rate anyway, you should
+ * not need to modify this setting.
+ */
+#define USB_CFG_CHECK_CRC 0
+/* Define this to 1 if you want that the driver checks integrity of incoming
+ * data packets (CRC checks). CRC checks cost quite a bit of code size and are
+ * currently only available for 18 MHz crystal clock. You must choose
+ * USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
+ */
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint (any other endpoint
+ * number).
+ */
+#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this to 1 if you want to compile a version with three endpoints: The
+ * default control endpoint 0, an interrupt-in endpoint 3 (or the number
+ * configured below) and a catch-all default interrupt-in endpoint as above.
+ * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
+ */
+#define USB_CFG_EP3_NUMBER 3
+/* If the so-called endpoint 3 is used, it can now be configured to any other
+ * endpoint number (except 0) with this macro. Default if undefined is 3.
+ */
+/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
+/* The above macro defines the startup condition for data toggling on the
+ * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
+ * Since the token is toggled BEFORE sending any data, the first packet is
+ * sent with the oposite value of this configuration!
+ */
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_SUPPRESS_INTR_CODE 0
+/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
+ * want to send any data over them. If this macro is defined to 1, functions
+ * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
+ * you need the interrupt-in endpoints in order to comply to an interface
+ * (e.g. HID), but never want to send any data. This option saves a couple
+ * of bytes in flash memory and the transmit buffers in RAM.
+ */
+#define USB_CFG_INTR_POLL_INTERVAL 1
+/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
+ * interval. The value is in milliseconds and must not be less than 10 ms for
+ * low speed devices.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+// max power draw with maxed white underglow measured at 120 mA (peaks)
+#define USB_CFG_MAX_BUS_POWER 100
+/* Set this variable to the maximum USB bus power consumption of your device.
+ * The value is in milliamperes. [It will be divided by two since USB
+ * communicates power requirements in units of 2 mA.]
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_READ 0
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to any endpoint other than 0. The endpoint number
+ * can be found in 'usbRxToken'.
+ */
+#define USB_CFG_HAVE_FLOWCONTROL 0
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#define USB_CFG_DRIVER_FLASH_PAGE 0
+/* If the device has more than 64 kBytes of flash, define this to the 64 k page
+ * where the driver's constants (descriptors) are located. Or in other words:
+ * Define this to 1 for boot loaders on the ATMega128.
+ */
+#define USB_CFG_LONG_TRANSFERS 0
+/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
+ * in a single control-in or control-out transfer. Note that the capability
+ * for long transfers increases the driver size.
+ */
+/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
+/* This macro is a hook if you want to do unconventional things. If it is
+ * defined, it's inserted at the beginning of received message processing.
+ * If you eat the received message and don't want default processing to
+ * proceed, do a return after doing your things. One possible application
+ * (besides debugging) is to flash a status LED on each packet.
+ */
+/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
+/* This macro is a hook if you need to know when an USB RESET occurs. It has
+ * one parameter which distinguishes between the start of RESET state and its
+ * end.
+ */
+/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
+/* This macro (if defined) is executed when a USB SET_ADDRESS request was
+ * received.
+ */
+#define USB_COUNT_SOF 0
+/* define this macro to 1 if you need the global variable "usbSofCount" which
+ * counts SOF packets. This feature requires that the hardware interrupt is
+ * connected to D- instead of D+.
+ */
+/* #ifdef __ASSEMBLER__
+ * macro myAssemblerMacro
+ * in YL, TCNT0
+ * sts timer0Snapshot, YL
+ * endm
+ * #endif
+ * #define USB_SOF_HOOK myAssemblerMacro
+ * This macro (if defined) is executed in the assembler module when a
+ * Start Of Frame condition is detected. It is recommended to define it to
+ * the name of an assembler macro which is defined here as well so that more
+ * than one assembler instruction can be used. The macro may use the register
+ * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
+ * immediately after an SOF pulse may be lost and must be retried by the host.
+ * What can you do with this hook? Since the SOF signal occurs exactly every
+ * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
+ * designs running on the internal RC oscillator.
+ * Please note that Start Of Frame detection works only if D- is wired to the
+ * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
+ */
+#define USB_CFG_CHECK_DATA_TOGGLING 0
+/* define this macro to 1 if you want to filter out duplicate data packets
+ * sent by the host. Duplicates occur only as a consequence of communication
+ * errors, when the host does not receive an ACK. Please note that you need to
+ * implement the filtering yourself in usbFunctionWriteOut() and
+ * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
+ * for each control- and out-endpoint to check for duplicate packets.
+ */
+#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
+/* define this macro to 1 if you want the function usbMeasureFrameLength()
+ * compiled in. This function can be used to calibrate the AVR's RC oscillator.
+ */
+#define USB_USE_FAST_CRC 0
+/* The assembler module has two implementations for the CRC algorithm. One is
+ * faster, the other is smaller. This CRC routine is only used for transmitted
+ * messages where timing is not critical. The faster routine needs 31 cycles
+ * per byte while the smaller one needs 61 to 69 cycles. The faster routine
+ * may be worth the 32 bytes bigger code size if you transmit lots of data and
+ * run the AVR close to its limit.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xED), ((VENDOR_ID >> 8) & 0xFE)
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you may use one of obdev's free
+ * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0x00), ((PRODUCT_ID >> 8) & 0x00)
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you may use one of obdev's free shared VID/PID pairs. See the file
+ * USB-IDs-for-free.txt for details!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_VERSION 0x00, 0x01
+/* Version number of the device: Minor number first, then major number.
+ */
+#define USB_CFG_VENDOR_NAME 'k','a','g','i','z','a','r','a','y','a'
+#define USB_CFG_VENDOR_NAME_LEN 10
+/* These two values define the vendor name returned by the USB device. The name
+ * must be given as a list of characters under single quotes. The characters
+ * are interpreted as Unicode (UTF-16) entities.
+ * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
+ * details.
+ */
+#define USB_CFG_DEVICE_NAME 'C', 'h', 'i', 'd', 'o', 'r', 'i'
+#define USB_CFG_DEVICE_NAME_LEN 7
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USB-IDs-for-free.txt before you assign a name if
+ * you use a shared VID/PID.
+ */
+//#define USB_CFG_SERIAL_NUMBER 'd','m','9','r','e','c','o','r','d','s','.','c','o','m',':','p','1'
+//#define USB_CFG_SERIAL_NUMBER_LEN 17
+/* Same as above for the serial number. If you don't want a serial number,
+ * undefine the macros.
+ * It may be useful to provide the serial number through other means than at
+ * compile time. See the section about descriptor properties below for how
+ * to fine tune control over USB descriptors such as the string descriptor
+ * for the serial number.
+ */
+#define USB_CFG_DEVICE_CLASS 0
+#define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ * Class 0xff is "vendor specific".
+ */
+#define USB_CFG_INTERFACE_CLASS 3 /* HID */
+#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
+#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
+/* See USB specification if you want to conform to an existing device class or
+ * protocol. The following classes must be set at interface level:
+ * HID class is 3, no subclass and protocol required (but may be useful!)
+ * CDC class is 2, use subclass 2 and protocol 1 for ACM
+ */
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * If you use this define, you must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* #define USB_PUBLIC static */
+/* Use the define above if you #include usbdrv.c instead of linking against it.
+ * This technique saves a couple of bytes in flash memory.
+ */
+
+/* ------------------- Fine Control over USB Descriptors ------------------- */
+/* If you don't want to use the driver's default USB descriptors, you can
+ * provide our own. These can be provided as (1) fixed length static data in
+ * flash memory, (2) fixed length static data in RAM or (3) dynamically at
+ * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
+ * information about this function.
+ * Descriptor handling is configured through the descriptor's properties. If
+ * no properties are defined or if they are 0, the default descriptor is used.
+ * Possible properties are:
+ * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
+ * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
+ * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
+ * you want RAM pointers.
+ * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
+ * in static memory is in RAM, not in flash memory.
+ * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
+ * the driver must know the descriptor's length. The descriptor itself is
+ * found at the address of a well known identifier (see below).
+ * List of static descriptor names (must be declared PROGMEM if in flash):
+ * char usbDescriptorDevice[];
+ * char usbDescriptorConfiguration[];
+ * char usbDescriptorHidReport[];
+ * char usbDescriptorString0[];
+ * int usbDescriptorStringVendor[];
+ * int usbDescriptorStringDevice[];
+ * int usbDescriptorStringSerialNumber[];
+ * Other descriptors can't be provided statically, they must be provided
+ * dynamically at runtime.
+ *
+ * Descriptor properties are or-ed or added together, e.g.:
+ * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
+ *
+ * The following descriptors are defined:
+ * USB_CFG_DESCR_PROPS_DEVICE
+ * USB_CFG_DESCR_PROPS_CONFIGURATION
+ * USB_CFG_DESCR_PROPS_STRINGS
+ * USB_CFG_DESCR_PROPS_STRING_0
+ * USB_CFG_DESCR_PROPS_STRING_VENDOR
+ * USB_CFG_DESCR_PROPS_STRING_PRODUCT
+ * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
+ * USB_CFG_DESCR_PROPS_HID
+ * USB_CFG_DESCR_PROPS_HID_REPORT
+ * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
+ *
+ * Note about string descriptors: String descriptors are not just strings, they
+ * are Unicode strings prefixed with a 2 byte header. Example:
+ * int serialNumberDescriptor[] = {
+ * USB_STRING_DESCRIPTOR_HEADER(6),
+ * 'S', 'e', 'r', 'i', 'a', 'l'
+ * };
+ */
+
+#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
+#define USB_CFG_DESCR_PROPS_STRINGS 0
+#define USB_CFG_DESCR_PROPS_STRING_0 0
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID 0
+#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
+#define USB_CFG_DESCR_PROPS_UNKNOWN 0
+
+#define usbMsgPtr_t unsigned short
+/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to
+ * a scalar type here because gcc generates slightly shorter code for scalar
+ * arithmetics than for pointer arithmetics. Remove this define for backward
+ * type compatibility or define it to an 8 bit type if you use data in RAM only
+ * and all RAM is below 256 bytes (tiny memory model in IAR CC).
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+/* #define USB_INTR_VECTOR INT0_vect */
+
+/* Set INT1 for D- falling edge to count SOF */
+/* #define USB_INTR_CFG EICRA */
+// #define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10))
+// /* #define USB_INTR_CFG_CLR 0 */
+// /* #define USB_INTR_ENABLE EIMSK */
+// #define USB_INTR_ENABLE_BIT INT1
+// /* #define USB_INTR_PENDING EIFR */
+// #define USB_INTR_PENDING_BIT INTF1
+// #define USB_INTR_VECTOR INT1_vect
+
+#endif /* __usbconfig_h_included__ */
diff --git a/keyboards/chimera_ergo/rules.mk b/keyboards/chimera_ergo/rules.mk
index 0e26588e37..f37d14107b 100644
--- a/keyboards/chimera_ergo/rules.mk
+++ b/keyboards/chimera_ergo/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/chimera_ls/rules.mk b/keyboards/chimera_ls/rules.mk
index 5060b9ebfc..ecab7133a4 100644
--- a/keyboards/chimera_ls/rules.mk
+++ b/keyboards/chimera_ls/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/chimera_ortho/rules.mk b/keyboards/chimera_ortho/rules.mk
index 549f311496..bf341ab5dd 100644
--- a/keyboards/chimera_ortho/rules.mk
+++ b/keyboards/chimera_ortho/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/choco60/rules.mk b/keyboards/choco60/rules.mk
index 65b98b73b6..63b9821461 100644
--- a/keyboards/choco60/rules.mk
+++ b/keyboards/choco60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes # Enable split keyboard
diff --git a/keyboards/christmas_tree/rules.mk b/keyboards/christmas_tree/rules.mk
index 7e5269baf0..da85eb3728 100644
--- a/keyboards/christmas_tree/rules.mk
+++ b/keyboards/christmas_tree/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/ckeys/handwire_101/rules.mk b/keyboards/ckeys/handwire_101/rules.mk
index 07b0c57b44..41a29b3537 100755
--- a/keyboards/ckeys/handwire_101/rules.mk
+++ b/keyboards/ckeys/handwire_101/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
TERMINAL_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/ckeys/nakey/rules.mk b/keyboards/ckeys/nakey/rules.mk
index afd508247f..95fd5e4621 100644
--- a/keyboards/ckeys/nakey/rules.mk
+++ b/keyboards/ckeys/nakey/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE ?= no # USB Nkey Rollover
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE ?= no # MIDI support
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/ckeys/obelus/rules.mk b/keyboards/ckeys/obelus/rules.mk
index 0c55043003..686511ff8a 100644
--- a/keyboards/ckeys/obelus/rules.mk
+++ b/keyboards/ckeys/obelus/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h
index f2b93ee70e..a3d30c3043 100755
--- a/keyboards/ckeys/thedora/config.h
+++ b/keyboards/ckeys/thedora/config.h
@@ -39,7 +39,7 @@
// #define UNUSED_PINS { B14 }
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
//#define BACKLIGHT_PIN B7
diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md
index 920162075b..273811d0fa 100755
--- a/keyboards/ckeys/thedora/readme.md
+++ b/keyboards/ckeys/thedora/readme.md
@@ -32,7 +32,15 @@ All cKeys PCBs are open source. However, this one has not been posted yet becaus
If you want to reflash the pre-installed firmware, use the `.bin` file for Proton C. Flash with the QMK Toolbox or via the command line.
-Building for Proton C: `make ckeys/thedora:default`
+**Building for Proton C:**
+`make ckeys/thedora:default`
+
+**Search for Bootloader Device:**
+`make ckeys/thedora:default:flash`
+You will begin seeing output of the host searching for the bootloader device, `ERROR: Bootloader not found. Trying again in 5s.`
+
+**Enter DFU-Bootloader Mode:**
+Reset the controller. Press [ADMIN](https://ckeys.org/slides/exboard/assets/player/keynotedhtmlplayer#21) + [RESET](https://ckeys.org/slides/exboard/assets/player/keynotedhtmlplayer#25) or, if accessible, press the reset button on the Proton C microcontroller.
## Default Layout
diff --git a/keyboards/claw44/rev1/rules.mk b/keyboards/claw44/rev1/rules.mk
index ae95ec4014..016bc362a1 100644
--- a/keyboards/claw44/rev1/rules.mk
+++ b/keyboards/claw44/rev1/rules.mk
@@ -3,10 +3,10 @@ SRC += rev1/split_util.c
SRC += rev1/split_scomm.c
# Build Options
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/claw44/rules.mk b/keyboards/claw44/rules.mk
index b2c3b436e9..f872b9ebfa 100644
--- a/keyboards/claw44/rules.mk
+++ b/keyboards/claw44/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/clueboard/17/rules.mk b/keyboards/clueboard/17/rules.mk
index 68274a8b23..703bf3d2db 100644
--- a/keyboards/clueboard/17/rules.mk
+++ b/keyboards/clueboard/17/rules.mk
@@ -12,13 +12,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/clueboard/2x1800/rules.mk b/keyboards/clueboard/2x1800/rules.mk
index f5a41ff142..34d9c2a24e 100644
--- a/keyboards/clueboard/2x1800/rules.mk
+++ b/keyboards/clueboard/2x1800/rules.mk
@@ -12,13 +12,13 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
RGBLIGHT_ENABLE = yes # RGB on port C6
AUDIO_ENABLE = yes # Audio output on port C4 and B7
diff --git a/keyboards/clueboard/66/rev1/rules.mk b/keyboards/clueboard/66/rev1/rules.mk
index 39fd55921f..84b5dee21e 100644
--- a/keyboards/clueboard/66/rev1/rules.mk
+++ b/keyboards/clueboard/66/rev1/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
diff --git a/keyboards/clueboard/66/rev2/rules.mk b/keyboards/clueboard/66/rev2/rules.mk
index ec623ec63f..16d9251d6a 100644
--- a/keyboards/clueboard/66/rev2/rules.mk
+++ b/keyboards/clueboard/66/rev2/rules.mk
@@ -13,10 +13,11 @@ BOOTLOADER = atmel-dfu
# Build Options
BACKLIGHT_ENABLE = yes
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BACKLIGHT_DRIVER = custom
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
diff --git a/keyboards/clueboard/66/rev3/rules.mk b/keyboards/clueboard/66/rev3/rules.mk
index ca7817af18..55f3050e35 100644
--- a/keyboards/clueboard/66/rev3/rules.mk
+++ b/keyboards/clueboard/66/rev3/rules.mk
@@ -15,10 +15,11 @@ BOOTLOADER = atmel-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = yes
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BACKLIGHT_DRIVER = custom
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
diff --git a/keyboards/clueboard/66/rev4/rules.mk b/keyboards/clueboard/66/rev4/rules.mk
index ef7989aa0b..54264c128d 100644
--- a/keyboards/clueboard/66/rev4/rules.mk
+++ b/keyboards/clueboard/66/rev4/rules.mk
@@ -5,10 +5,10 @@ MCU = STM32F303
# comment out to disable the options.
#
BACKLIGHT_ENABLE = yes
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
diff --git a/keyboards/clueboard/66_hotswap/gen1/led.c b/keyboards/clueboard/66_hotswap/gen1/led.c
index efbf532022..f67259d2e4 100644
--- a/keyboards/clueboard/66_hotswap/gen1/led.c
+++ b/keyboards/clueboard/66_hotswap/gen1/led.c
@@ -16,6 +16,5 @@
*/
#include "hal.h"
-#include "backlight.h"
#include "led.h"
#include "printf.h"
diff --git a/keyboards/clueboard/66_hotswap/gen1/matrix.c b/keyboards/clueboard/66_hotswap/gen1/matrix.c
index c3e59b5646..05386215ed 100644
--- a/keyboards/clueboard/66_hotswap/gen1/matrix.c
+++ b/keyboards/clueboard/66_hotswap/gen1/matrix.c
@@ -5,7 +5,6 @@
#include "timer.h"
#include "wait.h"
#include "printf.h"
-#include "backlight.h"
#include "matrix.h"
#include "action.h"
#include "keycode.h"
diff --git a/keyboards/clueboard/66_hotswap/gen1/rules.mk b/keyboards/clueboard/66_hotswap/gen1/rules.mk
index 50f140defa..1de003ce5a 100644
--- a/keyboards/clueboard/66_hotswap/gen1/rules.mk
+++ b/keyboards/clueboard/66_hotswap/gen1/rules.mk
@@ -7,7 +7,6 @@ LED_MATRIX_ENABLE = IS31FL3731
# Build Options
# comment out to disable the options.
#
-BACKLIGHT_ENABLE = yes
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/clueboard/66_hotswap/prototype/rules.mk b/keyboards/clueboard/66_hotswap/prototype/rules.mk
index 0a2a734cf5..7f5afcf73e 100644
--- a/keyboards/clueboard/66_hotswap/prototype/rules.mk
+++ b/keyboards/clueboard/66_hotswap/prototype/rules.mk
@@ -15,6 +15,7 @@ BOOTLOADER = atmel-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/clueboard/card/keymaps/default/rules.mk b/keyboards/clueboard/card/keymaps/default/rules.mk
index 3b11f550f9..998bb5e0eb 100644
--- a/keyboards/clueboard/card/keymaps/default/rules.mk
+++ b/keyboards/clueboard/card/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/clueboard/card/rules.mk b/keyboards/clueboard/card/rules.mk
index 9e3f19dc0c..37d1d866ef 100644
--- a/keyboards/clueboard/card/rules.mk
+++ b/keyboards/clueboard/card/rules.mk
@@ -12,14 +12,15 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # 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 # USB Nkey Rollover
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality by default
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/cocoa40/rules.mk b/keyboards/cocoa40/rules.mk
index ad0ffbf0fe..2fb3031164 100644
--- a/keyboards/cocoa40/rules.mk
+++ b/keyboards/cocoa40/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE =no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE =no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes
diff --git a/keyboards/comet46/rules.mk b/keyboards/comet46/rules.mk
index d38f16734f..2aaa5483c8 100644
--- a/keyboards/comet46/rules.mk
+++ b/keyboards/comet46/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+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
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/contra/rules.mk b/keyboards/contra/rules.mk
index 0aded0f29a..de553f57dd 100755
--- a/keyboards/contra/rules.mk
+++ b/keyboards/contra/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 66ca765266..70df2561d1 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/converter/hp_46010a/rules.mk b/keyboards/converter/hp_46010a/rules.mk
index b23aaadeca..b7199d7f90 100644
--- a/keyboards/converter/hp_46010a/rules.mk
+++ b/keyboards/converter/hp_46010a/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = halfkay
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/converter/ibm_5291/rules.mk b/keyboards/converter/ibm_5291/rules.mk
index edb456a7d8..0b53753ebc 100644
--- a/keyboards/converter/ibm_5291/rules.mk
+++ b/keyboards/converter/ibm_5291/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = halfkay
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
index 8ff0950472..749b93312c 100644
--- a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
+++ b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/converter/ibm_terminal/rules.mk b/keyboards/converter/ibm_terminal/rules.mk
index 36913ef331..059d7b303e 100644
--- a/keyboards/converter/ibm_terminal/rules.mk
+++ b/keyboards/converter/ibm_terminal/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/converter/m0110_usb/rules.mk b/keyboards/converter/m0110_usb/rules.mk
index 36c3dfa3fd..a0f0c5ce42 100644
--- a/keyboards/converter/m0110_usb/rules.mk
+++ b/keyboards/converter/m0110_usb/rules.mk
@@ -17,9 +17,9 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/converter/modelm101/rules.mk b/keyboards/converter/modelm101/rules.mk
index dada3f22d9..03c8bda357 100644
--- a/keyboards/converter/modelm101/rules.mk
+++ b/keyboards/converter/modelm101/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/converter/numeric_keypad_IIe/rules.mk b/keyboards/converter/numeric_keypad_IIe/rules.mk
index 03c1bc8f86..fa18648913 100644
--- a/keyboards/converter/numeric_keypad_IIe/rules.mk
+++ b/keyboards/converter/numeric_keypad_IIe/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/converter/palm_usb/config.h b/keyboards/converter/palm_usb/config.h
index 4233a53ef0..8414c47a77 100644
--- a/keyboards/converter/palm_usb/config.h
+++ b/keyboards/converter/palm_usb/config.h
@@ -23,8 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define CUSTOM_MATRIX 2
-
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0100
diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk
index 2cd2c47e59..15114192e7 100644
--- a/keyboards/converter/palm_usb/rules.mk
+++ b/keyboards/converter/palm_usb/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.c b/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.h b/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.mk b/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/converter/siemens_tastatur/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/converter/siemens_tastatur/chconf.h b/keyboards/converter/siemens_tastatur/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/converter/siemens_tastatur/chconf.h
+++ b/keyboards/converter/siemens_tastatur/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/converter/siemens_tastatur/ld/MKL26Z64.ld b/keyboards/converter/siemens_tastatur/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/converter/siemens_tastatur/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/converter/siemens_tastatur/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/converter/siemens_tastatur/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/converter/siemens_tastatur/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/converter/siemens_tastatur/rules.mk b/keyboards/converter/siemens_tastatur/rules.mk
index d89f7f5f60..bc5875962b 100644
--- a/keyboards/converter/siemens_tastatur/rules.mk
+++ b/keyboards/converter/siemens_tastatur/rules.mk
@@ -4,7 +4,7 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -R
DFU_SUFFIX_ARGS = -v 1eaf -p 0003
@@ -22,3 +22,6 @@ BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
CUSTOM_MATRIX = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/converter/sun_usb/config.h b/keyboards/converter/sun_usb/config.h
index 7713e0a915..455d6423b5 100644
--- a/keyboards/converter/sun_usb/config.h
+++ b/keyboards/converter/sun_usb/config.h
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
-#define CUSTOM_MATRIX 2
-
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3333
#define DEVICE_VER 0x0100
diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk
index 60beb4d9b0..5a1a117c0c 100644
--- a/keyboards/converter/sun_usb/rules.mk
+++ b/keyboards/converter/sun_usb/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = lufa-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk
index a882bd1458..cb2910bd96 100644
--- a/keyboards/converter/usb_usb/ble/rules.mk
+++ b/keyboards/converter/usb_usb/ble/rules.mk
@@ -1,10 +1,10 @@
# Processor frequency
F_CPU = 8000000
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -12,12 +12,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
BLUETOOTH = AdafruitBLE
ADAFRUIT_BLE_ENABLE = yes
diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h
index fdaf42eda4..7af8950275 100644
--- a/keyboards/converter/usb_usb/config.h
+++ b/keyboards/converter/usb_usb/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
-// do not #include "config_common.h" because the pin names conflict with the USB HID code.
-// CUSTOM_MATRIX is defined it that file, though, and we need it, so we define it ourselves.
-// It's a hack, yeah...
-
-#define CUSTOM_MATRIX 2
-
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x005B
@@ -36,9 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 16
#define MATRIX_COLS 16
-/* matrix scanning is done in custom_matrix.cpp */
-//#define DIODE_DIRECTION
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/converter/usb_usb/rules.mk b/keyboards/converter/usb_usb/rules.mk
index b4f37d3ad8..d277853cfd 100644
--- a/keyboards/converter/usb_usb/rules.mk
+++ b/keyboards/converter/usb_usb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-#CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+#MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+#CONSOLE_ENABLE = yes # Console for debug
#COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/converter/xt_usb/rules.mk b/keyboards/converter/xt_usb/rules.mk
index 444e5f02df..986cdd4dc6 100644
--- a/keyboards/converter/xt_usb/rules.mk
+++ b/keyboards/converter/xt_usb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
XT_ENABLE = yes
diff --git a/keyboards/copenhagen_click/click_pad_v1/rules.mk b/keyboards/copenhagen_click/click_pad_v1/rules.mk
index dd7a086de8..0372e3cb29 100755
--- a/keyboards/copenhagen_click/click_pad_v1/rules.mk
+++ b/keyboards/copenhagen_click/click_pad_v1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/coseyfannitutti/discipad/rules.mk b/keyboards/coseyfannitutti/discipad/rules.mk
index 52e06f6e76..53e16a4e91 100644
--- a/keyboards/coseyfannitutti/discipad/rules.mk
+++ b/keyboards/coseyfannitutti/discipad/rules.mk
@@ -17,10 +17,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -28,9 +28,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk
index 5666501ef5..ce71857a94 100644
--- a/keyboards/coseyfannitutti/discipline/rules.mk
+++ b/keyboards/coseyfannitutti/discipline/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -31,11 +31,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi
diff --git a/keyboards/coseyfannitutti/mullet/config.h b/keyboards/coseyfannitutti/mullet/config.h
index 2025cb4333..f9aef2911c 100644
--- a/keyboards/coseyfannitutti/mullet/config.h
+++ b/keyboards/coseyfannitutti/mullet/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { B2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
diff --git a/keyboards/coseyfannitutti/mullet/rules.mk b/keyboards/coseyfannitutti/mullet/rules.mk
index f390cfbe09..b42558a30a 100644
--- a/keyboards/coseyfannitutti/mullet/rules.mk
+++ b/keyboards/coseyfannitutti/mullet/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/coseyfannitutti/mulletpad/config.h b/keyboards/coseyfannitutti/mulletpad/config.h
index 2174d64925..4e25ec0337 100644
--- a/keyboards/coseyfannitutti/mulletpad/config.h
+++ b/keyboards/coseyfannitutti/mulletpad/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F0, C7, C6, B6, }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
diff --git a/keyboards/coseyfannitutti/mulletpad/rules.mk b/keyboards/coseyfannitutti/mulletpad/rules.mk
index 282a4a3650..1b9994cd32 100644
--- a/keyboards/coseyfannitutti/mulletpad/rules.mk
+++ b/keyboards/coseyfannitutti/mulletpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_5x4
diff --git a/keyboards/coseyfannitutti/mysterium/rules.mk b/keyboards/coseyfannitutti/mysterium/rules.mk
index 4147cfec96..9c518e938d 100644
--- a/keyboards/coseyfannitutti/mysterium/rules.mk
+++ b/keyboards/coseyfannitutti/mysterium/rules.mk
@@ -2,7 +2,7 @@
MCU = atmega32a
# Processor frequency
-F_USB = 16000000
+F_CPU = 16000000
# Bootloader selection
# Teensy halfkay
diff --git a/keyboards/cospad/config.h b/keyboards/cospad/config.h
index 9844f2724a..cfc2d59f60 100644
--- a/keyboards/cospad/config.h
+++ b/keyboards/cospad/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2020
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,11 +21,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define PRODUCT_ID 0xB1E5
#define DEVICE_VER 0x0001
-#define MANUFACTURER KPREPUBLIC
-#define PRODUCT COSPAD
-#define DESCRIPTION QMK keyboard firmware for COSPAD
+#define MANUFACTURER KPrepublic
+#define PRODUCT Cospad
+#define DESCRIPTION 6x4 numpad with underglow and backlighting
/* key matrix size */
#define MATRIX_ROWS 6
@@ -40,22 +40,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* 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, D4, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7 }
#define UNUSED_PINS
-/* COL2ROW or ROW2COL */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* Backlight configuration */
+/*
+ * 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 F7
-#define BACKLIGHT_LEVELS 1
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_ON_STATE 0
-/* Underlight configuration */
#define RGB_DI_PIN F6
-#define RGBLED_NUM 4
-#define RGBLIGHT_ANIMATIONS
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 4
+// #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
@@ -64,10 +93,89 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
@@ -83,8 +191,62 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
/* Bootmagic Lite key configuration */
// #define BOOTMAGIC_LITE_ROW 0
diff --git a/keyboards/cospad/cospad.c b/keyboards/cospad/cospad.c
index e7ef71f874..c1f3a70479 100644
--- a/keyboards/cospad/cospad.c
+++ b/keyboards/cospad/cospad.c
@@ -1,5 +1,4 @@
-
-/* Copyright 2019
+/* Copyright 2020
*
* This 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,18 +15,18 @@
*/
#include "cospad.h"
-#ifdef BACKLIGHT_ENABLE
-
-void backlight_init_ports(void) {
- setPinOutput(F7);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_set(uint8_t level) {
- writePin(F7, !!level);
+void led_init_ports(void) {
+ setPinOutput(B2);
}
-void backlight_task(void) {
- // do nothing - as default implementation of software PWM does not work
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(B2, !led_state.num_lock);
+ }
+ return true;
}
-
-#endif //BACKLIGHT_ENABLE
diff --git a/keyboards/cospad/cospad.h b/keyboards/cospad/cospad.h
index ad3ca0d6bc..fc52204eda 100644
--- a/keyboards/cospad/cospad.h
+++ b/keyboards/cospad/cospad.h
@@ -1,5 +1,4 @@
-
-/* Copyright 2019
+/* Copyright 2020
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -14,12 +13,14 @@
* You should have received a 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.
+/* 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.
@@ -28,100 +29,100 @@
* represents the switch matrix.
*/
-/* COSPAD ortho matrix layout
- * ,-------------------.
- * | 00 | 01 | 02 | 03 |
- * |----|----|----|----|
- * | 10 | 11 | 12 | 13 |
- * |----|----|----|----|
- * | 20 | 21 | 22 | 23 |
- * |----|----|----|----|
- * | 30 | 31 | 32 | 33 |
- * |----|----|----|----|
- * | 40 | 41 | 42 | 43 |
- * |----|----|----|----|
- * | 50 | 51 | 52 | 53 |
- * `-------------------'
+/* 6x4 ortholinear layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 | 23 |
+ * |----|----|----|----|
+ * | 30 | 31 | 32 | 33 |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 | 43 |
+ * |----|----|----|----|
+ * | 50 | 51 | 52 | 53 |
+ * `-------------------'
*/
#define LAYOUT_ortho_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, k23, \
- k30, k31, k32, k33, \
- k40, k41, k42, k43, \
- k50, k51, k52, k53 \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
) \
{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, k33}, \
- {k40, k41, k42, k43}, \
- {k50, k51, k52, k53} \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 }, \
+ { k40, k41, k42, k43 }, \
+ { k50, k51, k52, k53 } \
}
-/* COSPAD gamepad matrix layout
- * ,-------------------.
- * | 00 | 01 | 02 | 03 |
- * |----|----|----|----|
- * | 10 | 11 | 12 | 13 |
- * |----|----|----|----|
- * | 20 | 21 | 22 | |
- * |----|----|----| 23 |
- * | 30 | 31 | 32 | |
- * |----|----|----|----|
- * | 40 | 41 | 42 | 43 |
- * |----|----|----|----|
- * | 50 | 51 | 52 | 53 |
- * `-------------------'
+/* 6x4 gamepad layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 | |
+ * |----|----|----| 23 |
+ * | 30 | 31 | 32 | |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 | 43 |
+ * |----|----|----|----|
+ * | 50 | 51 | 52 | 53 |
+ * `-------------------'
*/
#define LAYOUT_gamepad_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k23, \
- k40, k41, k42, k43, \
- k50, k51, k52, k53 \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k23, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
) \
{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, ___}, \
- {k40, k41, k42, k43}, \
- {k50, k51, k52, k53} \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, ___ }, \
+ { k40, k41, k42, k43 }, \
+ { k50, k51, k52, k53 } \
}
-/* COSPAD numpad matrix layout
- * ,-------------------.
- * | 00 | 01 | 02 | 03 |
- * |----|----|----|----|
- * | 10 | 11 | 12 | 13 |
- * |----|----|----|----|
- * | 20 | 21 | 22 | |
- * |----|----|----| 23 |
- * | 30 | 31 | 32 | |
- * |----|----|----|----|
- * | 40 | 41 | 42 | |
- * |----|----|----| 43 |
- * | 50 | 52 | |
- * `-------------------'
+/* 6x4 numpad layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 | |
+ * |----|----|----| 23 |
+ * | 30 | 31 | 32 | |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 | |
+ * |----|----|----| 43 |
+ * | 50 | 52 | |
+ * `-------------------'
*/
#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, \
+ 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, ___}, \
- {k40, k41, k42, k43}, \
- {k50, ___, k52, ___} \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, ___ }, \
+ { k40, k41, k42, k43 }, \
+ { k50, ___, k52, ___ } \
}
// Add backwards compatibility for existing keymaps
diff --git a/keyboards/cospad/info.json b/keyboards/cospad/info.json
index c17f44f525..83bf81c14d 100644
--- a/keyboards/cospad/info.json
+++ b/keyboards/cospad/info.json
@@ -1,95 +1,107 @@
{
- "keyboard_name": "Cospad",
- "keyboard_folder": "cospad",
- "url": "",
- "maintainer": "qmk",
- "width": 4,
- "height": 6,
- "layouts": {
- "LAYOUT_numpad_6x4": {
- "key_count": 21,
- "layout": [
- {"label":"Esc", "x":0, "y":0},
- {"label":"Tab", "x":1, "y":0},
- {"label":"Fn", "x":2, "y":0},
- {"label":"Back", "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}
- ]
- },
+ "keyboard_name": "Cospad",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "key_count": 21,
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
- "LAYOUT_gamepad_6x4": {
- "key_count": 23,
- "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":"k43", "x":3, "y":4},
- {"label":"k50", "x":0, "y":5},
- {"label":"k51", "x":1, "y":5},
- {"label":"k52", "x":2, "y":5},
- {"label":"k53", "x":3, "y":5}
- ]
- },
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
- "LAYOUT_ortho_6x4": {
- "key_count": 24,
- "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},
- {"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":"k50", "x":0, "y":5},
- {"label":"k51", "x":1, "y":5},
- {"label":"k52", "x":2, "y":5},
- {"label":"k53", "x":3, "y":5}
- ]
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":2, "h":2},
+
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+
+ {"x":0, "y":5, "w":2},
+ {"x":2, "y":5},
+ {"x":3, "y":4, "h":2}
+ ]
+ },
+ "LAYOUT_gamepad_6x4": {
+ "key_count": 23,
+ "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":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":2, "h":2},
+
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":3, "y":4},
+
+ {"x":0, "y":5},
+ {"x":1, "y":5},
+ {"x":2, "y":5},
+ {"x":3, "y":5}
+ ]
+ },
+ "LAYOUT_ortho_6x4": {
+ "key_count": 24,
+ "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},
+
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"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/cospad/keymaps/default/keymap.c b/keyboards/cospad/keymaps/default/keymap.c
index adcca112d2..06b06d41f9 100644
--- a/keyboards/cospad/keymaps/default/keymap.c
+++ b/keyboards/cospad/keymaps/default/keymap.c
@@ -1,60 +1,57 @@
#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 {
- _BL = 0,
- _FL
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BL,
+ _FL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap _BL: (Base Layer) Default Layer
- * ,-------------------.
- * |Esc |TAB | FN | BS |
- * |----|----|----|----|
- * | NL | / | * | - |
- * |----|----|----|----|
- * | 7 | 8 | 9 | |
- * |----|----|----| + |
- * | 4 | 5 | 6 | |
- * |----|----|----|----|
- * | 1 | 2 | 3 | |
- * |----|----|----| En |
- * | 0 | . | |
- * `-------------------'
- */
- [_BL] = LAYOUT_numpad_6x4(
- KC_ESC, KC_TAB, MO(_FL), 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
- ),
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-------------------.
+ * |Esc |TAB | FN | BS |
+ * |----|----|----|----|
+ * | NL | / | * | - |
+ * |----|----|----|----|
+ * | 7 | 8 | 9 | |
+ * |----|----|----| + |
+ * | 4 | 5 | 6 | |
+ * |----|----|----|----|
+ * | 1 | 2 | 3 | |
+ * |----|----|----| En |
+ * | 0 | . | |
+ * `-------------------'
+ */
+ [_BL] = LAYOUT_numpad_6x4(
+ KC_ESC, KC_TAB, MO(_FL), 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
+ ),
-/* Keymap _FL: Function Layer
- * ,-------------------.
- * |RGBT| | | |
- * |----|----|----|----|
- * |RGBM|RGBP|BTOG| |
- * |----|----|----|----|
- * |HUD |HUI |BON | |
- * |----|----|----| |
- * |SAD |SAI |BOFF| |
- * |----|----|----|----|
- * |VAD |VAS |BSTP| |
- * |----|----|----| |
- * | |RST | |
- * `-------------------'
- */
- [_FL] = LAYOUT_numpad_6x4(
- RGB_TOG, _______, _______, _______, \
- RGB_MOD, RGB_M_P, BL_TOGG, _______, \
- RGB_HUD, RGB_HUI, BL_ON, \
- RGB_SAD, RGB_SAI, BL_OFF, _______, \
- RGB_VAD, RGB_VAI, BL_STEP, \
- _______, RESET, _______
- ),
+ /* Keymap _FL: Function Layer
+ * ,-------------------.
+ * |RGBT| | | |
+ * |----|----|----|----|
+ * |RGBM|RGBP|BTOG| |
+ * |----|----|----|----|
+ * |HUD |HUI |BON | |
+ * |----|----|----| |
+ * |SAD |SAI |BOFF| |
+ * |----|----|----|----|
+ * |VAD |VAS |BSTP| |
+ * |----|----|----| |
+ * | |RST | |
+ * `-------------------'
+ */
+ [_FL] = LAYOUT_numpad_6x4(
+ RGB_TOG, _______, _______, _______,
+ RGB_MOD, RGB_M_P, BL_TOGG, _______,
+ RGB_HUD, RGB_HUI, BL_ON,
+ RGB_SAD, RGB_SAI, BL_OFF, _______,
+ RGB_VAD, RGB_VAI, BL_STEP,
+ _______, RESET, _______
+ )
};
diff --git a/keyboards/cospad/readme.md b/keyboards/cospad/readme.md
index 2e9add691f..9bb3dfdc0e 100644
--- a/keyboards/cospad/readme.md
+++ b/keyboards/cospad/readme.md
@@ -1,18 +1,15 @@
-COSPAD
-===
+# Cospad
-A DIY Keypad Kit sold by KPRepublic, runs TKG natively.
+A DIY keypad kit sold by KPRepublic, runs TKG natively.
-Keyboard Maintainer: QMK Community
-Hardware Supported: COSPAD
-Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
-
-Only supports on and off for the backlight leds, as they are not connected to a PWM pin.
+* Keyboard Maintainer: QMK Community
+* Hardware Supported: Cospad PCB
+* Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
Supported Layouts:
-![Numpad Layout of COSPAD](https://i.imgur.com/t03lXJ4.png)
-![Ortholinear Layout of COSPAD](https://i.imgur.com/mliUcCc.png)
+![Numpad layouts](https://i.imgur.com/t03lXJ4.png)
+![Ortholinear layouts](https://i.imgur.com/mliUcCc.png)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/cospad/rules.mk b/keyboards/cospad/rules.mk
index 075320a22f..61243fd378 100644
--- a/keyboards/cospad/rules.mk
+++ b/keyboards/cospad/rules.mk
@@ -12,23 +12,23 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-BACKLIGHT_CUSTOM_DRIVER = yes
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
-
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_6x4 ortho_6x4
diff --git a/keyboards/crawlpad/rules.mk b/keyboards/crawlpad/rules.mk
index 00931610a1..1d4019b7af 100755
--- a/keyboards/crawlpad/rules.mk
+++ b/keyboards/crawlpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/crkbd/keymaps/curry/keymap.c b/keyboards/crkbd/keymaps/curry/keymap.c
index 1ad628c920..e56f77ebeb 100644
--- a/keyboards/crkbd/keymaps/curry/keymap.c
+++ b/keyboards/crkbd/keymaps/curry/keymap.c
@@ -6,8 +6,8 @@
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
) \
LAYOUT_wrapper( \
- KC_TAB, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
- MT_ESC, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
+ MT_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
OS_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, OS_RSFT, \
KC_LEAD,OS_LALT, SP_LWER, ET_RAIS, KC_BSPC, KC_RGUI \
)
diff --git a/keyboards/crkbd/keymaps/dsanchezseco/config.h b/keyboards/crkbd/keymaps/dsanchezseco/config.h
index 033173defb..f10c474057 100644
--- a/keyboards/crkbd/keymaps/dsanchezseco/config.h
+++ b/keyboards/crkbd/keymaps/dsanchezseco/config.h
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// lower maximum brightness to lower power usage and prevent unresponsiveness
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
//disable effects
#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue speed is hue for secondary hue
diff --git a/keyboards/crkbd/keymaps/dsanchezseco/rules.mk b/keyboards/crkbd/keymaps/dsanchezseco/rules.mk
index 44f60368b8..93a21f7bf3 100644
--- a/keyboards/crkbd/keymaps/dsanchezseco/rules.mk
+++ b/keyboards/crkbd/keymaps/dsanchezseco/rules.mk
@@ -3,7 +3,7 @@
SRC += ./logo_reader.c
# enable OLED displays
-OLED_DRIVER_ENABLE = yes
+OLED_DRIVER_ENABLE = no
# enable media keys
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h
index dd3f1a0307..6dc468c590 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/config.h
+++ b/keyboards/crkbd/keymaps/kidbrazil/config.h
@@ -52,49 +52,64 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 true // 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
+ //# 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 true // 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 4
+ #define RGB_MATRIX_SAT_STEP 4
+ #define RGB_MATRIX_VAL_STEP 4
+ #define RGB_MATRIX_SPD_STEP 10
-/* Disable the animations you don&#39;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 DISABLE_RGB_MATRIX_ALPHAS_MODS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// # define DISABLE_RGB_MATRIX_BREATHING
-# define DISABLE_RGB_MATRIX_CYCLE_ALL
-# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define DISABLE_RGB_MATRIX_DUAL_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
-# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define DISABLE_RGB_MATRIX_RAINDROPS
-# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
-# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+ /* Disable the animations you don&#39;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 DISABLE_RGB_MATRIX_ALPHAS_MODS
+ #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define DISABLE_RGB_MATRIX_BREATHING
+ #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #define DISABLE_RGB_MATRIX_BAND_SAT
+ #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+ #define DISABLE_RGB_MATRIX_BAND_VAL
+ #define DISABLE_RGB_MATRIX_CYCLE_ALL
+ #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define DISABLE_RGB_MATRIX_DUAL_BEACON
+ #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define DISABLE_RGB_MATRIX_SOLID_SPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_SPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_SPLASH
+ #define DISABLE_RGB_MATRIX_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_SPLASH
+ #define DISABLE_RGB_MATRIX_MULTISPLASH
#endif
+// Custom Font path
#define OLED_FONT_H "keyboards/crkbd/keymaps/kidbrazil/glcdfont.c"
#define OLED_DISABLE_TIMEOUT
diff --git a/keyboards/crkbd/keymaps/kidbrazil/enums.h b/keyboards/crkbd/keymaps/kidbrazil/enums.h
new file mode 100644
index 0000000000..ec1a67925f
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/enums.h
@@ -0,0 +1,10 @@
+// [CRKBD layers Init] -------------------------------------------------------//
+typedef enum {
+ _QWERTY,
+ _NUM,
+ _SYM,
+ _GAME,
+ _WEAPON
+}CRKBD_LAYERS;
+
+extern enum CRKBD_LAYERS crkbd_layers;
diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
index 44142d4f2f..9c950e5373 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/keymap.c
+++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
@@ -1,4 +1,6 @@
#include QMK_KEYBOARD_H
+#include "enums.h"
+#include "layer.h"
// [Init Variables] ----------------------------------------------------------//
extern uint8_t is_master;
@@ -9,15 +11,6 @@ bool user_led_enabled = true;
// Boolean to store the master LED clear so it only runs once.
bool master_oled_cleared = false;
-// [CRKBD layers Init] -------------------------------------------------------//
-enum crkbd_layers {
- _QWERTY,
- _NUM,
- _SYM,
- _GAME,
- _WEAPON
-};
-
// [Keymaps] -----------------------------------------------------------------//
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
@@ -36,8 +29,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_SYM] = LAYOUT(
KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
- LSFT_T(KC_TAB), RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
- KC_LCTL, RGB_VAD, RGB_RMOD, RGB_HUD, RGB_SAD, TG(_GAME), KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
+ LSFT_T(KC_TAB), RGB_TOG, KC_MPLY, KC_MUTE, KC_VOLU, KC_VOLD, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
+ KC_LCTL, KC_CALC, KC_MYCM, KC_MPRV, KC_MNXT, TG(_GAME), KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
LGUI_T(KC_PGUP), KC_TRNS, KC_SPC, KC_ENT, KC_TRNS, LALT_T(KC_PGDN)
),
@@ -51,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_WEAPON] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_7, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_7, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
KC_TRNS, KC_TAB, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS
)
};
@@ -61,23 +54,24 @@ void keyboard_post_init_user(void) {
// Set RGB to known state
rgb_matrix_enable_noeeprom();
rgb_matrix_set_color_all(RGB_GREEN);
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
user_led_enabled = true;
-
}
// [Process User Input] ------------------------------------------------------//
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
+ // Handle RGB Changes sans eeprom - necessary due to the layer dependent RGB color
+ // changes in marrix_scan_user
case RGB_TOG:
- if (record->event.pressed) {
- // Toggle matrix on key press
- user_led_enabled ? rgb_matrix_disable_noeeprom() : rgb_matrix_enable_noeeprom();
- } else {
- // Flip User_led_enabled variable on key release
- user_led_enabled = !user_led_enabled;
- }
- return false; // Skip all further processing of this key
+ if (record->event.pressed) {
+ // Toggle matrix on key press
+ user_led_enabled ? rgb_matrix_disable_noeeprom() : rgb_matrix_enable_noeeprom();
+ // Toggle boolean flag
+ user_led_enabled = !user_led_enabled;
+ }
+ return false;
default:
- // Use process_record_keymap to reset timer on all other keypresses
+ // Use process_record_keymap to reset timer on all other keypresses to awaken from idle.
if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
oled_timer = timer_read32();
@@ -91,9 +85,47 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
+// [Matrix Scan] ------------------------------------------------------------//
+void matrix_scan_user(void) {
+ // Iddle timer to return to default layer if left on game layer
+ if (timer_elapsed32(oled_timer) > 380000 && timer_elapsed32(oled_timer) < 479999) {
+ // Reset layer in case it got left on _GAME
+ // This prevents the issue where the master side sometimes wont switch off as expected
+ // in the next step.
+ if (get_highest_layer(layer_state) == _GAME) {
+ layer_off(_GAME);
+ layer_on(_QWERTY);
+ }
+ return;
+ }
+ // Timeout to turn off LEDs
+ else if (timer_elapsed32(oled_timer) > 480000) {
+ rgb_matrix_disable_noeeprom();
+ return;
+ }
+ // Set RGB Matrix color based on layers
+ if (user_led_enabled) {
+ switch (get_highest_layer(layer_state)){
+ case _GAME:
+ rgb_matrix_set_color_all(RGB_PURPLE);
+ break;
+ case _NUM:
+ case _SYM:
+ case _QWERTY:
+ rgb_matrix_set_color_all(RGB_GREEN);
+ break;
+ default:
+ rgb_matrix_set_color_all(RGB_GREEN);
+ break;
+
+ }
+ } else {
+ rgb_matrix_disable_noeeprom();
+ return;
+ }
+}
// [OLED Configuration] ------------------------------------------------------//
#ifdef OLED_DRIVER_ENABLE
-
// Init Oled and Rotate....
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!has_usb())
@@ -105,74 +137,6 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
const char *read_logo(void);
// {OLED helpers} -----------------------------------------------//
-
-// Render Blank Space
-void render_space(void) {
- oled_write_ln_P(PSTR(" "), false);
-}
-
-// Render separator lines for oled display
-void render_separator(void) {
- switch (get_highest_layer(layer_state)){
- case _GAME:
- case _WEAPON:
- oled_write_ln_P(PSTR("===================="), false);
- break;
- default:
- oled_write_ln_P(PSTR("++++++++++++++++++++"), false);
- }
-}
-
-// Render current layer state
-void render_layer_state(void){
- // If you want to change the display of OLED, you need to change here
- switch (get_highest_layer(layer_state)){
- case _QWERTY:
- oled_write_ln_P(PSTR("| MODE | QWRTY ]"), false);
- break;
- case _NUM:
- oled_write_ln_P(PSTR("| MODE | NUMBERS ]"), false);
- break;
- case _SYM:
- oled_write_ln_P(PSTR("| MODE | SYMBOLS ]"), false);
- break;
- case _GAME:
- oled_write_ln_P(PSTR("| G A M E ]"), false);
- break;
- case _WEAPON:
- oled_write_ln_P(PSTR("| W E A P O N ]"), false);
- break;
- default:
- oled_write_ln_P(PSTR("| MODE | UNDEF ]"), false);
- }
-}
-
-// Render USB State
-void render_usb_state(void) {
- switch (USB_DeviceState) {
- case DEVICE_STATE_Unattached:
- oled_write_ln_P(PSTR("| USB | FREE ]"), false);
- break;
- case DEVICE_STATE_Suspended:
- oled_write_ln_P(PSTR("| USB | SLEEP ]"), false);
- break;
- case DEVICE_STATE_Configured:
- oled_write_ln_P(PSTR("| USB | READY ]"), false);
- break;
- case DEVICE_STATE_Powered:
- oled_write_ln_P(PSTR("| USB | PWRD ]"), false);
- break;
- case DEVICE_STATE_Default:
- oled_write_ln_P(PSTR("| USB | DFLT ]"), false);
- break;
- case DEVICE_STATE_Addressed:
- oled_write_ln_P(PSTR("| USB | ADDRS ]"), false);
- break;
- default:
- oled_write_ln_P(PSTR("| USB | INVALID ]"), false);
- }
-}
-
// Render Logo
void render_logo(void) {
oled_write(read_logo(), false);
@@ -209,7 +173,8 @@ void render_slave_oled(void) {
// {OLED Task} -----------------------------------------------//
void oled_task_user(void) {
- if (timer_elapsed32(oled_timer) > 80000 && timer_elapsed32(oled_timer) < 479999) {
+ // First time out switches to logo as first indication of iddle.
+ if (timer_elapsed32(oled_timer) > 100000 && timer_elapsed32(oled_timer) < 479999) {
// Render logo on both halves before full timeout
if (is_master && !master_oled_cleared) {
// Clear master OLED once so the logo renders properly
diff --git a/keyboards/crkbd/keymaps/kidbrazil/layer.c b/keyboards/crkbd/keymaps/kidbrazil/layer.c
new file mode 100644
index 0000000000..bd04f3b883
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/layer.c
@@ -0,0 +1,69 @@
+#include QMK_KEYBOARD_H
+#include "enums.h"
+
+// Render Blank Space
+void render_space(void) {
+ oled_write_ln_P(PSTR(" "), false);
+}
+
+// Render separator lines for oled display
+void render_separator(void) {
+ switch (get_highest_layer(layer_state)){
+ case _GAME:
+ case _WEAPON:
+ oled_write_ln_P(PSTR("===================="), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("++++++++++++++++++++"), false);
+ }
+}
+
+// Render current layer state
+void render_layer_state(void){
+ // If you want to change the display of OLED, you need to change here
+ switch (get_highest_layer(layer_state)){
+ case _QWERTY:
+ oled_write_ln_P(PSTR("| MODE | QWRTY ]"), false);
+ break;
+ case _NUM:
+ oled_write_ln_P(PSTR("| MODE | NUMBERS ]"), false);
+ break;
+ case _SYM:
+ oled_write_ln_P(PSTR("| MODE | SYMBOLS ]"), false);
+ break;
+ case _GAME:
+ oled_write_ln_P(PSTR("| G A M E ]"), false);
+ break;
+ case _WEAPON:
+ oled_write_ln_P(PSTR("| W E A P O N ]"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("| MODE | UNDEF ]"), false);
+ }
+}
+
+// Render USB State
+void render_usb_state(void) {
+ switch (USB_DeviceState) {
+ case DEVICE_STATE_Unattached:
+ oled_write_ln_P(PSTR("| USB | FREE ]"), false);
+ break;
+ case DEVICE_STATE_Suspended:
+ oled_write_ln_P(PSTR("| USB | SLEEP ]"), false);
+ break;
+ case DEVICE_STATE_Configured:
+ oled_write_ln_P(PSTR("| USB | READY ]"), false);
+ break;
+ case DEVICE_STATE_Powered:
+ oled_write_ln_P(PSTR("| USB | PWRD ]"), false);
+ break;
+ case DEVICE_STATE_Default:
+ oled_write_ln_P(PSTR("| USB | DFLT ]"), false);
+ break;
+ case DEVICE_STATE_Addressed:
+ oled_write_ln_P(PSTR("| USB | ADDRS ]"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("| USB | INVALID ]"), false);
+ }
+}
diff --git a/keyboards/crkbd/keymaps/kidbrazil/layer.h b/keyboards/crkbd/keymaps/kidbrazil/layer.h
new file mode 100644
index 0000000000..2134e6ddab
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/layer.h
@@ -0,0 +1,9 @@
+// [OLED Helpers] ----------------------------------------------------//
+// Render empty space on OLED
+void render_space(void);
+// Render separator characters for rows
+void render_separator(void);
+// Render layer state
+void render_layer_state(void);
+// Render USB State
+void render_usb_state(void);
diff --git a/keyboards/crkbd/keymaps/kidbrazil/rules.mk b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
index ad03b86bfc..244712cd03 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/rules.mk
+++ b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
@@ -8,10 +8,5 @@ RGB_MATRIX_ENABLE = WS2812
OLED_DRIVER_ENABLE = yes
# If you want to change the display of OLED, you need to change here
-SRC += ./keyboards/crkbd/keymaps/kidbrazil/logo_reader.c \
- #./lib/rgb_state_reader.c \
- #./lib/logo_reader.c \
- #./lib/keylogger.c \
- # ./lib/mode_icon_reader.c \
- # ./lib/host_led_state_reader.c \
- # ./lib/timelogger.c \
+SRC += logo_reader.c \
+ layer.c
diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h
index 5d21446623..8a4ddad748 100644
--- a/keyboards/crkbd/keymaps/ninjonas/config.h
+++ b/keyboards/crkbd/keymaps/ninjonas/config.h
@@ -20,13 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
+#define TAPPING_TERM 200
#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
#define USE_SERIAL_PD2
diff --git a/keyboards/crkbd/rev1/split_util.c b/keyboards/crkbd/rev1/split_util.c
index 35aa54d780..b642a734cc 100644
--- a/keyboards/crkbd/rev1/split_util.c
+++ b/keyboards/crkbd/rev1/split_util.c
@@ -20,18 +20,22 @@
#endif
#ifndef SPLIT_USB_TIMEOUT
-# define SPLIT_USB_TIMEOUT 2500
+# define SPLIT_USB_TIMEOUT 2000
+#endif
+
+#ifndef SPLIT_USB_TIMEOUT_POLL
+# define SPLIT_USB_TIMEOUT_POLL 10
#endif
volatile bool isLeftHand = true;
bool waitForUsb(void) {
- for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) {
- // This will return true of a USB connection has been established
+ for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) {
+ // This will return true if a USB connection has been established
if (UDADDR & _BV(ADDEN)) {
return true;
}
- wait_ms(100);
+ wait_ms(SPLIT_USB_TIMEOUT_POLL);
}
// Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow
diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk
index 67674518d9..16d05b589d 100644
--- a/keyboards/crkbd/rules.mk
+++ b/keyboards/crkbd/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/cu24/rules.mk b/keyboards/cu24/rules.mk
index fdfba55b13..942bfa656e 100644
--- a/keyboards/cu24/rules.mk
+++ b/keyboards/cu24/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/cu75/keymaps/default/rules.mk b/keyboards/cu75/keymaps/default/rules.mk
index fd26d69fb6..5eb2a0e802 100644
--- a/keyboards/cu75/keymaps/default/rules.mk
+++ b/keyboards/cu75/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Disable keyboard backlight functionality
diff --git a/keyboards/cu75/rules.mk b/keyboards/cu75/rules.mk
index 697d8d18f2..1eb9cf8f76 100644
--- a/keyboards/cu75/rules.mk
+++ b/keyboards/cu75/rules.mk
@@ -11,4 +11,9 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
+BACKLIGHT_DRIVER = custom
+
SRC = ../lfkeyboards/TWIlib.c ../lfkeyboards/issi.c ../lfkeyboards/lighting.c
diff --git a/keyboards/cutie_club/wraith/rules.mk b/keyboards/cutie_club/wraith/rules.mk
index 1737728fc3..18055ba474 100644
--- a/keyboards/cutie_club/wraith/rules.mk
+++ b/keyboards/cutie_club/wraith/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/daisy/config.h b/keyboards/daisy/config.h
index 567a215a6c..4ee4d242fc 100644
--- a/keyboards/daisy/config.h
+++ b/keyboards/daisy/config.h
@@ -1,13 +1,29 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+/*
+Copyright 2020
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x2328
-#define DEVICE_VER 0x501
-#define MANUFACTURER K.T.E.C.
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x7169
+#define DEVICE_VER 0x0501
+#define MANUFACTURER KTEC
#define PRODUCT Daisy
#define DESCRIPTION qmk port for Daisy
@@ -32,22 +48,59 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
#define BACKLIGHT_PIN D0
+// #define BACKLIGHT_BREATHING
#define BACKLIGHT_LEVELS 6
+#define RGB_DI_PIN C7
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 8
+# define RGBLIGHT_HUE_STEP 12
+# define RGBLIGHT_SAT_STEP 25
+# define RGBLIGHT_VAL_STEP 12
+// #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
-/* number of backlight levels */
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
/*
* Force NKRO
*
@@ -81,6 +134,10 @@
*
*/
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
@@ -90,8 +147,8 @@
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1 H
-//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
@@ -99,9 +156,8 @@
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
-//#define MAGIC_KEY_LAYER0_ALT1 ESC
-//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
@@ -111,9 +167,11 @@
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
-//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
@@ -132,17 +190,12 @@
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-// ws2812 options
-#define RGB_DI_PIN C7 // pin the DI on the ws2812 is hooked-up to
-#define RGBLIGHT_ANIMATIONS // run RGB animations
-#define RGBLED_NUM 8 // number of LEDs
-#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue
-#define RGBLIGHT_SAT_STEP 25 // units to step when in/decresing saturation
-#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness)
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
/*
* MIDI options
*/
@@ -166,4 +219,34 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/daisy/daisy.c b/keyboards/daisy/daisy.c
index f8ca24ff0b..4e365ed462 100644
--- a/keyboards/daisy/daisy.c
+++ b/keyboards/daisy/daisy.c
@@ -1,15 +1,35 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#include "daisy.h"
-void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
- if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
- // output low
- DDRC |= (1<<PC6);
- PORTC &= ~(1<<PC6);
- } else {
- // Hi-Z
- DDRC &= ~(1<<PC6);
- PORTC &= ~(1<<PC6);
- }
- led_set_user(usb_led);
-} \ No newline at end of file
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(C6);
+ writePinHigh(C6);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(C6, !led_state.caps_lock);
+ }
+
+ return true;
+}
diff --git a/keyboards/daisy/daisy.h b/keyboards/daisy/daisy.h
index 15483e3a3a..b78c604649 100644
--- a/keyboards/daisy/daisy.h
+++ b/keyboards/daisy/daisy.h
@@ -1,19 +1,51 @@
-#ifndef DAISY_H
-#define DAISY_H
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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, K3A, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
- K30, K31, K32, K34, K35, K37, K38, K39 \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \
- { K30, K31, K32, KC_NO, K34, K35, KC_NO, K37, K38, K39, K3A } \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K3A, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
+ K30, K31, K32, K34, K35, K37, K38, K39 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \
+ { K30, K31, K32, KC_NO, K34, K35, KC_NO, K37, K38, K39, K3A } \
}
-#endif
+#define LAYOUT_625_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K3A, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
+ K30, K31, K32, K35, K38, K39 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \
+ { K30, K31, K32, KC_NO, KC_NO, K35, KC_NO, KC_NO, K38, K39, K3A } \
+}
diff --git a/keyboards/daisy/info.json b/keyboards/daisy/info.json
index 4005757932..fcc7cd9faf 100644
--- a/keyboards/daisy/info.json
+++ b/keyboards/daisy/info.json
@@ -1,18 +1,107 @@
{
- "keyboard_name": "Daisy",
- "url": "",
- "maintainer": "qmk",
- "width": 12,
- "height": 4,
- "layouts": {
- "LAYOUT": {
- "key_count": 42,
- "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": "K3A", "x": 11, "y": 0}, {"label": "K10", "x": 0, "y": 1, "w": 1.25}, {"label": "K11", "x": 1.25, "y": 1}, {"label": "K12", "x": 2.25, "y": 1}, {"label": "K13", "x": 3.25, "y": 1}, {"label": "K14", "x": 4.25, "y": 1}, {"label": "K15", "x": 5.25, "y": 1}, {"label": "K16", "x": 6.25, "y": 1}, {"label": "K17", "x": 7.25, "y": 1}, {"label": "K18", "x": 8.25, "y": 1}, {"label": "K19", "x": 9.25, "y": 1}, {"label": "K1A", "x": 10.25, "y": 1, "w": 1.75}, {"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, "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, "w": 1.25}, {"label": "K34", "x": 3.5, "y": 3, "w": 2.25}, {"label": "K35", "x": 5.75, "y": 3, "w": 2.75}, {"label": "K37", "x": 8.5, "y": 3, "w": 1.25}, {"label": "K38", "x": 9.75, "y": 3}, {"label": "K39", "x": 10.75, "y": 3, "w": 1.25}]
- },
+ "keyboard_name": "Daisy",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 42,
+ "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},
- "LAYOUT_625_space": {
- "key_count": 40,
- "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": "K3A", "x": 11, "y": 0}, {"label": "K10", "x": 0, "y": 1, "w": 1.25}, {"label": "K11", "x": 1.25, "y": 1}, {"label": "K12", "x": 2.25, "y": 1}, {"label": "K13", "x": 3.25, "y": 1}, {"label": "K14", "x": 4.25, "y": 1}, {"label": "K15", "x": 5.25, "y": 1}, {"label": "K16", "x": 6.25, "y": 1}, {"label": "K17", "x": 7.25, "y": 1}, {"label": "K18", "x": 8.25, "y": 1}, {"label": "K19", "x": 9.25, "y": 1}, {"label": "K1A", "x": 10.25, "y": 1, "w": 1.75}, {"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, "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}, {"x": 3.25, "y": 3, "w": 6.25}, {"label": "K38", "x": 9.5, "y": 3, "w": 1.25}, {"label": "K39", "x": 10.75, "y": 3, "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": 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, "w": 1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3, "w": 1.25},
+ {"x": 3.5, "y": 3, "w": 2.25},
+ {"x": 5.75, "y": 3, "w": 2.75},
+ {"x": 8.5, "y": 3, "w": 1.25},
+ {"x": 9.75, "y": 3},
+ {"x": 10.75, "y": 3, "w": 1.25}
+ ]
+ },
+ "LAYOUT_625_space": {
+ "key_count": 40,
+ "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, "w": 1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3, "w": 6.25},
+ {"x": 9.5, "y": 3, "w": 1.25},
+ {"x": 10.75, "y": 3, "w": 1.25}
+ ]
+ }
}
- }
}
diff --git a/keyboards/daisy/keymaps/default/keymap.c b/keyboards/daisy/keymaps/default/keymap.c
index adc3298d06..f076803766 100644
--- a/keyboards/daisy/keymaps/default/keymap.c
+++ b/keyboards/daisy/keymaps/default/keymap.c
@@ -1,92 +1,83 @@
-#include QMK_KEYBOARD_H
-
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
-// Layer shorthand
-#define _BL 0
-#define _LW 1
-#define _RS 2
+#include QMK_KEYBOARD_H
-enum layer_keycodes {
- QWERTY = SAFE_RANGE, LOWER, RAISE
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BL,
+ _LW,
+ _RS
};
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Base Layer
- * .-----------------------------------------------------------------------.
- * | ESC | Q | W | E | R | T | Y | U | I | O | P | \| |
- * |-----------------------------------------------------------------------|
- * | TAB | A | S | D | F | G | H | J | K | L | ENTER |
- * |-----------------------------------------------------------------------|
- * | LSHIFT | Z | X | C | V | B | N | M | ,< | .> | /? |
- * |-----------------------------------------------------------------------|
- * | LCTRL | LGUI | LALT | SPACE | BACKSPACE | LW | RS | RALT |
- * '-----------------------------------------------------------------------'
- */
- [_BL] = LAYOUT(
- GRAVE_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, LOWER, RAISE, KC_RALT
- ),
+#define LOWER MO(_LW)
+#define RAISE MO(_RS)
- /* Function Layer
- * .-----------------------------------------------------------------------.
- * | GRV | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -_ |
- * |-----------------------------------------------------------------------|
- * | | =+ | UP | | | | [{ | ]} | ;: | '" | |
- * |-----------------------------------------------------------------------|
- * | | LEFT| DOWN |RIGHT| | | | | | | |
- * |-----------------------------------------------------------------------|
- * | | | | | DELETE | | | |
- * '-----------------------------------------------------------------------'
- */
-
- [_LW] = 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_TRNS, KC_EQL, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, 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_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- /* Second Function Layer
- * .-----------------------------------------------------------------------.
- * | RST | F1 | F2 | F3 | F4 | F5 | F6 | | HOME| PGUP| | |
- * |-----------------------------------------------------------------------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 | | END | PGDN| |
- * |-----------------------------------------------------------------------|
- * | |RGBtog|RGBmod|RGBhud|RGBhui|RGBvad|RGBvai|RGBsad|RGBsai|BL| |
- * |-----------------------------------------------------------------------|
- * | | | | | | | | |
- * '-----------------------------------------------------------------------'
- */
- [_RS] = LAYOUT(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, BL_STEP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base Layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│
+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
+ * │Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │  / │
+ * ├────┬─┴─┬─┴──┬┴───┴───┼───┴───┴──┬┴───┼───┼────┤
+ * │Ctrl│GUI│Alt │        │ Backspace│Lowr│Rse│ Alt│
+ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘
+ */
+ [_BL] = LAYOUT(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, LOWER, RAISE, KC_RALT
+ ),
-};
+ /* Function Layer 1 (Lower)
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │
+ * └───┴┬──┴┬──┴┬──┴───┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴───┘
+ * │    │ = │ ▴ │   │   │   │ [ │ ] │ ; │ ' │      │
+ * ├────└─┬─┴─┬─┴─┬───┐─┴─┬─└───┴───┴───┴───┘─┬────┤
+ * │      │ ◂ │ ▾ │ ▸ │   │   │   │   │   │   │    │
+ * ├────┬─└───┴───┴───┘───┌──────────┐┴───┼───┼────┤
+ * │    │   │    │        │   Delete │    │   │    │
+ * └────┴───┴────┴────────└──────────┘────┴───┴────┘
+ */
+ [_LW] = 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_UP, _______, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_DEL, _______, _______, _______
+ ),
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LOWER:
- if(record->event.pressed){
- layer_on(_LW);
- } else {
- layer_off(_LW);
- }
- return false;
- break;
- case RAISE:
- if(record->event.pressed){
- layer_on(_RS);
- } else {
- layer_off(_RS);
- }
- return false;
- break;
- }
- return true;
+ /* Function Layer 2 (Raise)
+ * ┌───┬───┬───┬───┬───┬───┬───┐───┌───┬───┐───┬───┐
+ * │Rst│F1 │F2 │F3 │F4 │F5 │F6 │   │Hom│PgU│   │   │
+ * └───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐──└┬──┴┬──┴┐──┴───┤
+ * │    │F7 │F8 │F9 │F10│F11│F12│   │ ; │ ' │      │
+ * ├────└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴─┐────┤
+ * │      │RGB│Mod│HuD│HuI│VaD│VaI│SaD│SaI│BLS│    │
+ * ├────┬─└───┴───┴───┴───┴───┴───┴───┴───┴───┘────┤
+ * │    │   │    │        │          │    │   │    │
+ * └────┴───┴────┴────────┴──────────┴────┴───┴────┘
+ */
+ [_RS] = LAYOUT(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_HOME, KC_PGUP, _______, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_END, KC_PGDN, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, BL_STEP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
diff --git a/keyboards/daisy/keymaps/default/readme.md b/keyboards/daisy/keymaps/default/readme.md
index dff0dcbdee..b8c7d17f28 100644
--- a/keyboards/daisy/keymaps/default/readme.md
+++ b/keyboards/daisy/keymaps/default/readme.md
@@ -1,5 +1 @@
-![Daisy Layout Image](https://imgur.com/9mSF0yf)
-
-# Default Daisy Layout
-
-This is the default layout as offered by KPRepublic's TMK firmware for the Daisy with a few minor tweaks for usability made by me.
+# The default keymap for Daisy
diff --git a/keyboards/daisy/readme.md b/keyboards/daisy/readme.md
index c8175c2830..a8a93bf791 100644
--- a/keyboards/daisy/readme.md
+++ b/keyboards/daisy/readme.md
@@ -1,29 +1,15 @@
# Daisy
-A 40% keyboard kit sold by KPRepublic.
+![Daisy PCB](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1Pj1UggMPMeJjy1Xcq6xpppXa7_1024x1024.jpg)
-Keyboard Maintainer: westfoxtrot (https://github.com/westfoxtrot)
-Hardware Supported: Daisy PCB Rev.1, Daisy PCB Rev.2
-Hardware Availability: http://tinyurl.com/yc26lq22
+A 40% keyboard kit sold by KPrepublic.
+
+* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot)
+* Hardware Supported: Daisy PCB Rev.1, Daisy PCB Rev.2
+* Hardware Availability: [KPrepublic](https://kprepublic.com/products/daisy-40-custom-keyboard-pcb)
Make example for this keyboard (after setting up your build environment):
make daisy: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.
-
-
-# Other Keymaps
-
-The "default" keymap included is the layout I personally use on the Daisy and the one I have found the most comfortable.
-
-A printable picture showing this layout is available here: https://imgur.com/9mSF0yf
-
-
-```
-$ make daisy:[default|<name>]
-```
-
-# Bootloader
-
-I personally had issues with the bootloader on my Daisy PCB and was unable to flash a firmware to the board after the first time. I replaced the bootloader with the one available in the repository at ../../util/bootloader_atmega32u4_1_0_0.hex
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.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/daisy/rules.mk b/keyboards/daisy/rules.mk
index d2b0d7d167..c82fa9bc67 100644
--- a/keyboards/daisy/rules.mk
+++ b/keyboards/daisy/rules.mk
@@ -11,20 +11,22 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# Build Options
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/db/db63/config.h b/keyboards/db/db63/config.h
index 468e0f8a97..3183201c1f 100644
--- a/keyboards/db/db63/config.h
+++ b/keyboards/db/db63/config.h
@@ -32,6 +32,8 @@ 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 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
#define RGBLED_NUM 18
#define RGBLIGHT_ANIMATIONS
@@ -39,4 +41,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 3
-
diff --git a/keyboards/dc01/arrow/rules.mk b/keyboards/dc01/arrow/rules.mk
index 56a9cfc49c..6643ad789e 100644
--- a/keyboards/dc01/arrow/rules.mk
+++ b/keyboards/dc01/arrow/rules.mk
@@ -14,22 +14,22 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
CUSTOM_MATRIX = yes # Use custom matrix
SRC += matrix.c \
diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk
index 9e34a0a808..aa2467eb6c 100644
--- a/keyboards/dc01/left/rules.mk
+++ b/keyboards/dc01/left/rules.mk
@@ -14,22 +14,22 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes # Use custom matrix
SRC += matrix.c \
i2c_master.c
diff --git a/keyboards/dc01/numpad/rules.mk b/keyboards/dc01/numpad/rules.mk
index 674ef1d026..27d73e2618 100644
--- a/keyboards/dc01/numpad/rules.mk
+++ b/keyboards/dc01/numpad/rules.mk
@@ -14,22 +14,22 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
CUSTOM_MATRIX = yes # Use custom matrix
SRC += matrix.c \
diff --git a/keyboards/dc01/right/rules.mk b/keyboards/dc01/right/rules.mk
index 56a9cfc49c..6643ad789e 100644
--- a/keyboards/dc01/right/rules.mk
+++ b/keyboards/dc01/right/rules.mk
@@ -14,22 +14,22 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
CUSTOM_MATRIX = yes # Use custom matrix
SRC += matrix.c \
diff --git a/keyboards/deltasplit75/deltasplit75.h b/keyboards/deltasplit75/deltasplit75.h
index 79d018c912..b78d857344 100644
--- a/keyboards/deltasplit75/deltasplit75.h
+++ b/keyboards/deltasplit75/deltasplit75.h
@@ -1,8 +1,7 @@
-#ifndef DELTASPLIT75_H
-#define DELTASPLIT75_H
-
-#include "v2.h"
+#pragma once
#include "quantum.h"
-#endif \ No newline at end of file
+#ifdef KEYBOARD_deltasplit75_v2
+# include "v2.h"
+#endif
diff --git a/keyboards/deltasplit75/eeprom-lefthand.eep b/keyboards/deltasplit75/eeprom-lefthand.eep
deleted file mode 100644
index b9666a74c0..0000000000
--- a/keyboards/deltasplit75/eeprom-lefthand.eep
+++ /dev/null
@@ -1,2 +0,0 @@
-:0B0000000000000000000000000001F4
-:00000001FF
diff --git a/keyboards/deltasplit75/eeprom-righthand.eep b/keyboards/deltasplit75/eeprom-righthand.eep
deleted file mode 100644
index 94cc5be7fc..0000000000
--- a/keyboards/deltasplit75/eeprom-righthand.eep
+++ /dev/null
@@ -1,2 +0,0 @@
-:0B0000000000000000000000000000F5
-:00000001FF
diff --git a/keyboards/deltasplit75/i2c.c b/keyboards/deltasplit75/i2c.c
deleted file mode 100644
index 084c890c40..0000000000
--- a/keyboards/deltasplit75/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
-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/deltasplit75/i2c.h b/keyboards/deltasplit75/i2c.h
deleted file mode 100644
index 08ce4b0093..0000000000
--- a/keyboards/deltasplit75/i2c.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef I2C_H
-#define I2C_H
-
-#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 100000L
-
-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);
-
-#endif
diff --git a/keyboards/deltasplit75/matrix.c b/keyboards/deltasplit75/matrix.c
deleted file mode 100644
index 28198d89b0..0000000000
--- a/keyboards/deltasplit75/matrix.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "pro_micro.h"
-#include "config.h"
-#include "timer.h"
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#if (DEBOUNCE > 0)
- static uint16_t debouncing_time;
- static bool debouncing = false;
-#endif
-
-#if (MATRIX_COLS <= 8)
-# define print_matrix_header() print("\nr/c 01234567\n")
-# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
-# define matrix_bitpop(i) bitpop(matrix[i])
-# define ROW_SHIFTER ((uint8_t)1)
-#else
-# error "Currently only supports 8 COLS"
-#endif
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#define ERROR_DISCONNECT_COUNT 5
-
-#define ROWS_PER_HAND (MATRIX_ROWS/2)
-
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#if (DIODE_DIRECTION == COL2ROW)
- static void init_cols(void);
- static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
- static void unselect_rows(void);
- static void select_row(uint8_t row);
- static void unselect_row(uint8_t row);
-#elif (DIODE_DIRECTION == ROW2COL)
- static void init_rows(void);
- static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
- static void unselect_cols(void);
- static void unselect_col(uint8_t col);
- static void select_col(uint8_t col);
-#endif
-
-__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();
-
- TX_RX_LED_INIT;
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- matrix_init_quantum();
-
-}
-
-uint8_t _matrix_scan(void)
-{
- int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-#if (DIODE_DIRECTION == COL2ROW)
- // Set row, read cols
- for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) {
-# if (DEBOUNCE > 0)
- bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
-
- if (matrix_changed) {
- debouncing = true;
- debouncing_time = timer_read();
- }
-
-# else
- read_cols_on_row(matrix+offset, current_row);
-# endif
-
- }
-
-#elif (DIODE_DIRECTION == ROW2COL)
- // Set col, read rows
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
-# if (DEBOUNCE > 0)
- bool matrix_changed = read_rows_on_col(matrix_debouncing+offset, current_col);
- if (matrix_changed) {
- debouncing = true;
- debouncing_time = timer_read();
- }
-# else
- read_rows_on_col(matrix+offset, current_col);
-# endif
-
- }
-#endif
-
-# if (DEBOUNCE > 0)
- if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCE)) {
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- matrix[i+offset] = matrix_debouncing[i+offset];
- }
- debouncing = false;
- }
-# endif
-
- return 1;
-}
-
-#ifdef USE_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- if (serial_update_buffers()) {
- return 1;
- }
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- uint8_t ret = _matrix_scan();
-
-#ifdef USE_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- TXLED1;
-
- 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
- TXLED0;
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-#if (DIODE_DIRECTION == COL2ROW)
-
-static void init_cols(void)
-{
- for(uint8_t x = 0; x < MATRIX_COLS; x++) {
- uint8_t pin = col_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-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 = col_pins[col_index];
- uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
-
- // 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 void select_row(uint8_t row)
-{
- uint8_t pin = row_pins[row];
- _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
- _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_row(uint8_t row)
-{
- uint8_t pin = row_pins[row];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
-}
-
-static void unselect_rows(void)
-{
- for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
- uint8_t pin = row_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-#elif (DIODE_DIRECTION == ROW2COL)
-
-static void init_rows(void)
-{
- for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
- uint8_t pin = row_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-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 < ROWS_PER_HAND; row_index++)
- {
-
- // Store last value of row prior to reading
- matrix_row_t last_row_value = current_matrix[row_index];
-
- // Check row pin state
- if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
- {
- // Pin LO, set col bit
- current_matrix[row_index] |= (ROW_SHIFTER << current_col);
- }
- else
- {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
- }
-
- // Determine if the matrix changed state
- if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
- {
- matrix_changed = true;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
-
- return matrix_changed;
-}
-
-static void select_col(uint8_t col)
-{
- uint8_t pin = col_pins[col];
- _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
- _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_col(uint8_t col)
-{
- uint8_t pin = col_pins[col];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
-}
-
-static void unselect_cols(void)
-{
- for(uint8_t x = 0; x < MATRIX_COLS; x++) {
- uint8_t pin = col_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-#endif
diff --git a/keyboards/deltasplit75/readme.md b/keyboards/deltasplit75/readme.md
index 096fced97f..a39e9298eb 100644
--- a/keyboards/deltasplit75/readme.md
+++ b/keyboards/deltasplit75/readme.md
@@ -1,17 +1,16 @@
-DeltaSplit75
-======
+# DeltaSplit75
A split 75% keyboard made by xyxjj. [More info on qmk.fm](http://qmk.fm/deltasplit75/)
-Keyboard Maintainer: [xyxjj](https://github.com/xyxjj) & [itsaferbie](https://github.com/itsaferbie)
-Hardware Supported: Pro Micro
-Hardware Availability: Group Buy
+* Keyboard Maintainer: [xyxjj](https://github.com/xyxjj) & [itsaferbie](https://github.com/itsaferbie)
+* Hardware Supported: Pro Micro
+* Hardware Availability: Group Buy
Make example for this keyboard (after setting up your build environment):
make deltasplit75/v2: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.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Files are available here: [DeltaSplit75 Case Files](https://github.com/xyxjj/DeltaSplit75-Case-files)
diff --git a/keyboards/deltasplit75/rules.mk b/keyboards/deltasplit75/rules.mk
index a976360bf1..b0049fcbff 100644
--- a/keyboards/deltasplit75/rules.mk
+++ b/keyboards/deltasplit75/rules.mk
@@ -12,30 +12,25 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-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 = no # Enable WS2812 RGB underlight.
-SUBPROJECT_rev1 = yes
-USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-CUSTOM_MATRIX = yes
-SRC += matrix.c \
- i2c.c \
- split_util.c \
- serial.c
+SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = deltasplit75/v2
diff --git a/keyboards/deltasplit75/serial.c b/keyboards/deltasplit75/serial.c
deleted file mode 100644
index 74bcbb6bf6..0000000000
--- a/keyboards/deltasplit75/serial.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <stdbool.h>
-#include "serial.h"
-
-#ifndef USE_I2C
-
-// Serial pulse period in microseconds. Its probably a bad idea to lower this
-// value.
-#define SERIAL_DELAY 24
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-
-#define SLAVE_DATA_CORRUPT (1<<0)
-volatile uint8_t status = 0;
-
-inline static
-void serial_delay(void) {
- _delay_us(SERIAL_DELAY);
-}
-
-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(void) {
- SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static
-uint8_t serial_read_pin(void) {
- return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static
-void serial_low(void) {
- SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static
-void serial_high(void) {
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void serial_master_init(void) {
- serial_output();
- serial_high();
-}
-
-void serial_slave_init(void) {
- serial_input();
-
- // Enable INT0
- EIMSK |= _BV(INT0);
- // Trigger on falling edge of INT0
- EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-}
-
-// Used by the master to synchronize timing with the slave.
-static
-void sync_recv(void) {
- serial_input();
- // This shouldn't hang if the slave disconnects because the
- // serial line will float to high if the slave does disconnect.
- while (!serial_read_pin());
- serial_delay();
-}
-
-// Used by the slave to send a synchronization signal to the master.
-static
-void sync_send(void) {
- serial_output();
-
- serial_low();
- serial_delay();
-
- serial_high();
-}
-
-// Reads a byte from the serial line
-static
-uint8_t serial_read_byte(void) {
- uint8_t byte = 0;
- serial_input();
- for ( uint8_t i = 0; i < 8; ++i) {
- byte = (byte << 1) | serial_read_pin();
- serial_delay();
- _delay_us(1);
- }
-
- return byte;
-}
-
-// Sends a byte with MSB ordering
-static
-void serial_write_byte(uint8_t data) {
- uint8_t b = 8;
- serial_output();
- while( b-- ) {
- if(data & (1 << b)) {
- serial_high();
- } else {
- serial_low();
- }
- serial_delay();
- }
-}
-
-// interrupt handle to be used by the slave device
-ISR(SERIAL_PIN_INTERRUPT) {
- sync_send();
-
- uint8_t checksum = 0;
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_slave_buffer[i]);
- sync_send();
- checksum += serial_slave_buffer[i];
- }
- serial_write_byte(checksum);
- sync_send();
-
- // wait for the sync to finish sending
- serial_delay();
-
- // read the middle of pulses
- _delay_us(SERIAL_DELAY/2);
-
- uint8_t checksum_computed = 0;
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_master_buffer[i] = serial_read_byte();
- sync_send();
- checksum_computed += serial_master_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_send();
-
- serial_input(); // end transaction
-
- if ( checksum_computed != checksum_received ) {
- status |= SLAVE_DATA_CORRUPT;
- } else {
- status &= ~SLAVE_DATA_CORRUPT;
- }
-}
-
-inline
-bool serial_slave_DATA_CORRUPT(void) {
- return status & SLAVE_DATA_CORRUPT;
-}
-
-// Copies the serial_slave_buffer to the master and sends the
-// serial_master_buffer to the slave.
-//
-// Returns:
-// 0 => no error
-// 1 => slave did not respond
-int serial_update_buffers(void) {
- // this code is very time dependent, so we need to disable interrupts
- cli();
-
- // signal to the slave that we want to start a transaction
- serial_output();
- serial_low();
- _delay_us(1);
-
- // wait for the slaves response
- serial_input();
- serial_high();
- _delay_us(SERIAL_DELAY);
-
- // check if the slave is present
- if (serial_read_pin()) {
- // slave failed to pull the line low, assume not present
- sei();
- return 1;
- }
-
- // if the slave is present syncronize with it
- sync_recv();
-
- uint8_t checksum_computed = 0;
- // receive data from the slave
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_slave_buffer[i] = serial_read_byte();
- sync_recv();
- checksum_computed += serial_slave_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_recv();
-
- if (checksum_computed != checksum_received) {
- sei();
- return 1;
- }
-
- uint8_t checksum = 0;
- // send data to the slave
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_master_buffer[i]);
- sync_recv();
- checksum += serial_master_buffer[i];
- }
- serial_write_byte(checksum);
- sync_recv();
-
- // always, release the line when not in use
- serial_output();
- serial_high();
-
- sei();
- return 0;
-}
-
-#endif
diff --git a/keyboards/deltasplit75/serial.h b/keyboards/deltasplit75/serial.h
deleted file mode 100644
index 6ef52019a8..0000000000
--- a/keyboards/deltasplit75/serial.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef MY_SERIAL_H
-#define MY_SERIAL_H
-
-#include "config.h"
-#include <stdbool.h>
-
-/* TODO: some defines for interrupt setup */
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD0)
-#define SERIAL_PIN_INTERRUPT INT0_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH ((MATRIX_COLS+7)/8 *MATRIX_ROWS/2)
-#define SERIAL_MASTER_BUFFER_LENGTH 1
-
-// Buffers for master - slave communication
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-bool serial_slave_data_corrupt(void);
-
-#endif
diff --git a/keyboards/deltasplit75/split_util.c b/keyboards/deltasplit75/split_util.c
deleted file mode 100644
index 346cbc9089..0000000000
--- a/keyboards/deltasplit75/split_util.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/power.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <avr/eeprom.h>
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "config.h"
-#include "timer.h"
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else
-# include "serial.h"
-#endif
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
- #ifdef EE_HANDS
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
- #else
- // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
- #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
- isLeftHand = !has_usb();
- #else
- isLeftHand = has_usb();
- #endif
- #endif
-}
-
-static void keyboard_master_setup(void) {
-#ifdef USE_I2C
- i2c_master_init();
-#ifdef SSD1306OLED
- matrix_master_OLED_init ();
-#endif
-#else
- serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
- timer_init();
-#ifdef USE_I2C
- i2c_slave_init(SLAVE_I2C_ADDRESS);
-#else
- serial_slave_init();
-#endif
-}
-
-bool has_usb(void) {
- USBCON |= (1 << OTGPADE); //enables VBUS pad
- _delay_us(5);
- return (USBSTA & (1<<VBUS)); //checks state of VBUS
-}
-
-void split_keyboard_setup(void) {
- setup_handedness();
-
- if (has_usb()) {
- keyboard_master_setup();
- } else {
- keyboard_slave_setup();
- }
- sei();
-}
-
-void keyboard_slave_loop(void) {
- matrix_init();
-
- while (1) {
- matrix_slave_scan();
- }
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
- split_keyboard_setup();
-
- if (!has_usb()) {
- keyboard_slave_loop();
- }
-}
diff --git a/keyboards/deltasplit75/split_util.h b/keyboards/deltasplit75/split_util.h
deleted file mode 100644
index 1c92352132..0000000000
--- a/keyboards/deltasplit75/split_util.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-
-#define SLAVE_I2C_ADDRESS 0x32
-
-extern volatile bool isLeftHand;
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
-
-void split_keyboard_setup(void);
-bool has_usb(void);
-void keyboard_slave_loop(void);
-
-#endif
diff --git a/keyboards/deltasplit75/v2/config.h b/keyboards/deltasplit75/v2/config.h
index 6a2e48f4f4..844fcf43bd 100644
--- a/keyboards/deltasplit75/v2/config.h
+++ b/keyboards/deltasplit75/v2/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef CONFIG_V2_H
-#define CONFIG_V2_H
+#pragma once
#include "config_common.h"
@@ -40,6 +39,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
@@ -76,5 +80,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/deltasplit75/v2/v2.c b/keyboards/deltasplit75/v2/v2.c
index a7ee1fa8a5..caf7c6f0f2 100644
--- a/keyboards/deltasplit75/v2/v2.c
+++ b/keyboards/deltasplit75/v2/v2.c
@@ -1,14 +1 @@
-#include "deltasplit75.h"
-
-void matrix_init_kb(void) {
- // // green led on
- // DDRD |= (1<<5);
- // PORTD &= ~(1<<5);
-
- // // orange led on
- // DDRB |= (1<<0);
- // PORTB &= ~(1<<0);
-
- matrix_init_user();
-};
-
+#include "v2.h"
diff --git a/keyboards/deltasplit75/v2/v2.h b/keyboards/deltasplit75/v2/v2.h
index 82f54c2b0d..bab6a47cd9 100644
--- a/keyboards/deltasplit75/v2/v2.h
+++ b/keyboards/deltasplit75/v2/v2.h
@@ -1,5 +1,4 @@
-#ifndef V2_H
-#define V2_H
+#pragma once
#include "deltasplit75.h"
@@ -56,5 +55,3 @@
{ K120, K121, K122, K123, KC_NO, KC_NO, K126, K127}, \
{ KC_NO, KC_NO, K132, K133, K134, K135, K136, K137} \
}
-
-#endif
diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk
index 9ab4d56922..14dc474359 100755
--- a/keyboards/dichotomy/rules.mk
+++ b/keyboards/dichotomy/rules.mk
@@ -14,11 +14,11 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+#MOUSEKEY_ENABLE = yes # Mouse keys
POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully.
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/diverge3/rules.mk b/keyboards/diverge3/rules.mk
index 42ab5224af..0b5ad749ad 100644
--- a/keyboards/diverge3/rules.mk
+++ b/keyboards/diverge3/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/divergetm2/rules.mk b/keyboards/divergetm2/rules.mk
index 9a461edec9..25f872bd05 100644
--- a/keyboards/divergetm2/rules.mk
+++ b/keyboards/divergetm2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/dk60/rules.mk b/keyboards/dk60/rules.mk
index 17ee5d9618..b7518eee35 100644
--- a/keyboards/dk60/rules.mk
+++ b/keyboards/dk60/rules.mk
@@ -11,15 +11,15 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+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
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
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 = no # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/do60/rules.mk b/keyboards/do60/rules.mk
index bd74db7f82..73bb4f096b 100644
--- a/keyboards/do60/rules.mk
+++ b/keyboards/do60/rules.mk
@@ -15,12 +15,12 @@ BOOTLOADER = atmel-dfu
AUDIO_ENABLE = no # Audio output on port C6
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
COMMAND_ENABLE = no # Commands for debug and configuration
-CONSOLE_ENABLE = no # Console for debug(+400)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug
+EXTRAKEY_ENABLE = yes # Audio control and System control
MIDI_ENABLE = no # MIDI controls
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+MOUSEKEY_ENABLE = yes # Mouse keys
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/donutcables/budget96/budget96.c b/keyboards/donutcables/budget96/budget96.c
index e9125a3e60..5f3436dc61 100644
--- a/keyboards/donutcables/budget96/budget96.c
+++ b/keyboards/donutcables/budget96/budget96.c
@@ -16,32 +16,20 @@
#include "budget96.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/donutcables/budget96/config.h b/keyboards/donutcables/budget96/config.h
index 127e542f1c..0e05bb76f4 100644
--- a/keyboards/donutcables/budget96/config.h
+++ b/keyboards/donutcables/budget96/config.h
@@ -37,5 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/donutcables/budget96/rules.mk b/keyboards/donutcables/budget96/rules.mk
index 54328d248d..84eace5ed6 100644
--- a/keyboards/donutcables/budget96/rules.mk
+++ b/keyboards/donutcables/budget96/rules.mk
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
-CONSOLE_ENABLE = yes
+CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/donutcables/scrabblepad/rules.mk b/keyboards/donutcables/scrabblepad/rules.mk
index be6c7d9ac8..51717e2e22 100644
--- a/keyboards/donutcables/scrabblepad/rules.mk
+++ b/keyboards/donutcables/scrabblepad/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/doro67/multi/rules.mk b/keyboards/doro67/multi/rules.mk
index d719b7043f..d24fdc3a6b 100644
--- a/keyboards/doro67/multi/rules.mk
+++ b/keyboards/doro67/multi/rules.mk
@@ -13,10 +13,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -24,11 +24,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/doro67/regular/rules.mk b/keyboards/doro67/regular/rules.mk
index d88f6fcfe6..ca6817ffff 100644
--- a/keyboards/doro67/regular/rules.mk
+++ b/keyboards/doro67/regular/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk
index 769edfb45d..8540dd61e0 100644
--- a/keyboards/doro67/rgb/rules.mk
+++ b/keyboards/doro67/rgb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
RGB_MATRIX_ENABLE = WS2812
LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/dozen0/config.h b/keyboards/dozen0/config.h
index af6972e27b..3fdd50f504 100644
--- a/keyboards/dozen0/config.h
+++ b/keyboards/dozen0/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, B5, B4, E6, D7, C6, D4 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
diff --git a/keyboards/duck/eagle_viper/v2/rules.mk b/keyboards/duck/eagle_viper/v2/rules.mk
index 9b3ffa8ac5..a8c804e52c 100644
--- a/keyboards/duck/eagle_viper/v2/rules.mk
+++ b/keyboards/duck/eagle_viper/v2/rules.mk
@@ -14,17 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/duck/jetfire/rules.mk b/keyboards/duck/jetfire/rules.mk
index 04d4f45695..09a5d1eccf 100644
--- a/keyboards/duck/jetfire/rules.mk
+++ b/keyboards/duck/jetfire/rules.mk
@@ -14,23 +14,24 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes
SRC += indicator_leds.c \
diff --git a/keyboards/duck/lightsaver/rules.mk b/keyboards/duck/lightsaver/rules.mk
index b6cb462ebb..64e18c9b11 100644
--- a/keyboards/duck/lightsaver/rules.mk
+++ b/keyboards/duck/lightsaver/rules.mk
@@ -14,17 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/duck/octagon/v1/rules.mk b/keyboards/duck/octagon/v1/rules.mk
index 7027fb1276..4a8191fa61 100644
--- a/keyboards/duck/octagon/v1/rules.mk
+++ b/keyboards/duck/octagon/v1/rules.mk
@@ -14,17 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/duck/octagon/v2/rules.mk b/keyboards/duck/octagon/v2/rules.mk
index cd4d2c2fec..49f3f12f52 100644
--- a/keyboards/duck/octagon/v2/rules.mk
+++ b/keyboards/duck/octagon/v2/rules.mk
@@ -14,17 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/duck/orion/v3/rules.mk b/keyboards/duck/orion/v3/rules.mk
index c46cb75448..019dd7dd3d 100644
--- a/keyboards/duck/orion/v3/rules.mk
+++ b/keyboards/duck/orion/v3/rules.mk
@@ -14,17 +14,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/dumbpad/rules.mk b/keyboards/dumbpad/rules.mk
index a5df407da4..34bd05ee16 100644
--- a/keyboards/dumbpad/rules.mk
+++ b/keyboards/dumbpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
ENCODER_ENABLE = yes
MOUSEKEY_ENABLE = yes
diff --git a/keyboards/dz60/config.h b/keyboards/dz60/config.h
index 63794d0270..e0c2254d0a 100644
--- a/keyboards/dz60/config.h
+++ b/keyboards/dz60/config.h
@@ -4,7 +4,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x445A // "DZ"
#define PRODUCT_ID 0x2260
#define DEVICE_VER 0x0001
#define MANUFACTURER KBDFans
@@ -45,4 +45,7 @@
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif
-#endif \ No newline at end of file
+#endif
+
+/* VIA related config */
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/billiams/build_flash.sh b/keyboards/dz60/keymaps/billiams_layout2/build_flash.sh
index e7a8111441..116b0bf336 100644
--- a/keyboards/dz60/keymaps/billiams/build_flash.sh
+++ b/keyboards/dz60/keymaps/billiams_layout2/build_flash.sh
@@ -3,7 +3,4 @@
# dfu-programmer atmega32u4 reset
# run this in the qmk_firmware directory
-make dz60:billiams
-dfu-programmer atmega32u4 erase --force && \
-dfu-programmer atmega32u4 flash dz60_billiams.hex && \
-dfu-programmer atmega32u4 reset \ No newline at end of file
+make dz60:billiams_layout2:flash
diff --git a/keyboards/dz60/keymaps/billiams/config.h b/keyboards/dz60/keymaps/billiams_layout2/config.h
index 9560d51a6f..9560d51a6f 100644
--- a/keyboards/dz60/keymaps/billiams/config.h
+++ b/keyboards/dz60/keymaps/billiams_layout2/config.h
diff --git a/keyboards/dz60/keymaps/billiams_layout2/keymap.c b/keyboards/dz60/keymaps/billiams_layout2/keymap.c
new file mode 100644
index 0000000000..6f0ae55d14
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout2/keymap.c
@@ -0,0 +1,48 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ,-----------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | Del |
+ * |-----------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bkspc |
+ * |-----------------------------------------------------------------------------------------+
+ * | Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |-----------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | ?/ | Shift | ESC |
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Cmd | Space | Cmd | Alt | Ctrl | Fn |
+ * `-----------------------------------------------------------------------------------------'
+ */
+
+ LAYOUT_60_2_function(
+ 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_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_ESCAPE,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, MO(1)
+ ),
+
+ /* FN Layer
+ * ,-----------------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Vol- |Vol+ |
+ * |-----------------------------------------------------------------------------------------+
+ * | |RBB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| | | Mute| Prev | Next |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | Left| Down| Up |Right| | | Play/Pause |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | |Scr- |Scr+ | | | |RESET|
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
+
+ LAYOUT_60_2_function(
+ _______, KC_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,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/dz60/keymaps/billiams_layout2/readme.md b/keyboards/dz60/keymaps/billiams_layout2/readme.md
new file mode 100644
index 0000000000..bef96f4671
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout2/readme.md
@@ -0,0 +1,68 @@
+## Billiam's DZ60 60_2 layout (KBDFANS Layout 2 with split backspace and split right shift)
+
+This layout is optimized for MacOS and is for a Build 2 DZ60 with a 2U left shift, 1.75U right shift and no arrow cluster. Don't use this layout if you didn't get Build 2, you will enter a world of pain Donny.
+
+Settings:
+
+* The `CAPS LOCK` key is a function key.
+* The `ALT` and `CMD` keys are swapped to replicate the Mac layout.
+* RESET is available as `Fn`+ ` ESC`
+* Underglow toggle is available as `Fn` + `Q`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus!
+* vim-style arrow key bindings H J K L in layer 1
+
+### Initial Installation
+
+I found the instructions to be longer than they had to be, and I ended up having to Google some steps anyway. These are the steps I took to get my keyboard setup, in case you are new to the process.
+
+1. Clone the qmk_firmware repo locally
+```
+# Choose one:
+git clone git@github.com:qmk/qmk_firmware.git # OR
+git clone https://github.com/qmk/qmk_firmware.git
+```
+2. Customize your layout by starting with a [keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dz60/keymaps). I copied [StephenGrier](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dz60/keymaps/stephengrier)'s and modified it for DZ60 Build 4 and changed a few things, like the `grave` key, `ESC` and `/`.
+
+3. Build your hex file
+```
+make dz60:billiams_layout2 # be in the qmk_firmware directory to do this
+```
+A hex file `dz60_billiams_layout2.hex` will be created in the base qmk_firmware directory
+
+4. Before plugging in your keyboard into your computer, hold `SPACE` and `B` keys down
+5. Holding those keys down, plug the keyboard into your computer, which will put the keyboard in bootlegger mode
+6. If you are using [QMK toolbox](https://github.com/qmk/qmk_toolbox/releases), upload the .hex file you made above, select it and hit the flash button. For the love of all that is good and holy on Earth, don't hit the load button, that will load the default keymap and that's not what you want! Unless it is, in which case click away.
+
+Note: If you didn't follow my instructions in 4 and accidentally loaded the default keymap, then to `RESET` the keyboard and kick it into bootleg mode again, hold the `down arrow` key and `\`. The default layout is Build 1 and sets the `MENU` key on that build to `Fn`. `MENU` corresponds to `down arrow` in build 4. Note that you don't have to unplug the keyboard.
+
+Hope this helps!
+
+### 0 Qwerty
+```
+,-----------------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | DEL |
+|-----------------------------------------------------------------------------------------+
+| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+|-----------------------------------------------------------------------------------------+
+| Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+|-----------------------------------------------------------------------------------------+
+| Shift | Z | X | C | V | B | N | M | , | . | ?/ | Shift | ESC |
+|-----------------------------------------------------------------------------------------+
+| Ctrl | Alt | Cmd | Space | Cmd | Alt | Ctrl | Fn |
+`-----------------------------------------------------------------------------------------'
+```
+
+### 1 Fn Layer
+```
+FN Layer
+,-----------------------------------------------------------------------------------------.
+| ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Vol- |Vol+ |
+|-----------------------------------------------------------------------------------------+
+| |RBB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| | | Mute | Prev | Next |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | Left| Down| Up |Right| | | Play/Pause |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | | |Scr- |Scr+ | | | | RESET |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | | |
+`-----------------------------------------------------------------------------------------'
+```
diff --git a/keyboards/dz60/keymaps/billiams_layout4/build_flash.sh b/keyboards/dz60/keymaps/billiams_layout4/build_flash.sh
new file mode 100644
index 0000000000..8f9988ca0c
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout4/build_flash.sh
@@ -0,0 +1,6 @@
+# dfu-programmer atmega32u4 erase --force
+# dfu-programmer atmega32u4 flash /path/to/firmware.hex
+# dfu-programmer atmega32u4 reset
+
+# run this in the qmk_firmware directory
+make dz60:billiams_layout4:flash
diff --git a/keyboards/dz60/keymaps/billiams_layout4/config.h b/keyboards/dz60/keymaps/billiams_layout4/config.h
new file mode 100644
index 0000000000..9560d51a6f
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout4/config.h
@@ -0,0 +1 @@
+#define GRAVE_ESC_GUI_OVERRIDE # Always send Escape if GUI is pressed
diff --git a/keyboards/dz60/keymaps/billiams_layout4/keymap.c b/keyboards/dz60/keymaps/billiams_layout4/keymap.c
new file mode 100644
index 0000000000..b1c75d9036
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout4/keymap.c
@@ -0,0 +1,48 @@
+#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 | [ | ] | \ |
+ * |-----------------------------------------------------------------------------------------+
+ * | Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |-----------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . |Tap(/) Shft| U | ESC |
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Cmd | Space | Alt | Fn | L | D | R |
+ * `-----------------------------------------------------------------------------------------'
+ */
+
+ LAYOUT_directional(
+ 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, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, _______, RSFT_T(KC_SLSH) , KC_UP, KC_ESCAPE,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /* FN Layer
+ * ,-----------------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL |
+ * |-----------------------------------------------------------------------------------------+
+ * | |RBB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| Mute | Vol-| Vol+| Prev | Next |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | Left| Down| Up |Right| | | Play/Pause |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | |Scr- |Scr+ | |PG_UP|RESET|
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | HOME|PG_DN| END |
+ * `-----------------------------------------------------------------------------------------'
+ */
+
+ LAYOUT_directional(
+ _______, KC_F1, 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_HOME, KC_PGDOWN, KC_END
+ ),
+};
diff --git a/keyboards/dz60/keymaps/billiams_layout4/readme.md b/keyboards/dz60/keymaps/billiams_layout4/readme.md
new file mode 100644
index 0000000000..37bbd6a65d
--- /dev/null
+++ b/keyboards/dz60/keymaps/billiams_layout4/readme.md
@@ -0,0 +1,71 @@
+## Billiam's DZ60 Directional layout
+
+This layout is optimized for MacOS and is for a Build 4 DZ60 with a 2U left shift, 2U right shift and an arrow
+cluster in the bottom right. Don't use this layout if you didn't get Build 4, you will enter a world of pain Donny.
+
+Settings:
+
+* The `CAPS LOCK` key is replaced with a second function key.
+* The `ALT` and `CMD` keys are swapped to replicate the Mac layout.
+* Del is available as `Fn` + `Backspace`
+* `/ ?` are available when you tap the right shift. Otherwise RShift is shift when held down
+* RESET is available as `Fn`+ ` ESC`
+* Underglow toggle is available as `Fn` + `Q`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus!
+* vim-style arrow key bindings H J K L in layer 1
+
+### Initial Installation
+
+I found the instructions to be longer than they had to be, and I ended up having to Google some steps anyway. These are the steps I took to get my keyboard setup, in case you are new to the process.
+
+1. Clone the qmk_firmware repo locally
+```
+# Choose one:
+git clone git@github.com:qmk/qmk_firmware.git # OR
+git clone https://github.com/qmk/qmk_firmware.git
+```
+2. Customize your layout by starting with a [keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dz60/keymaps). I copied [StephenGrier](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dz60/keymaps/stephengrier)'s and modified it for DZ60 Build 4 and changed a few things, like the `grave` key, `ESC` and `/`.
+
+3. Build your hex file
+```
+make dz60:billiams_layout4 # be in the qmk_firmware directory to do this
+```
+A hex file `dz60_billiams_layout4.hex` will be created in the base qmk_firmware directory
+
+4. Before plugging in your keyboard into your computer, hold `SPACE` and `B` keys down
+5. Holding those keys down, plug the keyboard into your computer, which will put the keyboard in bootlegger mode
+6. If you are using [QMK toolbox](https://github.com/qmk/qmk_toolbox/releases), upload the .hex file you made above, select it and hit the flash button. For the love of all that is good and holy on Earth, don't hit the load button, that will load the default keymap and that's not what you want! Unless it is, in which case click away.
+
+Note: If you didn't follow my instructions in 4 and accidentally loaded the default keymap, then to `RESET` the keyboard and kick it into bootleg mode again, hold the `down arrow` key and `\`. The default layout is Build 1 and sets the `MENU` key on that build to `Fn`. `MENU` corresponds to `down arrow` in build 4. Note that you don't have to unplug the keyboard.
+
+Hope this helps!
+
+### 0 Qwerty
+```
+,-----------------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc |
+|-----------------------------------------------------------------------------------------+
+| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+|-----------------------------------------------------------------------------------------+
+| Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+|-----------------------------------------------------------------------------------------+
+| Shift | Z | X | C | V | B | N | M | , | . | Tap:/ RSh | U | ESC |
+|-----------------------------------------------------------------------------------------+
+| Ctrl | Alt | Cmd | Space | Alt | Fn | L | D | R |
+`-----------------------------------------------------------------------------------------'
+```
+
+### 1 Fn Layer
+```
+FN Layer
+,-----------------------------------------------------------------------------------------.
+| ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL |
+|-----------------------------------------------------------------------------------------+
+| |RBB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| Mute | Vol-| Vol+| Prev | Next |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | Left| Down| Up |Right| | | Play/Pause |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | | |Scr- |Scr+ | | PG_UP |RESET|
+|-----------------------------------------------------------------------------------------+
+| | | | | | | HOME | PG_DN | END |
+`-----------------------------------------------------------------------------------------'
+```
diff --git a/keyboards/dz60/keymaps/via/keymap.c b/keyboards/dz60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..34c6e131f9
--- /dev/null
+++ b/keyboards/dz60/keymaps/via/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_NO, MO(1), KC_RCTL),
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
+ 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),
+ 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)
+}; \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/via/rules.mk b/keyboards/dz60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ea9a831e17
--- /dev/null
+++ b/keyboards/dz60/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk
index 7ed2571da0..e5e9b84657 100644
--- a/keyboards/dz60/rules.mk
+++ b/keyboards/dz60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/eco/keymaps/default/rules.mk b/keyboards/eco/keymaps/default/rules.mk
index 83d1175db9..3898578a82 100644
--- a/keyboards/eco/keymaps/default/rules.mk
+++ b/keyboards/eco/keymaps/default/rules.mk
@@ -4,10 +4,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/eco/keymaps/xyverz/keymap.c b/keyboards/eco/keymaps/xyverz/keymap.c
index 5a1974336a..06054e9ac8 100644
--- a/keyboards/eco/keymaps/xyverz/keymap.c
+++ b/keyboards/eco/keymaps/xyverz/keymap.c
@@ -132,9 +132,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
- writePinLow(D5);
setPinInput(B0);
- writePinLow(B0);
#endif
};
@@ -155,4 +153,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
-} \ No newline at end of file
+}
diff --git a/keyboards/eco/rules.mk b/keyboards/eco/rules.mk
index 4fe5ec1b92..7f7f20ed3b 100644
--- a/keyboards/eco/rules.mk
+++ b/keyboards/eco/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/emptystring/NQG/rules.mk b/keyboards/emptystring/NQG/rules.mk
index 8ebed340ad..45f2f61551 100644
--- a/keyboards/emptystring/NQG/rules.mk
+++ b/keyboards/emptystring/NQG/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/ep/40/rules.mk b/keyboards/ep/40/rules.mk
index 7e69544cf4..862bcbf8f2 100644
--- a/keyboards/ep/40/rules.mk
+++ b/keyboards/ep/40/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ep/96/rules.mk b/keyboards/ep/96/rules.mk
index 7e69544cf4..862bcbf8f2 100644
--- a/keyboards/ep/96/rules.mk
+++ b/keyboards/ep/96/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ep/comsn/hs68/config.h b/keyboards/ep/comsn/hs68/config.h
index db633a2509..cf15a90bb4 100644
--- a/keyboards/ep/comsn/hs68/config.h
+++ b/keyboards/ep/comsn/hs68/config.h
@@ -47,7 +47,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B0, B1, B3, B2, B7, D3, F1, D5, D6, D7, F4, F5, C7, C6, F0 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/ep/comsn/hs68/rules.mk b/keyboards/ep/comsn/hs68/rules.mk
index 2aa5671557..80c82b7c98 100644
--- a/keyboards/ep/comsn/hs68/rules.mk
+++ b/keyboards/ep/comsn/hs68/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ep/comsn/mollydooker/config.h b/keyboards/ep/comsn/mollydooker/config.h
index 3ba661525a..2a96b53414 100644
--- a/keyboards/ep/comsn/mollydooker/config.h
+++ b/keyboards/ep/comsn/mollydooker/config.h
@@ -47,7 +47,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B1, B2, B3, E6, B7, F1, F0, D0, D1, D7, D5, D4, D6, B4, B5, D3, B6, C6, C7 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #endif
diff --git a/keyboards/ep/comsn/mollydooker/rules.mk b/keyboards/ep/comsn/mollydooker/rules.mk
index 4ef5023dfb..e501469fca 100644
--- a/keyboards/ep/comsn/mollydooker/rules.mk
+++ b/keyboards/ep/comsn/mollydooker/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ep/comsn/tf_longeboye/rules.mk b/keyboards/ep/comsn/tf_longeboye/rules.mk
index 5360459cf7..bd3cd09a9f 100644
--- a/keyboards/ep/comsn/tf_longeboye/rules.mk
+++ b/keyboards/ep/comsn/tf_longeboye/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ergodash/mini/config.h b/keyboards/ergodash/mini/config.h
index 2fa51dcc12..1a0ecc0a7e 100644
--- a/keyboards/ergodash/mini/config.h
+++ b/keyboards/ergodash/mini/config.h
@@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
// #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 DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/ergodash/rev1/config.h b/keyboards/ergodash/rev1/config.h
index 52f81e4ac9..0e89ca3402 100644
--- a/keyboards/ergodash/rev1/config.h
+++ b/keyboards/ergodash/rev1/config.h
@@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
// #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 DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
@@ -69,6 +71,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT { 12, 12 } // Number of LEDs
+// The LEDs on the slave half go in reverse order
+#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, \
+ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12}
+
#define SOFT_SERIAL_PIN D0
#define SELECT_SOFT_SERIAL_SPEED 1
/*Sets the protocol speed when using serial communication*/
diff --git a/keyboards/ergodash/rules.mk b/keyboards/ergodash/rules.mk
index d57e4ce13a..de06b34270 100644
--- a/keyboards/ergodash/rules.mk
+++ b/keyboards/ergodash/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/ergodone/rules.mk b/keyboards/ergodone/rules.mk
index aaeedb4311..f0008e48fd 100644
--- a/keyboards/ergodone/rules.mk
+++ b/keyboards/ergodone/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = caterina
#
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone
UNICODE_ENABLE = yes # Unicode
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/ergodox_ez/keymaps/danielo515/config.h b/keyboards/ergodox_ez/keymaps/danielo515/config.h
new file mode 100644
index 0000000000..6a3d37f1c6
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/danielo515/config.h
@@ -0,0 +1,37 @@
+/*
+ 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 IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 200
+
+#define ONESHOT_TAP_TOGGLE 3
+
+#define RGBLIGHT_SLEEP
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 50
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 60
+// Timeout settings for leader key
+#undef LEADER_TIMEOUT
+#define LEADER_TIMEOUT 350
+#define LEADER_PER_KEY_TIMING
+
+#undef DEBOUNCE
+#define DEBOUNCE 45
+// Memory saving
+#ifdef CONSOLE_ENABLE
+# define NO_DEBUG
+# define NO_PRINT
+#endif
+
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+# define NO_ACTION_MACRO
+# define NO_ACTION_FUNCTION
+#endif
+
+#undef RGBLIGHT_ANIMATIONS
diff --git a/keyboards/ergodox_ez/keymaps/danielo515/keymap.c b/keyboards/ergodox_ez/keymaps/danielo515/keymap.c
new file mode 100644
index 0000000000..538eab0163
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/danielo515/keymap.c
@@ -0,0 +1,318 @@
+#include QMK_KEYBOARD_H
+#include "version.h"
+#include "danielo515.h"
+
+/* STUPID JS code to split by ergodox rows. Call the format function with the unformatted array
+sliceBy = groups => items => groups.reduce(({start, acc},size) => ({
+ acc: (acc.push(items.slice(start,start+size)),acc ),
+ start: start + size
+}), {acc:[],start:0}).acc
+findMaxLen = items => items.reduce((max,curr) => max < curr.length ? curr.length : max,0)
+setLen = len => strings => strings.map(str => str.padEnd(len, " "));
+const format = string => {
+ const items = string.split(/,\s*(?![^()]*\))/)
+ const group = sliceBy([7,7,6,7,5,2,1,3])
+ const resize = setLen(findMaxLen(items));
+ const joinstr = ',\n'
+ const leftItems = group(items.slice(0,items.length/2))
+ const rightItems = group(items.slice(items.length/2))
+ const [left,right] = [leftItems.map(resize).join(joinstr),rightItems.map(resize).join(joinstr)]
+ return `\n${left},\n\n${right}\n`
+}
+*/
+
+#define OSM_SF_CMD OSM(MOD_LGUI | MOD_LSFT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ergodox(
+ KC_EQL ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,OSM(MOD_HYPR) ,
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,TD(PASTE_DANCE) ,
+ KC_DELETE ,KC_A ,LT(3,KC_S) ,LT(2,KC_D) ,LT(4,KC_F) ,KC_G ,
+ KC_GRAVE ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,TD(COPY_CUT) ,
+ KC_BSLASH ,OSM(MOD_LCTL) ,OSM(MOD_LALT) ,KC_LEFT ,KC_RIGHT ,
+ OSM_SF_CMD ,KC_PLUS ,
+ KC_INSERT ,
+ OSM(MOD_LSFT) ,LT(2,KC_BSPACE) ,OSM(MOD_LGUI) ,
+
+
+ TO(1) ,KC_6 ,KC_7 ,KC_8 ,TD_F9 ,LT(3,KC_0) ,KC_DQUO ,
+ KC_UNDS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,RSFT_T(KC_MINUS) ,
+ HYPR_T(KC_H) ,ALT_T(KC_J) ,RCTL_T(KC_K) ,LT(6,KC_L) ,TD_CLN ,GUI_T(KC_QUOTE) ,
+ ALT_TAB ,KC_N ,MEH_T(KC_M) ,KC_COMMA ,KC_DOT ,KC_SLASH ,LT(4,KC_KP_ASTERISK),
+ LT(4,KC_ENTER) ,KC_DOWN ,KC_LBRACKET ,KC_RBRACKET ,OSL(2) ,
+ KC_AUDIO_MUTE ,KC_ESCAPE ,
+ KC_END ,
+ KC_COLN ,KC_LEAD ,LT(4,KC_SPACE)
+ ),
+
+ [1] = LAYOUT_ergodox(
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,AC_E ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ LT(5, KC_DELETE),AC_A ,KC_TRANSPARENT ,KC_TRANSPARENT ,FIND ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ OSM(MOD_LSFT) ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ TO(8) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_ENTER ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT),
+
+ [2] = LAYOUT_ergodox(
+ KC_TRANSPARENT,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_CALCULATOR ,
+ KC_TRANSPARENT,KC_HASH ,KC_DLR ,KC_TRANSPARENT,KC_RPRN ,KC_GRAVE ,
+ KC_TRANSPARENT,KC_PERC ,KC_CIRC ,KC_LBRACKET ,KC_RBRACKET ,KC_TILD ,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,
+ RGB_HUI ,
+ KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUD ,
+ KC_DELETE ,KC_A ,KC_B ,KC_C ,KC_D ,KC_E ,KC_BSPACE ,
+ KC_ENTER ,KC_F ,KC_7 ,KC_8 ,KC_9 ,KC_PERC ,KC_TRANSPARENT,
+ KC_HASH ,KC_4 ,KC_5 ,KC_6 ,KC_PLUS ,KC_KP_ASTERISK,
+ KC_KP_ENTER ,KC_COLON ,KC_1 ,KC_2 ,KC_3 ,KC_SLASH ,KC_BSLASH ,
+ KC_0 ,KC_COMMA ,KC_DOT ,KC_EQUAL ,KC_TRANSPARENT,
+ RGB_TOG ,RGB_SLD ,
+ RGB_VAI ,
+ RGB_VAD ,KC_BSPACE ,KC_SPACE
+ ),
+
+ [3] = LAYOUT_ergodox(
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LABK ,KC_RABK ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_AT ,KC_TRANSPARENT ,KC_EQL ,F_ARROW ,KC_GRAVE ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LBRACKET ,KC_RBRACKET ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ // Right hand
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ LALT(LSFT(KC_UP)) ,KC_HASH ,KC_LCBR ,KC_RCBR ,KC_KP_ASTERISK ,KC_PERC ,KC_DLR ,
+ KC_AMPR ,KC_LPRN ,KC_RPRN ,KC_CIRC ,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 ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_SPACE
+),
+
+ [4] = LAYOUT_ergodox(
+ KC_TRANSPARENT ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,LCTL(KC_Q) ,LCTL(KC_DOWN) ,LGUI(KC_DOWN) ,WIN_LEFT_HALF ,WIN_RIGHT_HALF ,LALT(LSFT(KC_UP)) ,
+ LCTL(LSFT(KC_P)) ,LCTL(KC_A) ,SAVE ,LCTL(KC_D) ,KC_TRANSPARENT ,RGUI(KC_R) ,
+ LCTL(LSFT(KC_F)) ,UNDO ,CUT ,KC_PSCREEN ,KC_TRANSPARENT ,LGUI(KC_RIGHT) ,LALT(LSFT(KC_DOWN)),
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+
+ LALT(KC_F4) ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
+ LALT(KC_UP) ,LSFT(KC_HOME) ,LSFT(KC_LEFT) ,KC_UP ,LSFT(KC_RIGHT) ,LSFT(KC_END) ,KC_F13 ,
+ KC_HOME ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_END ,KC_F12 ,
+ LALT(KC_DOWN) ,LSFT(KC_INSERT) ,LCTL(LSFT(KC_J)) ,LSFT(KC_UP) ,KC_PGUP ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,LSFT(KC_DOWN) ,KC_PGDOWN ,WIN_TO_LEFT ,WIN_TO_RIGHT ,
+ KC_TRANSPARENT ,KC_SYSTEM_SLEEP ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_BSPACE ,KC_TRANSPARENT
+ ),
+
+ [5] = LAYOUT_ergodox(
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,LCTL(KC_TAB) ,LCTL(LSFT(KC_TAB)) ,LGUI(KC_D) ,LCTL(KC_F) ,KC_TRANSPARENT ,
+ LGUI(KC_L) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,LSFT(KC_F9) ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,LCTL(LGUI(KC_LEFT)) ,LCTL(LGUI(KC_RIGHT)),KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,LCTL(KC_T) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT
+),
+
+ [6] = LAYOUT_ergodox(
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_ACCEL2 ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_WH_DOWN ,KC_MS_UP ,KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_LEFT ,KC_MS_DOWN ,KC_MS_RIGHT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_BTN3 ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_MS_BTN1 ,KC_MS_BTN2 ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_PGUP ,LCTL(LGUI(KC_RIGHT)),KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ LGUI(RCTL(KC_LEFT)) ,KC_MS_WH_DOWN ,LCTL(KC_C) ,KC_TRANSPARENT ,KC_MEDIA_STOP ,KC_MEDIA_PLAY_PAUSE ,
+ KC_PGDOWN ,LCTL(LSFT(KC_N)) ,LCTL(LSFT(KC_J)) ,KC_MEDIA_PREV_TRACK ,KC_MEDIA_NEXT_TRACK ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_AUDIO_VOL_UP ,KC_AUDIO_VOL_DOWN ,KC_AUDIO_MUTE ,KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,
+ KC_TRANSPARENT ,
+ KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT
+ ),
+
+ [7] = LAYOUT_ergodox(
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_UP ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT
+ ),
+
+ [8] = LAYOUT_ergodox(
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_Q ,KC_W ,KC_E ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_ENTER ,KC_A ,KC_S ,KC_D ,KC_F ,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_Z ,KC_X ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,
+ KC_SPACE ,KC_LSHIFT ,KC_TRANSPARENT,
+
+ TO(0) ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_PGDOWN ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_ENTER ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,
+ KC_TRANSPARENT,
+ KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT
+ ),
+};
+// Used for blinking leds on layers higher than 7
+uint16_t blink_timer = 0;
+uint16_t blink_elapsed = 0;
+bool blink_led_1 = false;
+bool blink_led_2 = false;
+bool blink_led_3 = false;
+
+void matrix_scan_kb(void){
+ // first 7 layers do not need to blink
+ if(blink_led_1 || blink_led_2 || blink_led_3){
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ blink_elapsed = timer_elapsed(blink_timer);
+ if(blink_elapsed > 2000) { blink_timer = timer_read();}
+ if(blink_elapsed < 1000) {
+ if(blink_led_1) ergodox_right_led_1_on();
+ if(blink_led_2) ergodox_right_led_2_on();
+ if(blink_led_3) ergodox_right_led_3_on();
+ }
+ }
+ matrix_scan_user();
+};
+
+layer_state_t layer_state_set_user(layer_state_t state)
+{
+
+ uint8_t layer = get_highest_layer(state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ blink_led_1=false;
+ blink_led_2=false;
+ blink_led_3=false;
+
+ switch (layer)
+ {
+ case 0:
+ rgblight_setrgb(0, 200, 200);
+ break;
+ case 1:
+ ergodox_right_led_1_on();
+ rgblight_setrgb(0, 200, 0); // green
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ rgblight_setrgb(0, 0, 255);
+ break;
+ case 3:
+ ergodox_right_led_3_on();
+ rgblight_setrgb(255, 0, 0);
+ break;
+ case 4:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ rgblight_setrgb(200, 65, 0);
+ break;
+ case 5:
+ ergodox_right_led_1_on();
+ ergodox_right_led_3_on();
+ rgblight_setrgb(0, 80, 33);
+ break;
+ case 6:
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ rgblight_setrgb(0, 10, 200);
+ break;
+ case 7:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ rgblight_setrgb(90, 150, 90);
+ break;
+ case 8:
+ blink_led_1=true;
+ rgblight_setrgb(100, 0, 100);
+ break;
+ case 9:
+ rgblight_setrgb(200, 150, 90);
+ break;
+// default:
+// rgblight_setrgb(0, 200, 200);
+// break;
+ }
+ return state;
+};
+
+// use leds to indicate when a one shot mod is on
+void oneshot_mods_changed_user(uint8_t mods) {
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ // One shot checks
+ if (mods & MOD_MASK_SHIFT) {
+ ergodox_right_led_1_on();
+ }
+ if (mods & MOD_MASK_CTRL) {
+ ergodox_right_led_2_on();
+ }
+ if (mods & MOD_MASK_ALT) {
+ ergodox_right_led_3_on();
+ }
+ // if (mods & MOD_MASK_GUI) {
+ // println("Oneshot mods GUI");
+ // }
+ }
+
+void oneshot_locked_mods_changed_user(uint8_t mods) {
+ oneshot_mods_changed_user(mods);
+}
diff --git a/keyboards/ergodox_ez/keymaps/danielo515/rules.mk b/keyboards/ergodox_ez/keymaps/danielo515/rules.mk
new file mode 100644
index 0000000000..99ab4f0e18
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/danielo515/rules.mk
@@ -0,0 +1,9 @@
+# Set any rules.mk overrides for your specific keymap here.
+# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
+LTO_ENABLE = yes
+AUTO_SHIFT_ENABLE = no
+TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
+LEADER_ENABLE = yes
+CONSOLE_ENABLE = no
+RGBLIGHT_ENABLE = yes
+COMBO_ENABLE = yes
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
index fd8f5722d3..617ffea857 100644
--- a/keyboards/ergodox_ez/rules.mk
+++ b/keyboards/ergodox_ez/rules.mk
@@ -19,10 +19,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
index b55c9bc8c0..329ea8b988 100644
--- a/keyboards/ergodox_infinity/rules.mk
+++ b/keyboards/ergodox_infinity/rules.mk
@@ -63,10 +63,10 @@ BOOTLOADER = dfu
DFU_ARGS = -d 1c11:b007
DFU_SUFFIX_ARGS = -p b007 -v 1c11
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
@@ -79,6 +79,7 @@ SERIAL_LINK_ENABLE = yes
VISUALIZER_ENABLE = yes
LCD_ENABLE = yes
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
LCD_BACKLIGHT_ENABLE = yes
MIDI_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/ergodox_stm32/chconf.h b/keyboards/ergodox_stm32/chconf.h
index d9114ec858..513ae821db 100644
--- a/keyboards/ergodox_stm32/chconf.h
+++ b/keyboards/ergodox_stm32/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk
index 1bf1a742ab..ab7b853f5d 100644
--- a/keyboards/ergodox_stm32/rules.mk
+++ b/keyboards/ergodox_stm32/rules.mk
@@ -30,3 +30,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = yes # Custom matrix file
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
UNICODE_ENABLE = yes # Unicode
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/ergoinu/keymaps/default/rules.mk b/keyboards/ergoinu/keymaps/default/rules.mk
index 92dde90ff1..b2eff12b04 100644
--- a/keyboards/ergoinu/keymaps/default/rules.mk
+++ b/keyboards/ergoinu/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/ergoinu/rules.mk b/keyboards/ergoinu/rules.mk
index 5c600bcd2e..6f5debe00c 100644
--- a/keyboards/ergoinu/rules.mk
+++ b/keyboards/ergoinu/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/ergosaurus/config.h b/keyboards/ergosaurus/config.h
new file mode 100644
index 0000000000..c33972c1b8
--- /dev/null
+++ b/keyboards/ergosaurus/config.h
@@ -0,0 +1,251 @@
+/*
+Copyright 2019 cfbender
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBEEF
+#define PRODUCT_ID 0xFEED
+#define DEVICE_VER 0x0001
+#define MANUFACTURER reggalicious
+#define PRODUCT ergosaurus
+#define DESCRIPTION An ergo Alice clone from Reggalicious
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS \
+ { B5, B4, E6, 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
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default/config.h b/keyboards/ergosaurus/ergosaurus.c
index 41d70907eb..4c31455128 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default/config.h
+++ b/keyboards/ergosaurus/ergosaurus.c
@@ -1,4 +1,5 @@
-/* Copyright 2019 westfoxtrot
+
+/* Copyright 2019 cfbender
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,7 +14,4 @@
* You should 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
+#include "ergosaurus.h"
diff --git a/keyboards/ergosaurus/ergosaurus.h b/keyboards/ergosaurus/ergosaurus.h
new file mode 100644
index 0000000000..c78a2db32b
--- /dev/null
+++ b/keyboards/ergosaurus/ergosaurus.h
@@ -0,0 +1,38 @@
+/* Copyright 2019 cfbender
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define KNO KC_NO
+
+#define LAYOUT( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, \
+ K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, K67, \
+ 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, K33, K34, K35, K36, KNO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, KNO, KNO }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { KNO, K71, K72, K73, K74, K75, K76, KNO }, \
+ { K80, K81, K82, K83, K84, K85, KNO, K87 } \
+}
diff --git a/keyboards/ergosaurus/info.json b/keyboards/ergosaurus/info.json
new file mode 100644
index 0000000000..97873afd2e
--- /dev/null
+++ b/keyboards/ergosaurus/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Ergosaurus",
+ "maintainer": "cfbender",
+ "width": 19.75,
+ "height": 5.25,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"`", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.75, "y":0.25},
+ {"label":"1", "x":2.75, "y":0.25},
+ {"label":"2", "x":3.75, "y":0},
+ {"label":"3", "x":4.75, "y":0.25},
+ {"label":"4", "x":5.75, "y":0.25},
+ {"label":"5", "x":6.75, "y":0.25},
+ {"label":"6", "x":7.75, "y":0.25},
+ {"label":"7", "x":11, "y":0.25},
+ {"label":"8", "x":12, "y":0.25},
+ {"label":"9", "x":13, "y":0.25},
+ {"label":"0", "x":14, "y":0.25},
+ {"label":"-", "x":15, "y":0},
+ {"label":"=", "x":16, "y":0.25},
+ {"label":"|", "x":17, "y":0.25},
+ {"label":"Del", "x":18, "y":0.25},
+
+ {"label":"PgUp", "x":0.25, "y":1},
+ {"label":"Tab", "x":1.5, "y":1.25, "w":1.5},
+ {"label":"Q", "x":3, "y":1.25},
+ {"label":"W", "x":4.25, "y":1.25},
+ {"label":"E", "x":5.25, "y":1.25},
+ {"label":"R", "x":6.25, "y":1.25},
+ {"label":"T", "x":7.25, "y":1.25},
+ {"label":"Y", "x":10.5, "y":1.25},
+ {"label":"U", "x":11.5, "y":1.25},
+ {"label":"I", "x":12.5, "y":1.25},
+ {"label":"O", "x":13.5, "y":1.25},
+ {"label":"P", "x":14.75, "y":1.25},
+ {"label":"{", "x":15.75, "y":1.25},
+ {"label":"}", "x":16.75, "y":1.25},
+ {"label":"Backspace", "x":17.75, "y":1.25, "w":1.5},
+
+ {"label":"PgDn", "x":0, "y":2},
+ {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75},
+ {"label":"A", "x":3.25, "y":2.25},
+ {"label":"S", "x":4.5, "y":2.25},
+ {"label":"D", "x":5.5, "y":2.25},
+ {"label":"F", "x":6.5, "y":2.25},
+ {"label":"G", "x":7.5, "y":2.25},
+ {"label":"H", "x":10.75, "y":2.25},
+ {"label":"J", "x":11.75, "y":2.25},
+ {"label":"K", "x":12.75, "y":2.25},
+ {"label":"L", "x":13.75, "y":2.25},
+ {"label":":", "x":15.25, "y":2.25},
+ {"label":"\"", "x":16.25, "y":2.25},
+ {"label":"Enter", "x":17.25, "y":2.25, "w":2.25},
+
+ {"label":"Shift", "x":1.5, "y":3.25, "w":2.25},
+ {"label":"Z", "x":3.75, "y":3.25},
+ {"label":"X", "x":5, "y":3.25},
+ {"label":"C", "x":6, "y":3.25},
+ {"label":"V", "x":7, "y":3.25},
+ {"label":"B", "x":8, "y":3.25},
+ {"label":"B", "x":10.25, "y":3.25},
+ {"label":"N", "x":11.25, "y":3.25},
+ {"label":"M", "x":12.25, "y":3.25},
+ {"label":"<", "x":13.25, "y":3.25},
+ {"label":">", "x":15, "y":3.25},
+ {"label":"?", "x":16, "y":3.25},
+ {"label":"Shift", "x":17, "y":3.25, "w":1.75},
+ {"label":"Fn", "x":18.75, "y":3.25},
+
+ {"label":"Os", "x":1.5, "y":4.25, "w":1.5},
+ {"label":"Alt", "x":5, "y":4.25, "w":1.5},
+ {"label":"Enter", "x":6.5, "y":4.25, "w":2},
+ {"label":"Fn", "x":8.5, "y":4.25},
+ {"label":"Space", "x":10.25, "y":4.25, "w":2.25},
+ {"label":"Alt", "x":12.5, "y":4.25, "w":1.5},
+ {"label":"Ctrl", "x":18, "y":4.25, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ergosaurus/keymaps/default/keymap.c b/keyboards/ergosaurus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..565906e038
--- /dev/null
+++ b/keyboards/ergosaurus/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2019 cfbender
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define BASE 0
+#define LOWER 1
+#define RAISE 2
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(LOWER),
+ KC_LGUI, KC_LALT, KC_ENT, MO(RAISE), KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ [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_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RESET
+ )
+};
diff --git a/keyboards/ergosaurus/keymaps/default/readme.md b/keyboards/ergosaurus/keymaps/default/readme.md
new file mode 100644
index 0000000000..acd1216c79
--- /dev/null
+++ b/keyboards/ergosaurus/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# The default keymap for ergosaurus
+
+![ergosaurus_default](https://imgur.com/gsjk8yD.jpg)
diff --git a/keyboards/ergosaurus/readme.md b/keyboards/ergosaurus/readme.md
new file mode 100644
index 0000000000..cb1a02318b
--- /dev/null
+++ b/keyboards/ergosaurus/readme.md
@@ -0,0 +1,15 @@
+# Ergosaurus
+
+![ergosaurus](https://i.imgur.com/9yLCcpH.jpg)
+
+An Arduino Pro Micro driven Alice-clone PCB. Supports all Alice-style cases, given the clearance for the Pro Micro. Ergosaurus specific acrylic case files available [here](https://github.com/cfbender/Lubrigante).
+
+* Keyboard Maintainer: [cfbender](https://github.com/cfbender)
+* Hardware Supported: Ergosaurus PCB, Pro Micro
+* Hardware Availability: [KeyHive](https://keyhive.xyz)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ergosaurus: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/ergosaurus/rules.mk b/keyboards/ergosaurus/rules.mk
new file mode 100644
index 0000000000..b70e8d49fc
--- /dev/null
+++ b/keyboards/ergosaurus/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ergoslab/rev1/rules.mk b/keyboards/ergoslab/rev1/rules.mk
new file mode 100644
index 0000000000..fff00a1b51
--- /dev/null
+++ b/keyboards/ergoslab/rev1/rules.mk
@@ -0,0 +1,3 @@
+# Revision Specific Build Options
+# change yes to no to disable
+#
diff --git a/keyboards/ergotravel/rules.mk b/keyboards/ergotravel/rules.mk
index be7c8d990f..43f9379818 100644
--- a/keyboards/ergotravel/rules.mk
+++ b/keyboards/ergotravel/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/espectro/rules.mk b/keyboards/espectro/rules.mk
index 2d1c1eed09..065014b97f 100755
--- a/keyboards/espectro/rules.mk
+++ b/keyboards/espectro/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/eve/meteor/config.h b/keyboards/eve/meteor/config.h
index b23bc877fe..2100c3a458 100644
--- a/keyboards/eve/meteor/config.h
+++ b/keyboards/eve/meteor/config.h
@@ -36,4 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/eve/meteor/meteor.c b/keyboards/eve/meteor/meteor.c
index f5ecbad025..1d080b389c 100644
--- a/keyboards/eve/meteor/meteor.c
+++ b/keyboards/eve/meteor/meteor.c
@@ -16,32 +16,18 @@
#include "meteor.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/evil80/rules.mk b/keyboards/evil80/rules.mk
index 683f892460..46b76962b6 100644
--- a/keyboards/evil80/rules.mk
+++ b/keyboards/evil80/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/exclusive/e65/rules.mk b/keyboards/exclusive/e65/rules.mk
index 0b994a279b..0f27d19ac7 100644
--- a/keyboards/exclusive/e65/rules.mk
+++ b/keyboards/exclusive/e65/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = full # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/exclusive/e6v2/le/rules.mk b/keyboards/exclusive/e6v2/le/rules.mk
index e6cad94033..0b55856635 100644
--- a/keyboards/exclusive/e6v2/le/rules.mk
+++ b/keyboards/exclusive/e6v2/le/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# 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/exclusive/e6v2/le_bmc/config.h b/keyboards/exclusive/e6v2/le_bmc/config.h
index d0b976c1ec..ca680f5029 100644
--- a/keyboards/exclusive/e6v2/le_bmc/config.h
+++ b/keyboards/exclusive/e6v2/le_bmc/config.h
@@ -45,5 +45,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 }
#define DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLED_NUM 6
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c
index e3b81c81ba..df79cc5dcf 100644
--- a/keyboards/exclusive/e6v2/le_bmc/le_bmc.c
+++ b/keyboards/exclusive/e6v2/le_bmc/le_bmc.c
@@ -16,32 +16,18 @@
#include "le_bmc.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/exclusive/e6v2/le_bmc/rules.mk b/keyboards/exclusive/e6v2/le_bmc/rules.mk
index 106044ba72..9fe162b893 100644
--- a/keyboards/exclusive/e6v2/le_bmc/rules.mk
+++ b/keyboards/exclusive/e6v2/le_bmc/rules.mk
@@ -14,23 +14,23 @@ BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
WS2812_DRIVER = i2c
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OPT_DEFS = -DDEBUG_LEVEL=0
diff --git a/keyboards/exclusive/e6v2/oe/rules.mk b/keyboards/exclusive/e6v2/oe/rules.mk
index e6cad94033..0b55856635 100644
--- a/keyboards/exclusive/e6v2/oe/rules.mk
+++ b/keyboards/exclusive/e6v2/oe/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# 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/exclusive/e6v2/oe_bmc/config.h b/keyboards/exclusive/e6v2/oe_bmc/config.h
index fc7c91ca66..a6b56ba003 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/config.h
+++ b/keyboards/exclusive/e6v2/oe_bmc/config.h
@@ -45,5 +45,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, C2, C3, C4, C5, D7 }
#define DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLED_NUM 6
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c
index 97d354653f..ea74d87cb1 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c
+++ b/keyboards/exclusive/e6v2/oe_bmc/oe_bmc.c
@@ -16,32 +16,18 @@
#include "oe_bmc.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/exclusive/e6v2/oe_bmc/rules.mk b/keyboards/exclusive/e6v2/oe_bmc/rules.mk
index 106044ba72..9fe162b893 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/rules.mk
+++ b/keyboards/exclusive/e6v2/oe_bmc/rules.mk
@@ -14,23 +14,23 @@ BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
WS2812_DRIVER = i2c
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OPT_DEFS = -DDEBUG_LEVEL=0
diff --git a/keyboards/exclusive/e7v1/rules.mk b/keyboards/exclusive/e7v1/rules.mk
index 335e228bba..7bd87e2d66 100644
--- a/keyboards/exclusive/e7v1/rules.mk
+++ b/keyboards/exclusive/e7v1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = full # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/exent/config.h b/keyboards/exent/config.h
index 08d241f653..48aee2206f 100644
--- a/keyboards/exent/config.h
+++ b/keyboards/exent/config.h
@@ -39,7 +39,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
diff --git a/keyboards/exent/exent.c b/keyboards/exent/exent.c
index 82066f7e85..a935e9e67f 100644
--- a/keyboards/exent/exent.c
+++ b/keyboards/exent/exent.c
@@ -15,3 +15,23 @@
*/
#include "exent.h"
+
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D6);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
+ }
+ return true;
+}
diff --git a/keyboards/exent/rules.mk b/keyboards/exent/rules.mk
index 10442b31ba..0ea425ac7e 100644
--- a/keyboards/exent/rules.mk
+++ b/keyboards/exent/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h
index 9a31f92783..be442548d0 100644
--- a/keyboards/facew/config.h
+++ b/keyboards/facew/config.h
@@ -37,5 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/facew/facew.c b/keyboards/facew/facew.c
index fa58f0cf79..2f091ae6bd 100644
--- a/keyboards/facew/facew.c
+++ b/keyboards/facew/facew.c
@@ -17,30 +17,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "facew.h"
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
diff --git a/keyboards/facew/rules.mk b/keyboards/facew/rules.mk
index c4117d15d7..81cfb758c0 100644
--- a/keyboards/facew/rules.mk
+++ b/keyboards/facew/rules.mk
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
-CONSOLE_ENABLE = yes
+CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/fc660c/keymaps/mikefightsbears/keymap.c b/keyboards/fc660c/keymaps/mikefightsbears/keymap.c
new file mode 100644
index 0000000000..2c4f0aa83c
--- /dev/null
+++ b/keyboards/fc660c/keymaps/mikefightsbears/keymap.c
@@ -0,0 +1,34 @@
+/*
+Copyright 2017 Balz Guenat
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL,
+ 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, KC_UP,
+ KC_CAPS,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RCTL,MO(1), KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,KC_MUTE,KC_MPRV,KC_MNXT,KC_MPLY,_______, KC_PGUP,
+ _______,_______,_______, _______, _______,_______,_______, KC_HOME,KC_PGDN,KC_END
+ )
+};
diff --git a/keyboards/fc660c/keymaps/mikefightsbears/rules.mk b/keyboards/fc660c/keymaps/mikefightsbears/rules.mk
new file mode 100644
index 0000000000..454ba30058
--- /dev/null
+++ b/keyboards/fc660c/keymaps/mikefightsbears/rules.mk
@@ -0,0 +1,6 @@
+# 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
+# #
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk
index b817b404fd..3a3ac4e5d2 100644
--- a/keyboards/fc660c/rules.mk
+++ b/keyboards/fc660c/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk
index 596b96f1f4..54fadc8264 100644
--- a/keyboards/fc980c/rules.mk
+++ b/keyboards/fc980c/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/felix/rules.mk b/keyboards/felix/rules.mk
index 7371e3b1a0..1bcaf0b5e6 100644
--- a/keyboards/felix/rules.mk
+++ b/keyboards/felix/rules.mk
@@ -14,21 +14,21 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x4
diff --git a/keyboards/fleuron/rules.mk b/keyboards/fleuron/rules.mk
index 5695e68856..5724f3b98d 100644
--- a/keyboards/fleuron/rules.mk
+++ b/keyboards/fleuron/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/fluorite/config.h b/keyboards/fluorite/config.h
index 59af3eb265..7bae8a013c 100644
--- a/keyboards/fluorite/config.h
+++ b/keyboards/fluorite/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D3, D1, D0, D4, C6, D7, E6, B4, B5 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
diff --git a/keyboards/flx/virgo/info.json b/keyboards/flx/virgo/info.json
index 91fe3bc341..0bd70af639 100644
--- a/keyboards/flx/virgo/info.json
+++ b/keyboards/flx/virgo/info.json
@@ -1,12 +1,11 @@
{
- "keyboard_name": "flx-virgo-default",
+ "keyboard_name": "FLX Virgo",
"url": "",
"maintainer": "qmk",
"width": 20.25,
"height": 6.25,
"layouts": {
"LAYOUT": {
- "key_count": 91,
"layout": [
{"label":"K00 (C6,F0)", "x":0, "y":0},
{"label":"K01 (C6,F1)", "x":1.5, "y":0},
diff --git a/keyboards/flx/virgo/keymaps/default/keymap.c b/keyboards/flx/virgo/keymaps/default/keymap.c
index 789c369dbd..1384b91db0 100644
--- a/keyboards/flx/virgo/keymaps/default/keymap.c
+++ b/keyboards/flx/virgo/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 MechMerlin
+/* Copyright 2020 Flexerm
*
* This 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,20 +17,36 @@
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_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_LALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_TOGG, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_0, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+ [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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [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, KC_TRNS, KC_TRNS, KC_TRNS
),
}; \ No newline at end of file
diff --git a/keyboards/flx/virgo/keymaps/via/keymap.c b/keyboards/flx/virgo/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c10f3751ec
--- /dev/null
+++ b/keyboards/flx/virgo/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2020 Flexerm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+ [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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [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, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/flx/virgo/keymaps/via/readme.md b/keyboards/flx/virgo/keymaps/via/readme.md
new file mode 100644
index 0000000000..67398c8bd7
--- /dev/null
+++ b/keyboards/flx/virgo/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default VIA keymap for FLX - Virgo
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk b/keyboards/flx/virgo/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
+++ b/keyboards/flx/virgo/keymaps/via/rules.mk
diff --git a/keyboards/flx/virgo/readme.md b/keyboards/flx/virgo/readme.md
index 1edfeaf830..2d97574858 100644
--- a/keyboards/flx/virgo/readme.md
+++ b/keyboards/flx/virgo/readme.md
@@ -6,7 +6,7 @@ Custom Split TKL
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
* Hardware Supported: Virgo PCB
-* Hardware Availability: GB TBD
+* Hardware Availability: GB FEB 15th 2020 - to be held on Geekhack
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/flx/virgo/rules.mk b/keyboards/flx/virgo/rules.mk
index b9bb2915f1..c512b6a02f 100644
--- a/keyboards/flx/virgo/rules.mk
+++ b/keyboards/flx/virgo/rules.mk
@@ -1,3 +1,4 @@
+# MCU name
MCU = atmega32u4
# Bootloader selection
@@ -16,8 +17,8 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
@@ -32,5 +33,3 @@ FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LINK_TIME_OPTIMIZATION_ENABLE = yes
-# generated by KBFirmware JSON to QMK Parser
-# https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/flx/virgo/virgo.c b/keyboards/flx/virgo/virgo.c
index 102d91a709..142ddf3ebc 100644
--- a/keyboards/flx/virgo/virgo.c
+++ b/keyboards/flx/virgo/virgo.c
@@ -1,4 +1,5 @@
/* Copyright 2019 MechMerlin
+ * Edits etc 2020 Flexerm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,7 +20,7 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
- setPinOutput(E6);
+ setPinOutput(E6);
setPinOutput(B2);
matrix_init_user();
}
diff --git a/keyboards/flx/virgo/virgo.h b/keyboards/flx/virgo/virgo.h
index 015585c4e1..fcfcac50e4 100644
--- a/keyboards/flx/virgo/virgo.h
+++ b/keyboards/flx/virgo/virgo.h
@@ -1,4 +1,5 @@
/* Copyright 2019 MechMerlin
+ * Edits etc 2020 Flexerm
*
* This 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,26 +19,24 @@
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K66, K27, K37, K28, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \
- K80, K90, K81, K91, K82, K92, K83, KA3, K93, K84, K94, K85, K95, K86, K96, K97, \
- KA0, KB0, KA1, KB2, KB4, KB5, KA6, KB6, KA7, KB7, KA8 \
+ K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K66, K27, K37, K28, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \
+ K80, K90, K81, K91, K82, K92, K83, KA3, K93, K84, K94, K85, K95, K86, K96, K97, \
+ KA0, KB0, KA1, KB2, KB4, KB5, KA6, KB6, KA7, KB7, KA8 \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
- { KC_NO, K11, K12, K13, K14, K15, K16, K17, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, KC_NO }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57, KC_NO }, \
- { K60, K61, K62, K63, K64, K65, K66, KC_NO, KC_NO }, \
- { K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO }, \
- { K80, K81, K82, K83, K84, K85, K86, KC_NO, KC_NO }, \
- { K90, K91, K92, K93, K94, K95, K96, K97, KC_NO }, \
- { KA0, KA1, KC_NO, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \
- { KB0, KC_NO, KB2, KC_NO, KB4, KB5, KB6, KB7, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
+ { KC_NO, K11, K12, K13, K14, K15, K16, K17, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, KC_NO }, \
+ { K60, K61, K62, K63, K64, K65, K66, KC_NO, KC_NO }, \
+ { K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO }, \
+ { K80, K81, K82, K83, K84, K85, K86, KC_NO, KC_NO }, \
+ { K90, K91, K92, K93, K94, K95, K96, K97, KC_NO }, \
+ { KA0, KA1, KC_NO, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \
+ { KB0, KC_NO, KB2, KC_NO, KB4, KB5, KB6, KB7, KC_NO }, \
}
-// generated by KBFirmware JSON to QMK Parser
-// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file
diff --git a/keyboards/fortitude60/rules.mk b/keyboards/fortitude60/rules.mk
index 1fdbfb0163..43d682cced 100644
--- a/keyboards/fortitude60/rules.mk
+++ b/keyboards/fortitude60/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/four_banger/rules.mk b/keyboards/four_banger/rules.mk
index d37439a0f7..ae77f0a0e1 100644
--- a/keyboards/four_banger/rules.mk
+++ b/keyboards/four_banger/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/foxlab/leaf60/hotswap/rules.mk b/keyboards/foxlab/leaf60/hotswap/rules.mk
index 6c1ec4525c..1239cee3fd 100644
--- a/keyboards/foxlab/leaf60/hotswap/rules.mk
+++ b/keyboards/foxlab/leaf60/hotswap/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/foxlab/leaf60/universal/rules.mk b/keyboards/foxlab/leaf60/universal/rules.mk
index 1fcd0aa22d..9f572eb2e3 100644
--- a/keyboards/foxlab/leaf60/universal/rules.mk
+++ b/keyboards/foxlab/leaf60/universal/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 60_ansi 60_hhkb
diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk
index 4894f1f4d8..e5d540e0ad 100755
--- a/keyboards/fractal/rules.mk
+++ b/keyboards/fractal/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
diff --git a/keyboards/freyr/rules.mk b/keyboards/freyr/rules.mk
index 1a00e299fa..ee4b122eb4 100644
--- a/keyboards/freyr/rules.mk
+++ b/keyboards/freyr/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Supported layouts
LAYOUTS = tkl_ansi tkl_iso
diff --git a/keyboards/ft/mars80/config.h b/keyboards/ft/mars80/config.h
index 1bf9392872..8c1ebe4baf 100644
--- a/keyboards/ft/mars80/config.h
+++ b/keyboards/ft/mars80/config.h
@@ -38,7 +38,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
diff --git a/keyboards/ft/mars80/mars80.c b/keyboards/ft/mars80/mars80.c
index 8e51274087..2c628a6a23 100644
--- a/keyboards/ft/mars80/mars80.c
+++ b/keyboards/ft/mars80/mars80.c
@@ -16,32 +16,20 @@
#include "mars80.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/geekboards/tester/rules.mk b/keyboards/geekboards/tester/rules.mk
index 1ca57f6d09..03b4e83992 100644
--- a/keyboards/geekboards/tester/rules.mk
+++ b/keyboards/geekboards/tester/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/gergo/keymaps/colemak/rules.mk b/keyboards/gergo/keymaps/colemak/rules.mk
index ddec12d1b1..3b81fdfa1b 100644
--- a/keyboards/gergo/keymaps/colemak/rules.mk
+++ b/keyboards/gergo/keymaps/colemak/rules.mk
@@ -6,7 +6,7 @@
BALLER = no # Enable to ball out
BALLSTEP = 20 # Multiple in px to move, multiplied by layer number
SCROLLSTEP = 1 # Lines to scroll with ball
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700), needed for baller
+MOUSEKEY_ENABLE = yes # Mouse keys, needed for baller
#Debug options
VERBOSE = no
diff --git a/keyboards/gergo/keymaps/default/rules.mk b/keyboards/gergo/keymaps/default/rules.mk
index da2d03af2c..351c525583 100644
--- a/keyboards/gergo/keymaps/default/rules.mk
+++ b/keyboards/gergo/keymaps/default/rules.mk
@@ -6,7 +6,7 @@
BALLER = no # Enable to ball out
BALLSTEP = 20 # Multiple in px to move, multiplied by layer number
SCROLLSTEP = 1 # Lines to scroll with ball
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700), needed for baller
+MOUSEKEY_ENABLE = yes # Mouse keys, needed for baller
#Debug options
VERBOSE = yes
diff --git a/keyboards/gergo/keymaps/oled/rules.mk b/keyboards/gergo/keymaps/oled/rules.mk
index fae936effb..1661d43d1f 100644
--- a/keyboards/gergo/keymaps/oled/rules.mk
+++ b/keyboards/gergo/keymaps/oled/rules.mk
@@ -6,7 +6,7 @@
BALLER = no # Enable to ball out
BALLSTEP = 20 # Multiple in px to move, multiplied by layer number
SCROLLSTEP = 1 # Lines to scroll with ball
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700), needed for baller
+MOUSEKEY_ENABLE = yes # Mouse keys, needed for baller
OLED_DRIVER_ENABLE = yes
LOCAL_GLCDFONT = yes
diff --git a/keyboards/deltasplit75/config.h b/keyboards/getta25/config.h
index 8a2fbb3b26..cfb6bf4ffc 100644
--- a/keyboards/deltasplit75/config.h
+++ b/keyboards/getta25/config.h
@@ -1,5 +1,6 @@
/*
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
@@ -15,9 +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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
-
-#endif
diff --git a/keyboards/getta25/getta25.c b/keyboards/getta25/getta25.c
new file mode 100644
index 0000000000..4f8cc63b42
--- /dev/null
+++ b/keyboards/getta25/getta25.c
@@ -0,0 +1 @@
+#include "getta25.h"
diff --git a/keyboards/getta25/getta25.h b/keyboards/getta25/getta25.h
new file mode 100644
index 0000000000..ff44820173
--- /dev/null
+++ b/keyboards/getta25/getta25.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_getta25_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/getta25/info.json b/keyboards/getta25/info.json
new file mode 100644
index 0000000000..d3a02f2985
--- /dev/null
+++ b/keyboards/getta25/info.json
@@ -0,0 +1,38 @@
+{
+ "keyboard_name": "Getta25",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "width": 5.25,
+ "height": 6.25,
+ "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/getta25/keymaps/default/config.h b/keyboards/getta25/keymaps/default/config.h
new file mode 100644
index 0000000000..8c4e1f5129
--- /dev/null
+++ b/keyboards/getta25/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+
diff --git a/keyboards/getta25/keymaps/default/keymap.c b/keyboards/getta25/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a70df01c18
--- /dev/null
+++ b/keyboards/getta25/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _ARROW,
+ _ADJUST,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ //,-----------------------------------|
+LT(_ADJUST,KC_ESC), KC_F2, KC_EQL, KC_DEL,
+ //|--------+--------+--------+--------|
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ //|--------+--------+--------+--------+--------|
+ KC_P7, KC_P8, KC_P9, KC_ESC,
+ //|--------+--------+--------+--------+--------|
+ KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F2,
+ //|--------+--------+--------+--------+--------|
+ KC_P1, KC_P2, KC_P3, KC_DEL,
+ //|--------+--------+--------+--------+--------|
+LT(_ARROW, KC_P0), KC_PDOT, KC_PENT, KC_BSPC
+ //`--------------------------------------------'
+ ),
+
+ [_ARROW] = LAYOUT(
+ //,-----------------------------------|
+ _______, _______, _______, _______,
+ //|--------+--------+--------+--------|
+ XXXXXXX, _______, _______, _______,
+ //|--------+--------+--------+--------+--------|
+ XXXXXXX, KC_UP, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______,
+ //|--------+--------+--------+--------+--------|
+ XXXXXXX, KC_DOWN, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ MO(_ARROW), _______, _______, _______
+ //`--------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------|
+ MO(_ADJUST), _______, _______, _______,
+ //|--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_SAD, RGB_SAI, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_HUD, RGB_HUI, XXXXXXX, RGB_TOG, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_VAD, RGB_VAI, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ _______, _______, RGB_MOD, _______
+ //`--------------------------------------------'
+ )
+};
diff --git a/keyboards/getta25/keymaps/oled/config.h b/keyboards/getta25/keymaps/oled/config.h
new file mode 100644
index 0000000000..be988915c2
--- /dev/null
+++ b/keyboards/getta25/keymaps/oled/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define OLED_FONT_H "keyboards/getta25/keymaps/oled/glcdfont.c"
+
diff --git a/keyboards/getta25/keymaps/oled/glcdfont.c b/keyboards/getta25/keymaps/oled/glcdfont.c
new file mode 100644
index 0000000000..939db32ca6
--- /dev/null
+++ b/keyboards/getta25/keymaps/oled/glcdfont.c
@@ -0,0 +1,231 @@
+// 'loveLain', 128x32px
+
+#include "progmem.h"
+
+static const unsigned char font[] PROGMEM = {
+0x00,0x00,0x00,0x00,0x00,0x00, // 00
+0x3E,0x5B,0x4F,0x5B,0x3E,0x00, // 01
+0x3E,0x6B,0x4F,0x6B,0x3E,0x00, // 02
+0x1C,0x3E,0x7C,0x3E,0x1C,0x00, // 03
+0x18,0x3C,0x7E,0x3C,0x18,0x00, // 04
+0x1C,0x57,0x7D,0x57,0x1C,0x00, // 05
+0x1C,0x5E,0x7F,0x5E,0x1C,0x00, // 06
+0x00,0x18,0x3C,0x18,0x00,0x00, // 07
+0xFF,0xE7,0xC3,0xE7,0xFF,0x00, // 08
+0x00,0x18,0x24,0x18,0x00,0x00, // 09
+0xFF,0xE7,0xDB,0xE7,0xFF,0x00, // 0A
+0x30,0x48,0x3A,0x06,0x0E,0x00, // 0B
+0x26,0x29,0x79,0x29,0x26,0x00, // 0C
+0x40,0x7F,0x05,0x05,0x07,0x00, // 0D
+0x40,0x7F,0x05,0x25,0x3F,0x00, // 0E
+0x5A,0x3C,0xE7,0x3C,0x5A,0x00, // 0F
+0x7F,0x3E,0x1C,0x1C,0x08,0x00, // 10
+0x08,0x1C,0x1C,0x3E,0x7F,0x00, // 11
+0x14,0x22,0x7F,0x22,0x14,0x00, // 12
+0x5F,0x5F,0x00,0x5F,0x5F,0x00, // 13
+0x06,0x09,0x7F,0x01,0x7F,0x00, // 14
+0x00,0x66,0x89,0x95,0x6A,0x00, // 15
+0x60,0x60,0x60,0x60,0x60,0x00, // 16
+0x94,0xA2,0xFF,0xA2,0x94,0x00, // 17
+0x08,0x04,0x7E,0x04,0x08,0x00, // 18
+0x10,0x20,0x7E,0x20,0x10,0x00, // 19
+0x08,0x08,0x2A,0x1C,0x08,0x00, // 1A
+0x08,0x1C,0x2A,0x08,0x08,0x00, // 1B
+0x1E,0x10,0x10,0x10,0x10,0x00, // 1C
+0x0C,0x1E,0x0C,0x1E,0x0C,0x00, // 1D
+0x30,0x38,0x3E,0x38,0x30,0x00, // 1E
+0x06,0x0E,0x3E,0x0E,0x06,0x00, // 1F
+0x00,0x00,0x00,0x00,0x00,0x00, // 20
+0x00,0x00,0x5F,0x00,0x00,0x00, // 21 !
+0x00,0x07,0x00,0x07,0x00,0x00, // 22 "
+0x14,0x7F,0x14,0x7F,0x14,0x00, // 23 #
+0x24,0x2A,0x7F,0x2A,0x12,0x00, // 24 $
+0x23,0x13,0x08,0x64,0x62,0x00, // 25 %
+0x36,0x49,0x56,0x20,0x50,0x00, // 26 &
+0x00,0x08,0x07,0x03,0x00,0x00, // 27 '
+0x00,0x1C,0x22,0x41,0x00,0x00, // 28 (
+0x00,0x41,0x22,0x1C,0x00,0x00, // 29 )
+0x2A,0x1C,0x7F,0x1C,0x2A,0x00, // 2A *
+0x08,0x08,0x3E,0x08,0x08,0x00, // 2B +
+0x00,0x80,0x70,0x30,0x00,0x00, // 2C ,
+0x08,0x08,0x08,0x08,0x08,0x00, // 2D -
+0x00,0x00,0x60,0x60,0x00,0x00, // 2E .
+0x20,0x10,0x08,0x04,0x02,0x00, // 2F /
+0x3E,0x51,0x49,0x45,0x3E,0x00, // 30 0
+0x00,0x42,0x7F,0x40,0x00,0x00, // 31 1
+0x72,0x49,0x49,0x49,0x46,0x00, // 32 2
+0x21,0x41,0x49,0x4D,0x33,0x00, // 33 3
+0x18,0x14,0x12,0x7F,0x10,0x00, // 34 4
+0x27,0x45,0x45,0x45,0x39,0x00, // 35 5
+0x3C,0x4A,0x49,0x49,0x31,0x00, // 36 6
+0x41,0x21,0x11,0x09,0x07,0x00, // 37 7
+0x36,0x49,0x49,0x49,0x36,0x00, // 38 8
+0x46,0x49,0x49,0x29,0x1E,0x00, // 39 9
+0x00,0x00,0x14,0x00,0x00,0x00, // 3A :
+0x00,0x40,0x34,0x00,0x00,0x00, // 3B ;
+0x00,0x08,0x14,0x22,0x41,0x00, // 3C <
+0x14,0x14,0x14,0x14,0x14,0x00, // 3D =
+0x00,0x41,0x22,0x14,0x08,0x00, // 3E >
+0x02,0x01,0x59,0x09,0x06,0x00, // 3F ?
+0x3E,0x41,0x5D,0x59,0x4E,0x00, // 40 @
+0x7C,0x12,0x11,0x12,0x7C,0x00, // 41 A
+0x7F,0x49,0x49,0x49,0x36,0x00, // 42 B
+0x3E,0x41,0x41,0x41,0x22,0x00, // 43 C
+0x7F,0x41,0x41,0x41,0x3E,0x00, // 44 D
+0x7F,0x49,0x49,0x49,0x41,0x00, // 45 E
+0x7F,0x09,0x09,0x09,0x01,0x00, // 46 F
+0x3E,0x41,0x41,0x51,0x73,0x00, // 47 G
+0x7F,0x08,0x08,0x08,0x7F,0x00, // 48 H
+0x00,0x41,0x7F,0x41,0x00,0x00, // 49 I
+0x20,0x40,0x41,0x3F,0x01,0x00, // 4A J
+0x7F,0x08,0x14,0x22,0x41,0x00, // 4B K
+0x7F,0x40,0x40,0x40,0x40,0x00, // 4C L
+0x7F,0x02,0x1C,0x02,0x7F,0x00, // 4D M
+0x7F,0x04,0x08,0x10,0x7F,0x00, // 4E N
+0x3E,0x41,0x41,0x41,0x3E,0x00, // 4F O
+0x7F,0x09,0x09,0x09,0x06,0x00, // 50 P
+0x3E,0x41,0x51,0x21,0x5E,0x00, // 51 Q
+0x7F,0x09,0x19,0x29,0x46,0x00, // 52 R
+0x26,0x49,0x49,0x49,0x32,0x00, // 53 S
+0x03,0x01,0x7F,0x01,0x03,0x00, // 54 T
+0x3F,0x40,0x40,0x40,0x3F,0x00, // 55 U
+0x1F,0x20,0x40,0x20,0x1F,0x00, // 56 V
+0x3F,0x40,0x38,0x40,0x3F,0x00, // 57 W
+0x63,0x14,0x08,0x14,0x63,0x00, // 58 X
+0x03,0x04,0x78,0x04,0x03,0x00, // 59 Y
+0x61,0x59,0x49,0x4D,0x43,0x00, // 5A Z
+0x00,0x7F,0x41,0x41,0x41,0x00, // 5B [
+0x02,0x04,0x08,0x10,0x20,0x00, // 5C \ .
+0x00,0x41,0x41,0x41,0x7F,0x00, // 5D ]
+0x04,0x02,0x01,0x02,0x04,0x00, // 5E ^
+0x40,0x40,0x40,0x40,0x40,0x00, // 5F _
+0x00,0x03,0x07,0x08,0x00,0x00, // 60 `
+0x20,0x54,0x54,0x78,0x40,0x00, // 61 a
+0x7F,0x28,0x44,0x44,0x38,0x00, // 62 b
+0x38,0x44,0x44,0x44,0x28,0x00, // 63 c
+0x38,0x44,0x44,0x28,0x7F,0x00, // 64 d
+0x38,0x54,0x54,0x54,0x18,0x00, // 65 e
+0x00,0x08,0x7E,0x09,0x02,0x00, // 66 f
+0x18,0xA4,0xA4,0x9C,0x78,0x00, // 67 g
+0x7F,0x08,0x04,0x04,0x78,0x00, // 68 h
+0x00,0x44,0x7D,0x40,0x00,0x00, // 69 i
+0x20,0x40,0x40,0x3D,0x00,0x00, // 6A j
+0x7F,0x10,0x28,0x44,0x00,0x00, // 6B k
+0x00,0x41,0x7F,0x40,0x00,0x00, // 6C l
+0x7C,0x04,0x78,0x04,0x78,0x00, // 6D m
+0x7C,0x08,0x04,0x04,0x78,0x00, // 6E n
+0x38,0x44,0x44,0x44,0x38,0x00, // 6F o
+0xFC,0x18,0x24,0x24,0x18,0x00, // 70 p
+0x18,0x24,0x24,0x18,0xFC,0x00, // 71 q
+0x7C,0x08,0x04,0x04,0x08,0x00, // 72 r
+0x48,0x54,0x54,0x54,0x24,0x00, // 73 s
+0x04,0x04,0x3F,0x44,0x24,0x00, // 74 t
+0x3C,0x40,0x40,0x20,0x7C,0x00, // 75 u
+0x1C,0x20,0x40,0x20,0x1C,0x00, // 76 v
+0x3C,0x40,0x30,0x40,0x3C,0x00, // 77 w
+0x44,0x28,0x10,0x28,0x44,0x00, // 78 x
+0x4C,0x90,0x90,0x90,0x7C,0x00, // 79 y
+0x44,0x64,0x54,0x4C,0x44,0x00, // 7A z
+0x00,0x08,0x36,0x41,0x00,0x00, // 7B {
+0x00,0x00,0x77,0x00,0x00,0x00, // 7C |
+0x00,0x41,0x36,0x08,0x00,0x00, // 7D }
+0x02,0x01,0x02,0x04,0x02,0x00, // 7E ~
+0x3C,0x26,0x23,0x26,0x3C,0x00, // 7F
+0xC7,0xC7,0xC7,0x00,0x00,0x00, // 80
+0x00,0x20,0x60,0x60,0x60,0x60, // 81
+0x60,0xE0,0x20,0x20,0x20,0x20, // 82
+0x20,0x60,0x60,0x00,0x00,0x00, // 83
+0x00,0x00,0x00,0xC7,0xC7,0xC7, // 84
+0xC7,0xC7,0xC7,0x00,0x00,0x00, // 85
+0x00,0xE0,0x70,0x50,0xFE,0x7A, // 86
+0x02,0x00,0x20,0x60,0xE0,0xF3, // 87
+0x3E,0x30,0x10,0x10,0x00,0x00, // 88
+0x00,0x00,0x00,0xC7,0xC7,0xC7, // 89
+0xC7,0xC7,0xC7,0x00,0x00,0x80, // 8A
+0xC0,0xC3,0xA1,0x90,0x98,0x84, // 8B
+0x83,0x00,0x00,0x1E,0x09,0x0C, // 8C
+0x04,0xC4,0x7C,0x18,0x00,0x00, // 8D
+0x00,0x00,0x00,0xC7,0xC7,0xC7, // 8E
+0x00,0x00,0x00,0x00,0x00,0x00, // 8F
+0x00,0x00,0x00,0x00,0x00,0x00, // 90
+0x00,0x00,0x00,0x00,0x00,0x00, // 91
+0x00,0x00,0x00,0x00,0x00,0x00, // 92
+0x00,0x00,0x00,0x00,0x00,0x00, // 93
+0x00,0x00,0x00,0x00,0x00,0xE0, // 94
+0xF0,0xF0,0xF0,0xE0,0xEC,0xEE, // 95
+0xF7,0xF3,0x70,0x20,0x00,0x7C, // 96
+0x7C,0x7C,0x7E,0x00,0x7E,0x7E, // 97
+0x7E,0x7F,0x7F,0x7F,0x00,0x00, // 98
+0x80,0xC0,0xE0,0x7E,0x5B,0x4F, // 99
+0x5B,0xFE,0xC0,0x00,0x00,0xC0, // 9A
+0x00,0xDC,0xD7,0xDE,0xDE,0xDE, // 9B
+0xD7,0xDC,0x00,0xC0,0x00,0x00, // 9C
+0x00,0x00,0x00,0x00,0x00,0x00, // 9D
+0x00,0x00,0x00,0x00,0x00,0x00, // 9E
+0x00,0x00,0x00,0x00,0x00,0xFF, // 9F
+0x71,0x71,0x71,0x00,0x00,0x00, // A0
+0x00,0x00,0x00,0x00,0x00,0x00, // A1 ?
+0xC0,0xFF,0x00,0x08,0x0E,0x0E, // A2 ?
+0x0C,0x00,0x00,0x00,0x00,0x00, // A3 ?
+0x00,0x00,0x00,0x71,0x71,0x71, // A4 ?
+0x71,0x71,0x71,0x00,0x00,0x08, // A5 ?
+0x08,0x09,0x18,0x25,0x61,0x31, // A6 ?
+0x1F,0x06,0x04,0x06,0x13,0x32, // A7 §
+0x32,0x62,0x02,0x06,0x0C,0x08, // A8 ¨
+0x00,0x00,0x00,0x71,0x71,0x71, // A9 ?
+0x71,0x71,0x71,0x00,0x00,0x00, // AA ?
+0x00,0x00,0x00,0x00,0x00,0x00, // AB ?
+0x09,0x11,0x18,0x08,0x0C,0x06, // AC ?
+0x03,0x00,0x00,0x00,0x00,0x00, // AD ?
+0x00,0x00,0x00,0x71,0x71,0x71, // AE ?
+0x00,0x00,0x00,0x00,0x00,0x00, // AF ?
+0x00,0x00,0x00,0x00,0x00,0x00, // B0 °
+0x00,0x00,0x00,0x00,0x00,0x00, // B1 ±
+0x00,0x00,0x00,0x00,0x00,0x00, // B2 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // B3 ?
+0x00,0x00,0x00,0x00,0x00,0x0F, // B4 ´
+0x1F,0x3F,0x7F,0x7F,0x7F,0x7F, // B5 ?
+0x7F,0x3F,0x1E,0x0C,0x00,0x1F, // B6 ¶
+0x1F,0x1F,0x3F,0x00,0x3F,0x3F, // B7 ?
+0x3F,0x7F,0x7F,0x7F,0x00,0x30, // B8 ?
+0x7B,0x7F,0x78,0x30,0x20,0x20, // B9 ?
+0x30,0x78,0x7F,0x3B,0x00,0x03, // BA ?
+0x00,0x0F,0x7F,0x0F,0x0F,0x0F, // BB ?
+0x7F,0x0F,0x00,0x03,0x00,0x00, // BC ?
+0x00,0x00,0x00,0x00,0x00,0x00, // BD ?
+0x00,0x00,0x00,0x00,0x00,0x00, // BE ?
+0x00,0x00,0x00,0x00,0x00,0xFF, // BF ?
+0x1C,0x1C,0x1C,0x00,0x00,0x00, // C0 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // C1 ?
+0x07,0x0F,0x00,0x00,0x00,0x00, // C2 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // C3 ?
+0x00,0x00,0x00,0x1C,0x1C,0x1C, // C4 ?
+0x1C,0x1C,0x1C,0x00,0x00,0x00, // C5 ?
+0x00,0x00,0x80,0x80,0xC0,0x40, // C6 ?
+0x80,0x00,0x00,0x00,0xC0,0x40, // C7 ?
+0x40,0xC0,0xC0,0xC0,0x00,0x00, // C8 ?
+0x00,0x00,0x00,0x1C,0x1C,0x1C, // C9 ?
+0x1C,0x1C,0x1C,0x00,0x00,0x00, // CA ?
+0x00,0x00,0x00,0x00,0x00,0x00, // CB ?
+0x00,0x00,0x00,0x00,0x00,0x00, // CC ?
+0x00,0x00,0x00,0x00,0x00,0x00, // CD ?
+0x00,0x00,0x00,0x1C,0x1C,0x1C, // CE ?
+0x00,0x00,0x00,0x00,0x00,0x00, // CF ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D0 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D1 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D2 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D3 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D4 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D5 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D6 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D7 ×
+0x00,0x00,0x00,0x00,0x00,0x00, // D8 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // D9 ?
+0x00,0x00,0x00,0x00,0x00,0x00, // DA ?
+0x00,0x00,0x00,0x00,0x00,0x00, // DB ?
+0x00,0x00,0x00,0x00,0x00,0x00, // DC ?
+0x00,0x00,0x00,0x00,0x00,0x00, // DD ?
+0x00,0x00,0x00,0x00,0x00,0x00, // DE ?
+0x00,0x00,0x00,0x00,0x00,0xFF, // DF ?
+};
+static const unsigned int fontLen = 512;
diff --git a/keyboards/getta25/keymaps/oled/keymap.c b/keyboards/getta25/keymaps/oled/keymap.c
new file mode 100644
index 0000000000..44833857d3
--- /dev/null
+++ b/keyboards/getta25/keymaps/oled/keymap.c
@@ -0,0 +1,204 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+#ifdef OLED_DRIVER_ENABLE
+static uint32_t oled_timer = 0;
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _ARROW,
+ _MACRO,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE,
+ SEND_SUM,
+ SEND_AVE,
+ SEND_CIF,
+ SEND_MAX,
+ SEND_MIN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ //,-----------------------------------|
+ KC_ESC, KC_F2, JP_EQL, KC_DEL,
+ //|--------+--------+--------+--------|
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ //|--------+--------+--------+--------+--------|
+ KC_P7, KC_P8, KC_P9, LCTL(JP_LBRC),
+ //|--------+--------+--------+--------+--------|
+ KC_P4, KC_P5, KC_P6, KC_PPLS, JP_EQL,
+ //|--------+--------+--------+--------+--------|
+ KC_P1, KC_P2, KC_P3, KC_DEL,
+ //|--------+--------+--------+--------+--------|
+LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC
+ //`--------------------------------------------'
+ ),
+
+ [_ARROW] = LAYOUT(
+ //,-----------------------------------|
+ _______, _______, _______, _______,
+ //|--------+--------+--------+--------|
+ XXXXXXX, _______, _______, _______,
+ //|--------+--------+--------+--------+--------|
+ XXXXXXX, KC_UP, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______,
+ //|--------+--------+--------+--------+--------|
+ XXXXXXX, KC_DOWN, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ MO(_ARROW), MO(_MACRO), _______, _______
+ //`--------------------------------------------'
+ ),
+
+ [_MACRO] = LAYOUT(
+ //,-----------------------------------|
+ _______, _______, _______, _______,
+ //|--------+--------+--------+--------|
+ SEND_MIN,SEND_MAX,SEND_CIF,SEND_AVE,
+ //|--------+--------+--------+--------+--------|
+ KC_F7, KC_F8, KC_F9, _______,
+ //|--------+--------+--------+--------+--------|
+ KC_F4, KC_F5, KC_F6,SEND_SUM, _______,
+ //|--------+--------+--------+--------+--------|
+ KC_F11, KC_F12, KC_F3, _______,
+ //|--------+--------+--------+--------+--------|
+ _______, _______, JP_RPRN, _______
+ //`--------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------|
+ _______, _______, _______, _______,
+ //|--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_SAD, RGB_SAI, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_HUD, RGB_HUI, XXXXXXX, RGB_TOG, _______,
+ //|--------+--------+--------+--------+--------|
+ RGB_VAD, RGB_VAI, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------|
+ _______, _______, RGB_MOD, _______
+ //`--------------------------------------------'
+ )
+};
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _ARROW, _MACRO, _ADJUST);
+#ifdef RGBLIGHT_ENABLE
+ switch (get_highest_layer(state)) {
+ case _ARROW:
+ rgblight_sethsv_at(HSV_BLUE, 0);
+ break;
+ case _MACRO:
+ rgblight_sethsv_at(HSV_RED, 0);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_at(HSV_PURPLE, 0);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_sethsv_range( 0, 0, 0, 0, 1);
+ break;
+ }
+ rgblight_set_effect_range( 1, 8);
+#endif
+return state;
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ if (record->event.pressed) {
+ #ifdef OLED_DRIVER_ENABLE
+ oled_timer = timer_read32();
+ #endif
+ }
+ switch (keycode) {
+ case SEND_SUM:
+ if (record->event.pressed) {
+ SEND_STRING("_SUM*");
+ }
+ break;
+ case SEND_AVE:
+ if (record->event.pressed) {
+ SEND_STRING("_AVERAGE*");
+ }
+ break;
+ case SEND_CIF:
+ if (record->event.pressed) {
+ SEND_STRING("_COUNTIF*");
+ }
+ break;
+ case SEND_MAX:
+ if (record->event.pressed) {
+ SEND_STRING("_MAX*");
+ }
+ break;
+ case SEND_MIN:
+ if (record->event.pressed) {
+ SEND_STRING("_MIN*");
+ }
+ break;
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+void render_layer_state(void) {
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("LAYER"), false);
+ oled_write_P(PSTR("Arrow"), layer_state_is(_ARROW));
+ oled_write_P(PSTR("Macro"), layer_state_is(_MACRO));
+ oled_write_P(PSTR("Adjus"), layer_state_is(_ADJUST));
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_keylock_status(led_t led_state) {
+ oled_write_P(PSTR("NumL "), led_state.num_lock);
+}
+
+void render_layer_messages(void) {
+ oled_write_P(PSTR("GETtA 25 For Your Good Job. "), false);
+}
+
+void render_status(void) {
+ /* Show Keyboard Layout */
+ render_layer_state();
+ render_keylock_status(host_keyboard_led_state());
+}
+
+void oled_task_user(void) {
+ static const char PROGMEM font_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,
+
+ 0x85,0x86,0x87,0x88,0x89,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,
+
+ 0x8a,0x8b,0x8c,0x8d,0x8e,
+ 0xaa,0xab,0xac,0xad,0xae,
+ 0xca,0xcb,0xcc,0xcd,0xce,0
+ };
+ oled_write_P(font_logo, false);
+
+ render_status(); // Renders the current keyboard state (layer, lock)
+}
+
+#endif
diff --git a/keyboards/getta25/readme.md b/keyboards/getta25/readme.md
new file mode 100644
index 0000000000..886e52a2ea
--- /dev/null
+++ b/keyboards/getta25/readme.md
@@ -0,0 +1,17 @@
+# getta25
+
+![getta25](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20191127/20191127005608.png)
+
+This is 25 keys tenkeypad.
+
+* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+* Hardware Supported: Getta25 PCB, Pro Micro
+* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/1700006)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make getta25: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).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/getta25-rev2-build-guide)
diff --git a/keyboards/getta25/rev1/config.h b/keyboards/getta25/rev1/config.h
new file mode 100644
index 0000000000..3ad74695cc
--- /dev/null
+++ b/keyboards/getta25/rev1/config.h
@@ -0,0 +1,76 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x0013
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT getta25
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B2 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#define RGBLED_NUM 9 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #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
diff --git a/keyboards/getta25/rev1/rev1.c b/keyboards/getta25/rev1/rev1.c
new file mode 100644
index 0000000000..520a869e57
--- /dev/null
+++ b/keyboards/getta25/rev1/rev1.c
@@ -0,0 +1 @@
+#include "rev1.h"
diff --git a/keyboards/getta25/rev1/rev1.h b/keyboards/getta25/rev1/rev1.h
new file mode 100644
index 0000000000..98f4318a6a
--- /dev/null
+++ b/keyboards/getta25/rev1/rev1.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "getta25.h"
+
+/*
+ * ,-----------------------.
+ * | L05 | L15 | L25 | L35 |
+ * |-----------------------+
+ * | L04 | L14 | L24 | L34 |
+ * |-----------------------------+
+ * | L03 | L13 | L23 | | L43 |
+ * |-----------------------------+
+ * | L02 | L12 | L22 | L32 | L42 |
+ * |-----------------------------+
+ * | L01 | L11 | L21 | | L41 |
+ * |-----------------------------+
+ * | L00 | | L20 | L30 | L40 |
+ * ,-----------------------------'
+ */
+
+#define LAYOUT( \
+ L05, L15, L25, L35, \
+ L04, L14, L24, L34, \
+ L03, L13, L23, L43, \
+ L02, L12, L22, L32, L42, \
+ L01, L11, L21, L41, \
+ L00, L20, L30, L40 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ {KC_NO, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30,KC_NO, L32,KC_NO, L34, L35 }, \
+ { L40, L41, L42, L43,KC_NO,KC_NO } \
+ }
diff --git a/keyboards/getta25/rev1/rules.mk b/keyboards/getta25/rev1/rules.mk
new file mode 100644
index 0000000000..fff00a1b51
--- /dev/null
+++ b/keyboards/getta25/rev1/rules.mk
@@ -0,0 +1,3 @@
+# Revision Specific Build Options
+# change yes to no to disable
+#
diff --git a/keyboards/getta25/rules.mk b/keyboards/getta25/rules.mk
new file mode 100644
index 0000000000..65aca76133
--- /dev/null
+++ b/keyboards/getta25/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+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.
+OLED_DRIVER_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
+
+DEFAULT_FOLDER = getta25/rev1
diff --git a/keyboards/gh60/revc/revc.h b/keyboards/gh60/revc/revc.h
index dda7a0db6d..e183f776e9 100644
--- a/keyboards/gh60/revc/revc.h
+++ b/keyboards/gh60/revc/revc.h
@@ -18,11 +18,11 @@ inline void gh60_fn_led_on(void) { setPinOutput(F5); writePinLow(F5); }
inline void gh60_esc_led_on(void) { setPinOutput(F6); writePinLow(F6); }
inline void gh60_wasd_leds_on(void) { setPinOutput(F7); writePinLow(F7); }
-inline void gh60_caps_led_off(void) { setPinInput(B2); writePinLow(B2); }
-inline void gh60_poker_leds_off(void) { setPinInput(F4); writePinLow(F4); }
-inline void gh60_fn_led_off(void) { setPinInput(F5); writePinLow(F5); }
-inline void gh60_esc_led_off(void) { setPinInput(F6); writePinLow(F6); }
-inline void gh60_wasd_leds_off(void) { setPinInput(F7); writePinLow(F7); }
+inline void gh60_caps_led_off(void) { setPinInput(B2); }
+inline void gh60_poker_leds_off(void) { setPinInput(F4); }
+inline void gh60_fn_led_off(void) { setPinInput(F5); }
+inline void gh60_esc_led_off(void) { setPinInput(F6); }
+inline void gh60_wasd_leds_off(void) { setPinInput(F7); }
/* GH60 keymap definition macro
* K2C, K31 and K3C are extra keys for ISO
diff --git a/keyboards/gh60/revc/rules.mk b/keyboards/gh60/revc/rules.mk
index c9362b334b..fb9ca646f0 100644
--- a/keyboards/gh60/revc/rules.mk
+++ b/keyboards/gh60/revc/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/gh60/satan/keymaps/colemak/rules.mk b/keyboards/gh60/satan/keymaps/colemak/rules.mk
index 53644093d6..5cbbc34536 100644
--- a/keyboards/gh60/satan/keymaps/colemak/rules.mk
+++ b/keyboards/gh60/satan/keymaps/colemak/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/gh60/satan/keymaps/default/rules.mk b/keyboards/gh60/satan/keymaps/default/rules.mk
index 53644093d6..5cbbc34536 100644
--- a/keyboards/gh60/satan/keymaps/default/rules.mk
+++ b/keyboards/gh60/satan/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk b/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk
index 08e77f9ebc..71b35a819f 100644
--- a/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk
+++ b/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
index 15cabfcd85..7b395f4ccd 100644
--- a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
+++ b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
@@ -1,11 +1,11 @@
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/gh60/satan/keymaps/midi/rules.mk b/keyboards/gh60/satan/keymaps/midi/rules.mk
index 87025ed6fe..5977347a12 100644
--- a/keyboards/gh60/satan/keymaps/midi/rules.mk
+++ b/keyboards/gh60/satan/keymaps/midi/rules.mk
@@ -2,14 +2,14 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = yes # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk
index 9bd667535d..204509ebc1 100644
--- a/keyboards/gh60/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/gh80_3000/rules.mk b/keyboards/gh80_3000/rules.mk
index 0da2d6a2fd..524303ec24 100644
--- a/keyboards/gh80_3000/rules.mk
+++ b/keyboards/gh80_3000/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/gingham/matrix.c b/keyboards/gingham/matrix.c
index 790ba9c287..5ac81e7911 100644
--- a/keyboards/gingham/matrix.c
+++ b/keyboards/gingham/matrix.c
@@ -150,7 +150,7 @@ static void unselect_row(uint8_t row)
static void unselect_rows(void)
{
for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
- setPinInput(row_pins[x]);
+ setPinInputHigh(row_pins[x]);
}
}
diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk
index 2ef090bd68..f8062eb50d 100644
--- a/keyboards/gingham/rules.mk
+++ b/keyboards/gingham/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -31,11 +31,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes
diff --git a/keyboards/gonnerd/keymaps/default/rules.mk b/keyboards/gonnerd/keymaps/default/rules.mk
index 6de64fcf89..c1019c7f41 100644
--- a/keyboards/gonnerd/keymaps/default/rules.mk
+++ b/keyboards/gonnerd/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/gonnerd/keymaps/tkl/rules.mk b/keyboards/gonnerd/keymaps/tkl/rules.mk
index 09b51e5a09..4026390c4e 100644
--- a/keyboards/gonnerd/keymaps/tkl/rules.mk
+++ b/keyboards/gonnerd/keymaps/tkl/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/gonnerd/rules.mk b/keyboards/gonnerd/rules.mk
index d4858ff130..798f96f4c4 100644
--- a/keyboards/gonnerd/rules.mk
+++ b/keyboards/gonnerd/rules.mk
@@ -17,10 +17,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# 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/gray_studio/cod67/rules.mk b/keyboards/gray_studio/cod67/rules.mk
index 132db98f45..548af8df82 100644
--- a/keyboards/gray_studio/cod67/rules.mk
+++ b/keyboards/gray_studio/cod67/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = lufa-ms
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/gray_studio/hb85/config.h b/keyboards/gray_studio/hb85/config.h
index dff360ec6a..f3fb20ec6b 100644
--- a/keyboards/gray_studio/hb85/config.h
+++ b/keyboards/gray_studio/hb85/config.h
@@ -33,3 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 5
#define RGBLIGHT_ANIMATIONS
+
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/gray_studio/hb85/hb85.c b/keyboards/gray_studio/hb85/hb85.c
index 21562b9e0f..4b3ff64f1e 100644
--- a/keyboards/gray_studio/hb85/hb85.c
+++ b/keyboards/gray_studio/hb85/hb85.c
@@ -18,32 +18,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "hb85.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/gray_studio/hb85/rules.mk b/keyboards/gray_studio/hb85/rules.mk
index ec57b03dcb..79b783e421 100644
--- a/keyboards/gray_studio/hb85/rules.mk
+++ b/keyboards/gray_studio/hb85/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/gray_studio/space65/keymaps/billiams/config.h b/keyboards/gray_studio/space65/keymaps/billiams/config.h
new file mode 100644
index 0000000000..c2fdc91084
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/billiams/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
+#define GRAVE_ESC_GUI_OVERRIDE # Always send Escape if GUI is pressed
diff --git a/keyboards/gray_studio/space65/keymaps/billiams/keymap.c b/keyboards/gray_studio/space65/keymaps/billiams/keymap.c
new file mode 100644
index 0000000000..9a0a004033
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/billiams/keymap.c
@@ -0,0 +1,85 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ,------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | DEL | INS |
+ * |------------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bkspc | PGUP |
+ * |------------------------------------------------------------------------------------------------+
+ * | Fn1 | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PGDN |
+ * |------------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | ?/ | Shift | Up | ESC |
+ * |------------------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Cmd | Space | Alt | Ctrl | Left | Down | Right |
+ * `------------------------------------------------------------------------------------------------'
+ */
+
+[0] = LAYOUT( \
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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_BSPC, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_ESC, \
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+ /* 1st Layer
+ * ,------------------------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Vol- |Vol+ | Next |
+ * |------------------------------------------------------------------------------------------------+
+ * | |RGB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| | | | | | Prev |
+ * |------------------------------------------------------------------------------------------------+
+ * | | RGBP | RGPG | RGPK | | | Left| Down| Up |Right| | | Play/Pause | |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | Scr- | Scr+ | | | PGUP | |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | Fn2 | HOME | PGDN | 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_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, KC_TRNS, 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, \
+ KC_TRNS, 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, MO(2), KC_HOME, KC_PGDN, KC_END \
+ ),
+
+ /* 2nd Layer
+ * ,------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | | | | | | RESET |
+ * |------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | |
+ * `------------------------------------------------------------------------------------------------'
+ */
+
+[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, RESET, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ ),
+};
diff --git a/keyboards/gray_studio/space65/keymaps/billiams/readme.md b/keyboards/gray_studio/space65/keymaps/billiams/readme.md
new file mode 100644
index 0000000000..bf14fbfe94
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/billiams/readme.md
@@ -0,0 +1,80 @@
+## Billiam's Space65 layout (with split backspace)
+
+This layout is optimized for vim users on MacOS with a split backspace.
+
+Settings:
+
+* The `CAPS LOCK` key is a function key.
+* The `ALT` and `CMD` keys are swapped to replicate the Mac layout.
+* RESET is available as `Fn`+ `Right Ctrl` + `ESC`
+* Underglow toggle is available as `Fn` + `Q`.
+* vim-style arrow key bindings H J K L in layer 1
+
+### Initial Installation
+
+I found the instructions to be longer than they had to be, and I ended up having to Google some steps anyway. These are the steps I took to get my keyboard setup, in case you are new to the process.
+
+1. Fork and Clone the qmk_firmware repo locally
+```
+# Choose one:
+git clone git@github.com:qmk/qmk_firmware.git # OR
+git clone https://github.com/qmk/qmk_firmware.git
+```
+2. Customize your layout by starting with a [keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gray_studio/space65/keymaps). I copied the default and changed it to my liking.
+3. Before plugging in your keyboard into your computer, hold `ESC` key down
+4. Plug the keyboard into your computer, which will put the keyboard in bootloader mode.
+5. Build your hex file and flash your keyboard
+```
+make gray_studio/space65:billiams:flash # be in the qmk_firmware directory to do this
+```
+
+Notes:
+- If you are using QMK Toolbox, use `make gray_studio/space65:<keymap>` in the base qmk_firmware directory instead of step 5 above which will create a hex file `gray_studio_space65_billiams.hex` which you can then choose in the toolbox and hit flash
+- If you accidentally loaded the default keymap, then to `RESET` the keyboard and kick it into bootloader mode again, hold the `ESC` key and plug the board in.
+
+Hope this helps!
+
+### 0 Qwerty
+```
+,------------------------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | Del | INS |
+|------------------------------------------------------------------------------------------------+
+| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bkspc | PGUP |
+|------------------------------------------------------------------------------------------------+
+| Fn1 | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PGDN |
+|------------------------------------------------------------------------------------------------+
+| Shift | Z | X | C | V | B | N | M | , | . | ?/ | Shift | up | ESC |
+|------------------------------------------------------------------------------------------------+
+| Ctrl | Alt | Cmd | Space | Alt | Ctrl | Left | Down | Right |
+`------------------------------------------------------------------------------------------------'
+```
+
+### 1 Fn Layer
+```
+,------------------------------------------------------------------------------------------------.
+| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Vol- |Vol+ | Next |
+|------------------------------------------------------------------------------------------------+
+| |RGB T|RGB M| Hue-| Hue+| Sat-| Sat+| Val-| Val+| Spd- | Spd+ | | | | Prev |
+|------------------------------------------------------------------------------------------------+
+| | RGBP | RGBG | RGBK | | | Left| Down| Up |Right| | | Play/Pause | |
+|------------------------------------------------------------------------------------------------+
+| | | | | | | | | | Scr- | Scr+ | | |PGUP | |
+|------------------------------------------------------------------------------------------------+
+| | | | | | Fn2 | HOME | PGDN | END |
+`------------------------------------------------------------------------------------------------'
+```
+
+### 2 Fn Layer - Just for bootloader mode button
+```
+,------------------------------------------------------------------------------------------------.
+| | | | | | | | | | | | | | | | |
+|------------------------------------------------------------------------------------------------+
+| | | | | | | | | | | | | | | |
+|------------------------------------------------------------------------------------------------+
+| | | | | | | | | | | | | | |
+|------------------------------------------------------------------------------------------------+
+| | | | | | | | | | | | | | | RESET |
+|------------------------------------------------------------------------------------------------+
+| | | | | | | | | |
+`------------------------------------------------------------------------------------------------'
+```
diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk
index e3909d8dd4..887d870a68 100644
--- a/keyboards/gray_studio/space65/rules.mk
+++ b/keyboards/gray_studio/space65/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi_blocker 65_iso_blocker
diff --git a/keyboards/gray_studio/think65/solder/readme.md b/keyboards/gray_studio/think65/solder/readme.md
index e8636bf8ae..1d7e4450ad 100644
--- a/keyboards/gray_studio/think65/solder/readme.md
+++ b/keyboards/gray_studio/think65/solder/readme.md
@@ -6,8 +6,6 @@ Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
Hardware Supported: Think6.5 Compatible PCB
Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=100166.0)
-**Note:** The `LAYOUT_65_ansi_blocker` LAYOUT macro utilizes the same pins and switch matrix as the hotswap version. Any firmware made with this LAYOUT macro can be flashed on both the Solder (Compatible) version and the Hotswap version of the Think6.5.
-
**Indicator LEDs:** The solder PCB ONLY supports Caps Lock LEDs unlike the Hotswap version that supports Num Lock, Caps Lock, and Scroll Lock.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/gray_studio/think65/solder/solder.c b/keyboards/gray_studio/think65/solder/solder.c
index 4f40fb4a92..48ed25b19b 100644
--- a/keyboards/gray_studio/think65/solder/solder.c
+++ b/keyboards/gray_studio/think65/solder/solder.c
@@ -25,17 +25,9 @@ void matrix_init_kb(void) {
// runs once when the firmware starts up
setPinOutput(C7);
-
matrix_init_user();
}
-void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
-
- matrix_scan_user();
-}
-
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
@@ -43,15 +35,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return process_record_user(keycode, record);
}
-void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
-
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinLow(C7);
- } else {
- writePinHigh(C7);
+bool led_update_kb(led_t led_state) {
+ if(led_update_user(led_state)) {
+ writePin(C7, !led_state.caps_lock);
}
-
- led_set_user(usb_led);
+ return true;
}
-
diff --git a/keyboards/gray_studio/think65/solder/solder.h b/keyboards/gray_studio/think65/solder/solder.h
index 19ee551258..f38306b2b7 100644
--- a/keyboards/gray_studio/think65/solder/solder.h
+++ b/keyboards/gray_studio/think65/solder/solder.h
@@ -32,16 +32,16 @@
}
#define LAYOUT_65_ansi_blocker( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
+ 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, K3F, \
+ 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, KC_NO, K0E, K0F }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, 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 }, \
- { KC_NO, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
+ { 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 }, \
}
diff --git a/keyboards/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk
index fb575b3abc..2d9a649e0f 100644
--- a/keyboards/grid600/press/rules.mk
+++ b/keyboards/grid600/press/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/gskt00/rules.mk b/keyboards/gskt00/rules.mk
index 2acbeaa901..f0bbcad813 100755
--- a/keyboards/gskt00/rules.mk
+++ b/keyboards/gskt00/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/hadron/ver2/rules.mk b/keyboards/hadron/ver2/rules.mk
index 3d48d88e7c..7e2ebf5671 100644
--- a/keyboards/hadron/ver2/rules.mk
+++ b/keyboards/hadron/ver2/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = halfkay
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/halberd/config.h b/keyboards/halberd/config.h
index cf3460b618..57e29e858e 100644
--- a/keyboards/halberd/config.h
+++ b/keyboards/halberd/config.h
@@ -44,7 +44,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D7, B4, C7, C6, B6, B5, F7, F6, F5, F4, F1 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7
diff --git a/keyboards/halberd/rules.mk b/keyboards/halberd/rules.mk
index 35c693379b..145d1f3229 100644
--- a/keyboards/halberd/rules.mk
+++ b/keyboards/halberd/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/handwired/42/config.h b/keyboards/handwired/42/config.h
index 3f5060989b..c88013f460 100644
--- a/keyboards/handwired/42/config.h
+++ b/keyboards/handwired/42/config.h
@@ -28,7 +28,7 @@
#define MATRIX_ROW_PINS { D2, D3, D0, D1 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/handwired/aek64/config.h b/keyboards/handwired/aek64/config.h
index 7d235358c3..a072d562a7 100644
--- a/keyboards/handwired/aek64/config.h
+++ b/keyboards/handwired/aek64/config.h
@@ -39,6 +39,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { E0, E1, C0, C1, C2 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/handwired/bluepill/bluepill70/chconf.h b/keyboards/handwired/bluepill/bluepill70/chconf.h
index dfb1f9dfb9..fdbc4aed04 100644
--- a/keyboards/handwired/bluepill/bluepill70/chconf.h
+++ b/keyboards/handwired/bluepill/bluepill70/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/bluepill/bluepill70/rules.mk b/keyboards/handwired/bluepill/bluepill70/rules.mk
index e89abca8ca..5cf5f3f6ca 100644
--- a/keyboards/handwired/bluepill/bluepill70/rules.mk
+++ b/keyboards/handwired/bluepill/bluepill70/rules.mk
@@ -44,4 +44,8 @@ ARMV = 7
# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
# This also requires a patch to chibios:
# <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
-#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 \ No newline at end of file
+#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/ck4x4/chconf.h b/keyboards/handwired/ck4x4/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/handwired/ck4x4/chconf.h
+++ b/keyboards/handwired/ck4x4/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk
index cd4bc260f3..0709f341bf 100644
--- a/keyboards/handwired/ck4x4/rules.mk
+++ b/keyboards/handwired/ck4x4/rules.mk
@@ -15,3 +15,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
DEFAULT_FOLDER = handwired/ck4x4
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/co60/rev1/config.h b/keyboards/handwired/co60/rev1/config.h
index 4d5140dafd..2168516d2d 100644
--- a/keyboards/handwired/co60/rev1/config.h
+++ b/keyboards/handwired/co60/rev1/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B2, B5, B4, D7, D6, B3, B0 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#ifdef __AVR__
diff --git a/keyboards/handwired/co60/rev6/config.h b/keyboards/handwired/co60/rev6/config.h
index a2c73853ca..0a7227fb8e 100644
--- a/keyboards/handwired/co60/rev6/config.h
+++ b/keyboards/handwired/co60/rev6/config.h
@@ -41,7 +41,7 @@
#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 }
#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C14, C15, C13, B5, B6 }
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h
index e13d28f507..98b36b99cc 100644
--- a/keyboards/handwired/co60/rev7/config.h
+++ b/keyboards/handwired/co60/rev7/config.h
@@ -43,7 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A10, A9, A3, A4, A5, A6, B0, B1, A15, B3, B4, B5, C13, C14, C15 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/handwired/dactyl_manuform/4x5/config.h b/keyboards/handwired/dactyl_manuform/4x5/config.h
index 1f24c9aca6..698418fb73 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x5/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/handwired/dactyl_manuform/5x6/config.h b/keyboards/handwired/dactyl_manuform/5x6/config.h
index 413039449f..fd0c23961c 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6/config.h
@@ -32,6 +32,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/5x7/config.h b/keyboards/handwired/dactyl_manuform/5x7/config.h
index 4358374987..bf56d08251 100644
--- a/keyboards/handwired/dactyl_manuform/5x7/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x7/config.h
@@ -32,6 +32,8 @@ 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 { F5, F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x6/config.h b/keyboards/handwired/dactyl_manuform/6x6/config.h
index 9bc501c5e9..522e98b687 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x6/config.h
@@ -32,6 +32,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
// WS2812 RGB LED strip input and number of LEDs
#define RGB_DI_PIN D3
#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
index 7db3ceb753..d315cb180d 100644
--- a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
+++ b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
@@ -37,6 +37,8 @@
#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define DIODE_DIRECTION COL2ROW
+
// WS2812 RGB LED, normally used to indicate keyboard state:
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
diff --git a/keyboards/handwired/dactyl_promicro/config.h b/keyboards/handwired/dactyl_promicro/config.h
index 3c0b541d1a..c57e766243 100644
--- a/keyboards/handwired/dactyl_promicro/config.h
+++ b/keyboards/handwired/dactyl_promicro/config.h
@@ -30,6 +30,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3060
diff --git a/keyboards/handwired/daishi/config.h b/keyboards/handwired/daishi/config.h
index b4665bece4..16ca49ba17 100644
--- a/keyboards/handwired/daishi/config.h
+++ b/keyboards/handwired/daishi/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/handwired/eagleii/config.h b/keyboards/handwired/eagleii/config.h
new file mode 100644
index 0000000000..c66cb18134
--- /dev/null
+++ b/keyboards/handwired/eagleii/config.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#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 DESCRIPTION Eagle II Keyboard
+
+#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/eagleii.c b/keyboards/handwired/eagleii/eagleii.c
new file mode 100644
index 0000000000..5abd5b92f9
--- /dev/null
+++ b/keyboards/handwired/eagleii/eagleii.c
@@ -0,0 +1 @@
+#include "eagleii.h"
diff --git a/keyboards/handwired/eagleii/eagleii.h b/keyboards/handwired/eagleii/eagleii.h
new file mode 100644
index 0000000000..5f3acac798
--- /dev/null
+++ b/keyboards/handwired/eagleii/eagleii.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K47, K27, K37, K38, K28, K39, K29, K34, K24, K31, K21, K32, K22, K33, K23, K0A, K0B, K46, K44, \
+ K17, K97, K18, K98, K19, K99, K14, K94, K11, K91, K12, K92, K13, K83, K8A, K8B, K43, K4A, \
+ KA0, K77, K88, K78, K89, K79, K84, K74, K81, K71, K82, K72, K93, K1A, K1B, K42, K6B, \
+ K50, K87, K08, K68, K09, K69, K04, K61, K01, K62, K02, K70, K6A, K41, \
+ KB5, K66, K07, K64, K76, K03 \
+) { \
+ { KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K07, K08, K09, K0A, K0B }, \
+ { KC_NO, K11, K12, K13, K14, KC_NO, KC_NO, K17, K18, K19, K1A, K1B }, \
+ { KC_NO, K21, K22, K23, K24, KC_NO, KC_NO, K27, K28, K29, KC_NO, KC_NO }, \
+ { KC_NO, K31, K32, K33, K34, KC_NO, KC_NO, K37, K38, K39, KC_NO, KC_NO }, \
+ { KC_NO, K41, K42, K43, K44, KC_NO, K46, K47, KC_NO, KC_NO, K4A, KC_NO }, \
+ { K50, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, K61, K62, KC_NO, K64, KC_NO, K66, KC_NO, K68, K69, K6A, K6B }, \
+ { K70, K71, K72, KC_NO, K74, KC_NO, K76, K77, K78, K79, KC_NO, KC_NO }, \
+ { KC_NO, K81, K82, K83, K84, KC_NO, KC_NO, K87, K88, K89, K8A, K8B }, \
+ { KC_NO, K91, K92, K93, K94, KC_NO, KC_NO, K97, K98, K99, KC_NO, KC_NO }, \
+ { KA0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/handwired/eagleii/info.json b/keyboards/handwired/eagleii/info.json
new file mode 100644
index 0000000000..4c2edde6e7
--- /dev/null
+++ b/keyboards/handwired/eagleii/info.json
@@ -0,0 +1,88 @@
+{
+ "keyboard_name": "EagleII",
+ "url": "",
+ "maintainer": "Spaceman",
+ "width": 21.5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 74,
+ "layout": [
+ {"label":"K47 (F7,C7)", "x":0, "y":0, "w":1.5},
+ {"label":"K27 (F1,C7)", "x":1.5, "y":0},
+ {"label":"K37 (B2,C7)", "x":2.5, "y":0},
+ {"label":"K38 (B2,F0)", "x":3.5, "y":0},
+ {"label":"K28 (F1,F0)", "x":4.5, "y":0},
+ {"label":"K39 (B2,B6)", "x":5.5, "y":0},
+ {"label":"K29 (F1,B6)", "x":6.5, "y":0},
+ {"label":"K34 (B2,B3)", "x":7.5, "y":0},
+ {"label":"K24 (F1,B3)", "x":8.5, "y":0},
+ {"label":"K31 (B2,C6)", "x":9.5, "y":0},
+ {"label":"K21 (F1,C6)", "x":10.5, "y":0},
+ {"label":"K32 (B2,E6)", "x":11.5, "y":0},
+ {"label":"K22 (F1,E6)", "x":12.5, "y":0},
+ {"label":"K33 (B2,D5)", "x":13.5, "y":0},
+ {"label":"K23 (F1,D5)", "x":14.5, "y":0},
+ {"label":"K0A (D0,B1)", "x":16.5, "y":0},
+ {"label":"K0B (D0,F4)", "x":17.5, "y":0},
+ {"label":"K46 (F7,D1)", "x":18.5, "y":0},
+ {"label":"K44 (F7,B3)", "x":20.5, "y":0},
+ {"label":"K17 (B5,C7)", "x":0, "y":1, "w":2},
+ {"label":"K97 (B7,C7)", "x":2, "y":1},
+ {"label":"K18 (B5,F0)", "x":3, "y":1},
+ {"label":"K98 (B7,F0)", "x":4, "y":1},
+ {"label":"K19 (B5,B6)", "x":5, "y":1},
+ {"label":"K99 (B7,B6)", "x":6, "y":1},
+ {"label":"K14 (B5,B3)", "x":7, "y":1},
+ {"label":"K94 (B7,B3)", "x":8, "y":1},
+ {"label":"K11 (B5,C6)", "x":9, "y":1},
+ {"label":"K91 (B7,C6)", "x":10, "y":1},
+ {"label":"K12 (B5,E6)", "x":11, "y":1},
+ {"label":"K92 (B7,E6)", "x":12, "y":1},
+ {"label":"K13 (B5,D5)", "x":13, "y":1},
+ {"label":"K83 (B4,D5)", "x":14, "y":1, "w":1.5},
+ {"label":"K8A (B4,B1)", "x":16.5, "y":1},
+ {"label":"K8B (B4,F4)", "x":17.5, "y":1},
+ {"label":"K43 (F7,D5)", "x":18.5, "y":1},
+ {"label":"K4A (F7,B1)", "x":20.5, "y":1},
+ {"label":"KA0 (F5,D2)", "x":0.25, "y":2, "w":2},
+ {"label":"K77 (D7,C7)", "x":2.25, "y":2},
+ {"label":"K88 (B4,F0)", "x":3.25, "y":2},
+ {"label":"K78 (D7,F0)", "x":4.25, "y":2},
+ {"label":"K89 (B4,B6)", "x":5.25, "y":2},
+ {"label":"K79 (D7,B6)", "x":6.25, "y":2},
+ {"label":"K84 (B4,B3)", "x":7.25, "y":2},
+ {"label":"K74 (D7,B3)", "x":8.25, "y":2},
+ {"label":"K81 (B4,C6)", "x":9.25, "y":2},
+ {"label":"K71 (D7,C6)", "x":10.25, "y":2},
+ {"label":"K82 (B4,E6)", "x":11.25, "y":2},
+ {"label":"K72 (D7,E6)", "x":12.25, "y":2},
+ {"label":"K93 (B7,D5)", "x":13.25, "y":2, "w":2},
+ {"label":"K1A (B5,B1)", "x":16.5, "y":2},
+ {"label":"K1B (B5,F4)", "x":17.5, "y":2},
+ {"label":"K42 (F7,E6)", "x":18.5, "y":2},
+ {"label":"K6B (D4,F4)", "x":20.5, "y":2, "h":2},
+ {"label":"K50 (F6,D2)", "x":0.75, "y":3, "w":2},
+ {"label":"K87 (B4,C7)", "x":2.75, "y":3},
+ {"label":"K08 (D0,F0)", "x":3.75, "y":3},
+ {"label":"K68 (D4,F0)", "x":4.75, "y":3},
+ {"label":"K09 (D0,B6)", "x":5.75, "y":3},
+ {"label":"K69 (D4,B6)", "x":6.75, "y":3},
+ {"label":"K04 (D0,B3)", "x":7.75, "y":3},
+ {"label":"K61 (D4,C6)", "x":8.75, "y":3},
+ {"label":"K01 (D0,C6)", "x":9.75, "y":3},
+ {"label":"K62 (D4,E6)", "x":10.75, "y":3},
+ {"label":"K02 (D0,E6)", "x":11.75, "y":3},
+ {"label":"K70 (D7,D2)", "x":12.75, "y":3, "w":2},
+ {"label":"K6A (D4,B1)", "x":16.5, "y":3, "w":2},
+ {"label":"K41 (F7,C6)", "x":18.5, "y":3},
+ {"label":"KB5 (B0,D3)", "x":0.75, "y":4},
+ {"label":"K66 (D4,D1)", "x":1.75, "y":4},
+ {"label":"K07 (D0,C7)", "x":2.75, "y":4},
+ {"label":"K64 (D4,B3)", "x":3.75, "y":4, "w":8},
+ {"label":"K76 (D7,D1)", "x":11.75, "y":4},
+ {"label":"K03 (D0,D5)", "x":12.75, "y":4, "w":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/eagleii/keymaps/default/keymap.c b/keyboards/handwired/eagleii/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dc26b8049a
--- /dev/null
+++ b/keyboards/handwired/eagleii/keymaps/default/keymap.c
@@ -0,0 +1,12 @@
+#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_LABK, KC_BSLS, KC_7, KC_8, KC_9, KC_F1,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_INS, KC_DEL, KC_SPC, KC_4, KC_5, KC_6, KC_F2,
+ 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_1, KC_2, KC_3, KC_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_0, KC_DOT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_MENU, KC_RABK
+ ),
+
+};
diff --git a/keyboards/handwired/eagleii/readme.md b/keyboards/handwired/eagleii/readme.md
new file mode 100644
index 0000000000..d23e270283
--- /dev/null
+++ b/keyboards/handwired/eagleii/readme.md
@@ -0,0 +1,15 @@
+# Eagle II Keyboard
+
+![Eagle II](https://upload.wikimedia.org/wikipedia/en/a/ae/Eagleiicomp.jpg)
+
+A handwired conversion of an Eagle II computer.
+
+* Keyboard Maintainer: [Spaceman](https://github.com/rionlion100)
+* Hardware Supported: Eagle II Keyboard
+* Hardware Availability: Not available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/eagleii:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/eagleii/rules.mk b/keyboards/handwired/eagleii/rules.mk
new file mode 100644
index 0000000000..e45af67e51
--- /dev/null
+++ b/keyboards/handwired/eagleii/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+SLEEP_LED_ENABLE = no
+NKRO_ENABLE = no
+BACKLIGHT_ENABLE = no
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/hacked_motospeed/config.h b/keyboards/handwired/hacked_motospeed/config.h
index d4bf11f235..0035a5e282 100644
--- a/keyboards/handwired/hacked_motospeed/config.h
+++ b/keyboards/handwired/hacked_motospeed/config.h
@@ -50,7 +50,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
-//#define DIODE_DIRECTION COL2ROW
+#define DIODE_DIRECTION COL2ROW
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
@@ -245,4 +245,4 @@ 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 \ No newline at end of file
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/lovelive9/config.h b/keyboards/handwired/lovelive9/config.h
index c11a25df60..f1f6f69c55 100644
--- a/keyboards/handwired/lovelive9/config.h
+++ b/keyboards/handwired/lovelive9/config.h
@@ -19,6 +19,8 @@
#define MATRIX_ROW_PINS { NO_PIN }
#define MATRIX_COL_PINS { B4, B6, B2, D7, B1, F7, F6, F5, F4 }
+#define DIODE_DIRECTION COL2ROW
+
#define UNUSED_PINS
/* ws2812 RGB LED */
diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h b/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h
new file mode 100644
index 0000000000..c54aac3189
--- /dev/null
+++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS { B3, B7, D0, D1, D2, D3, C6, C7, B5, B6, F7, F6 }
+
+#undef MATRIX_ROW_PINS
+#define MATRIX_ROW_PINS { F0, F1, F4, F5 }
diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c b/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c
new file mode 100644
index 0000000000..ae490914d5
--- /dev/null
+++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c
@@ -0,0 +1,123 @@
+/* Copyright 2019 George Koenig
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "ridingqwerty.h"
+
+/* MinOrca
+ ┏━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓
+ ┃ ⎋ │ 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 LAYOUT_minorca( \
+ KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11, \
+ KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KB11, \
+ KC00, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11, \
+ KD00, KD02, KD03, KD04, KD07, KD09, KD10, KD11 \
+) { \
+ { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11 }, \
+ { KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KC_NO, KB11 }, \
+ { KC00, KC_NO, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11 }, \
+ { KD00, KC_NO, KD02, KD03, KD04, KC_NO, KC_NO, KD07, KC_NO, KD09, KD10, KD11 } \
+}
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = {
+ {KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SC(BSPC) },
+ {ED(TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XXXXXXX, NM(SCLN) },
+ {LS(QUOT), XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, FK(DOT), RS(SLSH) },
+ {LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) }
+/*
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+*/
+
+
+ },
+#ifdef UNICODE_H
+ [_RUNE] = {
+ {KC_ESC, X(INGWZ), X(WUNJO), X(EHWAZ), X(RAIDO), X(TIWAZ), X(IWAZ), X(UR), X(ISAZ), X(ETHEL), X(PERTH), SC(BSPC) },
+ {ED(TAB), X(ANSUZ), X(SOWIL), X(DAGAZ), X(FE), X(GEBO), X(HAGLZ), X(JERAN), X(KAUNA), X(LAUKZ), XXXXXXX, NM(SCLN) },
+ {MT_QUOT, XXXXXXX, X(ALGIZ), X(THURS), X(KAUNA), X(WUNJO), X(BEORC), X(NAUDZ), X(MANNZ), KC_COMM, FK(DOT), RS(SLSH) },
+ {LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) }
+ },
+#endif
+ [_EDITOR] = {
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ {KC_GRV, _______, _______, KC_END, _______, KC_F5, _______, _______, KC_INS, _______, KC_PGUP, KC_DELT },
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ {_______, KC_HOME, _______, KC_DELT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_SCLN },
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ {_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PGDN, _______, KC_SCLN, KC_QUOT, KC_BSLS },
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ {_______, XXXXXXX, _______, _______, KC_EQL, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE }
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+ },
+ [_NUMBER] = {
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ {KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC },
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ {_______, KC_4, KC_5, KC_6, KC_PAST, _______, KC_PPLS, KC_4, KC_5, KC_6, XXXXXXX, _______ },
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ {_______, KC_7, KC_8, KC_9, KC_SLSH, _______, _______, KC_MINS, KC_1, KC_2, KC_3, _______ },
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ {_______, XXXXXXX, KC_0, _______, _______, XXXXXXX, XXXXXXX, KC_0, XXXXXXX, KC_DOT, _______, _______ }
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+ },
+ [_SYMBOL] = {
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DELT },
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, XXXXXXX, _______ },
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ {_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_BSLS },
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE }
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+ },
+ [_SECRET] = {
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ {RESET, _______, _______, _______, SECRET0, SECRET1, _______, _______, _______, _______, VERSION, _______ },
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ {_______, SECRET4, SECRET8, DEBUG, _______, _______, _______, _______, _______, SECRET7, XXXXXXX, MAKE },
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ {_______, XXXXXXX, SECRET6, _______, SECRET2, SECRET5, _______, _______, SECRET3, _______, _______, _______ },
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ }
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+ },
+ [_F_KEYS] = {
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______ },
+ //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ {_______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
+ {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ }
+ //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
+ },
+};
diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md b/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md
new file mode 100644
index 0000000000..4f0b3564b9
--- /dev/null
+++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md
@@ -0,0 +1 @@
+# Handwire of Minorca using teensy 2.0
diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk b/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk
new file mode 100644
index 0000000000..ac798576a5
--- /dev/null
+++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk
@@ -0,0 +1,10 @@
+MCU = atmega32u4
+BOOTLOADER = halfkay
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+UNICODE_ENABLE = no # Unicode
+UNICODEMAP_ENABLE = yes # Unicode Map
diff --git a/keyboards/handwired/nicekey/config.h b/keyboards/handwired/nicekey/config.h
index 4af56cc528..9c1b18117b 100644
--- a/keyboards/handwired/nicekey/config.h
+++ b/keyboards/handwired/nicekey/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B6 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.c b/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.c
deleted file mode 100644
index 8c5a87f35f..0000000000
--- a/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- 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.
-*/
-
-#include "hal.h"
-
-// Value to place in RTC backup register 10 for persistent bootloader mode
-#define RTC_BOOTLOADER_FLAG 0x424C
-
-/**
- * @brief PAL setup.
- * @details Digital I/O ports static configuration as defined in @p board.h.
- * This variable is used by the HAL when initializing the PAL driver.
- */
-#if HAL_USE_PAL || defined(__DOXYGEN__)
-const PALConfig pal_default_config =
-{
- {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
- {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
- {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
- {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
- {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
-};
-#endif
-
-/*
- * Early initialization code.
- * This initialization must be performed just after stack setup and before
- * any other initialization.
- */
-void __early_init(void) {
-
- stm32_clock_init();
-}
-
-/*
- * Board-specific initialization code.
- */
-void boardInit(void) {
- //JTAG-DP Disabled and SW-DP Enabled
- AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
- //Set backup register DR10 to enter bootloader on reset
- BKP->DR10 = RTC_BOOTLOADER_FLAG;
-}
diff --git a/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.h b/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.h
deleted file mode 100644
index 9427adabf1..0000000000
--- a/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- 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 _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for a Generic STM32F103 board.
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F103
-#define BOARD_NAME "Generic STM32F103x board"
-
-/*
- * Board frequencies.
- */
-#define STM32_LSECLK 32768
-#define STM32_HSECLK 8000000
-
-/*
- * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
- */
-#define STM32F103xB
-
-/*
- * IO pins assignments
- */
-
-/* on-board */
-
-#define GPIOA_LED 8
-#define GPIOD_OSC_IN 0
-#define GPIOD_OSC_OUT 1
-
-/* In case your board has a "USB enable" hardware
- controlled by a pin, define it here. (It could be just
- a 1.5k resistor connected to D+ line.)
-*/
-/*
-#define GPIOB_USB_DISC 10
-*/
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- *
- * The digits have the following meaning:
- * 0 - Analog input.
- * 1 - Push Pull output 10MHz.
- * 2 - Push Pull output 2MHz.
- * 3 - Push Pull output 50MHz.
- * 4 - Digital input.
- * 5 - Open Drain output 10MHz.
- * 6 - Open Drain output 2MHz.
- * 7 - Open Drain output 50MHz.
- * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
- * 9 - Alternate Push Pull output 10MHz.
- * A - Alternate Push Pull output 2MHz.
- * B - Alternate Push Pull output 50MHz.
- * C - Reserved.
- * D - Alternate Open Drain output 10MHz.
- * E - Alternate Open Drain output 2MHz.
- * F - Alternate Open Drain output 50MHz.
- * Please refer to the STM32 Reference Manual for details.
- */
-
-/*
- * Port A setup.
- * Everything input with pull-up except:
- * PA2 - Alternate output (USART2 TX).
- * PA3 - Normal input (USART2 RX).
- * PA9 - Alternate output (USART1 TX).
- * PA10 - Normal input (USART1 RX).
- */
-#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
-#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
-#define VAL_GPIOAODR 0xFFFFFFFF
-
-/*
- * Port B setup.
- * Everything input with pull-up except:
- * PB10 - Push Pull output (USB switch).
- */
-#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
-#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
-#define VAL_GPIOBODR 0xFFFFFFFF
-
-/*
- * Port C setup.
- * Everything input with pull-up except:
- * PC13 - Push Pull output (LED).
- */
-#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
-#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
-#define VAL_GPIOCODR 0xFFFFFFFF
-
-/*
- * Port D setup.
- * Everything input with pull-up except:
- * PD0 - Normal input (XTAL).
- * PD1 - Normal input (XTAL).
- */
-#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
-#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
-#define VAL_GPIODODR 0xFFFFFFFF
-
-/*
- * Port E setup.
- * Everything input with pull-up except:
- */
-#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
-#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
-#define VAL_GPIOEODR 0xFFFFFFFF
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-/* The point is that most of the generic STM32F103* boards
- have a 1.5k resistor connected on one end to the D+ line
- and on the other end to some pin. Or even a slightly more
- complicated "USB enable" circuit, controlled by a pin.
- That should go here.
-
- However on some boards (e.g. one that I have), there's no
- such hardware. In which case it's better to not do anything.
-*/
-/*
-#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
-
-/*
- * USB bus de-activation macro, required by the USB driver.
- */
-/*
-#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
-*/
-#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
-
-#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/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.mk b/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.mk
deleted file mode 100644
index 6b8b312fd9..0000000000
--- a/keyboards/handwired/onekey/bluepill/boards/GENERIC_STM32_F103/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
diff --git a/keyboards/handwired/onekey/bluepill/chconf.h b/keyboards/handwired/onekey/bluepill/chconf.h
index bbd9b2da62..9299be587e 100644
--- a/keyboards/handwired/onekey/bluepill/chconf.h
+++ b/keyboards/handwired/onekey/bluepill/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/onekey/bluepill/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/handwired/onekey/bluepill/ld/STM32F103x8_stm32duino_bootloader.ld
deleted file mode 100644
index d0688ef601..0000000000
--- a/keyboards/handwired/onekey/bluepill/ld/STM32F103x8_stm32duino_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * ST32F103xB memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08002000, len = 64k - 0x2000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/handwired/onekey/bluepill/rules.mk b/keyboards/handwired/onekey/bluepill/rules.mk
index 69436650b5..83a81a56b1 100644
--- a/keyboards/handwired/onekey/bluepill/rules.mk
+++ b/keyboards/handwired/onekey/bluepill/rules.mk
@@ -4,7 +4,11 @@ MCU = STM32F103
# GENERIC STM32F103C8T6 board - stm32duino bootloader
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = GENERIC_STM32_F103
+BOARD = STM32_F103_STM32DUINO
DFU_ARGS = -d 1eaf:0003 -a2 -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
diff --git a/keyboards/handwired/onekey/config.h b/keyboards/handwired/onekey/config.h
index 64a447481d..652a99cab6 100644
--- a/keyboards/handwired/onekey/config.h
+++ b/keyboards/handwired/onekey/config.h
@@ -29,6 +29,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/handwired/onekey/stm32f0_disco/chconf.h b/keyboards/handwired/onekey/stm32f0_disco/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/handwired/onekey/stm32f0_disco/chconf.h
+++ b/keyboards/handwired/onekey/stm32f0_disco/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/onekey/stm32f0_disco/rules.mk b/keyboards/handwired/onekey/stm32f0_disco/rules.mk
index fe5e3f824f..d8928e9ec8 100644
--- a/keyboards/handwired/onekey/stm32f0_disco/rules.mk
+++ b/keyboards/handwired/onekey/stm32f0_disco/rules.mk
@@ -1,2 +1,6 @@
# MCU name
MCU = STM32F072
+
+
+# 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_32/chconf.h b/keyboards/handwired/onekey/teensy_32/chconf.h
index 3294ac7eee..1919fcb97c 100644
--- a/keyboards/handwired/onekey/teensy_32/chconf.h
+++ b/keyboards/handwired/onekey/teensy_32/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/onekey/teensy_32/ld/MK20DX256.ld b/keyboards/handwired/onekey/teensy_32/ld/MK20DX256.ld
deleted file mode 100644
index 66bc6b81e2..0000000000
--- a/keyboards/handwired/onekey/teensy_32/ld/MK20DX256.ld
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * MK20DX256 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x400
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 256k - 0x410
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFF8000, len = 64k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/handwired/onekey/teensy_32/rules.mk b/keyboards/handwired/onekey/teensy_32/rules.mk
index 97171611ef..2c411c0eb6 100644
--- a/keyboards/handwired/onekey/teensy_32/rules.mk
+++ b/keyboards/handwired/onekey/teensy_32/rules.mk
@@ -39,3 +39,7 @@ MCU = cortex-m4
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
# I.e. 6 for Teensy LC; 7 for Teensy 3.x
ARMV = 7
+
+
+# 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/chconf.h b/keyboards/handwired/onekey/teensy_lc/chconf.h
index 3294ac7eee..1919fcb97c 100644
--- a/keyboards/handwired/onekey/teensy_lc/chconf.h
+++ b/keyboards/handwired/onekey/teensy_lc/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/handwired/onekey/teensy_lc/ld/MKL26Z64.ld b/keyboards/handwired/onekey/teensy_lc/ld/MKL26Z64.ld
deleted file mode 100644
index c4ca8b874c..0000000000
--- a/keyboards/handwired/onekey/teensy_lc/ld/MKL26Z64.ld
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
- * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
- *
- * 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.
- */
-
-/*
- * KL26Z64 memory setup.
- */
-MEMORY
-{
- flash0 : org = 0x00000000, len = 0x100
- flash1 : org = 0x00000400, len = 0x10
- flash2 : org = 0x00000410, len = 62k - 0x410
- flash3 : org = 0x0000F800, len = 2k
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x1FFFF800, len = 8k
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* Flash region for the configuration bytes.*/
-SECTIONS
-{
- .cfmprotect : ALIGN(4) SUBALIGN(4)
- {
- KEEP(*(.cfmconfig))
- } > flash1
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash2);
-REGION_ALIAS("XTORS_FLASH_LMA", flash2);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash2);
-REGION_ALIAS("TEXT_FLASH_LMA", flash2);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash2);
-REGION_ALIAS("RODATA_FLASH_LMA", flash2);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash2);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
-
-/* 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", flash2);
-
-/* 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);
-
-__eeprom_workarea_start__ = ORIGIN(flash3);
-__eeprom_workarea_size__ = LENGTH(flash3);
-__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld
diff --git a/keyboards/handwired/onekey/teensy_lc/rules.mk b/keyboards/handwired/onekey/teensy_lc/rules.mk
index 7859f6d741..32ab07d9c1 100644
--- a/keyboards/handwired/onekey/teensy_lc/rules.mk
+++ b/keyboards/handwired/onekey/teensy_lc/rules.mk
@@ -39,3 +39,7 @@ MCU = cortex-m0plus
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
# I.e. 6 for Teensy LC; 7 for Teensy 3.x
ARMV = 6
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/owlet60/matrix.c b/keyboards/handwired/owlet60/matrix.c
index 994f527ec7..dafc19fcc4 100644
--- a/keyboards/handwired/owlet60/matrix.c
+++ b/keyboards/handwired/owlet60/matrix.c
@@ -215,10 +215,7 @@ void matrix_init(void) {
matrix_init_quantum();
setPinInput(D5);
- writePinLow(D5);
-
- setPinInput(B0);
- writePinLow(B0);
+ setPinInput(B0);
}
// modified for per col read matrix scan
diff --git a/keyboards/handwired/splittest/config.h b/keyboards/handwired/splittest/config.h
index 56574f7529..3ff8547fc9 100644
--- a/keyboards/handwired/splittest/config.h
+++ b/keyboards/handwired/splittest/config.h
@@ -33,6 +33,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 2
#define MATRIX_COLS 1
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h
index f47dc90c19..78e46b3437 100644
--- a/keyboards/handwired/steamvan/rev1/config.h
+++ b/keyboards/handwired/steamvan/rev1/config.h
@@ -43,7 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, A10, B9, B6, B5, B4, B3, A15 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/handwired/tennie/config.h b/keyboards/handwired/tennie/config.h
index 20795b048c..d26cb4c616 100644
--- a/keyboards/handwired/tennie/config.h
+++ b/keyboards/handwired/tennie/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
#define UNUSED_PINS { B1, B2, B3, B6, F4, F5, F6, F7 D1}
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
diff --git a/keyboards/handwired/wulkan/config.h b/keyboards/handwired/wulkan/config.h
index 4a9cbada7e..6282065350 100644
--- a/keyboards/handwired/wulkan/config.h
+++ b/keyboards/handwired/wulkan/config.h
@@ -17,6 +17,8 @@
#define MATRIX_ROW_PINS { B8, A0, A1, A2 }
#define MATRIX_COL_PINS { B13, B14, B15, B9, B7, B6, B5, B4, B3, B2, B1, B0 }
+#define DIODE_DIRECTION COL2ROW
+
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/hecomi/alpha/config.h b/keyboards/hecomi/alpha/config.h
index dbc94454f9..3600eb717d 100644
--- a/keyboards/hecomi/alpha/config.h
+++ b/keyboards/hecomi/alpha/config.h
@@ -48,7 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SOFT_SERIAL_PIN D1 // or D1, D2, D3, E6
//#define USE_I2C
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
diff --git a/keyboards/hecomi/alpha/rules.mk b/keyboards/hecomi/alpha/rules.mk
index 83afff3261..0f0b632b1d 100644
--- a/keyboards/hecomi/alpha/rules.mk
+++ b/keyboards/hecomi/alpha/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes
diff --git a/keyboards/hecomi/rules.mk b/keyboards/hecomi/rules.mk
index 28febe217b..ad2178e9eb 100644
--- a/keyboards/hecomi/rules.mk
+++ b/keyboards/hecomi/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = hecomi/alpha
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index 764b073007..c084457321 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -5,7 +5,7 @@
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
# See TOP/docs/config_options.md for more information.
#
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+EXTRAKEY_ENABLE = yes # Audio control and System control
AUDIO_ENABLE = yes # Audio output on port B5
LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
diff --git a/keyboards/helix/rev2/split_util.c b/keyboards/helix/rev2/split_util.c
index 89df43e277..9d31d0dec3 100644
--- a/keyboards/helix/rev2/split_util.c
+++ b/keyboards/helix/rev2/split_util.c
@@ -20,18 +20,22 @@
#endif
#ifndef SPLIT_USB_TIMEOUT
- #define SPLIT_USB_TIMEOUT 2500
+# define SPLIT_USB_TIMEOUT 2000
+#endif
+
+#ifndef SPLIT_USB_TIMEOUT_POLL
+# define SPLIT_USB_TIMEOUT_POLL 10
#endif
volatile bool isLeftHand = true;
bool waitForUsb(void) {
- for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) {
- // This will return true of a USB connection has been established
+ for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) {
+ // This will return true if a USB connection has been established
if (UDADDR & _BV(ADDEN)) {
return true;
}
- wait_ms(100);
+ wait_ms(SPLIT_USB_TIMEOUT_POLL);
}
// Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow
diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk
index 579262fe7c..54a4d774fd 100644
--- a/keyboards/helix/rules.mk
+++ b/keyboards/helix/rules.mk
@@ -17,10 +17,10 @@ BOOTLOADER = caterina
#
# See TOP/docs/config_options.md for more information.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk
index a7a40aa638..fb1538d8ac 100644
--- a/keyboards/hhkb/rules.mk
+++ b/keyboards/hhkb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/hid_liber/rules.mk b/keyboards/hid_liber/rules.mk
index 3642d80742..a0f881731a 100755
--- a/keyboards/hid_liber/rules.mk
+++ b/keyboards/hid_liber/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
@@ -26,7 +26,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/hifumi/rules.mk b/keyboards/hifumi/rules.mk
index 33c8d61784..539fb77900 100644
--- a/keyboards/hifumi/rules.mk
+++ b/keyboards/hifumi/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/hineybush/h87a/keymaps/wkl/keymap.c b/keyboards/hineybush/h87a/keymaps/wkl/keymap.c
index 72b4d4e44d..e3e4108233 100644
--- a/keyboards/hineybush/h87a/keymaps/wkl/keymap.c
+++ b/keyboards/hineybush/h87a/keymaps/wkl/keymap.c
@@ -59,7 +59,6 @@ void led_set_user(uint8_t usb_led) {
writePinLow(D5);
} else {
setPinInput(D5);
- writePinLow(D5);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
@@ -67,7 +66,6 @@ void led_set_user(uint8_t usb_led) {
writePinLow(E6);
} else {
setPinInput(E6);
- writePinLow(E6);
}
}
diff --git a/keyboards/hineybush/h87a/rules.mk b/keyboards/hineybush/h87a/rules.mk
index 2c5bc96c6f..db167b5ae4 100644
--- a/keyboards/hineybush/h87a/rules.mk
+++ b/keyboards/hineybush/h87a/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/hineybush/h88/h88.c b/keyboards/hineybush/h88/h88.c
index 46d6393907..1f702e9e9d 100644
--- a/keyboards/hineybush/h88/h88.c
+++ b/keyboards/hineybush/h88/h88.c
@@ -54,7 +54,6 @@ void led_set_user(uint8_t usb_led) {
writePinLow(D5);
} else {
setPinInput(D5);
- writePinLow(D5);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
@@ -62,7 +61,6 @@ void led_set_user(uint8_t usb_led) {
writePinLow(E6);
} else {
setPinInput(E6);
- writePinLow(E6);
}
}
diff --git a/keyboards/hineybush/hineyg80/rules.mk b/keyboards/hineybush/hineyg80/rules.mk
index 7218e1e1bf..1aa3379312 100644
--- a/keyboards/hineybush/hineyg80/rules.mk
+++ b/keyboards/hineybush/hineyg80/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk
index 05a3cff00d..19852d7ec3 100755
--- a/keyboards/honeycomb/rules.mk
+++ b/keyboards/honeycomb/rules.mk
@@ -14,11 +14,11 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+#MOUSEKEY_ENABLE = yes # Mouse keys
POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully.
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/hotdox/keymaps/ninjonas/README.md b/keyboards/hotdox/keymaps/ninjonas/README.md
index 5cbfacf9f5..d761bf9c95 100644
--- a/keyboards/hotdox/keymaps/ninjonas/README.md
+++ b/keyboards/hotdox/keymaps/ninjonas/README.md
@@ -32,7 +32,7 @@ This keymap is designed based off my typing habits and is subject to change. Inf
### QWERTY
```c
-/* Keymap 0: QWERTY
+/* QWERTY
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | Play | |K_LOCK | 6 | 7 | 8 | 9 | 0 | - |
@@ -43,7 +43,7 @@ This keymap is designed based off my typing habits and is subject to change. Inf
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | = |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------'
- * |M_SHFT| | Alt |  | Ctl | | BkSP | Del |LOWER |M_XXX1|M_PYNV|
+ * | | | Alt |  | Ctl | | BkSP | Del |LOWER | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Up | Down | | Left | Right|
@@ -57,16 +57,16 @@ This keymap is designed based off my typing habits and is subject to change. Inf
### LOWER
```c
-/* Keymap 1: LOWER
+/* LOWER
*
* ,--------------------------------------------------. ,----------------------------------------------------.
* | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
- * | | | |KC_BRU| Play | Mute | | | | PgUp | Home | Up | End | | |
+ * | | |KC_BRU| Play | Mute | | | | | PgUp | Home | Up | End | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | | | |KC_BRD| Next |VolUp |------| |-------| PgDn | Left | Down |Right |K_LOCK | |
+ * | | |KC_BRD| Next |VolUp | |------| |-------| PgDn | Left | Down |Right |K_LOCK | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | | | | | Prev |VolDn | | | | | | | | | |
+ * | | | | Prev |VolDn | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------'
* | | | | | | | | | |M_CODE | |
* `----------------------------------' `-----------------------------------'
@@ -82,16 +82,16 @@ This keymap is designed based off my typing habits and is subject to change. Inf
### RAISE
```c
-/* Keymap 2: RAISE
+/* RAISE
*
* ,--------------------------------------------------. ,----------------------------------------------------.
- * | | | | |K_CSCN| | | | | | | | | | |
+ * | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
- * | M_MAKE | | MS_1 | MS_U | MS_2 | WH_U | | | | | | | | | |
+ * | | | MS_1 | MS_U | MS_2 | WH_U | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | M_VRSN | | MS_L | MS_D | MS_R | WH_D |------| |-------| | | | | | |
+ * | | | MS_L | MS_D | MS_R | WH_D |------| |-------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | M_FLSH | | | | | | | | | | | | | | |
+ * | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `-----------------------------------'
diff --git a/keyboards/hotdox/keymaps/ninjonas/keymap.c b/keyboards/hotdox/keymaps/ninjonas/keymap.c
index eea86200c7..6637eb3b33 100644
--- a/keyboards/hotdox/keymaps/ninjonas/keymap.c
+++ b/keyboards/hotdox/keymaps/ninjonas/keymap.c
@@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-#include "ninjonas.h"
+#include "ninjonas.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | = |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------'
- * |M_SHFT| | Alt |  | Ctl | | BkSP | Del |LOWER |M_XXX1|M_PYNV|
+ * | | | Alt |  | Ctl | | BkSP | Del |LOWER | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Up | Down | | Left | Right|
@@ -41,10 +41,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_ergodox_wrapper(
// LEFT HAND
_____________________NUM_LEFT_______________________, KC_MPLY,
- _____________________QWERTY_L1______________________, KC_NO,
+ _____________________QWERTY_L1______________________, XXXXXXX,
_____________________QWERTY_L2______________________,
_____________________QWERTY_L3______________________, T_LBRC,
- M_SHFT, KC_NO, ________MOD_LEFT_________,
+ XXXXXXX, XXXXXXX, ________MOD_LEFT_________,
// LEFT THUMB
KC_UP, KC_DOWN,
KC_HOME,
@@ -53,10 +53,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//RIGHT HAND
K_LOCK, _____________________NUM_RIGHT______________________,
- KC_NO, _____________________QWERTY_R1______________________,
+ XXXXXXX,_____________________QWERTY_R1______________________,
_____________________QWERTY_R2______________________,
T_RBRC, _____________________QWERTY_R3______________________,
- ________MOD_RIGHT________, M_XXX1, M_PYNV,
+ ________MOD_RIGHT________, XXXXXXX, XXXXXXX,
// RIGHT THUMB
KC_LEFT, KC_RGHT,
KC_PGUP,
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | = |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------'
- * |M_SHFT| | Alt |  | Ctl | | BkSP | Del |LOWER |M_XXX1|M_PYNV|
+ * | | | Alt |  | Ctl | | BkSP | Del |LOWER | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Up | Down | | Left | Right|
@@ -88,10 +88,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DVORAK] = LAYOUT_ergodox_wrapper(
// LEFT HAND
_____________________NUM_LEFT_______________________, KC_MPLY,
- _____________________DVORAK_L1______________________, KC_NO,
+ _____________________DVORAK_L1______________________, XXXXXXX,
_____________________DVORAK_L2______________________,
_____________________DVORAK_L3______________________, T_LBRC,
- M_SHFT, KC_NO, ________MOD_LEFT_________,
+ XXXXXXX, XXXXXXX, ________MOD_LEFT_________,
// LEFT THUMB
KC_UP, KC_DOWN,
KC_HOME,
@@ -100,10 +100,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//RIGHT HAND
K_LOCK, _____________________NUM_RIGHT______________________,
- KC_NO, _____________________DVORAK_R1______________________,
+ XXXXXXX,_____________________DVORAK_R1______________________,
_____________________DVORAK_R2______________________,
T_RBRC, _____________________DVORAK_R3______________________,
- ________MOD_RIGHT________, M_XXX1, M_PYNV,
+ ________MOD_RIGHT________, XXXXXXX, XXXXXXX,
// RIGHT THUMB
KC_LEFT, KC_RGHT,
KC_PGUP,
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | K | M | , | . | / | = |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------'
- * |M_SHFT| | Alt |  | Ctl | | BkSP | Del |LOWER |M_XXX1|M_PYNV|
+ * | | | Alt |  | Ctl | | BkSP | Del |LOWER | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Up | Down | | Left | Right|
@@ -135,10 +135,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT_ergodox_wrapper(
// LEFT HAND
_____________________NUM_LEFT_______________________, KC_MPLY,
- _____________________COLEMAK_L1_____________________, KC_NO,
+ _____________________COLEMAK_L1_____________________, XXXXXXX,
_____________________COLEMAK_L2_____________________,
_____________________COLEMAK_L3_____________________, T_LBRC,
- M_SHFT, KC_NO, ________MOD_LEFT_________,
+ XXXXXXX, XXXXXXX, ________MOD_LEFT_________,
// LEFT THUMB
KC_UP, KC_DOWN,
KC_HOME,
@@ -147,10 +147,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//RIGHT HAND
K_LOCK, _____________________NUM_RIGHT______________________,
- KC_NO, _____________________COLEMAK_R1_____________________,
+ XXXXXXX,_____________________COLEMAK_R1_____________________,
_____________________COLEMAK_R2_____________________,
T_RBRC, _____________________COLEMAK_R3_____________________,
- ________MOD_RIGHT________, M_XXX1, M_PYNV,
+ ________MOD_RIGHT________, XXXXXXX, XXXXXXX,
// RIGHT THUMB
KC_LEFT, KC_RGHT,
KC_PGUP,
@@ -163,11 +163,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,--------------------------------------------------. ,----------------------------------------------------.
* | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
- * | | | |KC_BRU| Play | Mute | | | | PgUp | Home | Up | End | | |
+ * | | |KC_BRU| Play | Mute | | | | | PgUp | Home | Up | End | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | | | |KC_BRD| Next |VolUp |------| |-------| PgDn | Left | Down |Right |K_LOCK | |
+ * | | |KC_BRD| Next |VolUp | |------| |-------| PgDn | Left | Down |Right |K_LOCK | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | | | | | Prev |VolDn | | | | | | | | | |
+ * | | | | Prev |VolDn | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------'
* | | | | | | | | | |M_CODE | |
* `----------------------------------' `-----------------------------------'
@@ -182,9 +182,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_ergodox_wrapper(
//LEFT HAND
_____________________FUNC_LEFT______________________, _______,
- _______, _______, _______, _________MEDIA_1_________, _______,
- _______, _______, _______, _________MEDIA_2_________,
- _______, _______, _______, _________MEDIA_3_________, _______,
+ _____________________LOWER_L1_______________________, _______,
+ _____________________LOWER_L2_______________________,
+ _____________________LOWER_L3_______________________, _______,
_______, _______, _______, _______, _______,
// LEFT THUMB
_______, _______,
@@ -194,9 +194,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//RIGHT HAND
_______, _____________________FUNC_RIGHT_____________________,
- _______, _______________NAV_1______________, _______, _______,
- _______________NAV_2______________, K_LOCK, _______,
- _______, _______, _______, _______, _______, _______, _______,
+ _______, _____________________LOWER_R1_______________________,
+ _____________________LOWER_R2_______________________,
+ _______, _____________________LOWER_R3_______________________,
_______, _______, _______, M_CODE, _______,
// RIGHT THUMB
_______, _______,
@@ -208,7 +208,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RAISE
*
* ,--------------------------------------------------. ,----------------------------------------------------.
- * | | | | |K_CSCN| | | | | | | | | | |
+ * | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
* | | | MS_1 | MS_U | MS_2 | WH_U | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
@@ -228,7 +228,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RAISE] = LAYOUT_ergodox_wrapper(
//LEFT HAND
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, K_CSCN, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, _____________MOUSE_1______________, XXXXXXX,
XXXXXXX, XXXXXXX, _____________MOUSE_2______________,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -255,11 +255,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ADJUST
*
* ,--------------------------------------------------. ,----------------------------------------------------.
- * | | | | | | | | | | | | |COLMAK|DVORAK |QWERTY |
+ * | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
- * | M_MAKE | | | | | | | | | | | | | | |
+ * | M_MAKE |RESET | | | | | | | | | | |COLMAK|DVORAK |QWERTY |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
- * | M_VRSN | | | | | |------| |-------| | | | | | |
+ * | M_VRSN |M_MALL| | | | |------| |-------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
* | M_FLSH | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------'
@@ -276,9 +276,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ergodox_wrapper(
//LEFT HAND
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- M_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _____________________ADJUST_L1______________________, XXXXXXX,
+ _____________________ADJUST_L1______________________,
+ _____________________ADJUST_L1______________________, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// LEFT THUMB
_______, _______,
@@ -287,10 +287,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,
//RIGHT HAND
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, DVORAK, QWERTY,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, _____________________ADJUST_R1______________________,
+ _____________________ADJUST_R1______________________,
+ XXXXXXX, _____________________ADJUST_R1______________________,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// RIGHT THUMB
_______, _______,
diff --git a/keyboards/hotdox/keymaps/ninjonas/rules.mk b/keyboards/hotdox/keymaps/ninjonas/rules.mk
new file mode 100644
index 0000000000..3ec5fb0628
--- /dev/null
+++ b/keyboards/hotdox/keymaps/ninjonas/rules.mk
@@ -0,0 +1 @@
+LINK_TIME_OPTIMIZATION_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk
index b5b1483c72..95f6c7ec6d 100644
--- a/keyboards/hotdox/rules.mk
+++ b/keyboards/hotdox/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = atmel-dfu
#
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone
UNICODE_ENABLE = yes # Unicode
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/hs60/v1/rules.mk b/keyboards/hs60/v1/rules.mk
index 13f65b6ee4..81c86813ca 100644
--- a/keyboards/hs60/v1/rules.mk
+++ b/keyboards/hs60/v1/rules.mk
@@ -19,17 +19,17 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/hs60/v2/ansi/ansi.h b/keyboards/hs60/v2/ansi/ansi.h
new file mode 100644
index 0000000000..e29cc65c0e
--- /dev/null
+++ b/keyboards/hs60/v2/ansi/ansi.h
@@ -0,0 +1,38 @@
+/* Copyright 2018 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"
+#include "../../wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "via.h"
+
+// This a shortcut to help you visually see your layout.
+
+#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, K2C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/hs60/v2/ansi/config.h b/keyboards/hs60/v2/ansi/config.h
new file mode 100644
index 0000000000..4d0c03a9c3
--- /dev/null
+++ b/keyboards/hs60/v2/ansi/config.h
@@ -0,0 +1,148 @@
+/*
+Copyright 2018 Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4854
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT HS60 V2
+#define DESCRIPTION GH60 compatible, tool free RGB keyboard
+
+#define HS60_ANSI
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B3, B4, B5, A8, A4 }
+#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, C13, C14, C15, A0, A1, A2, A3 }
+// To enable debugger set A13 A14 -> A5 A6
+
+/* 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Backlight options */
+
+#define RGB_BACKLIGHT_ENABLED 1
+
+#define RGB_BACKLIGHT_HS60
+
+// they aren't really used if RGB_BACKLIGHT_HS60 defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 6
+
+// the default effect speed (0-3)
+#define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
+
+#define DRIVER_COUNT 2
+#define DRIVER_LED_TOTAL 64
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011110000000111
+
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+
+// Backlight config starts after VIA's EEPROM usage,
+// dynamic keymaps start after this.
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 32
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/hs60/v2/ansi/info.json b/keyboards/hs60/v2/ansi/info.json
new file mode 100644
index 0000000000..a977f9be0c
--- /dev/null
+++ b/keyboards/hs60/v2/ansi/info.json
@@ -0,0 +1,333 @@
+{
+ "keyboard_name": "HS60v2",
+ "maintainer": "yiancar",
+ "url": "",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "key_count": 61,
+ "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/hs60/v2/keymaps/ansi/keymap.c b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c
index ba649470b4..ba649470b4 100644
--- a/keyboards/hs60/v2/keymaps/ansi/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/ansi/readme.md b/keyboards/hs60/v2/ansi/keymaps/default/readme.md
index 3afd8afb33..3afd8afb33 100644
--- a/keyboards/hs60/v2/keymaps/ansi/readme.md
+++ b/keyboards/hs60/v2/ansi/keymaps/default/readme.md
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/config.h b/keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h
index d61e6bde4f..bf39aae3a2 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/config.h
+++ b/keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h
@@ -1,10 +1,5 @@
#pragma once
-// Include overwrites for specific keymap
-#define HS60_ANSI
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4854
-
// disable backlight after timeout in minutes, 0 = no timeout
#undef RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT
#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 20
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/keymap.c b/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c
index 2e6a704839..11d8048f13 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c
@@ -33,8 +33,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN1_60] = LAYOUT_60_ansi(
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,
- _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS,
- KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+ _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS,
+ KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
_______, KC_RDP, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/readme.md b/keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md
index 430d363f37..430d363f37 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/readme.md
+++ b/keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md
diff --git a/keyboards/hs60/v2/keymaps/default_via/rules.mk b/keyboards/hs60/v2/ansi/keymaps/stanrc85/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/default_via/rules.mk
+++ b/keyboards/hs60/v2/ansi/keymaps/stanrc85/rules.mk
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/keymap.c b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c
index ba649470b4..ba649470b4 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/readme.md b/keyboards/hs60/v2/ansi/keymaps/via/readme.md
index a462da6619..a462da6619 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/readme.md
+++ b/keyboards/hs60/v2/ansi/keymaps/via/readme.md
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk b/keyboards/hs60/v2/ansi/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
+++ b/keyboards/hs60/v2/ansi/keymaps/via/rules.mk
diff --git a/keyboards/hs60/v2/rules.mk b/keyboards/hs60/v2/ansi/rules.mk
index 37deb63be7..d013775c11 100644
--- a/keyboards/hs60/v2/rules.mk
+++ b/keyboards/hs60/v2/ansi/rules.mk
@@ -10,7 +10,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# comment out to disable the options.
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
@@ -23,7 +23,7 @@ NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plu
CIE1931_CURVE = yes
-LAYOUTS = 60_ansi 60_iso
+LAYOUTS = 60_ansi
# project specific files
SRC = keyboards/wilba_tech/wt_main.c \
diff --git a/keyboards/hs60/v2/hhkb/config.h b/keyboards/hs60/v2/hhkb/config.h
new file mode 100644
index 0000000000..69c0a3fe03
--- /dev/null
+++ b/keyboards/hs60/v2/hhkb/config.h
@@ -0,0 +1,148 @@
+/*
+Copyright 2018 Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4855
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT HS60 V2
+#define DESCRIPTION GH60 compatible, tool free RGB keyboard
+
+#define HS60_HHKB
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B3, B4, B5, A8, A4 }
+#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, C13, C14, C15, A0, A1, A2, A3 }
+// To enable debugger set A13 A14 -> A5 A6
+
+/* 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Backlight options */
+
+#define RGB_BACKLIGHT_ENABLED 1
+
+#define RGB_BACKLIGHT_HS60
+
+// they aren't really used if RGB_BACKLIGHT_HS60 defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 6
+
+// the default effect speed (0-3)
+#define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
+
+#define DRIVER_COUNT 2
+#define DRIVER_LED_TOTAL 64
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
+
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+
+// Backlight config starts after VIA's EEPROM usage,
+// dynamic keymaps start after this.
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 32
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/hs60/v2/v2.h b/keyboards/hs60/v2/hhkb/hhkb.h
index e770764862..94248f01e0 100644
--- a/keyboards/hs60/v2/v2.h
+++ b/keyboards/hs60/v2/hhkb/hhkb.h
@@ -23,34 +23,6 @@
// This a shortcut to help you visually see your layout.
-#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, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, 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, K2C, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
- { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
-}
-
#define LAYOUT_60_hhkb( \
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, \
diff --git a/keyboards/hs60/v2/hhkb/info.json b/keyboards/hs60/v2/hhkb/info.json
new file mode 100644
index 0000000000..cf95351d30
--- /dev/null
+++ b/keyboards/hs60/v2/hhkb/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "HS60v2",
+ "maintainer": "yiancar",
+ "url": "",
+ "width": 15,
+ "height": 5,
+ "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/keymaps/hhkb/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c
index 9641eedb49..9641eedb49 100644
--- a/keyboards/hs60/v2/keymaps/hhkb/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/hhkb/readme.md b/keyboards/hs60/v2/hhkb/keymaps/default/readme.md
index 5259a584d2..5259a584d2 100644
--- a/keyboards/hs60/v2/keymaps/hhkb/readme.md
+++ b/keyboards/hs60/v2/hhkb/keymaps/default/readme.md
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/config.h b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/config.h
index 96adaf5688..50c76489e6 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/config.h
+++ b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/config.h
@@ -18,6 +18,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Include overwrites for specific keymap */
-#define HS60_ANSI
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4854
+#undef RGB_BACKLIGHT_CAPS_LOCK_INDICATOR
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 255 }, .index = 3-1 } //red
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c
index 6273dbc646..6273dbc646 100644
--- a/keyboards/hs60/v2/keymaps/goatmaster/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/readme.md b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/readme.md
index ea9803cc0b..ea9803cc0b 100644
--- a/keyboards/hs60/v2/keymaps/goatmaster/readme.md
+++ b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/readme.md
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
+++ b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/rules.mk
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c
index 9641eedb49..9641eedb49 100644
--- a/keyboards/hs60/v2/keymaps/hhkb_via/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/readme.md b/keyboards/hs60/v2/hhkb/keymaps/via/readme.md
index ea9803cc0b..ea9803cc0b 100644
--- a/keyboards/hs60/v2/keymaps/hhkb_via/readme.md
+++ b/keyboards/hs60/v2/hhkb/keymaps/via/readme.md
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk b/keyboards/hs60/v2/hhkb/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
+++ b/keyboards/hs60/v2/hhkb/keymaps/via/rules.mk
diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk
new file mode 100644
index 0000000000..44399851f0
--- /dev/null
+++ b/keyboards/hs60/v2/hhkb/rules.mk
@@ -0,0 +1,31 @@
+# MCU name
+MCU = STM32F303
+
+# 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 += -DNO_SUSPEND_POWER_DOWN
+
+# Build Options
+# comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = lite # 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
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover
+AUDIO_ENABLE = no # Audio output on port C6
+NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+CIE1931_CURVE = yes
+
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ drivers/issi/is31fl3733.c \
+ quantum/color.c \
+ drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/info.json b/keyboards/hs60/v2/info.json
deleted file mode 100644
index c42e9e9418..0000000000
--- a/keyboards/hs60/v2/info.json
+++ /dev/null
@@ -1,1650 +0,0 @@
-{
- "keyboard_name": "HS60v2",
- "maintainer": "yiancar",
- "url": "",
- "width": 15,
- "height": 5,
- "layouts": {
- "LAYOUT_60_ansi": {
- "key_count": 61,
- "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
- }
- ]
- },
- "LAYOUT_60_iso": {
- "key_count": 62,
- "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": "Enter",
- "x": 13.75,
- "y": 1,
- "w": 1.25,
- "h": 2
- },
- {
- "label": "Caps Lock",
- "x": 0,
- "y": 2,
- "w": 1.75
- },
- {
- "label": "A",
- "x": 1.75,
- "y": 2
- },
- {
- "label": "S",
- "x": 2.75,
- "y": 2
- },
- {
- "label": "D",
- "x": 3.75,
- "y": 2
- },
- {
- "label": "F",
- "x": 4.75,
- "y": 2
- },
- {
- "label": "G",
- "x": 5.75,
- "y": 2
- },
- {
- "label": "H",
- "x": 6.75,
- "y": 2
- },
- {
- "label": "J",
- "x": 7.75,
- "y": 2
- },
- {
- "label": "K",
- "x": 8.75,
- "y": 2
- },
- {
- "label": "L",
- "x": 9.75,
- "y": 2
- },
- {
- "label": ":",
- "x": 10.75,
- "y": 2
- },
- {
- "label": "@",
- "x": 11.75,
- "y": 2
- },
- {
- "label": "~",
- "x": 12.75,
- "y": 2
- },
- {
- "label": "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
- }
- ]
- },
- "KEYMAP_AEK": {
- "key_count": 60,
- "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,
- "w": 1.25
- },
- {
- "label": "Alt",
- "x": 2.75,
- "y": 4,
- "w": 1.5
- },
- {
- "x": 4.25,
- "y": 4,
- "w": 6.5
- },
- {
- "label": "AltGr",
- "x": 10.75,
- "y": 4,
- "w": 1.5
- },
- {
- "label": "Win",
- "x": 12.25,
- "y": 4,
- "w": 1.25
- },
- {
- "label": "Ctrl",
- "x": 13.5,
- "y": 4,
- "w": 1.5
- }
- ]
- },
- "KEYMAP": {
- "key_count": 65,
- "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": "Back",
- "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
- },
- {
- "label": "Shift",
- "x": 1,
- "y": 3,
- "w": 1.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": 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": {
- "key_count": 63,
- "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": "Back",
- "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.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/hs60/v2/config.h b/keyboards/hs60/v2/iso/config.h
index 91fdf60809..5c2488c784 100644
--- a/keyboards/hs60/v2/config.h
+++ b/keyboards/hs60/v2/iso/config.h
@@ -82,6 +82,10 @@ 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
+
/* Backlight options */
#define RGB_BACKLIGHT_ENABLED 1
@@ -136,5 +140,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
-#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 32
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/hs60/v2/iso/info.json b/keyboards/hs60/v2/iso/info.json
new file mode 100644
index 0000000000..11f6f52a2e
--- /dev/null
+++ b/keyboards/hs60/v2/iso/info.json
@@ -0,0 +1,76 @@
+{
+ "keyboard_name": "HS60v2",
+ "maintainer": "yiancar",
+ "url": "",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_iso": {
+ "key_count": 62,
+ "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/iso/iso.h b/keyboards/hs60/v2/iso/iso.h
new file mode 100644
index 0000000000..6a51b7556a
--- /dev/null
+++ b/keyboards/hs60/v2/iso/iso.h
@@ -0,0 +1,38 @@
+/* Copyright 2018 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"
+#include "../../wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "via.h"
+
+// This a shortcut to help you visually see your layout.
+
+#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, K3D, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/hs60/v2/keymaps/default/keymap.c b/keyboards/hs60/v2/iso/keymaps/default/keymap.c
index c1e575769f..c1e575769f 100644
--- a/keyboards/hs60/v2/keymaps/default/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/default/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/default/readme.md b/keyboards/hs60/v2/iso/keymaps/default/readme.md
index 9aa0a3a2b5..9aa0a3a2b5 100644
--- a/keyboards/hs60/v2/keymaps/default/readme.md
+++ b/keyboards/hs60/v2/iso/keymaps/default/readme.md
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/keymap.c b/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c
index 12272ee798..12272ee798 100644
--- a/keyboards/hs60/v2/keymaps/iso_andys8/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/readme.md b/keyboards/hs60/v2/iso/keymaps/iso_andys8/readme.md
index 1b843feb92..1b843feb92 100644
--- a/keyboards/hs60/v2/keymaps/iso_andys8/readme.md
+++ b/keyboards/hs60/v2/iso/keymaps/iso_andys8/readme.md
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk b/keyboards/hs60/v2/iso/keymaps/iso_andys8/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
+++ b/keyboards/hs60/v2/iso/keymaps/iso_andys8/rules.mk
diff --git a/keyboards/hs60/v2/keymaps/default_via/keymap.c b/keyboards/hs60/v2/iso/keymaps/via/keymap.c
index c1e575769f..c1e575769f 100644
--- a/keyboards/hs60/v2/keymaps/default_via/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/via/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/default_via/readme.md b/keyboards/hs60/v2/iso/keymaps/via/readme.md
index 2a440f708c..2a440f708c 100644
--- a/keyboards/hs60/v2/keymaps/default_via/readme.md
+++ b/keyboards/hs60/v2/iso/keymaps/via/readme.md
diff --git a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk b/keyboards/hs60/v2/iso/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
+++ b/keyboards/hs60/v2/iso/keymaps/via/rules.mk
diff --git a/keyboards/hs60/v2/keymaps/win_osx_dual/keymap.c b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c
index 31d7ec1ed8..31d7ec1ed8 100644
--- a/keyboards/hs60/v2/keymaps/win_osx_dual/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c
diff --git a/keyboards/hs60/v2/keymaps/win_osx_dual/readme.md b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/readme.md
index c2e58bf686..c2e58bf686 100644
--- a/keyboards/hs60/v2/keymaps/win_osx_dual/readme.md
+++ b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/readme.md
diff --git a/keyboards/hs60/v2/iso/keymaps/win_osx_dual/rules.mk b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk
new file mode 100644
index 0000000000..582ed4e817
--- /dev/null
+++ b/keyboards/hs60/v2/iso/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = STM32F303
+
+# 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 += -DNO_SUSPEND_POWER_DOWN
+
+# Build Options
+# comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = lite # 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
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover
+AUDIO_ENABLE = no # Audio output on port C6
+NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+CIE1931_CURVE = yes
+
+LAYOUTS = 60_iso
+
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ drivers/issi/is31fl3733.c \
+ quantum/color.c \
+ drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/config.h b/keyboards/hs60/v2/keymaps/goatmaster/config.h
deleted file mode 100644
index f63c903556..0000000000
--- a/keyboards/hs60/v2/keymaps/goatmaster/config.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright 2018 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 overwrites for specific keymap */
-
-#define HS60_HHKB
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4855
-
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
-
-#undef RGB_BACKLIGHT_CAPS_LOCK_INDICATOR
-#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 255 }, .index = 3-1 } //red
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/config.h b/keyboards/hs60/v2/keymaps/hhkb_via/config.h
deleted file mode 100644
index fc1b6d8f47..0000000000
--- a/keyboards/hs60/v2/keymaps/hhkb_via/config.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Copyright 2018 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 overwrites for specific keymap */
-
-#define HS60_HHKB
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4855
-
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
diff --git a/keyboards/hs60/v2/readme.md b/keyboards/hs60/v2/readme.md
index e838426a2d..bd747b1f3c 100644
--- a/keyboards/hs60/v2/readme.md
+++ b/keyboards/hs60/v2/readme.md
@@ -17,7 +17,7 @@ Due to the RGB implementation, the HS60 is currently not compatible with communi
Make example for this keyboard (after setting up your build environment):
- make hs60/v2:default
+ make hs60/v2/<layout>: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.
@@ -34,4 +34,4 @@ See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools)
- Unplug
- Hold Escape
- Plug In
-- Flash using QMK Toolbox or dfu-util (`make hs60/v2:<keymap>:dfu-util`)
+- Flash using QMK Toolbox or dfu-util (`make hs60/v2/<layout>:<keymap>:dfu-util`)
diff --git a/keyboards/hs60/v2/v2.c b/keyboards/hs60/v2/v2.c
index 2e12538e9b..f817ef19e7 100644
--- a/keyboards/hs60/v2/v2.c
+++ b/keyboards/hs60/v2/v2.c
@@ -13,6 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#ifndef RGB_BACKLIGHT_HS60
-#error RGB_BACKLIGHT_M60_A not defined, recheck config.h
+#error RGB_BACKLIGHT_HS60 not defined, recheck config.h
#endif
diff --git a/keyboards/idobo/rules.mk b/keyboards/idobo/rules.mk
index 421a4eaae3..62fe37fb3b 100644
--- a/keyboards/idobo/rules.mk
+++ b/keyboards/idobo/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
EXTRAFLAGS += -flto # Use link time optimization
LAYOUTS = ortho_5x15
diff --git a/keyboards/illuminati/is0/rules.mk b/keyboards/illuminati/is0/rules.mk
index 7baa8f4c3a..9c19f7d215 100644
--- a/keyboards/illuminati/is0/rules.mk
+++ b/keyboards/illuminati/is0/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/infinity60/chconf.h b/keyboards/infinity60/chconf.h
index d9114ec858..513ae821db 100644
--- a/keyboards/infinity60/chconf.h
+++ b/keyboards/infinity60/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk
index 6fb43dc752..f93766af97 100644
--- a/keyboards/infinity60/rules.mk
+++ b/keyboards/infinity60/rules.mk
@@ -73,3 +73,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = yes # Custom matrix file
LAYOUTS = 60_ansi_split_bs_rshift
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/ivy/rules.mk b/keyboards/ivy/rules.mk
index ae94bd3fb8..97c9aa1364 100644
--- a/keyboards/ivy/rules.mk
+++ b/keyboards/ivy/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/j80/j80.c b/keyboards/j80/j80.c
index 4ac0200a28..bed30cdecc 100644
--- a/keyboards/j80/j80.c
+++ b/keyboards/j80/j80.c
@@ -16,10 +16,21 @@
#include "j80.h"
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D6);
+}
+
bool led_update_kb(led_t led_state) {
if (led_update_user(led_state)) {
- writePin(D1, led_state.caps_lock);
writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
writePin(D6, led_state.scroll_lock);
}
return true;
diff --git a/keyboards/jc65/v32a/config.h b/keyboards/jc65/v32a/config.h
index 5439dbe396..392aebc2a4 100644
--- a/keyboards/jc65/v32a/config.h
+++ b/keyboards/jc65/v32a/config.h
@@ -32,7 +32,9 @@ 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 DIODE_DIRECTION COL2ROW
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLED_NUM 16
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8
diff --git a/keyboards/jc65/v32a/v32a.c b/keyboards/jc65/v32a/v32a.c
index 2a289872fe..f195e8f61e 100644
--- a/keyboards/jc65/v32a/v32a.c
+++ b/keyboards/jc65/v32a/v32a.c
@@ -17,32 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "v32a.h"
-#ifdef BACKLIGHT_ENABLE
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/jc65/v32u4/rules.mk b/keyboards/jc65/v32u4/rules.mk
index e1498325cc..34206244a8 100644
--- a/keyboards/jc65/v32u4/rules.mk
+++ b/keyboards/jc65/v32u4/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# 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/jd40/rules.mk b/keyboards/jd40/rules.mk
index 439f885fea..73336244e4 100644
--- a/keyboards/jd40/rules.mk
+++ b/keyboards/jd40/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/jd45/rules.mk b/keyboards/jd45/rules.mk
index 9ec5048aec..cc5af4b7a8 100644
--- a/keyboards/jd45/rules.mk
+++ b/keyboards/jd45/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
diff --git a/keyboards/jj40/config.h b/keyboards/jj40/config.h
index 2310ce87e2..90bcacfd16 100644
--- a/keyboards/jj40/config.h
+++ b/keyboards/jj40/config.h
@@ -35,7 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
-// #define BACKLIGHT_BREATHING // Requires #4324 to enable hardware pwm for atmega32a
+#define BACKLIGHT_BREATHING
/* RGB underglow */
// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0.
diff --git a/keyboards/jj40/rules.mk b/keyboards/jj40/rules.mk
index c53a6804c0..767ebb93a3 100644
--- a/keyboards/jj40/rules.mk
+++ b/keyboards/jj40/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -26,11 +26,11 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x12 planck_mit
diff --git a/keyboards/jj4x4/README.md b/keyboards/jj4x4/README.md
index a7c93c930f..24212bc990 100644
--- a/keyboards/jj4x4/README.md
+++ b/keyboards/jj4x4/README.md
@@ -16,6 +16,24 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e
make jj4x4:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *8* while plugging in the keyboard.
+**Reset Key**:
+
+Hold down the key located at *K12*, commonly programmed as *8* while plugging in the keyboard USB cable.
+
+Key *K12* is in the above picture:
+
+Row 2 from the top, Column 2 from the left, see the schematic below:
+
+```
+ ,-----------------------.
+ | | | | |
+ |-----`-----`-----`-----|
+ | | K12 | | |
+ |-----`-----`-----`-----|
+ | | | | |
+ |-----`-----`-----`-----|
+ | | | | |
+ `-----`-----`-----`-----'
+```
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.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/jj4x4/config.h b/keyboards/jj4x4/config.h
index 8918e60dad..b3f33d6e7a 100644
--- a/keyboards/jj4x4/config.h
+++ b/keyboards/jj4x4/config.h
@@ -38,7 +38,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
-// #define BACKLIGHT_BREATHING // Requires #4324 to enable hardware pwm for atmega32a
+#define BACKLIGHT_BREATHING
/* RGB underglow */
// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0.
diff --git a/keyboards/jj4x4/rules.mk b/keyboards/jj4x4/rules.mk
index aa74cc7c92..82e25e6a7a 100644
--- a/keyboards/jj4x4/rules.mk
+++ b/keyboards/jj4x4/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -26,11 +26,11 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x4
diff --git a/keyboards/jj50/backlight.c b/keyboards/jj50/backlight.c
deleted file mode 100644
index fbd241fa9d..0000000000
--- a/keyboards/jj50/backlight.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-#define NUMLOCK_PORT (1 << 0) // D0
-#define CAPSLOCK_PORT (1 << 1) // D1
-#define BACKLIGHT_PORT (1 << 4) // D4
-#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-
- // TODO call user defined function
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/jj50/backlight_custom.h b/keyboards/jj50/backlight_custom.h
deleted file mode 100644
index 7210be840e..0000000000
--- a/keyboards/jj50/backlight_custom.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifndef BACKLIGHT_CUSTOM_H
-#define BACKLIGHT_CUSTOM_H
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
-#endif // BACKLIGHT_CUSTOM_H
diff --git a/keyboards/jj50/breathing_custom.h b/keyboards/jj50/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/jj50/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/jj50/config.h b/keyboards/jj50/config.h
index 884a28d506..9b9feb0676 100644
--- a/keyboards/jj50/config.h
+++ b/keyboards/jj50/config.h
@@ -38,7 +38,7 @@ 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 }
#define DIODE_DIRECTION COL2ROW
-//#define BACKLIGHT_PIN D4
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
#define RGB_DI_PIN E2
diff --git a/keyboards/jj50/jj50.c b/keyboards/jj50/jj50.c
index a302adf405..91b10aebee 100644
--- a/keyboards/jj50/jj50.c
+++ b/keyboards/jj50/jj50.c
@@ -16,20 +16,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "jj50.h"
-
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-void backlight_init_ports(void) {
- b_led_init_ports();
-}
-
-void backlight_task(void) {
- b_led_task();
-}
-
-void backlight_set(uint8_t level) {
- b_led_set(level);
-}
-#endif
diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk
index 62b21e4df2..38faf37162 100644
--- a/keyboards/jj50/rules.mk
+++ b/keyboards/jj50/rules.mk
@@ -29,6 +29,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
#OPT_DEFS = -DDEBUG_LEVEL=0
-SRC = backlight.c
-
LAYOUTS = ortho_5x12
diff --git a/keyboards/jm60/chconf.h b/keyboards/jm60/chconf.h
index d9114ec858..513ae821db 100644
--- a/keyboards/jm60/chconf.h
+++ b/keyboards/jm60/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/jm60/rules.mk b/keyboards/jm60/rules.mk
index d11c38ecfd..ed6431b653 100644
--- a/keyboards/jm60/rules.mk
+++ b/keyboards/jm60/rules.mk
@@ -34,7 +34,7 @@ ARMV = 7
# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
#OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000
-OPT_DEFS =
+OPT_DEFS =
# Build Options
# comment out to disable the options.
@@ -52,5 +52,9 @@ BACKLIGHT_ENABLE = no
VISUALIZER_ENABLE = no
#LED_DRIVER = is31fl3731c
-#LED_WIDTH = 16
+#LED_WIDTH = 16
#LED_HEIGHT = 5
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/jnao/rules.mk b/keyboards/jnao/rules.mk
index 913ba4d1ee..0dcd21146c 100644
--- a/keyboards/jnao/rules.mk
+++ b/keyboards/jnao/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x12 ortho_4x12
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/k_type/chconf.h b/keyboards/k_type/chconf.h
index d9114ec858..513ae821db 100644
--- a/keyboards/k_type/chconf.h
+++ b/keyboards/k_type/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk
index 43579fcc71..e53f316b99 100644
--- a/keyboards/k_type/rules.mk
+++ b/keyboards/k_type/rules.mk
@@ -74,3 +74,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = yes # Custom matrix file
DEBUG_ENABLE = yes
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/kagamidget/config.h b/keyboards/kagamidget/config.h
index 7fe67ffd33..c887302158 100644
--- a/keyboards/kagamidget/config.h
+++ b/keyboards/kagamidget/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kagamidget/rules.mk b/keyboards/kagamidget/rules.mk
index 93c64e7357..a803d1f799 100644
--- a/keyboards/kagamidget/rules.mk
+++ b/keyboards/kagamidget/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/katana60/rules.mk b/keyboards/katana60/rules.mk
index ef5ef06851..62a038091e 100644
--- a/keyboards/katana60/rules.mk
+++ b/keyboards/katana60/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE ?= no # USB Nkey Rollover
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE ?= no # MIDI support
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/kbdfans/kbd19x/rules.mk b/keyboards/kbdfans/kbd19x/rules.mk
index eb9b5fe7b2..1c76790f35 100644
--- a/keyboards/kbdfans/kbd19x/rules.mk
+++ b/keyboards/kbdfans/kbd19x/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/kbdfans/kbd4x/rules.mk b/keyboards/kbdfans/kbd4x/rules.mk
index eccc6ebbed..7c7b490f6a 100644
--- a/keyboards/kbdfans/kbd4x/rules.mk
+++ b/keyboards/kbdfans/kbd4x/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x12 planck_mit
diff --git a/keyboards/kbdfans/kbd66/rules.mk b/keyboards/kbdfans/kbd66/rules.mk
index 4a96ef03fe..5d6c81e7fb 100644
--- a/keyboards/kbdfans/kbd66/rules.mk
+++ b/keyboards/kbdfans/kbd66/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kbdfans/kbd67/hotswap/rules.mk b/keyboards/kbdfans/kbd67/hotswap/rules.mk
index 74a62a22bb..08dd1f6359 100644
--- a/keyboards/kbdfans/kbd67/hotswap/rules.mk
+++ b/keyboards/kbdfans/kbd67/hotswap/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/mikefightsbears/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/mikefightsbears/keymap.c
index bda8fbc7a8..426c729789 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/mikefightsbears/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/mikefightsbears/keymap.c
@@ -10,10 +10,10 @@ 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_DEL,
- KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_END,
- KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, RGB_SAD, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
- KC_TRNS, RGB_RMOD, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_PGUP, KC_VOLD,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ _______, _______, RGB_VAI, _______, _______, RGB_SAI, RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ _______, RGB_SPD, RGB_VAD, RGB_SPI, _______, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_RMOD, RGB_TOG, RGB_MOD, _______, _______, _______, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
)
};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..37d7fc0c3e
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,\
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,\
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,\
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,\
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,\
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [3] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
index b60685e2b0..9e47d12584 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
@@ -1,10 +1,10 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4B42 // KB
#define PRODUCT_ID 0x1224
#define DEVICE_VER 0x0001
#define MANUFACTURER KBDfans
-#define PRODUCT kbd67mkiirgb
+#define PRODUCT kbd67mkiirgb v1
#define DESCRIPTION kbd67mkii rgb keyboard
#define MATRIX_ROWS 5
@@ -42,4 +42,4 @@
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 35
#define DRIVER_2_LED_TOTAL 32
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
index bd6827ab05..f1be48510d 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
@@ -1,10 +1,10 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1224
+#define VENDOR_ID 0x4B42 // KB
+#define PRODUCT_ID 0x1225
#define DEVICE_VER 0x0002
#define MANUFACTURER KBDfans
-#define PRODUCT kbd67mkiirgb
+#define PRODUCT kbd67mkiirgb v2
#define DESCRIPTION kbd67mkii rgb keyboard
#define MATRIX_ROWS 5
diff --git a/keyboards/kbdfans/kbd67/rev1/rules.mk b/keyboards/kbdfans/kbd67/rev1/rules.mk
index a29ca53ecf..7e305070ba 100644
--- a/keyboards/kbdfans/kbd67/rev1/rules.mk
+++ b/keyboards/kbdfans/kbd67/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/kbdfans/kbd67/rev2/rules.mk b/keyboards/kbdfans/kbd67/rev2/rules.mk
index 7f66fc0c84..d97db91e30 100644
--- a/keyboards/kbdfans/kbd67/rev2/rules.mk
+++ b/keyboards/kbdfans/kbd67/rev2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi 65_iso
diff --git a/keyboards/kbdfans/kbd6x/rules.mk b/keyboards/kbdfans/kbd6x/rules.mk
index ae63197e71..ca46832c1b 100644
--- a/keyboards/kbdfans/kbd6x/rules.mk
+++ b/keyboards/kbdfans/kbd6x/rules.mk
@@ -14,20 +14,20 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
index ad3b6f6c5c..1221e753a4 100644
--- a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
@@ -85,6 +85,5 @@ void led_set_user(uint8_t usb_led) {
writePinLow(B2);
} else {
setPinInput(B2);
- writePinLow(B2);
}
}
diff --git a/keyboards/kbdfans/kbd75/readme.md b/keyboards/kbdfans/kbd75/readme.md
index 89fe274161..09f06a6ad5 100644
--- a/keyboards/kbdfans/kbd75/readme.md
+++ b/keyboards/kbdfans/kbd75/readme.md
@@ -4,10 +4,12 @@ Keyboard Maintainer: QMK Community
Hardware Supported: KBD75 PCB rev 1 and 2
Hardware Availability: https://kbdfans.myshopify.com/products/kbd75-keyboard-set?variant=35638534029
-The KBD75 has two revisions. Revision 2 has a USB C port and allows a numpad layout. `.hex` files made
-for KBD75 revision 1, will still work for revision 2. `.hex` files made for revision 2 (excluding the numpad)
-will also still work on revision 1. Both revisions share the same switch matrix but have switch holes in
-different areas.
+The KBD75 was sold through various rounds, with various PCB changes between them.
+
+* **Round 1 (2017)**: Black PCB - Bootmapper Client, atmega32a MCU (Use [Winkeyless.kr B.mini](../../winkeyless/bmini/) firmware)
+* **Round 2 (2018)**: White PCB - Bootmapper Client, atmega32a MCU (Use [Winkeyless.kr B.mini](../../winkeyless/bmini/) firmware)
+* **Round 3-5 (2018)**: White PCB - QMK Firmware, atmega32u4 MCU (Use KBD75 rev1 or rev2(without numpad support))
+* **Round 6 (2019)**: White PCB with USB C - QMK Firmware, atmega32u4 MCU (Use KBD75 rev1 or rev2(with numpad support))
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kbdfans/kbd75/rev1/rules.mk b/keyboards/kbdfans/kbd75/rev1/rules.mk
index de0af62b87..ae6507a855 100644
--- a/keyboards/kbdfans/kbd75/rev1/rules.mk
+++ b/keyboards/kbdfans/kbd75/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/kbdfans/kbd75/rev2/rules.mk b/keyboards/kbdfans/kbd75/rev2/rules.mk
index de0af62b87..ae6507a855 100644
--- a/keyboards/kbdfans/kbd75/rev2/rules.mk
+++ b/keyboards/kbdfans/kbd75/rev2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/kbdfans/kbd8x/rules.mk b/keyboards/kbdfans/kbd8x/rules.mk
index fcc28884f3..e177a25582 100644
--- a/keyboards/kbdfans/kbd8x/rules.mk
+++ b/keyboards/kbdfans/kbd8x/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.c b/keyboards/kbdfans/kbdpad/mk1/mk1.c
index aa781875ce..540ba35892 100644
--- a/keyboards/kbdfans/kbdpad/mk1/mk1.c
+++ b/keyboards/kbdfans/kbdpad/mk1/mk1.c
@@ -16,14 +16,18 @@
#include "mk1.h"
-#define NUMLOCK_PIN D0
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
-void matrix_init_kb(void) {
- setPinOutput(NUMLOCK_PIN);
- matrix_init_user();
+void led_init_ports(void) {
+ setPinOutput(D0);
}
-void led_set_kb(uint8_t usb_led) {
- writePin(NUMLOCK_PIN, IS_LED_ON(usb_led, USB_LED_NUM_LOCK));
- led_set_user(usb_led);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ }
+ return true;
}
diff --git a/keyboards/kbdfans/kbdpad_mk2/rules.mk b/keyboards/kbdfans/kbdpad_mk2/rules.mk
index cfb65f5edf..0b86b59049 100644
--- a/keyboards/kbdfans/kbdpad_mk2/rules.mk
+++ b/keyboards/kbdfans/kbdpad_mk2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_6x4
diff --git a/keyboards/kc60/keymaps/ws2812/rules.mk b/keyboards/kc60/keymaps/ws2812/rules.mk
index 5d5a6f8abe..393ff863e0 100644
--- a/keyboards/kc60/keymaps/ws2812/rules.mk
+++ b/keyboards/kc60/keymaps/ws2812/rules.mk
@@ -3,10 +3,10 @@
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/kc60/rules.mk b/keyboards/kc60/rules.mk
index 3e7e4797c6..487b22c38d 100644
--- a/keyboards/kc60/rules.mk
+++ b/keyboards/kc60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/kc60se/rules.mk b/keyboards/kc60se/rules.mk
index 1685cb7423..0432d80324 100644
--- a/keyboards/kc60se/rules.mk
+++ b/keyboards/kc60se/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/keebio/bdn9/rules.mk b/keyboards/keebio/bdn9/rules.mk
index a548334074..176175ca2b 100644
--- a/keyboards/keebio/bdn9/rules.mk
+++ b/keyboards/keebio/bdn9/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keebio/bfo9000/config.h b/keyboards/keebio/bfo9000/config.h
index b45ec9c2fa..0b279bc343 100644
--- a/keyboards/keebio/bfo9000/config.h
+++ b/keyboards/keebio/bfo9000/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D3, D2, D4, C6, D7, E6 }
#define MATRIX_COL_PINS { B5, B6, B2, B3, B1, F7, F6, F5, F4 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/bfo9000/rules.mk b/keyboards/keebio/bfo9000/rules.mk
index c0f4ed42dd..af9ca797b5 100644
--- a/keyboards/keebio/bfo9000/rules.mk
+++ b/keyboards/keebio/bfo9000/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/chocopad/rules.mk b/keyboards/keebio/chocopad/rules.mk
index ac68b66523..a21d919d77 100644
--- a/keyboards/keebio/chocopad/rules.mk
+++ b/keyboards/keebio/chocopad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/keebio/dilly/rules.mk b/keyboards/keebio/dilly/rules.mk
index 14f62bd8f7..dbb338e3a5 100644
--- a/keyboards/keebio/dilly/rules.mk
+++ b/keyboards/keebio/dilly/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/keebio/ergodicity/rules.mk b/keyboards/keebio/ergodicity/rules.mk
index 0c794fb751..3d318fc7b8 100644
--- a/keyboards/keebio/ergodicity/rules.mk
+++ b/keyboards/keebio/ergodicity/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/keebio/fourier/config.h b/keyboards/keebio/fourier/config.h
index 9ddc53a0c8..a0e85a3b1e 100644
--- a/keyboards/keebio/fourier/config.h
+++ b/keyboards/keebio/fourier/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F4, D7, E6, B4 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
#define QMK_ESC_OUTPUT F5
#define QMK_ESC_INPUT F4
#define QMK_LED B0
diff --git a/keyboards/keebio/fourier/rules.mk b/keyboards/keebio/fourier/rules.mk
index 9bd9e1dccc..6ad9ad9ce3 100644
--- a/keyboards/keebio/fourier/rules.mk
+++ b/keyboards/keebio/fourier/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/iris/keymaps/jasondunsmore/config.h b/keyboards/keebio/iris/keymaps/jasondunsmore/config.h
index 8aa4be367f..195c1d3bb3 100644
--- a/keyboards/keebio/iris/keymaps/jasondunsmore/config.h
+++ b/keyboards/keebio/iris/keymaps/jasondunsmore/config.h
@@ -17,11 +17,7 @@ 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 TAPPING_TERM 200
+#define TAPPING_TERM 150
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/keebio/iris/keymaps/jasondunsmore/keymap.c b/keyboards/keebio/iris/keymaps/jasondunsmore/keymap.c
index 5f93076631..930c747f09 100644
--- a/keyboards/keebio/iris/keymaps/jasondunsmore/keymap.c
+++ b/keyboards/keebio/iris/keymaps/jasondunsmore/keymap.c
@@ -4,144 +4,61 @@ extern keymap_config_t keymap_config;
// Layers
#define _QWERTY 0 // Base layer
-#define _NUMB 1
-#define _NAVI 2
+#define _NAVI 1 // Navigation layer
+#define _NUMP 2 // Numpad layer
// Keys
-#define KC_NUMB MO(_NUMB)
-#define KC_NAVI MO(_NAVI)
+#define KC_NAVI TT(_NAVI)
+#define KC_NUMP TT(_NUMP)
#define KC_AGRV LALT_T(KC_GRAVE)
+#define KC_AQUO RALT_T(KC_QUOTE)
#define KC_GUIE LGUI_T(KC_ESC)
-#define KC_REST RESET
-#define KC_DBUG DEBUG
-
-// Tap Dance Declarations
-enum {
- TD_LALT_GRV_BSLS = 0,
- TD_LSFT_LBRC,
- TD_RSFT_RBRC,
-};
-
-void alt_grave_backslash(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- if (!state->pressed) {
- register_code(KC_GRAVE);
- } else {
- register_code(KC_LALT);
- }
- } else if (state->count == 2) {
- register_code(KC_BSLASH);
- }
-}
-
-void alt_grave_backslash_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code(KC_GRAVE);
- unregister_code(KC_LALT);
- } else if (state->count == 2) {
- unregister_code(KC_BSLASH);
- }
-}
-
-void left_brackets(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- if (!state->pressed) {
- register_code(KC_LSFT);
- register_code(KC_9);
- } else {
- register_code(KC_LSFT);
- }
- } else if (state->count == 2) {
- register_code(KC_LBRC);
- }
-}
-
-void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code(KC_LSFT);
- unregister_code(KC_9);
- } else if (state->count == 2) {
- unregister_code(KC_LBRC);
- }
-}
-
-void right_brackets(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- if (!state->pressed) {
- register_code(KC_RSFT);
- register_code(KC_0);
- } else {
- register_code(KC_RSFT);
- }
- } else if (state->count == 2) {
- register_code(KC_RBRC);
- }
-}
-
-void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code(KC_RSFT);
- unregister_code(KC_0);
- } else if (state->count == 2) {
- unregister_code(KC_RBRC);
- }
-}
-
-
-// Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
- // Tap once for KC_SLSH, twice for KC_BSLS
- [TD_LALT_GRV_BSLS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, alt_grave_backslash, alt_grave_backslash_reset),
- [TD_LSFT_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset),
- [TD_RSFT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset)
-};
-
-// Tap Dance Keys
-#define KC_AGRB TD(TD_LALT_GRV_BSLS)
-#define KC_LSBK TD(TD_LSFT_LBRC)
-#define KC_RSBK TD(TD_RSFT_RBRC)
+#define KC_DSFT RSFT_T(KC_DEL)
+#define KC_PSFT LSFT_T(KC_KP_PLUS)
+#define KC_MCTL RCTL_T(KC_MINS)
+#define KC_ECTL LCTL_T(KC_EQL)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
- GUIE, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL,
+ GUIE, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSLS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- AGRB, A, S, D, F, G, H, J, K, L, SCLN,QUOT,
+ AGRV, A, S, D, F, G, H, J, K, L, SCLN,AQUO,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- LSBK, Z, X, C, V, B, MINS, EQL, N, M, COMM,DOT, SLSH,RSBK,
+ PSFT, Z, X, C, V, B, NAVI, NAVI, N, M, COMM,DOT, SLSH,DSFT,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
- NUMB,LCTL,SPC, ENT, RCTL,NAVI
+ NAVI,ECTL, SPC, ENT, MCTL,NAVI
// `----+----+----' `----+----+----'
),
- [_NUMB] = LAYOUT_kc(
+ [_NAVI] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
F12, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- NO, F17, F18, F19, F20, NO, NO, 7, 8, 9, 0, TRNS,
+ TRNS,TRNS,MUTE,VOLU,TRNS,TRNS, PGUP,HOME, UP, END, TRNS,TRNS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- TRNS,F13, F14, F15, F16, NO, ASTR, 4, 5, 6, PLUS,TRNS,
+ TRNS,TRNS,BRID,VOLD,BRIU,TRNS, PGDN,LEFT,DOWN,RGHT,TRNS,TRNS,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- TRNS,F21, F22, F23, F24, NO, TRNS, TRNS,SLSH, 1, 2, 3, MINS,TRNS,
+ TRNS,TRNS,TRNS,NUMP,INS, TRNS,TRNS, TRNS,TRNS,CAPS,LBRC,RBRC,TRNS,TRNS,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
- TRNS,TRNS,TRNS, TRNS,DOT, TRNS
+ TRNS,TRNS,TRNS, TRNS,TRNS,TRNS
// `----+----+----' `----+----+----'
- ),
+ ),
- [_NAVI] = LAYOUT_kc(
+ [_NUMP] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
- PWR, MUTE,VOLD,VOLU,BRID,BRIU, REST,DBUG, NO, NO, NO, TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,NLCK,PSLS,PAST,PMNS,TRNS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- WAKE,HOME,PGUP, UP, PGDN,TRNS, NO, NO, NO, NO, NO, TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, P7, P8, P9, PPLS,TRNS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- TRNS,END, LEFT,DOWN,RGHT,TRNS, PAUS,CAPS,PSCR,SLCK,INS, TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, P4, P5, P6, PCMM,TRNS,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, NO, NO, NO, NO, NO, TRNS,
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, P1, P2, P3, PEQL,TRNS,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
- TRNS,TRNS,TRNS, TRNS,TRNS,TRNS
+ TRNS,TRNS,TRNS, PENT, P0, PDOT
// `----+----+----' `----+----+----'
)
};
diff --git a/keyboards/keebio/iris/keymaps/jasondunsmore/readme.md b/keyboards/keebio/iris/keymaps/jasondunsmore/readme.md
index 0817b5e9b0..1f4f576033 100644
--- a/keyboards/keebio/iris/keymaps/jasondunsmore/readme.md
+++ b/keyboards/keebio/iris/keymaps/jasondunsmore/readme.md
@@ -1,7 +1,7 @@
# jasondunsmore's iris layout
-_QWERTY is the default layer, from which all letters, symbols and
-numbers can be accessed. The _NUMB layer contains a numberpad,
-operators, and function keys. The _NAVI layer contains navigation
-keys, some hardware adjustment keys, lock keys, and RESET/DEBUG for
-QMK.
+_QWERTY is the default layer, from which all letters, numbers, and
+symbols (with the exception of the square brackets and curly braces)
+can be accessed. The _NAVI layer contains navigation keys, some
+hardware adjustment keys, and lock keys. The _NUMP layer contains a
+numberpad and operators.
diff --git a/keyboards/keebio/iris/keymaps/jasondunsmore/rules.mk b/keyboards/keebio/iris/keymaps/jasondunsmore/rules.mk
index d58c21f2b9..a6c5cfa18a 100644
--- a/keyboards/keebio/iris/keymaps/jasondunsmore/rules.mk
+++ b/keyboards/keebio/iris/keymaps/jasondunsmore/rules.mk
@@ -1,2 +1 @@
-TAP_DANCE_ENABLE = yes
COMMAND_ENABLE = no
diff --git a/keyboards/keebio/iris/rev1/rules.mk b/keyboards/keebio/iris/rev1/rules.mk
index 2d7155bf8f..53719d7550 100644
--- a/keyboards/keebio/iris/rev1/rules.mk
+++ b/keyboards/keebio/iris/rev1/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = caterina
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/iris/rev1_led/rules.mk b/keyboards/keebio/iris/rev1_led/rules.mk
index 2d7155bf8f..53719d7550 100644
--- a/keyboards/keebio/iris/rev1_led/rules.mk
+++ b/keyboards/keebio/iris/rev1_led/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = caterina
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/iris/rev2/rules.mk b/keyboards/keebio/iris/rev2/rules.mk
index 3178988543..765fa7f07a 100644
--- a/keyboards/keebio/iris/rev2/rules.mk
+++ b/keyboards/keebio/iris/rev2/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = caterina
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/iris/rev3/rules.mk b/keyboards/keebio/iris/rev3/rules.mk
index f3c90a0784..ea92bc98f5 100644
--- a/keyboards/keebio/iris/rev3/rules.mk
+++ b/keyboards/keebio/iris/rev3/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = qmk-dfu
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/iris/rev4/rules.mk b/keyboards/keebio/iris/rev4/rules.mk
index f3c90a0784..ea92bc98f5 100644
--- a/keyboards/keebio/iris/rev4/rules.mk
+++ b/keyboards/keebio/iris/rev4/rules.mk
@@ -16,10 +16,10 @@ BOOTLOADER = qmk-dfu
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/laplace/rules.mk b/keyboards/keebio/laplace/rules.mk
index 01efe96f65..8d273917c7 100644
--- a/keyboards/keebio/laplace/rules.mk
+++ b/keyboards/keebio/laplace/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/keebio/levinson/keymaps/steno/rules.mk b/keyboards/keebio/levinson/keymaps/steno/rules.mk
index 9c31e590ee..47cd0563d5 100644
--- a/keyboards/keebio/levinson/keymaps/steno/rules.mk
+++ b/keyboards/keebio/levinson/keymaps/steno/rules.mk
@@ -1,6 +1,6 @@
EXTRAKEY_ENABLE = no # Disable if you run out of usb endpoints. Media keys need this to work.
-MOUSEKEY_ENABLE = no # Mouse keys(+4700) Uses extra usb enpoints.
-STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER.
+MOUSEKEY_ENABLE = no # Mouse keys Uses extra usb enpoints.
+STENO_ENABLE = yes # Additional protocols for Stenography, requires VIRTSER.
AUDIO_ENABLE = no # Audio output on port C6
MIDI_ENABLE = no # MIDI controls
NKRO_ENABLE = yes
diff --git a/keyboards/keebio/levinson/rev1/config.h b/keyboards/keebio/levinson/rev1/config.h
index a34c8bdcc5..5b23f18c1d 100644
--- a/keyboards/keebio/levinson/rev1/config.h
+++ b/keyboards/keebio/levinson/rev1/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/levinson/rev2/config.h b/keyboards/keebio/levinson/rev2/config.h
index 9d69471253..e8e7294dd8 100644
--- a/keyboards/keebio/levinson/rev2/config.h
+++ b/keyboards/keebio/levinson/rev2/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D4, D7, E6, B4 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/levinson/rev3/config.h b/keyboards/keebio/levinson/rev3/config.h
index 3e45b9d422..da5f4e7417 100644
--- a/keyboards/keebio/levinson/rev3/config.h
+++ b/keyboards/keebio/levinson/rev3/config.h
@@ -40,6 +40,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS_RIGHT { F4, F7, D3, B5, B4, E6 }
#define SPLIT_HAND_PIN D2
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/levinson/rules.mk b/keyboards/keebio/levinson/rules.mk
index c7446445f3..d80f94a294 100644
--- a/keyboards/keebio/levinson/rules.mk
+++ b/keyboards/keebio/levinson/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/nyquist/rev1/rules.mk b/keyboards/keebio/nyquist/rev1/rules.mk
index c377644bae..a3c3f036b2 100644
--- a/keyboards/keebio/nyquist/rev1/rules.mk
+++ b/keyboards/keebio/nyquist/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/nyquist/rev2/rules.mk b/keyboards/keebio/nyquist/rev2/rules.mk
index a6131ae528..9735fbebdc 100644
--- a/keyboards/keebio/nyquist/rev2/rules.mk
+++ b/keyboards/keebio/nyquist/rev2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/nyquist/rev3/rules.mk b/keyboards/keebio/nyquist/rev3/rules.mk
index 740ff80024..d7db1800a0 100644
--- a/keyboards/keebio/nyquist/rev3/rules.mk
+++ b/keyboards/keebio/nyquist/rev3/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = qmk-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/quefrency/keymaps/default65/keymap.c b/keyboards/keebio/quefrency/keymaps/default65/keymap.c
index 3e77731671..4ac622f8ed 100644
--- a/keyboards/keebio/quefrency/keymaps/default65/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default65/keymap.c
@@ -30,3 +30,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+
+void 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);
+ }
+ }
+}
diff --git a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c b/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
index 4503291d28..478152006e 100644
--- a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
@@ -30,3 +30,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+
+void 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);
+ }
+ }
+}
diff --git a/keyboards/hs60/v2/keymaps/ansi/config.h b/keyboards/keebio/quefrency/keymaps/yoryer/config.h
index 96adaf5688..f9efe78c5b 100644
--- a/keyboards/hs60/v2/keymaps/ansi/config.h
+++ b/keyboards/keebio/quefrency/keymaps/yoryer/config.h
@@ -1,5 +1,9 @@
/*
-Copyright 2018 Yiancar
+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
@@ -14,10 +18,10 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#pragma once
-/* Include overwrites for specific keymap */
+/* Use I2C or Serial, not both */
-#define HS60_ANSI
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4854
+#define USE_SERIAL
+// #define USE_I2C
diff --git a/keyboards/keebio/quefrency/keymaps/yoryer/keymap.c b/keyboards/keebio/quefrency/keymaps/yoryer/keymap.c
new file mode 100644
index 0000000000..fcfaead5b1
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/yoryer/keymap.c
@@ -0,0 +1,50 @@
+#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 {
+ _BASE,
+ _FN1,
+ _RGB2,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /**
+ LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
+ LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
+ LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
+ LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
+ LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
+ ) \
+ **/
+ [_BASE] = LAYOUT_65(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_HOME, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(_FN1), KC_SPC, _______, KC_RALT, KC_RCTL, MO(_FN1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_65(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, KC_BRMU, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMD, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, \
+ _______, _______, _______, TG(_RGB2), _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [_RGB2] = LAYOUT_65(
+ KC_GESC, 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_VAI, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAD, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_HUD, RGB_MOD
+ )
+};
diff --git a/keyboards/keebio/quefrency/quefrency.h b/keyboards/keebio/quefrency/quefrency.h
index 0c387a6d5d..89db94236f 100644
--- a/keyboards/keebio/quefrency/quefrency.h
+++ b/keyboards/keebio/quefrency/quefrency.h
@@ -5,6 +5,9 @@
#ifdef KEYBOARD_keebio_quefrency_rev1
#include "rev1.h"
#endif
+#ifdef KEYBOARD_keebio_quefrency_rev2
+ #include "rev2.h"
+#endif
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
diff --git a/keyboards/keebio/quefrency/rev1/config.h b/keyboards/keebio/quefrency/rev1/config.h
index 1d726a0fc3..1e3be6347a 100644
--- a/keyboards/keebio/quefrency/rev1/config.h
+++ b/keyboards/keebio/quefrency/rev1/config.h
@@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS_RIGHT { F5, F6, F7, B1, B3, B2, B6, C6 }
#define SPLIT_HAND_PIN D2
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/quefrency/rev2/config.h b/keyboards/keebio/quefrency/rev2/config.h
new file mode 100644
index 0000000000..e50c8142e8
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev2/config.h
@@ -0,0 +1,62 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xCB10
+#define PRODUCT_ID 0x1257
+#define DEVICE_VER 0x0200
+#define MANUFACTURER Keebio
+#define PRODUCT Quefrency
+#define DESCRIPTION Split 60/65 percent staggered keyboard
+
+/* 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 { F6 }
+#define ENCODERS_PAD_B { F5 }
+#define ENCODERS_PAD_A_RIGHT { D4 }
+#define ENCODERS_PAD_B_RIGHT { D6 }
+
+/* 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 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 }
diff --git a/keyboards/keebio/quefrency/rev2/rev2.c b/keyboards/keebio/quefrency/rev2/rev2.c
new file mode 100644
index 0000000000..d713a0ff3a
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev2/rev2.c
@@ -0,0 +1 @@
+#include "quefrency.h"
diff --git a/keyboards/keebio/quefrency/rev2/rev2.h b/keyboards/keebio/quefrency/rev2/rev2.h
new file mode 100644
index 0000000000..6d3db55842
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev2/rev2.h
@@ -0,0 +1,194 @@
+#pragma once
+
+#include "quefrency.h"
+#include "quantum.h"
+
+#ifdef USE_I2C
+#include <stddef.h>
+#ifdef __AVR__
+ #include <avr/io.h>
+ #include <avr/interrupt.h>
+#endif
+#endif
+
+#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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
+ }
+
+#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1
+
+#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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, 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, RE4, RE5, RE6, 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, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
+ }
diff --git a/keyboards/keebio/quefrency/rev2/rules.mk b/keyboards/keebio/quefrency/rev2/rules.mk
new file mode 100644
index 0000000000..32e7881599
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev2/rules.mk
@@ -0,0 +1,3 @@
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/rules.mk b/keyboards/keebio/quefrency/rules.mk
index 284a0def32..a13f0478b1 100644
--- a/keyboards/keebio/quefrency/rules.mk
+++ b/keyboards/keebio/quefrency/rules.mk
@@ -15,11 +15,11 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
diff --git a/keyboards/keebio/rorschach/rules.mk b/keyboards/keebio/rorschach/rules.mk
index f6007e4422..caf5fdf824 100644
--- a/keyboards/keebio/rorschach/rules.mk
+++ b/keyboards/keebio/rorschach/rules.mk
@@ -11,10 +11,10 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = caterina
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/tragicforce68/rules.mk b/keyboards/keebio/tragicforce68/rules.mk
index f9f487a2a6..549ffe9fad 100644
--- a/keyboards/keebio/tragicforce68/rules.mk
+++ b/keyboards/keebio/tragicforce68/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/keebio/tukey/rules.mk b/keyboards/keebio/tukey/rules.mk
index c74f169961..af163a0d68 100644
--- a/keyboards/keebio/tukey/rules.mk
+++ b/keyboards/keebio/tukey/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/keebio/viterbi/rules.mk b/keyboards/keebio/viterbi/rules.mk
index 0759ab925e..0b746d1720 100644
--- a/keyboards/keebio/viterbi/rules.mk
+++ b/keyboards/keebio/viterbi/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keebio/wavelet/config.h b/keyboards/keebio/wavelet/config.h
index 6f67fdbaf5..71366ec24b 100644
--- a/keyboards/keebio/wavelet/config.h
+++ b/keyboards/keebio/wavelet/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F4, F5, F7, B3, D2, D1, D4, D7 }
#define MATRIX_COL_PINS { F6, B1, B2, B6, B4, E6 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/keebio/wavelet/rules.mk b/keyboards/keebio/wavelet/rules.mk
index f924db62b8..b00535b7b4 100644
--- a/keyboards/keebio/wavelet/rules.mk
+++ b/keyboards/keebio/wavelet/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/keycapsss/o4l_5x12/rules.mk b/keyboards/keycapsss/o4l_5x12/rules.mk
index 0703535375..8077dc1e14 100644
--- a/keyboards/keycapsss/o4l_5x12/rules.mk
+++ b/keyboards/keycapsss/o4l_5x12/rules.mk
@@ -11,10 +11,10 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = caterina
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/keyhive/maypad/rules.mk b/keyboards/keyhive/maypad/rules.mk
index f76179af65..a14772f6a2 100644
--- a/keyboards/keyhive/maypad/rules.mk
+++ b/keyboards/keyhive/maypad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x4 numpad_5x4
diff --git a/keyboards/kinesis/keymaps/carpalx/rules.mk b/keyboards/kinesis/keymaps/carpalx/rules.mk
index 63f52ac18e..9c6a4673d2 100644
--- a/keyboards/kinesis/keymaps/carpalx/rules.mk
+++ b/keyboards/kinesis/keymaps/carpalx/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # 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
diff --git a/keyboards/kinesis/keymaps/default/rules.mk b/keyboards/kinesis/keymaps/default/rules.mk
index 7a331cd530..46af5cd7b4 100644
--- a/keyboards/kinesis/keymaps/default/rules.mk
+++ b/keyboards/kinesis/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/kinesis/keymaps/default_pretty/rules.mk b/keyboards/kinesis/keymaps/default_pretty/rules.mk
index 7a331cd530..46af5cd7b4 100644
--- a/keyboards/kinesis/keymaps/default_pretty/rules.mk
+++ b/keyboards/kinesis/keymaps/default_pretty/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/kinesis/keymaps/dvorak/rules.mk b/keyboards/kinesis/keymaps/dvorak/rules.mk
index 7a331cd530..46af5cd7b4 100644
--- a/keyboards/kinesis/keymaps/dvorak/rules.mk
+++ b/keyboards/kinesis/keymaps/dvorak/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk
index faa3e454c9..cc0691e984 100644
--- a/keyboards/kinesis/rules.mk
+++ b/keyboards/kinesis/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
# 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/kingly_keys/little_foot/rules.mk b/keyboards/kingly_keys/little_foot/rules.mk
index d360340c56..c314b98ddd 100644
--- a/keyboards/kingly_keys/little_foot/rules.mk
+++ b/keyboards/kingly_keys/little_foot/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/kingly_keys/romac/keymaps/stanrc85/rules.mk b/keyboards/kingly_keys/romac/keymaps/stanrc85/rules.mk
index 1e3cebb145..5e60b284cc 100644
--- a/keyboards/kingly_keys/romac/keymaps/stanrc85/rules.mk
+++ b/keyboards/kingly_keys/romac/keymaps/stanrc85/rules.mk
@@ -1 +1,3 @@
RGBLIGHT_ENABLE = yes
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kingly_keys/romac/rules.mk b/keyboards/kingly_keys/romac/rules.mk
index a3da8aa834..9bd22f18b6 100644
--- a/keyboards/kingly_keys/romac/rules.mk
+++ b/keyboards/kingly_keys/romac/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = full # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/kingly_keys/romac_plus/rules.mk b/keyboards/kingly_keys/romac_plus/rules.mk
index ce00f6166c..24aa01c539 100644
--- a/keyboards/kingly_keys/romac_plus/rules.mk
+++ b/keyboards/kingly_keys/romac_plus/rules.mk
@@ -14,20 +14,20 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
ENCODER_ENABLE = yes # Enable support for EC11 Rotary Encoder
OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
diff --git a/keyboards/kingly_keys/ropro/rules.mk b/keyboards/kingly_keys/ropro/rules.mk
index 69774ec351..d3fad82658 100644
--- a/keyboards/kingly_keys/ropro/rules.mk
+++ b/keyboards/kingly_keys/ropro/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
diff --git a/keyboards/kingly_keys/smd_milk/rules.mk b/keyboards/kingly_keys/smd_milk/rules.mk
index 815f4866cf..f34f8891b9 100644
--- a/keyboards/kingly_keys/smd_milk/rules.mk
+++ b/keyboards/kingly_keys/smd_milk/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/kingly_keys/soap/rules.mk b/keyboards/kingly_keys/soap/rules.mk
index 27e3158479..56adb1e558 100644
--- a/keyboards/kingly_keys/soap/rules.mk
+++ b/keyboards/kingly_keys/soap/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
diff --git a/keyboards/kira75/rules.mk b/keyboards/kira75/rules.mk
index 0f29718cc8..ad3d1a865c 100644
--- a/keyboards/kira75/rules.mk
+++ b/keyboards/kira75/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kmac/config.h b/keyboards/kmac/config.h
index 652263d2b7..b2c7f4d441 100644
--- a/keyboards/kmac/config.h
+++ b/keyboards/kmac/config.h
@@ -46,7 +46,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define DIODE_DIRECTION
/* number of backlight levels */
-#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_LEVELS 3
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
diff --git a/keyboards/kmac/matrix.c b/keyboards/kmac/matrix.c
index 2212ee076b..9bc59a0784 100644
--- a/keyboards/kmac/matrix.c
+++ b/keyboards/kmac/matrix.c
@@ -140,7 +140,7 @@ static void select_col(uint8_t col) {
static void init_pins(void) {
unselect_cols();
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- setPinInput(row_pins[x]);
+ setPinInputHigh(row_pins[x]);
}
setPinInputHigh(E2);
diff --git a/keyboards/kmac/rules.mk b/keyboards/kmac/rules.mk
index 8f53f26cd7..beda52398c 100644
--- a/keyboards/kmac/rules.mk
+++ b/keyboards/kmac/rules.mk
@@ -17,18 +17,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kmini/config.h b/keyboards/kmini/config.h
index b5460c9dea..6224a739ef 100755
--- a/keyboards/kmini/config.h
+++ b/keyboards/kmini/config.h
@@ -43,7 +43,7 @@
//#define DIODE_DIRECTION
/* number of backlight levels */
-#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_LEVELS 3
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
diff --git a/keyboards/kmini/rules.mk b/keyboards/kmini/rules.mk
index 0406c32326..076770a0a0 100755
--- a/keyboards/kmini/rules.mk
+++ b/keyboards/kmini/rules.mk
@@ -17,18 +17,18 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/knops/mini/keymaps/mverteuil/config.h b/keyboards/knops/mini/keymaps/mverteuil/config.h
new file mode 100644
index 0000000000..f72145c5a8
--- /dev/null
+++ b/keyboards/knops/mini/keymaps/mverteuil/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2017 Pawnerd, 2019 Matthew de Verteuil
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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(AUDIO_ENABLE)
+ #define AUDIO_CLICKY
+ #define B5_AUDIO
+ #define C6_AUDIO
+ #define STARTUP_SONG SONG(ZELDA_PUZZLE)
+ #define GOODBYE_SONG SONG(COIN_SOUND)
+#endif
diff --git a/keyboards/knops/mini/keymaps/mverteuil/keymap.c b/keyboards/knops/mini/keymaps/mverteuil/keymap.c
new file mode 100644
index 0000000000..5ecba0d5a1
--- /dev/null
+++ b/keyboards/knops/mini/keymaps/mverteuil/keymap.c
@@ -0,0 +1,306 @@
+#include QMK_KEYBOARD_H
+
+#define MAXIMIZ A(G(KC_F))
+#define NXTDSPL C(A(G(KC_RIGHT)))
+#define BTMHALF A(G(KC_DOWN))
+#define TOPHALF A(G(KC_UP))
+#define NXTTHRD SS_LCTL(SS_LALT(SS_TAP(X_RIGHT)))
+#define PRVTHRD C(A(KC_LEFT))
+
+#define LT_MSTP LT(_LAYER_SELECT, KC_MSTP)
+#define LT_ESC LT(_LAYER_SELECT, KC_ESC)
+#define LT_NXTH TD(TD_SPEC)
+
+#define writeLayerLedState(layer) writePin(layer)
+#define layer_led_0_off B6, false
+#define layer_led_1_off D5, true
+#define layer_led_2_off B0, false
+#define layer_led_0_on B6, true
+#define layer_led_1_on D5, false
+#define layer_led_2_on B0, true
+
+void led_init_animation(void);
+void led_set_layer(int layer);
+void td_spectacles_finish(qk_tap_dance_state_t *state, void *user_data);
+void td_spectacles_reset(qk_tap_dance_state_t *state, void *user_data);
+
+enum layer_led_mode {
+ ALL_LAYERS_OFF = -1,
+ LAYER_0,
+ LAYER_1,
+ LAYER_2,
+ LAYER_3,
+ LAYER_4,
+ LAYER_5,
+ ALL_LAYERS_ON,
+};
+
+enum mini_layers {
+ _MEDIA,
+ _COPYPASTA,
+ _SPECTACLES,
+ _LAYER_3,
+ _LAYER_4,
+ _LAYER_5,
+ _LAYER_SELECT,
+};
+
+enum { TD_SPEC = 0 };
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ /* Tap once for spectacles macro, hold for layer toggle */
+ [TD_SPEC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_spectacles_finish, td_spectacles_reset),
+};
+
+/*
+ * Key Layout
+ * _____ _____ _____
+ * | | | | | |
+ * | 1 | | 2 | | 3 |
+ * |_____| |_____| |_____|
+ * _____ _____ _____
+ * | | | | | |
+ * | 4 | | 5 | | 6 |
+ * |_____| |_____| |_____|
+ *
+ * Hold 1 and:
+ * - press 4, 5, or 6 to change layers
+ * - press 3 to reset, or press and hold 3 to enter DFU programming mode
+ *
+ * If something prevents you from using the above to reprogram, you can hold 3 while powering on as a fallback.
+ */
+
+/* clang-format off */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * Layer 0 (Media Keys)
+ * _____ _____ _____
+ * | | | | | |
+ * |Stop | |VolUp| |Play |
+ * |_____| |_____| |_____|
+ * _____ _____ _____
+ * | | | | | |
+ * |Prev | |VolDn| |Next |
+ * |_____| |_____| |_____|
+ *
+ */
+ [_MEDIA] = LAYOUT(
+ LT_MSTP, KC_VOLU, KC_MPLY,
+ KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ /*
+ * Layer 1 (Copy and Paste Macros)
+ * _____ _____ _____
+ * | | | | | |
+ * | ESC | |Ctl+Z| |CSf+Z|
+ * |_____| |_____| |_____|
+ * _____ _____ _____
+ * | | | | | |
+ * |Ctl+X| |Ctl+C| |Ctl+V|
+ * |_____| |_____| |_____|
+ *
+ */
+
+ [_COPYPASTA] = LAYOUT(
+ LT_ESC, C(KC_Z), C(S(KC_Z)),
+ C(KC_X), C(KC_C), C(KC_V)
+ ),
+
+ /*
+ * Layer 2 (Spectacles Macros)
+ * _LT&_ _____ _____
+ * | Win | | Win | | Win |
+ * | Next| | Top | |Mximze
+ * |_1/3_| |_1/2_| |_____|
+ * _____ _____ _____
+ * | Win | | Win | | Win |
+ * | Prev| | Bot | | Next|
+ * |_1/3_| |_1/2_| |Displ|
+ *
+ */
+ [_SPECTACLES] = LAYOUT(
+ LT_NXTH,TOPHALF,MAXIMIZ,
+ PRVTHRD,BTMHALF,NXTDSPL
+ ),
+
+ /*
+ * Layer 6 (Layer Select/Reset)
+ * _____ _____ _____
+ * | | | | | |
+ * |None | |None | |Reset|
+ * |_____| |_____| |_____|
+ * _____ _____ _____
+ * |Layer| |Layer| |Layer|
+ * | 0 | | 1 | | 2 |
+ * |_____| |_____| |_____|
+ *
+ * Layers 0, 1, and 2 have the top left button held to activate this layer.
+ * Then press the specific layer to switch to it.
+ *
+ */
+ [_LAYER_SELECT] = LAYOUT(
+ _______, _______, RESET,
+ TO(_MEDIA),TO(_COPYPASTA),TO(_SPECTACLES)
+ )
+};
+/* clang-format on */
+
+/*
+ * Knops Mini LED Numbers:
+ * _____ _____ _____
+ * | | | | | |
+ * | 1 | | 2 | | 3 | <---
+ * |_____| |_____| |_____| | These LEDs are called 'Switch LEDs'
+ * _____ _____ _____ |----- To turn on/off these leds, use:
+ * | | | | | | | set_switch_led( [1-6], [true/false]);
+ * | 4 | | 5 | | 6 | <---
+ * |_____| |_____| |_____|
+ *
+ * < 0 > < 1 > < 2 > <--- These front-LEDs are called 'Layer LEDs'
+ * To turn on/off these leds, use:
+ * set_layer_led( [0-2], [true/false] );
+ */
+
+void set_switch_led(int ledId, bool state) {
+ switch (ledId) {
+ case 1:
+ writePin(D7, state);
+ break;
+ case 2:
+ writePin(readPin(B7) ? C6 : C7, state);
+ break;
+ case 3:
+ writePin(D4, state);
+ break;
+ case 4:
+ writePin(E6, state);
+ break;
+ case 5:
+ writePin(B4, state);
+ break;
+ case 6:
+ writePin(D6, state);
+ break;
+ }
+}
+
+void set_layer_led(int layerLedMode) {
+ writeLayerLedState(layer_led_0_off);
+ writeLayerLedState(layer_led_1_off);
+ writeLayerLedState(layer_led_2_off);
+
+ switch (layerLedMode) {
+ case ALL_LAYERS_OFF:
+ break;
+ case LAYER_0:
+ writeLayerLedState(layer_led_0_on);
+ break;
+ case LAYER_1:
+ writeLayerLedState(layer_led_1_on);
+ break;
+ case LAYER_2:
+ writeLayerLedState(layer_led_2_on);
+ break;
+ case LAYER_3:
+ writeLayerLedState(layer_led_0_on);
+ writeLayerLedState(layer_led_1_on);
+ break;
+ case LAYER_4:
+ writeLayerLedState(layer_led_1_on);
+ writeLayerLedState(layer_led_2_on);
+ break;
+ case LAYER_5:
+ writeLayerLedState(layer_led_0_on);
+ writeLayerLedState(layer_led_2_on);
+ break;
+ default:
+ writeLayerLedState(layer_led_0_on);
+ writeLayerLedState(layer_led_1_on);
+ writeLayerLedState(layer_led_2_on);
+ break;
+ }
+}
+
+void led_init_animation() {
+ for (int i = ALL_LAYERS_OFF; i <= ALL_LAYERS_ON; i++) {
+ led_set_layer(i);
+ }
+
+ led_set_layer(LAYER_0);
+}
+
+/*
+ * This function led_set_layer gets called when you switch between layers.
+ * It allows you to turn on and off leds for each different layer and do
+ * other cool stuff.
+ */
+void led_set_layer(int layer) {
+ switch (layer) {
+ case ALL_LAYERS_OFF:
+ set_switch_led(1, false);
+ set_switch_led(2, false);
+ set_switch_led(3, false);
+ set_switch_led(4, false);
+ set_switch_led(5, false);
+ set_switch_led(6, false);
+
+ case _LAYER_SELECT:
+ set_switch_led(1, false);
+ set_switch_led(2, false);
+ set_switch_led(3, false);
+ set_switch_led(4, true);
+ set_switch_led(5, true);
+ set_switch_led(6, true);
+ break;
+
+ default:
+ set_switch_led(1, true);
+ set_switch_led(2, true);
+ set_switch_led(3, true);
+ set_switch_led(4, true);
+ set_switch_led(5, true);
+ set_switch_led(6, true);
+ break;
+ }
+
+ set_layer_led(layer);
+}
+
+/*
+ * Prepare all LED ports for output
+ */
+void led_init_ports() {
+ setPinOutput(D7); // Switch 1 LED
+ setPinOutput(C6); // Switch 2 LED Pin1
+ setPinOutput(C7); // Switch 2 LED Pin2
+ setPinOutput(D4); // Switch 3 LED
+ setPinOutput(E6); // Switch 4 LED
+ setPinOutput(B4); // Switch 5 LED
+ setPinOutput(D6); // Switch 6 LED
+ setPinOutput(D5); // Layer 0 LED
+ setPinOutput(B6); // Layer 1 LED
+ setPinOutput(B0); // Layer 2 LED
+}
+
+// Runs on layer change, no matter where the change was initiated
+layer_state_t layer_state_set_user(layer_state_t state) {
+ set_layer_led(get_highest_layer(state));
+ led_set_layer(get_highest_layer(state));
+ return state;
+}
+
+void matrix_init_user(void) {
+ led_init_ports();
+ led_init_animation();
+}
+
+void td_spectacles_finish(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->pressed) {
+ layer_on(_LAYER_SELECT);
+ } else {
+ SEND_STRING(NXTTHRD);
+ }
+}
+
+void td_spectacles_reset(qk_tap_dance_state_t *state, void *user_data) { layer_off(_LAYER_SELECT); }
diff --git a/keyboards/knops/mini/keymaps/mverteuil/readme.md b/keyboards/knops/mini/keymaps/mverteuil/readme.md
new file mode 100644
index 0000000000..46ea015832
--- /dev/null
+++ b/keyboards/knops/mini/keymaps/mverteuil/readme.md
@@ -0,0 +1 @@
+# mverteuil does knops mini
diff --git a/keyboards/knops/mini/keymaps/mverteuil/rules.mk b/keyboards/knops/mini/keymaps/mverteuil/rules.mk
new file mode 100644
index 0000000000..91a53d56ac
--- /dev/null
+++ b/keyboards/knops/mini/keymaps/mverteuil/rules.mk
@@ -0,0 +1,6 @@
+BACKLIGHT_ENABLE = no
+CONSOLE_ENABLE = no
+TAP_DANCE_ENABLE = yes
+MOUSEKEY_ENABLE = no
+AUDIO_ENABLE = no
+
diff --git a/keyboards/knops/mini/rules.mk b/keyboards/knops/mini/rules.mk
index ef5ef06851..312bfb4fdc 100644
--- a/keyboards/knops/mini/rules.mk
+++ b/keyboards/knops/mini/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE ?= no # USB Nkey Rollover
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE ?= no # MIDI support
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/kona_classic/keymaps/ansi/rules.mk b/keyboards/kona_classic/keymaps/ansi/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/ansi/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/ansi_split/rules.mk b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/ansi_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/default/rules.mk b/keyboards/kona_classic/keymaps/default/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/default/rules.mk
+++ b/keyboards/kona_classic/keymaps/default/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/iso/rules.mk b/keyboards/kona_classic/keymaps/iso/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/iso/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/iso_split/rules.mk b/keyboards/kona_classic/keymaps/iso_split/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/iso_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/kona_classic/rules.mk b/keyboards/kona_classic/rules.mk
index 0a7df029c4..2640360f26 100644
--- a/keyboards/kona_classic/rules.mk
+++ b/keyboards/kona_classic/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# 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/kudox/rules.mk b/keyboards/kudox/rules.mk
index 5d8c2b2bb3..4ae8ea7fbb 100644
--- a/keyboards/kudox/rules.mk
+++ b/keyboards/kudox/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk
index 71d7cf2702..d3fa26ee6a 100644
--- a/keyboards/kudox_game/rules.mk
+++ b/keyboards/kudox_game/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/kv/revt/config.h b/keyboards/kv/revt/config.h
new file mode 100644
index 0000000000..8aa5a1d310
--- /dev/null
+++ b/keyboards/kv/revt/config.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 Hybrid65
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6565
+#define PRODUCT_ID 0x6520
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Hybrid
+#define PRODUCT KVT
+#define DESCRIPTION SouthPaw Keyboard
+
+/* 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
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/kv/revt/keymaps/default/keymap.c b/keyboards/kv/revt/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c1f9c6b5c0
--- /dev/null
+++ b/keyboards/kv/revt/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2020 Hybrid65
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap (Base Layer) Default Layer
+ *.----------------------------------------------------------------------------------------------------------------.
+ *| |Esc| | F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F12|F12| |Pscr| Slck | Pause|
+ *| Nlck| / | * | - | | ~ | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| - | = |Backsp | | Inc| Home | PgUp|
+ *|----------------------------------------------------------------------------------------------------------------|
+ *| NP7 | NP8| NP9| | |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | \ | | Del| End | PgDw|
+ *|---------------| + |------------------------------------------------------------------------------------------|
+ *| NP4 | NP5| NP6| | |CAPS | A| S| D| F| G| H| J| K| L| ; | ' |Return | |
+ *|---------------|-----|------------------------------------------------------------------------------------------|
+ *| NP1 | NP2| NP3| | |Shift | Z| X| C| V| B| N| M| , | . | / | Shift | | Up | |
+ *|---------------|Enter|------------------------------------------------------------------------------------------|
+ *| 0 | Del| | |Ctrl|Win |Alt | Space |Alt | Win |FN |Ctrl | |Left| Down | Right|
+ *`----------------------------------------------------------------------------------------------------------------'
+ */
+[0] = LAYOUT_default(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_KP_0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), \
+
+/* Keymap Fn Layer
+ *.-----------------------------------------------------------------------------------------------------------------.
+ *| | | |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| | | | |
+ *| | | | | | | | | | | | | | | | | | | | |Pl/Pa| Next| Vol+|
+ *|-----------------------------------------------------------------------------------------------------------------|
+ *| | | | | | |MB1|MBU|MB2|MWU| | | | | | | | | | | Stop| Prev| Vol-|
+ *|---------------| |-------------------------------------------------------------------------------------------|
+ *| | | | | | |MBL|MBD|MBR|MWD| | | |Rst| | | | | |
+ *|---------------|-----|-------------------------------------------------------------------------------------------|
+ *| | | | | | | | |Calc| | | |Mute| | | | | | | |
+ *|---------------| |-------------------------------------------------------------------------------------------|
+ *| | | | | | | | | | | | | | | | |
+ *'-----------------------------------------------------------------------------------------------------------------'
+ */
+[1] = LAYOUT_default(
+ _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, \
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_VOLU, \
+_______, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_VOLD, \
+_______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, RESET, _______, _______, _______, _______, \
+_______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, \
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
+
+};
diff --git a/keyboards/kv/revt/keymaps/default/readme.md b/keyboards/kv/revt/keymaps/default/readme.md
new file mode 100644
index 0000000000..63fb4e78df
--- /dev/null
+++ b/keyboards/kv/revt/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The Default keymap for KVT
diff --git a/keyboards/kv/revt/readme.md b/keyboards/kv/revt/readme.md
new file mode 100644
index 0000000000..e2f463b37d
--- /dev/null
+++ b/keyboards/kv/revt/readme.md
@@ -0,0 +1,18 @@
+# KVT
+
+![KVT default layout](https://i.imgur.com/nPwxzdU.jpg)
+
+A open source southpaw keyboard. The Default layer is a standard 104 ANSI keyboard just the numpad is on the left.
+There is a fn layer (its not in the layout image but in the keymap file) it adds media keys, f13-f24, and mouse keys.
+
+[More info on KVT github](https://github.com/Hybrid65/KVT)
+
+* Keyboard Maintainer: [Neil Feagan](https://github.com/Hybrid65)
+* Hardware Supported: KVT, Proton C
+* Hardware Availability: [List of vendors](https://qmk.fm/proton-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kv/revt: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/kv/revt/revt.c b/keyboards/kv/revt/revt.c
new file mode 100644
index 0000000000..443a814015
--- /dev/null
+++ b/keyboards/kv/revt/revt.c
@@ -0,0 +1,25 @@
+/* Copyright 2020 Hybrid65
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "revt.h"
+
+void matrix_init_kb(void) {
+ // Turn status LED on
+ setPinOutput(C14);
+ writePinHigh(C14);
+
+ matrix_init_user();
+}
diff --git a/keyboards/kv/revt/revt.h b/keyboards/kv/revt/revt.h
new file mode 100644
index 0000000000..ed98f4aabe
--- /dev/null
+++ b/keyboards/kv/revt/revt.h
@@ -0,0 +1,36 @@
+/* Copyright 2020 Hybrid65
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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( \
+ K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, \
+ K30, K31, K32, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4H, K4J, \
+ K50, K52, K54, K55, K56, K59, K5E, K5F, K5G, K5H, K5I, K5J, K5K \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, K04, KC_NO, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, }, \
+ { K30, K31, K32, KC_NO, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, KC_NO, K3H, KC_NO, KC_NO, KC_NO, }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, KC_NO, KC_NO, K4H, KC_NO, K4J, KC_NO, }, \
+ { K50, KC_NO, K52, KC_NO, K54, K55, K56, KC_NO, KC_NO, K59, KC_NO, KC_NO, KC_NO, KC_NO, K5E, K5F, K5G, K5H, K5I, K5J, K5K }, \
+}
diff --git a/keyboards/kv/revt/rules.mk b/keyboards/kv/revt/rules.mk
new file mode 100644
index 0000000000..3a09683c37
--- /dev/null
+++ b/keyboards/kv/revt/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F303
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/kyria/keymaps/ninjonas/config.h b/keyboards/kyria/keymaps/ninjonas/config.h
new file mode 100644
index 0000000000..5673e6c3d8
--- /dev/null
+++ b/keyboards/kyria/keymaps/ninjonas/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2020 ninjonas
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 200
+
+#ifdef OLED_DRIVER_ENABLE
+ #define OLED_DISPLAY_128X64
+ #define OLED_TIMEOUT 15000
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+# define RGBLIGHT_SLEEP
+# define RGBLIGHT_LIMIT_VAL 200
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_SPLIT
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+#define SPLIT_USB_DETECT
+#define SPLIT_USB_TIMEOUT 1000
diff --git a/keyboards/kyria/keymaps/ninjonas/encoder.c b/keyboards/kyria/keymaps/ninjonas/encoder.c
new file mode 100644
index 0000000000..e3a4f26616
--- /dev/null
+++ b/keyboards/kyria/keymaps/ninjonas/encoder.c
@@ -0,0 +1,84 @@
+/* Copyright 2020 ninjonas
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "ninjonas.h"
+
+#ifdef ENCODER_ENABLE
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ switch (get_highest_layer(layer_state)) {
+ case _LOWER:
+ if (clockwise) {
+ tap_code16(SGUI(KC_TAB));
+ } else {
+ tap_code16(LGUI(KC_TAB));
+ }
+ break;
+ case _RAISE:
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ break;
+ case _ADJUST:
+ if (clockwise) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ break;
+ default:
+ if (clockwise) {
+ tap_code(KC_BRIU);
+ } else {
+ tap_code(KC_BRID);
+ }
+ break;
+ }
+ } else if (index == 1) {
+ switch (get_highest_layer(layer_state)) {
+ case _LOWER:
+ if (clockwise) {
+ tap_code(KC_UP);
+ } else {
+ tap_code(KC_DOWN);
+ }
+ break;
+ case _RAISE:
+ if (clockwise) {
+ tap_code16(LCTL(KC_TAB));
+ } else {
+ tap_code16(LCTL(LSFT(KC_TAB)));
+ }
+ break;
+ case _ADJUST:
+ if (clockwise) {
+ rgblight_increase_val();
+ } else {
+ rgblight_decrease_val();
+ }
+ break;
+ default:
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ break;
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/keyboards/kyria/keymaps/ninjonas/keymap.c b/keyboards/kyria/keymaps/ninjonas/keymap.c
new file mode 100644
index 0000000000..e6cde72d5f
--- /dev/null
+++ b/keyboards/kyria/keymaps/ninjonas/keymap.c
@@ -0,0 +1,105 @@
+/* Copyright 2020 ninjonas
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "ninjonas.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________QWERTY_L3______________________,XXXXXXX,KC_LALT, M_COPA,XXXXXXX,_____________________QWERTY_R3______________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
+// `----------------------------------------' `----------------------------------------'
+ ),
+
+ [_DVORAK] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________DVORAK_L1______________________, _____________________DVORAK_R1______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________DVORAK_L2______________________, _____________________DVORAK_R2______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________DVORAK_L3______________________,XXXXXXX,KC_LALT, M_COPA,XXXXXXX,_____________________DVORAK_R3______________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
+// `----------------------------------------' `----------------------------------------'
+ ),
+
+ [_COLEMAK] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________COLEMAK_L1_____________________, _____________________COLEMAK_R1_____________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________COLEMAK_L2_____________________, _____________________COLEMAK_R2_____________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________COLEMAK_L3_____________________,XXXXXXX,KC_LALT, M_COPA,XXXXXXX,_____________________COLEMAK_R3_____________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
+// `----------------------------------------' `----------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________LOWER_L1_______________________, _____________________LOWER_R1_______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________LOWER_L2_______________________, _____________________LOWER_R2_______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________LOWER_L3_______________________,_______,_______, _______,_______,_____________________LOWER_R3_______________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
+// `----------------------------------------' `----------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________NUM_LEFT_______________________, _____________________NUM_RIGHT______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________SYM_LEFT_______________________, _____________________SYM_RIGHT______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________FUNC_LEFT______________________,_______,_______, K_CPRF,_______,_____________________FUNC_RIGHT_____________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
+// `----------------------------------------' `----------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ _____________________ADJUST_L1______________________, _____________________ADJUST_R1______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ _____________________ADJUST_L2______________________, _____________________ADJUST_R2______________________,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ _____________________ADJUST_L3______________________,_______,_______, _______,_______,_____________________ADJUST_R3______________________,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
+// `----------------------------------------' `----------------------------------------'
+ ),
+/*
+ [_TEMPLATE] = LAYOUT_wrapper(
+// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX
+// `----------------------------------------' `----------------------------------------'
+ ),
+*/
+}; \ No newline at end of file
diff --git a/keyboards/kyria/keymaps/ninjonas/oled.c b/keyboards/kyria/keymaps/ninjonas/oled.c
new file mode 100644
index 0000000000..ff21b4885f
--- /dev/null
+++ b/keyboards/kyria/keymaps/ninjonas/oled.c
@@ -0,0 +1,168 @@
+/* Copyright 2020 ninjonas
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "ninjonas.h"
+
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
+
+static void render_logo(void) {
+ static const char PROGMEM logo[] = {
+ // Converter: https://javl.github.io/image2cpp/
+ // Image Dimensions: 128x64
+ // Code Output Format: Plain Bytes
+ // Draw Mode: Vertical, 1 bit per pixel
+0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0,
+0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
+0xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00,
+0xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
+0xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
+0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe,
+0xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80,
+0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
+0x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07,
+0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8,
+0xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03,
+0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30,
+0x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff,
+0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f,
+0x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 0x04, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8,
+0xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc,
+0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d,
+0x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0,
+0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc,
+0xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0,
+0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc,
+0xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00,
+0x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f,
+0x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f,
+0x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00,
+0x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07,
+0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f,
+0x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f,
+0x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f,
+0x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83,
+0xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff,
+0xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe,
+0x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0,
+0xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff,
+0xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc,
+0xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde,
+0x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
+0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03,
+0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03,
+0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
+0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f,
+0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
+ };
+ oled_write_raw_P(logo, sizeof(logo));
+}
+
+static void render_qmk_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
+
+ oled_write_P(qmk_logo, false);
+}
+
+void oled_white_space(void){
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_layout_state(void) {
+ oled_write_P(PSTR("\nLayout: "), false);
+ switch (biton32(default_layer_state)) {
+ case _COLEMAK:
+ oled_write_P(PSTR("Colemak"), false);
+ break;
+ case _DVORAK:
+ oled_write_P(PSTR("Dvorak"), false);
+ break;
+ case _QWERTY:
+ oled_write_P(PSTR("Qwerty"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+}
+
+static void render_layer_state(void) {
+ oled_write_P(PSTR("\nLayer:"), false);
+ bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
+ bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
+ bool adjust = layer_state_is(_ADJUST);
+
+ if(lower){
+ oled_write_P(PSTR(" Lower "), true);
+ } else if(raise){
+ oled_write_P(PSTR(" Raise "), true);
+ } else if(adjust){
+ oled_write_P(PSTR(" Adjust "), true);
+ } else {
+ oled_write_P(PSTR(" Default"), false);
+ }
+}
+
+void render_mod_state(uint8_t modifiers) {
+ oled_write_P(PSTR("\nMods: "), false);
+ oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT));
+ oled_white_space();
+ oled_write_P(PSTR("CTL"), (modifiers & MOD_MASK_CTRL));
+ oled_white_space();
+ oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
+ oled_white_space();
+ oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
+}
+
+static void render_status(void) {
+ render_qmk_logo();
+ render_layout_state();
+ render_layer_state();
+ render_mod_state(get_mods()|get_oneshot_mods());
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ render_status();
+ } else {
+ render_logo();
+ oled_scroll_left();
+ }
+}
+#endif \ No newline at end of file
diff --git a/keyboards/kyria/keymaps/ninjonas/rules.mk b/keyboards/kyria/keymaps/ninjonas/rules.mk
new file mode 100644
index 0000000000..3b2894a175
--- /dev/null
+++ b/keyboards/kyria/keymaps/ninjonas/rules.mk
@@ -0,0 +1,7 @@
+OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
+ENCODER_ENABLE = yes # Enables the use of one or more encoders
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+
+SRC += encoder.c \
+ oled.c \ No newline at end of file
diff --git a/keyboards/laptreus/rules.mk b/keyboards/laptreus/rules.mk
index 237a6ac8ba..0f192113c2 100644
--- a/keyboards/laptreus/rules.mk
+++ b/keyboards/laptreus/rules.mk
@@ -18,10 +18,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/launchpad/rules.mk b/keyboards/launchpad/rules.mk
index 59b285cf53..2b115b1e1e 100644
--- a/keyboards/launchpad/rules.mk
+++ b/keyboards/launchpad/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/lazydesigners/dimple/rules.mk b/keyboards/lazydesigners/dimple/rules.mk
index 99e4911afa..395cd8e9a6 100644
--- a/keyboards/lazydesigners/dimple/rules.mk
+++ b/keyboards/lazydesigners/dimple/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/lazydesigners/the50/rules.mk b/keyboards/lazydesigners/the50/rules.mk
index 561e38a997..8194d084e0 100644
--- a/keyboards/lazydesigners/the50/rules.mk
+++ b/keyboards/lazydesigners/the50/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/lazydesigners/the60/rules.mk b/keyboards/lazydesigners/the60/rules.mk
index 97ea15d34a..233dd9967e 100644
--- a/keyboards/lazydesigners/the60/rules.mk
+++ b/keyboards/lazydesigners/the60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/hs60/v2/keymaps/hhkb/config.h b/keyboards/lets_split/keymaps/DE_programming/config.h
index fc1b6d8f47..145be14226 100644
--- a/keyboards/hs60/v2/keymaps/hhkb/config.h
+++ b/keyboards/lets_split/keymaps/DE_programming/config.h
@@ -1,5 +1,7 @@
/*
-Copyright 2018 Yiancar
+This is the c configuration file for the keymap
+
+Copyright 2020 Mose Schmiedel <mose.schmiedel@web.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
@@ -16,19 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* Include overwrites for specific keymap */
-
-#define HS60_HHKB
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4855
+/* Use I2C or Serial, not both */
+#define USE_SERIAL
+// #define USE_I2C
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3
-#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
-#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/lets_split/keymaps/DE_programming/keymap.c b/keyboards/lets_split/keymaps/DE_programming/keymap.c
new file mode 100644
index 0000000000..32231f8831
--- /dev/null
+++ b/keyboards/lets_split/keymaps/DE_programming/keymap.c
@@ -0,0 +1,97 @@
+#include QMK_KEYBOARD_H
+#include "keymap_german.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 {
+ _QWERTZ,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwertz
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Z | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | + |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Y | X | C | V | B | N | M | , | . | - |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | AltGr| Alt |Lower |Space | Space| Raise| Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTZ] = LAYOUT(
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
+ KC_ESC, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_PLUS, KC_ENT,
+ KC_LSFT, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_ALGR, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ° | ! | ? | § | € | ~ | $ | ( | ) | < | > | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | Vol+ | Prev | Next | Play | & | @ | { | } | [ | ] |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Vol- | | | | | | % | / | \ | ' | " |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | | | |Lower | | Raise| = | * | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT(
+ DE_CIRC, DE_EXLM, DE_QST, DE_PARA, DE_EURO, DE_TILD, DE_DLR, DE_LPRN, DE_RPRN, DE_LESS, DE_MORE, KC_BSPC,
+ KC_DEL, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, DE_AMPR, DE_AT, DE_LCBR, DE_RCBR, DE_LBRC, DE_RBRC, KC_ENT,
+ KC_LSFT, KC_VOLD, _______, _______, _______, DE_PIPE, DE_PERC, DE_SLSH, DE_BSLS, DE_QUOT, DE_DQOT, KC_RSFT,
+ KC_LCTL, _______, _______, _______, _______, _______, _______, _______, DE_EQL, DE_ASTR, _______, _______
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | / | 7 | 8 | 9 | * | | | | # | Alt | ` | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | 4 | 5 | 6 | - | Pos1 | End | ä | ö | ü | ß |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| 1 | 2 | 3 | + |PageUp|PageDn| | | | |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | . | 0 | = |Lower | | Raise| | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT(
+ DE_SLSH, KC_7, KC_8, KC_9, DE_ASTR, _______, _______, _______, DE_HASH, KC_LALT, DE_ACUT, KC_BSPC,
+ KC_DEL, KC_4, KC_5, KC_6, DE_MINS, KC_HOME, KC_END, DE_AE, DE_OE, DE_UE, DE_SS, KC_ENT,
+ KC_LSFT, KC_1, KC_2, KC_3, DE_PLUS, KC_PGUP, KC_PGDN, _______, _______, _______, _______, KC_LSFT,
+ _______, DE_DOT, KC_0, DE_EQL, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/lets_split/keymaps/DE_programming/readme.md b/keyboards/lets_split/keymaps/DE_programming/readme.md
new file mode 100644
index 0000000000..38e54609b0
--- /dev/null
+++ b/keyboards/lets_split/keymaps/DE_programming/readme.md
@@ -0,0 +1,57 @@
+De_Programming Keymap
+======
+
+Features
+--------
+
+Changed Keymap to resemble German Layout. Optimized for Programming
+
+Layout
+--------
+
+ Qwertz
+ ,-----------------------------------------------------------------------------------.
+ | Tab | Q | W | E | R | T | Z | U | I | O | P | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | S | D | F | G | H | J | K | L | + |Enter |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| Y | X | C | V | B | N | M | , | . | - |Shift |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Ctrl | GUI | AltGr| Alt |Lower |Space |Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------------------------------------------------'
+
+
+ Lower
+ ,-----------------------------------------------------------------------------------.
+ | ° | ! | ? | § | € | ~ | $ | ( | ) | < | > | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Del | F1 | F2 | F3 | F4 | & | @ | { | } | [ | ] |Enter |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| F5 | F6 | F7 | F8 | | | % | / | \ | ' | " |Shift |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Ctrl | F9 | F10 | F11 | F12 | | Prev | Next | Vol- | Vol+ | Play |
+ `-----------------------------------------------------------------------------------'
+
+
+ Raise
+ ,-----------------------------------------------------------------------------------.
+ | / | 7 | 8 | 9 | * | | | | # | Alt | ` | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Del | 4 | 5 | 6 | - | Pos1 | End | ä | ö | ü | ß |Enter |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| 1 | 2 | 3 | + |PageUp|PageDn| | | | |Shift |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | . | 0 | = | Enter| | Prev | Next | Vol- | Vol+ | Play |
+ `-----------------------------------------------------------------------------------'
+
+
+ Adjust (Lower + Raise)
+ ,-----------------------------------------------------------------------------------.
+ | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | |Aud on|Audoff|AGnorm|AGswap|Qwertz| | | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | | | | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | | | | | | | |
+ `-----------------------------------------------------------------------------------'
diff --git a/keyboards/lets_split/keymaps/DE_programming/rules.mk b/keyboards/lets_split/keymaps/DE_programming/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/lets_split/keymaps/DE_programming/rules.mk
diff --git a/keyboards/lets_split/keymaps/OLED_sample/rules.mk b/keyboards/lets_split/keymaps/OLED_sample/rules.mk
index 89ad61fbe8..162c7aeb93 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/rules.mk
+++ b/keyboards/lets_split/keymaps/OLED_sample/rules.mk
@@ -4,10 +4,10 @@ SRC += ssd1306.c
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
index c6e7f6479e..d753437354 100644
--- a/keyboards/lets_split/rev1/config.h
+++ b/keyboards/lets_split/rev1/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
// #define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
index 2481ce0413..0977d7c670 100644
--- a/keyboards/lets_split/rev2/config.h
+++ b/keyboards/lets_split/rev2/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index 98736310c6..a7703ce44b 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/lets_split/sockets/config.h b/keyboards/lets_split/sockets/config.h
index eb8092a8f4..f6ecb70947 100644
--- a/keyboards/lets_split/sockets/config.h
+++ b/keyboards/lets_split/sockets/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F7, D7, B3, B2, B6}
// #define MATRIX_COL_PINS { B6, B2, B3, D7, F7, F4} //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/lets_split_eh/rules.mk b/keyboards/lets_split_eh/rules.mk
index 2bcd087d82..fe3face86b 100644
--- a/keyboards/lets_split_eh/rules.mk
+++ b/keyboards/lets_split_eh/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk
index 1477c3ac77..9b8038dd36 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk
index 3cfc994cb8..04fa7d81b0 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk
index f789b6866b..e7f035b753 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfk78/rules.mk b/keyboards/lfkeyboards/lfk78/rules.mk
index 3c90998d98..74a1f79897 100644
--- a/keyboards/lfkeyboards/lfk78/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/rules.mk
@@ -19,13 +19,14 @@ OPT_DEFS += -DLFK_REV_STRING=\"Rev$(LFK_REV)\"
# Extra source files for IS3731 lighting
SRC = TWIlib.c issi.c lighting.c
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
index c079c264ed..59cfee01cc 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
index 7823dea787..da697e66fe 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfk87/rules.mk b/keyboards/lfkeyboards/lfk87/rules.mk
index 8e19706150..dc6fa376aa 100644
--- a/keyboards/lfkeyboards/lfk87/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/rules.mk
@@ -24,13 +24,14 @@ LAYOUTS = tkl_ansi tkl_iso
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = custom
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/lfkeyboards/lfkpad/config.h b/keyboards/lfkeyboards/lfkpad/config.h
index 1d8de837da..fb48297e5c 100644
--- a/keyboards/lfkeyboards/lfkpad/config.h
+++ b/keyboards/lfkeyboards/lfkpad/config.h
@@ -15,31 +15,56 @@ 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_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
+/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER LFKeyboards
#define PRODUCT LFKPad 21
-#define DESCRIPTION QMK keyboard firmware for LFKPad LFK_REV_STRING
+#define DESCRIPTION QMK keyboard firmware for LFKPad
-#define DIODE_DIRECTION COL2ROW
+/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
-#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6}
-#define MATRIX_COL_PINS { F1, F0, D4, D6}
-#define UNUSED_PINS { }
-#define RGBLED_NUM 28 // Number of LEDs
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6 }
+#define MATRIX_COL_PINS { F1, F0, D4, D6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
#define RGB_DI_PIN C7 // Have to set it to something to get the ws2812 code to compile
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 28
+# define RGBLIGHT_HUE_STEP 10
+# define RGBLIGHT_SAT_STEP 17
+# define RGBLIGHT_VAL_STEP 17
+# define RGBLIGHT_ANIMATIONS
+#endif
#define TAPPING_TERM 200
@@ -49,13 +74,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
-/* number of backlight levels */
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
/*
* Force NKRO
*
@@ -89,6 +117,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
@@ -98,8 +130,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1 H
-//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
@@ -107,9 +139,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
-//#define MAGIC_KEY_LAYER0_ALT1 ESC
-//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
@@ -119,9 +150,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
-//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
@@ -140,7 +173,63 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/lfkeyboards/lfkpad/info.json b/keyboards/lfkeyboards/lfkpad/info.json
index 71adb5d447..f5f41f5a7a 100644
--- a/keyboards/lfkeyboards/lfkpad/info.json
+++ b/keyboards/lfkeyboards/lfkpad/info.json
@@ -1,12 +1,34 @@
{
- "keyboard_name": "LFKPad",
- "url": "",
- "maintainer": "qmk",
- "width": 4,
- "height": 6,
- "layouts": {
- "LAYOUT_numpad_6x4": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"=", "x":2, "y":0}, {"label":"Fn", "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}]
+ "keyboard_name": "LFKPad",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "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":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":2, "h":2},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":0, "y":5, "w":2},
+ {"x":2, "y":5},
+ {"x":3, "y":4, "h":2}
+ ]
+ }
}
- }
}
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
index 3e131b2414..0aa720e400 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
@@ -1,41 +1,31 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_numpad_6x4( /* Base */
- KC_ESC, KC_TAB, KC_PEQL, MO(1), \
- KC_LNUM, 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( /* RGB */
- RGB_SAI, RGB_VAI, RGB_HUI, _______, \
- RGB_SAD, RGB_VAD, RGB_HUD, _______, \
- 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, \
- XXXXXXX, XXXXXXX, RGB_TOG \
- ),
+ /* Base */
+ [0] = LAYOUT_numpad_6x4(
+ KC_ESC, KC_TAB, KC_PEQL, MO(1),
+ KC_LNUM, 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
+ ),
+
+ /* RGB */
+ [1] = LAYOUT_numpad_6x4(
+ RGB_SAI, RGB_VAI, RGB_HUI, _______,
+ RGB_SAD, RGB_VAD, RGB_HUD, _______,
+ 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,
+ XXXXXXX, XXXXXXX, RGB_TOG
+ )
};
void matrix_init_user(void) {
// This keymap only has a single base layer, so reset the default if needed
- if(eeconfig_read_default_layer() > 1){
+ if (eeconfig_read_default_layer() > 1) {
eeconfig_update_default_layer(1);
default_layer_set(1);
}
}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md b/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
index 6c48b8d0b8..9c0dad0301 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
@@ -1 +1 @@
-# The default keymap LFKPad 21
+# The default keymap for the LFKPad 21
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk
index cc21b32dce..db54d61e5b 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.c b/keyboards/lfkeyboards/lfkpad/lfkpad.c
index 232285c322..b91b7da67d 100644
--- a/keyboards/lfkeyboards/lfkpad/lfkpad.c
+++ b/keyboards/lfkeyboards/lfkpad/lfkpad.c
@@ -1,112 +1,117 @@
-#include <avr/sfr_defs.h>
+#include "lfkpad.h"
+
+#include "quantum.h"
+
#include <avr/timer_avr.h>
#include <avr/wdt.h>
-#include "lfkpad.h"
-#include "keymap.h"
#include "issi.h"
#include "TWIlib.h"
#include "lighting.h"
-#include "debug.h"
-#include "quantum.h"
uint16_t click_hz = CLICK_HZ;
uint16_t click_time = CLICK_MS;
uint8_t click_toggle = CLICK_ENABLED;
-
-void matrix_init_kb(void)
-{
+void matrix_init_kb(void) {
matrix_init_user();
+
#ifndef AUDIO_ENABLE
// If we're not using the audio pin, drive it low
- sbi(DDRC, 6);
- cbi(PORTC, 6);
+ setPinOutput(C6);
+ writePinLow(C6);
#endif
#ifdef ISSI_ENABLE
issi_init();
#endif
+
#ifdef WATCHDOG_ENABLE
// This is done after turning the layer LED red, if we're caught in a loop
// we should get a flashing red light
wdt_enable(WDTO_500MS);
#endif
-
}
-void matrix_scan_kb(void)
-{
+void matrix_scan_kb(void) {
#ifdef WATCHDOG_ENABLE
wdt_reset();
#endif
+
#ifdef ISSI_ENABLE
// switch/underglow lighting update
static uint32_t issi_device = 0;
static uint32_t twi_last_ready = 0;
- if(twi_last_ready > 1000){
- // Its been way too long since the last ISSI update, reset the I2C bus and start again
+
+ if (twi_last_ready > 1000) {
+ // It's been way too long since the last ISSI update, reset the I2C bus and start again
dprintf("TWI failed to recover, TWI re-init\n");
twi_last_ready = 0;
TWIInit();
force_issi_refresh();
}
- if(isTWIReady()){
+
+ if (isTWIReady()) {
twi_last_ready = 0;
// If the i2c bus is available, kick off the issi update, alternate between devices
update_issi(issi_device, issi_device);
- if(issi_device){
+
+ if (issi_device) {
issi_device = 0;
- }else{
+ } else {
issi_device = 3;
}
- }else{
+ } else {
twi_last_ready++;
}
#endif
+
matrix_scan_user();
}
-void click(uint16_t freq, uint16_t duration){
+void click(uint16_t freq, uint16_t duration) {
#ifdef AUDIO_ENABLE
- if(freq >= 100 && freq <= 20000 && duration < 100){
+ if (freq >= 100 && freq <= 20000 && duration < 100) {
play_note(freq, 10);
- for (uint16_t i = 0; i < duration; i++){
+
+ for (uint16_t i = 0; i < duration; i++) {
_delay_ms(1);
}
+
stop_all_notes();
}
#endif
}
-bool process_record_kb(uint16_t keycode, keyrecord_t* record)
-{
- if (click_toggle && record->event.pressed){
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ if (click_toggle && record->event.pressed) {
click(click_hz, click_time);
}
+
if (keycode == RESET) {
reset_keyboard_kb();
- } else {
}
+
return process_record_user(keycode, record);
}
-void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
-{
+void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) {
#ifdef AUDIO_ENABLE
int8_t sign = 1;
#endif
- if(id == LFK_ESC_TILDE){
+
+ if (id == LFK_ESC_TILDE) {
// Send ~ on shift-esc
void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key;
- uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
- if(layer_state == 0){
+ uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
+
+ if (layer_state == 0) {
method(shifted ? KC_GRAVE : KC_ESCAPE);
- }else{
+ } else {
method(shifted ? KC_ESCAPE : KC_GRAVE);
}
send_keyboard_report();
- }else if(event->event.pressed){
- switch(id){
+ } else if (event->event.pressed) {
+ switch (id) {
case LFK_SET_DEFAULT_LAYER:
// set/save the current base layer to eeprom, falls through to LFK_CLEAR
eeconfig_update_default_layer(1UL << opt);
@@ -117,24 +122,24 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
break;
#ifdef AUDIO_ENABLE
case LFK_CLICK_FREQ_LOWER:
- sign = -1; // continue to next statement
+ sign = -1; // continue to next statement
case LFK_CLICK_FREQ_HIGHER:
click_hz += sign * 100;
click(click_hz, click_time);
break;
case LFK_CLICK_TOGGLE:
- if(click_toggle){
+ if (click_toggle) {
click_toggle = 0;
click(4000, 100);
click(1000, 100);
- }else{
+ } else {
click_toggle = 1;
click(1000, 100);
click(4000, 100);
}
break;
case LFK_CLICK_TIME_SHORTER:
- sign = -1; // continue to next statement
+ sign = -1; // continue to next statement
case LFK_CLICK_TIME_LONGER:
click_time += sign;
click(click_hz, click_time);
@@ -144,22 +149,18 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
}
}
-void reset_keyboard_kb(){
+void reset_keyboard_kb() {
#ifdef WATCHDOG_ENABLE
MCUSR = 0;
wdt_disable();
wdt_reset();
#endif
- reset_keyboard();
-}
-void led_set_kb(uint8_t usb_led)
-{
- led_set_user(usb_led);
+ reset_keyboard();
}
// LFK lighting info
-const uint8_t rgb_matrices[] = {0, 1};
+const uint8_t rgb_matrices[] = { 0, 1 };
const uint8_t rgb_sequence[] = {
32, 1, 2, 3,
31, 30, 5, 6,
@@ -172,5 +173,4 @@ const uint8_t rgb_sequence[] = {
4, 25,
13, 24,
20
-
};
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.h b/keyboards/lfkeyboards/lfkpad/lfkpad.h
index a4c248e2a0..0f34150db9 100644
--- a/keyboards/lfkeyboards/lfkpad/lfkpad.h
+++ b/keyboards/lfkeyboards/lfkpad/lfkpad.h
@@ -1,23 +1,6 @@
-#ifndef LFKPAD_H
-#define LFKPAD_H
-
-/* if the kb.h file exists (because we're running from qmkbuilder) include it */
-#if __has_include("kb.h")
-#include "kb.h"
-#endif
+#pragma once
#include "quantum.h"
-#include "matrix.h"
-#include <avr/sfr_defs.h>
-
-#ifndef cbi
-#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
-#endif
-
-#ifndef sbi
-#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
-#endif
-
typedef struct RGB_Color {
uint16_t red;
@@ -57,7 +40,6 @@ void click(uint16_t freq, uint16_t duration);
// readability
#define ___ KC_NO
-
#define LAYOUT_numpad_6x4( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
@@ -73,5 +55,3 @@ void click(uint16_t freq, uint16_t duration);
{ k40, k41, k42, k43 }, \
{ k50, ___, k52, ___ } \
}
-
-#endif //LFKPAD_H
diff --git a/keyboards/lfkeyboards/lfkpad/readme.md b/keyboards/lfkeyboards/lfkpad/readme.md
index 7dd8337e8a..ce5e7f67b9 100644
--- a/keyboards/lfkeyboards/lfkpad/readme.md
+++ b/keyboards/lfkeyboards/lfkpad/readme.md
@@ -1,28 +1,15 @@
-bluepad keyboard firmware
-======================
+# LFKPad
-## Quantum MK Firmware
+![LFKPad](https://cdn11.bigcommerce.com/s-dvx2zpcx7r/images/stencil/500x659/products/118/385/img_0256__06462.1546304848.jpg)
-For the full Quantum feature list, see [the parent readme.md](/docs/README.md).
+Hotswap 21-key numpad PCB with USB-C, per-key RGB and underglow.
-## Building
+* Keyboard Maintainer: QMK community
+* Hardware Supported: LFKPad HS21 PCB
+* Hardware Availability: [LFKeyboards](https://www.lfkeyboards.com/lfkpad/)
-Download or clone the whole firmware and navigate to the keyboards/bluepad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
+Make example for this keyboard (after setting up your build environment):
-Depending on which keymap you would like to use, you will have to compile slightly differently.
+ make lfkeyboards/lfkpad:default
-### Default
-
-To build with the default keymap, simply run `make`.
-
-### Other Keymaps
-
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
-
-To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
-
-```
-$ make keymap=[default|jack|<name>]
-```
-
-Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_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/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk
index 7ed840ae9f..aca77f562e 100644
--- a/keyboards/lfkeyboards/lfkpad/rules.mk
+++ b/keyboards/lfkeyboards/lfkpad/rules.mk
@@ -11,26 +11,29 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-LAYOUTS = numpad_6x4
-
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = 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.
-RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not qmk base
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not qmk base
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
-WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
+ISSI_ENABLE = yes # If the I2C pullup resistors aren't installed this must be disabled
+WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan() isn't run every 250ms
SRC = TWIlib.c issi.c lighting.c
@@ -41,3 +44,5 @@ endif
ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
endif
+
+LAYOUTS = numpad_6x4
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
index 1598173f36..2619a2d197 100644
--- a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk
index d3e6a24023..a9c29c4b91 100644
--- a/keyboards/lfkeyboards/mini1800/rules.mk
+++ b/keyboards/lfkeyboards/mini1800/rules.mk
@@ -21,3 +21,8 @@ SRC = TWIlib.c issi.c lighting.c
ifeq ($(strip $(ISSI_ENABLE)), yes)
# TMK_COMMON_DEFS += -DISSI_ENABLE
endif
+
+# Build Options
+# change yes to no to disable
+#
+BACKLIGHT_DRIVER = custom
diff --git a/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk b/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
index b5310da58d..d8fe33f6c7 100644
--- a/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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 # Disable keyboard backlight functionality
diff --git a/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk b/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
index f1814cf485..312dfbc51b 100644
--- a/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
+++ b/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
@@ -3,10 +3,10 @@
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality
diff --git a/keyboards/lily58/keymaps/default/rules.mk b/keyboards/lily58/keymaps/default/rules.mk
index 922fac6b69..b39305767b 100644
--- a/keyboards/lily58/keymaps/default/rules.mk
+++ b/keyboards/lily58/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/lily58/keymaps/ninjonas/keymap.c b/keyboards/lily58/keymaps/ninjonas/keymap.c
index 0ed197c141..0bd330a766 100644
--- a/keyboards/lily58/keymaps/ninjonas/keymap.c
+++ b/keyboards/lily58/keymaps/ninjonas/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________, \
_____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________, \
_____________________QWERTY_L3______________________, T_LBRC, T_RBRC, _____________________QWERTY_R3______________________, \
- ________MOD_LEFT_________, LT_RAI, LT_LOW, ________MOD_RIGHT________ \
+ _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ \
),
/* DVORAK
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_____________________DVORAK_L1______________________, _____________________DVORAK_R1______________________, \
_____________________DVORAK_L2______________________, _____________________DVORAK_R2______________________, \
_____________________DVORAK_L3______________________, T_LBRC, T_RBRC, _____________________DVORAK_R3______________________, \
- ________MOD_LEFT_________, LT_RAI, LT_LOW, ________MOD_RIGHT________ \
+ _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ \
),
/* COLEMAK
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_____________________COLEMAK_L1_____________________, _____________________COLEMAK_R1_____________________, \
_____________________COLEMAK_L2_____________________, _____________________COLEMAK_R2_____________________, \
_____________________COLEMAK_L3_____________________, T_LBRC, T_RBRC, _____________________COLEMAK_R3_____________________, \
- ________MOD_LEFT_________, LT_RAI, LT_LOW, ________MOD_RIGHT________ \
+ _____________MOD_LEFT_____________, _____________MOD_RIGHT____________ \
),
/* LOWER
diff --git a/keyboards/lily58/rules.mk b/keyboards/lily58/rules.mk
index fce62532f5..d413510bac 100644
--- a/keyboards/lily58/rules.mk
+++ b/keyboards/lily58/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/m0lly/rules.mk b/keyboards/m0lly/rules.mk
index 21e3697dc6..60140160c2 100644
--- a/keyboards/m0lly/rules.mk
+++ b/keyboards/m0lly/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/m10a/rules.mk b/keyboards/m10a/rules.mk
index 739e396df3..71ef0ed649 100644
--- a/keyboards/m10a/rules.mk
+++ b/keyboards/m10a/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/maartenwut/atom47/rev2/rules.mk b/keyboards/maartenwut/atom47/rev2/rules.mk
index 24d1c4199b..0b6b879986 100644
--- a/keyboards/maartenwut/atom47/rev2/rules.mk
+++ b/keyboards/maartenwut/atom47/rev2/rules.mk
@@ -1,2 +1,2 @@
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 = no # Enable keyboard underlight functionality (+4870)
+RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
diff --git a/keyboards/maartenwut/atom47/rev3/rules.mk b/keyboards/maartenwut/atom47/rev3/rules.mk
index 13e553b562..2df225e389 100644
--- a/keyboards/maartenwut/atom47/rev3/rules.mk
+++ b/keyboards/maartenwut/atom47/rev3/rules.mk
@@ -1,2 +1,2 @@
NKRO_ENABLE = no # 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 keyboard underlight functionality (+4870)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
diff --git a/keyboards/maartenwut/atom47/rules.mk b/keyboards/maartenwut/atom47/rules.mk
index 0728c1a28c..7fdd5ad48f 100644
--- a/keyboards/maartenwut/atom47/rules.mk
+++ b/keyboards/maartenwut/atom47/rules.mk
@@ -14,12 +14,12 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/maartenwut/mx5160/config.h b/keyboards/maartenwut/mx5160/config.h
new file mode 100644
index 0000000000..7d3be79386
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/config.h
@@ -0,0 +1,252 @@
+/* Copyright 2019 Maarten Dekkers <maartenwut@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 0x4705
+#define PRODUCT_ID 0x5160
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Maartenwut
+#define PRODUCT MX-5160
+#define DESCRIPTION Replacement PCB for the Chicony 5160c
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#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
+
+// For QMK DFU
+#define QMK_ESC_OUTPUT C6
+#define QMK_ESC_INPUT D1
+#define QMK_LED B1
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/maartenwut/mx5160/info.json b/keyboards/maartenwut/mx5160/info.json
new file mode 100644
index 0000000000..8962522ba4
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "mx5160",
+ "url": "https://github.com/Maartenwut/mx-5160",
+ "maintainer": "qmk",
+ "width": 22,
+ "height": 5,
+ "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/maartenwut/mx5160/keymaps/default/keymap.c b/keyboards/maartenwut/mx5160/keymaps/default/keymap.c
new file mode 100644
index 0000000000..be6cc89f68
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2019 Maarten Dekkers <maartenwut@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.
+
+#define _MA 0 //Main layer
+#define _FN 1 //Main layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_MA] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, _______, \
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
+ KC_F7, KC_F8, KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_P1, KC_P2, KC_P3, \
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_P0, _______, KC_PDOT, KC_PENT), \
+
+[_FN] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_PSCR, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
+
+};
diff --git a/keyboards/maartenwut/mx5160/keymaps/default/readme.md b/keyboards/maartenwut/mx5160/keymaps/default/readme.md
new file mode 100644
index 0000000000..c938677352
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/keymaps/default/readme.md
@@ -0,0 +1 @@
+This is the default keymap for the mx-5160 PCB. \ No newline at end of file
diff --git a/keyboards/maartenwut/mx5160/mx5160.c b/keyboards/maartenwut/mx5160/mx5160.c
new file mode 100644
index 0000000000..96859693c2
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/mx5160.c
@@ -0,0 +1,58 @@
+/* Copyright 2019 Maarten Dekkers <maartenwut@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 "mx5160.h"
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ matrix_init_user();
+ led_init_ports();
+}
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+
+ matrix_scan_user();
+}
+
+void led_init_ports(void) {
+ //Set led pin as output, then high (off)
+
+ //Caps lock
+ setPinOutput(B1);
+ writePinHigh(B1);
+
+ //Num lock
+ setPinOutput(B2);
+ writePinHigh(B2);
+
+ //Scroll lock
+ setPinOutput(B3);
+ writePinHigh(B3);
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (res) {
+ writePin(B2, !led_state.num_lock);
+ writePin(B1, !led_state.caps_lock);
+ writePin(B3, !led_state.scroll_lock);
+ }
+ return res;
+}
diff --git a/keyboards/maartenwut/mx5160/mx5160.h b/keyboards/maartenwut/mx5160/mx5160.h
new file mode 100644
index 0000000000..89179a7f82
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/mx5160.h
@@ -0,0 +1,47 @@
+/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+#define XXX KC_NO
+
+/* 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, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k87, k17, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, k29, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k58, k49, k59, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k68, k78, k69, \
+ k80, k90, k81, k82, k94, k96, k97, k88, k98, k89, k99 \
+) \
+{ \
+ { 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, XXX }, \
+ { k80, k81, k82, XXX, XXX, XXX, XXX, k87, k88, k89 }, \
+ { k90, XXX, XXX, XXX, k94, XXX, k96, k97, k98, k99 } \
+}
diff --git a/keyboards/maartenwut/mx5160/readme.md b/keyboards/maartenwut/mx5160/readme.md
new file mode 100644
index 0000000000..40753a8f55
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/readme.md
@@ -0,0 +1,15 @@
+# mx5160
+
+![mx5160](https://i.imgur.com/XZ9xUeq.jpg)
+
+## Support
+* Keyboard Maintainer: [Maarten Dekkers](https://github.com/maartenwut)
+* Hardware Supported: mx-5160 (Chicony 5160c case)
+* Hardware Availability: [Github](https://github.com/Maartenwut/mx-5160)
+
+## Build
+Make example for this keyboard (after setting up your build environment):
+
+ make maartenwut/mx5160: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/maartenwut/mx5160/rules.mk b/keyboards/maartenwut/mx5160/rules.mk
new file mode 100644
index 0000000000..eb1e55955b
--- /dev/null
+++ b/keyboards/maartenwut/mx5160/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = qmk-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/maartenwut/ta65/rules.mk b/keyboards/maartenwut/ta65/rules.mk
index ecc6296986..db0567bd03 100644
--- a/keyboards/maartenwut/ta65/rules.mk
+++ b/keyboards/maartenwut/ta65/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = no # 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 keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/maartenwut/wasdat/matrix.c b/keyboards/maartenwut/wasdat/matrix.c
index 04d2219713..6dd79b5330 100644
--- a/keyboards/maartenwut/wasdat/matrix.c
+++ b/keyboards/maartenwut/wasdat/matrix.c
@@ -17,34 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <stdint.h>
#include <stdbool.h>
#include "wait.h"
-#include "print.h"
-#include "debug.h"
#include "util.h"
#include "matrix.h"
#include "debounce.h"
#include "quantum.h"
-#if (MATRIX_COLS <= 8)
-# define print_matrix_header() print("\nr/c 01234567\n")
-# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
-# define matrix_bitpop(i) bitpop(matrix[i])
-# define ROW_SHIFTER ((uint8_t)1)
-#elif (MATRIX_COLS <= 16)
-# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
-# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
-# define matrix_bitpop(i) bitpop16(matrix[i])
-# define ROW_SHIFTER ((uint16_t)1)
-#elif (MATRIX_COLS <= 32)
-# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
-# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
-# define matrix_bitpop(i) bitpop32(matrix[i])
-# define ROW_SHIFTER ((uint32_t)1)
-#endif
-
-#ifdef MATRIX_MASKED
- extern const matrix_row_t matrix_mask[];
-#endif
-
#ifdef DIRECT_PINS
static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
@@ -52,150 +29,58 @@ static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
#endif
-/* matrix state(1:on, 0:off) */
-static matrix_row_t raw_matrix[MATRIX_ROWS]; //raw values
-static matrix_row_t matrix[MATRIX_ROWS]; //debounced values
-
-__attribute__ ((weak))
-void matrix_init_quantum(void) {
- matrix_init_kb();
-}
-
-__attribute__ ((weak))
-void matrix_scan_quantum(void) {
- matrix_scan_kb();
-}
-
-__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;
-}
-
-//Deprecated.
-bool matrix_is_modified(void)
-{
- if (debounce_active()) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
- // switch blocker installed and the switch is always pressed.
-#ifdef MATRIX_MASKED
- return matrix[row] & matrix_mask[row];
-#else
- return matrix[row];
-#endif
-}
-
-void matrix_print(void)
-{
- print_matrix_header();
-
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- print_matrix_row(row);
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += matrix_bitpop(i);
- }
- return count;
-}
-
+// matrix code
#ifdef DIRECT_PINS
static void init_pins(void) {
- for (int row = 0; row < MATRIX_ROWS; row++) {
- for (int col = 0; col < MATRIX_COLS; col++) {
- pin_t pin = direct_pins[row][col];
- if (pin != NO_PIN) {
- setPinInputHigh(pin);
- }
+ for (int row = 0; row < MATRIX_ROWS; row++) {
+ for (int col = 0; col < MATRIX_COLS; col++) {
+ pin_t pin = direct_pins[row][col];
+ if (pin != NO_PIN) {
+ setPinInputHigh(pin);
+ }
+ }
}
- }
}
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
- matrix_row_t last_row_value = current_matrix[current_row];
- current_matrix[current_row] = 0;
+ matrix_row_t last_row_value = current_matrix[current_row];
+ current_matrix[current_row] = 0;
- for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
- pin_t pin = direct_pins[current_row][col_index];
- if (pin != NO_PIN) {
- current_matrix[current_row] |= readPin(pin) ? 0 : (ROW_SHIFTER << col_index);
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+ pin_t pin = direct_pins[current_row][col_index];
+ if (pin != NO_PIN) {
+ current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
}
- }
- return (last_row_value != current_matrix[current_row]);
+ return (last_row_value != current_matrix[current_row]);
}
#elif (DIODE_DIRECTION == COL2ROW)
-static void select_row(uint8_t row)
-{
+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_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
-static void unselect_rows(void)
-{
- for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
+static void unselect_rows(void) {
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
setPinInputHigh(row_pins[x]);
}
}
static void init_pins(void) {
- unselect_rows();
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- setPinInputHigh(col_pins[x]);
- }
+ unselect_rows();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
}
-static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
-{
+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];
@@ -207,13 +92,13 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
wait_us(30);
// For each col...
- for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+ 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);
+ current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
}
// Unselect row
@@ -245,8 +130,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
* col 14: B7
* col 15: B3
*/
-static void select_col(uint8_t col)
-{
+static void select_col(uint8_t col) {
switch (col) {
case 0:
writePinLow(C7);
@@ -304,8 +188,7 @@ static void select_col(uint8_t col)
}
}
-static void unselect_col(uint8_t col)
-{
+static void unselect_col(uint8_t col) {
switch (col) {
case 0:
writePinHigh(C7);
@@ -363,8 +246,7 @@ static void unselect_col(uint8_t col)
}
}
-static void unselect_cols(void)
-{
+static void unselect_cols(void) {
//Native
setPinOutput(D3);
setPinOutput(D7);
@@ -397,14 +279,13 @@ static void unselect_cols(void)
}
static void init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- setPinInputHigh(row_pins[x]);
- }
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
}
-static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
-{
+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
@@ -412,27 +293,21 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
wait_us(30);
// For each row...
- for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++)
- {
-
+ for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
// Store last value of row prior to reading
matrix_row_t last_row_value = current_matrix[row_index];
// Check row pin state
- if (readPin(row_pins[row_index]) == 0)
- {
+ if (readPin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
- current_matrix[row_index] |= (ROW_SHIFTER << current_col);
- }
- else
- {
+ current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
+ } else {
// Pin HI, clear col bit
- current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
+ current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
}
// Determine if the matrix changed state
- if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
- {
+ if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
matrix_changed = true;
}
}
@@ -445,40 +320,25 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
#endif
-void matrix_init(void) {
-
+void matrix_init_custom(void) {
// initialize key pins
init_pins();
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- raw_matrix[i] = 0;
- matrix[i] = 0;
- }
-
- debounce_init(MATRIX_ROWS);
-
- matrix_init_quantum();
}
-uint8_t matrix_scan(void)
-{
- bool changed = false;
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW)
- // Set row, read cols
- for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
- changed |= read_cols_on_row(raw_matrix, current_row);
- }
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
+ changed |= read_cols_on_row(current_matrix, current_row);
+ }
#elif (DIODE_DIRECTION == ROW2COL)
- // Set col, read rows
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
- changed |= read_rows_on_col(raw_matrix, current_col);
- }
+ // 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);
+ }
#endif
- debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
-
- matrix_scan_quantum();
- return (uint8_t)changed;
+ return changed;
}
diff --git a/keyboards/maartenwut/wasdat/rules.mk b/keyboards/maartenwut/wasdat/rules.mk
index 136c7bce29..db9728623e 100644
--- a/keyboards/maartenwut/wasdat/rules.mk
+++ b/keyboards/maartenwut/wasdat/rules.mk
@@ -31,7 +31,7 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-CUSTOM_MATRIX = yes
+CUSTOM_MATRIX = lite
SRC += matrix.c
LAYOUTS = fullsize_ansi fullsize_iso tkl_ansi tkl_iso
diff --git a/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/keymap.c b/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/keymap.c
new file mode 100755
index 0000000000..5c59d53a7d
--- /dev/null
+++ b/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/keymap.c
@@ -0,0 +1,42 @@
+#include QMK_KEYBOARD_H
+
+#define CAPSTL CTL_T(KC_CAPS)
+
+enum layers {
+ _BASE,
+ _GAME,
+ _FUNC,
+ _RGB
+};
+
+
+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_PGUP, KC_PGDN,
+ 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, CAPSTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_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_DEL, MO(2),
+ TG(1), KC_LAPO, KC_BSPC, KC_LGUI, KC_SPC, KC_RAPC, MO(3)
+ ),
+[_GAME] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_SPC, _______, _______, _______, _______
+ ),
+[_FUNC] = LAYOUT(
+ KC_PSCR, 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, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, KC_VOLU, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX,
+ KC_LSFT, KC_BRIU, KC_BRID, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX,
+ 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_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,
+ _______, KC_LALT, _______, _______, _______, KC_RALT, XXXXXXX
+ )
+};
diff --git a/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/readme.md b/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/readme.md
new file mode 100644
index 0000000000..a5381fff32
--- /dev/null
+++ b/keyboards/maartenwut/wonderland/keymaps/rafael-azevedo/readme.md
@@ -0,0 +1,9 @@
+## Rafael-Azevedo a layout for everyday use and gaming
+
+### This layout was designed for everyday work with all necessary keys reachable from the home row, while having a toggle layer moving the space and backspace to a more traditional location.
+
+* The main layer gives you access to home, end, pgup and pgdn. While keeping control, delete, backspace, and enter reachable when your fingers are in the home row.
+* The main layer also includes capslock key while tapped and it becomes control when pressed.
+* **Toggle(1)[Game]:** Toggles into a gaming layout that gives you space on your left hand thumb and moves the backspace to the traditional location. That way you can game one handed while using a mouse.
+* **MO(2)[_FUNC]:** Is a momentary layer for all special functions including F keys , volume control, and print screen. It also keys character C and V, allowing you to copy and paste while using arrow keys. This is an easy to reach location for all special funtionality that is not normally used.
+* **M(3)[_RGB]:** Is a momentary layer that gives you all the RGB control and keyboard Reset. This moves the funtionality not normally used to a place you won't accidently hit and get annoyed at.
diff --git a/keyboards/maartenwut/wonderland/rules.mk b/keyboards/maartenwut/wonderland/rules.mk
index 19c0ea5919..a01e466b89 100755
--- a/keyboards/maartenwut/wonderland/rules.mk
+++ b/keyboards/maartenwut/wonderland/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+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 # 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 keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/manta60/config.h b/keyboards/manta60/config.h
new file mode 100644
index 0000000000..0bc49541c9
--- /dev/null
+++ b/keyboards/manta60/config.h
@@ -0,0 +1,130 @@
+/*
+Copyright 2020 kamonanban
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x991D
+#define DEVICE_VER 0x0001
+#define MANUFACTURER kamonanban
+#define PRODUCT manta60
+#define DESCRIPTION A split keyboard with 27 ortholinear keys and 5-7 thumb/little finger keys
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { 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
+
+/*
+ * 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
+
+#define RGBLIGHT_SPLIT
+#define RGB_DI_PIN D3
+
+#ifdef RGBLIGHT_ENABLE
+ #define RGBLED_NUM 68 // Number of LEDs
+ #define RGBLED_SPLIT { 34, 34 }
+#endif
+
+#ifdef RGB_DI_PIN
+ #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
+
+#ifndef IOS_DEVICE_ENABLE
+ /* The maximum brightness level */
+ #define RGBLIGHT_LIMIT_VAL 128
+ #define RGBLIGHT_VAL_STEP 16
+#else
+ #define RGBLIGHT_LIMIT_VAL 32
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ #define USB_MAX_POWER_CONSUMPTION 100
+#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
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/manta60/info.json b/keyboards/manta60/info.json
new file mode 100644
index 0000000000..6934b0269b
--- /dev/null
+++ b/keyboards/manta60/info.json
@@ -0,0 +1,81 @@
+{
+ "keyboard_name": "manta60",
+ "url": "https://github.com/KamoNanban",
+ "maintainer": "kamonanban",
+ "width": 17,
+ "height": 4.5,
+ "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":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":"\\", "x":17, "y":0},
+ {"label":"-", "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":"]", "x":11, "y":1},
+ {"label":"Y", "x":12, "y":1},
+ {"label":"U", "x":13, "y":1},
+ {"label":"I", "x":14, "y":1},
+ {"label":"O", "x":15, "y":1},
+ {"label":"P", "x":16, "y":1},
+ {"label":"@", "x":17, "y":1},
+ {"label":"Tab", "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":".", "x":11, "y":2},
+ {"label":"H", "x":12, "y":2},
+ {"label":"J", "x":13, "y":2},
+ {"label":"K", "x":14, "y":2},
+ {"label":"L", "x":15, "y":2},
+ {"label":"UP", "x":16, "y":2},
+ {"label":";", "x":17, "y":2},
+ {"label":"Shft", "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":"Alt", "x":5, "y":3},
+ {"label":"B", "x":12, "y":3},
+ {"label":"N", "x":13, "y":3},
+ {"label":"M", "x":14, "y":3},
+ {"label":"LEFT", "x":15, "y":3},
+ {"label":"DOWN", "x":16, "y":3},
+ {"label":"RIGHT", "x":17, "y":3},
+ {"label":"LOWER", "x":0, "y":4.5},
+ {"x":1, "y":4.5},
+ {"label":"Alt", "x":4, "y":4.5},
+ {"label":"Ctrl", "x":5, "y":4.5},
+ {"label":"SPC", "x":6, "y":4.5},
+ {"label":"cmd", "x":7, "y":4.5},
+ {"label":"Enter", "x":8, "y":4.5},
+ {"label":"BS", "x":11, "y":4.5},
+ {"label":"DEL", "x":12, "y":4.5},
+ {"label":"SPC", "x":13, "y":4.5},
+ {"label":"Ctrl", "x":14, "y":4.5},
+ {"label":"Alt", "x":15, "y":4.5},
+ {"x":16, "y":4.5},
+ {"label":"RAISE", "x":17, "y":4.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechlovin/hannah910/keymaps/ansi/config.h b/keyboards/manta60/keymaps/default/config.h
index 3d1156ac06..55af5473e0 100644
--- a/keyboards/mechlovin/hannah910/keymaps/ansi/config.h
+++ b/keyboards/manta60/keymaps/default/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 Mechlovin
+/* Copyright 2020 kamonanban
*
* This 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,4 +16,6 @@
#pragma once
+#define RGBLIGHT_SLEEP
+
// place overrides here
diff --git a/keyboards/manta60/keymaps/default/keymap.c b/keyboards/manta60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e98141b70
--- /dev/null
+++ b/keyboards/manta60/keymaps/default/keymap.c
@@ -0,0 +1,131 @@
+/* Copyright 2020 kamonanban
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_number {
+ _BASE = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ LOWER = SAFE_RANGE,
+ RAISE,
+ ADJUST
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ //,---------------------------------------------------------------------.,---------------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, 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_AT,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_COMM, KC_DOT, KC_H, KC_J, KC_K, KC_L, KC_UP, KC_SCLN,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SLSH, KC_B, KC_N, KC_M, KC_LEFT, KC_DOWN, KC_RGHT,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ LOWER, XXXXXXX, KC_LALT, KC_LCTRL, KC_SPC, KC_LGUI, KC_ENT, KC_BSPC, KC_DEL, KC_SPC, KC_RCTRL, KC_RALT, XXXXXXX, RAISE
+ //`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,---------------------------------------------------------------------.,---------------------------------------------------------------------.
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
+ //`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
+ ),
+
+ [_RAISE] = LAYOUT(
+ //,---------------------------------------------------------------------.,---------------------------------------------------------------------.
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
+ //`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
+ ),
+
+ [_ADJUST] = LAYOUT(
+ //,---------------------------------------------------------------------.,---------------------------------------------------------------------.
+ _______, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, RGB_M_T, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ _______, RGB_M_P, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_SW, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
+ LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
+ //`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
+ )
+};
+
+static inline 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);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+switch (keycode) {
+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;
+ }
+ return true;
+}
diff --git a/keyboards/manta60/keymaps/default/readme.md b/keyboards/manta60/keymaps/default/readme.md
new file mode 100644
index 0000000000..f5c0e2c18c
--- /dev/null
+++ b/keyboards/manta60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for manta60
diff --git a/keyboards/manta60/manta60.c b/keyboards/manta60/manta60.c
new file mode 100644
index 0000000000..59319d32ee
--- /dev/null
+++ b/keyboards/manta60/manta60.c
@@ -0,0 +1 @@
+#include "manta60.h"
diff --git a/keyboards/manta60/manta60.h b/keyboards/manta60/manta60.h
new file mode 100644
index 0000000000..f68594d759
--- /dev/null
+++ b/keyboards/manta60/manta60.h
@@ -0,0 +1,45 @@
+/* Copyright 2020 kamonanban
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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, 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, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, KC_NO}, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30, KC_NO } , \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+ }
diff --git a/keyboards/manta60/readme.md b/keyboards/manta60/readme.md
new file mode 100644
index 0000000000..f163be27df
--- /dev/null
+++ b/keyboards/manta60/readme.md
@@ -0,0 +1,15 @@
+# manta60
+
+![manta60](https://github.com/KamoNanban/Manta60/blob/master/documents/_image/manta60_1.jpg)
+
+A split keyboard with 27 ortholinear keys and 5-7 thumb/little finger keys
+
+* Keyboard Maintainer: [kamonanban](https://github.com/KamoNanban)
+* Hardware Supported: MANTA60 PCBs, Pro Micro (ATmega32U4)
+* Hardware Availability: https://github.com/KamoNanban/Manta60
+
+Make example for this keyboard (after setting up your build environment):
+
+ make manta60: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/manta60/rules.mk b/keyboards/manta60/rules.mk
new file mode 100644
index 0000000000..559044bb6d
--- /dev/null
+++ b/keyboards/manta60/rules.mk
@@ -0,0 +1,40 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+
+SPLIT_KEYBOARD = yes
+
+IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk
index 3da2610f68..ff482bb570 100644
--- a/keyboards/massdrop/alt/rules.mk
+++ b/keyboards/massdrop/alt/rules.mk
@@ -11,10 +11,10 @@ CUSTOM_MATRIX = yes
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -22,12 +22,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
VIRTSER_ENABLE = no # USB Serial Driver
RAW_ENABLE = no # Raw device
AUTO_SHIFT_ENABLE = no # Auto Shift
diff --git a/keyboards/massdrop/ctrl/rules.mk b/keyboards/massdrop/ctrl/rules.mk
index aa45c68056..a382272b49 100644
--- a/keyboards/massdrop/ctrl/rules.mk
+++ b/keyboards/massdrop/ctrl/rules.mk
@@ -11,10 +11,10 @@ CUSTOM_MATRIX = yes
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -22,12 +22,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
VIRTSER_ENABLE = no # USB Serial Driver
RAW_ENABLE = no # Raw device
AUTO_SHIFT_ENABLE = no # Auto Shift
diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk
index 735c7af26d..9d907bd24e 100644
--- a/keyboards/maxipad/rules.mk
+++ b/keyboards/maxipad/rules.mk
@@ -1,10 +1,10 @@
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -12,11 +12,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
DEFAULT_FOLDER = maxipad/promicro
diff --git a/keyboards/maxr1998/phoebe/config.h b/keyboards/maxr1998/phoebe/config.h
index 2e912b0965..2be26c6fdb 100644
--- a/keyboards/maxr1998/phoebe/config.h
+++ b/keyboards/maxr1998/phoebe/config.h
@@ -49,9 +49,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* RGB LED Setup */
#define RGB_DI_PIN F0 // pin the DI on the WS2812B is hooked-up to
-#define RGBLIGHT_ANIMATIONS // run RGB animations
#define RGBLED_NUM 8 // number of LEDs
+/* Selectively enable animation effects */
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c
index da179c8f27..1b6052a9d6 100644
--- a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c
+++ b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c
@@ -74,7 +74,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_F10, KC_F11, KC_F12,
_______, _______, _______, _______, _______, _______, _______, DE_UE, KC_F9, DE_OE, _______, KC_DEL,
- KC_LOCK, DE_AE, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_B, RGB_M_SW,_______, _______,
+ KC_LOCK, DE_AE, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_TOG, RGB_HUI, KC_PGUP, _______,
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END
),
@@ -115,6 +115,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
break;
+ case KC_Z:
+ if (get_mods() & MODS_ALGR_MASK) {
+ if (record->event.pressed) {
+ register_code(DE_LESS);
+ } else {
+ unregister_code(DE_LESS);
+ }
+ return false;
+ }
+ break;
}
return true;
};
diff --git a/keyboards/maxr1998/phoebe/phoebe.c b/keyboards/maxr1998/phoebe/phoebe.c
index d8629f7f55..28d3afea50 100644
--- a/keyboards/maxr1998/phoebe/phoebe.c
+++ b/keyboards/maxr1998/phoebe/phoebe.c
@@ -1 +1,3 @@
#include "phoebe.h"
+
+const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {50, 50, 50};
diff --git a/keyboards/maxr1998/phoebe/rules.mk b/keyboards/maxr1998/phoebe/rules.mk
index b73145d7ff..335e575364 100644
--- a/keyboards/maxr1998/phoebe/rules.mk
+++ b/keyboards/maxr1998/phoebe/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
COMBO_ENABLE = no # Key combo feature
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/maxr1998/pulse4k/info.json b/keyboards/maxr1998/pulse4k/info.json
index 0ac4f063c0..a653f8e09a 100644
--- a/keyboards/maxr1998/pulse4k/info.json
+++ b/keyboards/maxr1998/pulse4k/info.json
@@ -6,7 +6,7 @@
"width": 3,
"height": 2,
"layouts": {
- "LAYOUT_pulse4k": {
+ "LAYOUT": {
"key_count": 6,
"layout": [
{ "w": 1, "x": 0, "y": 0 },
diff --git a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
index 873c87d1f9..67331235ba 100644
--- a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
+++ b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
@@ -31,18 +31,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_init_user(void) {
}
+// Override if necessary
+/*
void encoder_one_update(bool clockwise) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
}
void encoder_two_update(bool clockwise) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
}
+//*/
diff --git a/keyboards/maxr1998/pulse4k/pulse4k.c b/keyboards/maxr1998/pulse4k/pulse4k.c
index ee3d41ccd1..2ec9dca739 100644
--- a/keyboards/maxr1998/pulse4k/pulse4k.c
+++ b/keyboards/maxr1998/pulse4k/pulse4k.c
@@ -59,3 +59,19 @@ void encoder_update_kb(uint8_t index, bool clockwise) {
} else encoder_two_update(clockwise);
}
}
+
+__attribute__((weak)) void encoder_one_update(bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+}
+
+__attribute__((weak)) void encoder_two_update(bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+}
diff --git a/keyboards/maxr1998/pulse4k/rules.mk b/keyboards/maxr1998/pulse4k/rules.mk
index cee105352f..71d9b5debf 100644
--- a/keyboards/maxr1998/pulse4k/rules.mk
+++ b/keyboards/maxr1998/pulse4k/rules.mk
@@ -15,11 +15,11 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
ENCODER_ENABLE = yes # Rotary encoders
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
COMBO_ENABLE = yes # Key combo feature
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/mc_76k/config.h b/keyboards/mc_76k/config.h
new file mode 100644
index 0000000000..cccd6a8e93
--- /dev/null
+++ b/keyboards/mc_76k/config.h
@@ -0,0 +1,104 @@
+/*
+Copyright 2020 Yiancar-Designs
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4D43
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT MC-76K
+#define DESCRIPTION O-Ring suspended 60% with F-row keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { 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
+
+/* 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
diff --git a/keyboards/mc_76k/info.json b/keyboards/mc_76k/info.json
new file mode 100644
index 0000000000..482caa1c48
--- /dev/null
+++ b/keyboards/mc_76k/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "mc_76k",
+ "url": "www.yiancar-designs.com",
+ "maintainer": "Yiancar",
+ "width": 15,
+ "height": 6.5,
+ "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/mc_76k/keymaps/default/keymap.c b/keyboards/mc_76k/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bf572d3c6e
--- /dev/null
+++ b/keyboards/mc_76k/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2020 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_all( /* FN1 */
+ KC_TRNS, KC_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_HOME, KC_UP, KC_END, KC_TRNS,
+ KC_CAPS, 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, 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_LCTL, 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),
+
+ [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),
+};
diff --git a/keyboards/mc_76k/keymaps/default/readme.md b/keyboards/mc_76k/keymaps/default/readme.md
new file mode 100644
index 0000000000..cfca7e7ec6
--- /dev/null
+++ b/keyboards/mc_76k/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for MC-76K
+
+![DEFAULT](https://i.imgur.com/GzUITtG.png)
+
+![FN1](https://i.imgur.com/ytnKmxg.png) \ No newline at end of file
diff --git a/keyboards/mc_76k/keymaps/via/keymap.c b/keyboards/mc_76k/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bf572d3c6e
--- /dev/null
+++ b/keyboards/mc_76k/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2020 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_all( /* FN1 */
+ KC_TRNS, KC_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_HOME, KC_UP, KC_END, KC_TRNS,
+ KC_CAPS, 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, 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_LCTL, 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),
+
+ [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),
+};
diff --git a/keyboards/mc_76k/keymaps/via/readme.md b/keyboards/mc_76k/keymaps/via/readme.md
new file mode 100644
index 0000000000..b82bc8e79f
--- /dev/null
+++ b/keyboards/mc_76k/keymaps/via/readme.md
@@ -0,0 +1 @@
+# Compile with this keymap to use VIA
diff --git a/keyboards/mc_76k/keymaps/via/rules.mk b/keyboards/mc_76k/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mc_76k/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mc_76k/mc_76k.c b/keyboards/mc_76k/mc_76k.c
new file mode 100644
index 0000000000..0ca4c80ba4
--- /dev/null
+++ b/keyboards/mc_76k/mc_76k.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 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 "mc_76k.h"
+
+void keyboard_pre_init_kb (void) {
+ setPinOutput(D2);
+}
+
+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(D2, !led_state.caps_lock);
+ }
+ return res;
+}
diff --git a/keyboards/mc_76k/mc_76k.h b/keyboards/mc_76k/mc_76k.h
new file mode 100644
index 0000000000..6b9a5e9617
--- /dev/null
+++ b/keyboards/mc_76k/mc_76k.h
@@ -0,0 +1,46 @@
+/* Copyright 2020 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"
+
+/* 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, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, \
+ 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, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K52, K53, K57, K5B, K5C, K5D \
+) \
+{ \
+ { 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, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D }, \
+ { K50, XXX, K52, K53, XXX, XXX, XXX, K57, XXX, XXX, XXX, K5B, K5C, K5D } \
+}
diff --git a/keyboards/mc_76k/readme.md b/keyboards/mc_76k/readme.md
new file mode 100644
index 0000000000..be9b5c5ec6
--- /dev/null
+++ b/keyboards/mc_76k/readme.md
@@ -0,0 +1,15 @@
+# MC-76K
+
+![mc_76k](https://geekhack.org/index.php?action=dlattach;topic=101040.0;attach=220476;image)
+
+O-Ring suspended 60% with F-row keyboard
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [github](https://github.com/yiancar)
+* Hardware Supported: ATmega32U4
+* Hardware Availability: GB run by [mustcode](https://www.reddit.com/user/mustcode). More info on [geekhack](https://geekhack.org/index.php?topic=101040.50)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mc_76k: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/mc_76k/rules.mk b/keyboards/mc_76k/rules.mk
new file mode 100644
index 0000000000..5f109c654b
--- /dev/null
+++ b/keyboards/mc_76k/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/mechkeys/mk60/rules.mk b/keyboards/mechkeys/mk60/rules.mk
index 4f8bd49eff..e93b6146ec 100644
--- a/keyboards/mechkeys/mk60/rules.mk
+++ b/keyboards/mechkeys/mk60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/mechlovin/hannah910/config.h b/keyboards/mechlovin/hannah910/config.h
index 1ff7dfd0b2..c61693599d 100644
--- a/keyboards/mechlovin/hannah910/config.h
+++ b/keyboards/mechlovin/hannah910/config.h
@@ -20,12 +20,10 @@ along with this 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 Mechlovin
-#define PRODUCT Hannah910
-#define DESCRIPTION A replace PCB for TGR910 keyboard
+#define VENDOR_ID 0x4D4C // ML-MechLovin'
+#define MANUFACTURER Mechlovin
+#define PRODUCT Mechlovin Hannah910
+#define DESCRIPTION Mechlovin Hannah910
/* key matrix size */
#define MATRIX_ROWS 5
@@ -54,32 +52,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 3
#define RGB_DI_PIN E2
-// #ifdef RGB_DI_PIN
-#define RGBLED_NUM 9
-// #define RGBLIGHT_HUE_STEP 8
-// #define RGBLIGHT_SAT_STEP 8
-// #define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
-// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
-// /*== all animations enable ==*/
+#define RGBLIGHT_LIMIT_VAL 255
#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
diff --git a/keyboards/mechlovin/hannah910/hannah910.h b/keyboards/mechlovin/hannah910/hannah910.h
index 554116721c..de9929bd12 100644
--- a/keyboards/mechlovin/hannah910/hannah910.h
+++ b/keyboards/mechlovin/hannah910/hannah910.h
@@ -17,54 +17,8 @@
#include "quantum.h"
-/* This a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
- */
-#define LAYOUT_all( \
- k00, 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, 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 \
-) \
-{ \
- { 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, k45 }, \
- { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
- { k61, k62, k63, KC_NO, k64, KC_NO, k65, KC_NO, k66, KC_NO, k67, k68, k69, k70, k71 }, \
-}
-#define LAYOUT_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, k29, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45, \
- k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
- k61, k62, k63, k65, k67, k68, k69, k70, k71 \
-) \
-{ \
- { 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, KC_NO, k29 }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45 }, \
- { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
- { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, KC_NO, k67, k68, k69, k70, k71 }, \
-}
-
-#define LAYOUT_ansi( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
- 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, k43, k45, \
- k46, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
- k61, k62, k63, k65, k67, k68, k69, k70, k71 \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, KC_NO }, \
- { 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, KC_NO, k43, k45 }, \
- { k46, KC_NO, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
- { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, KC_NO, k67, k68, k69, k70, k71 }, \
-}
+#ifdef KEYBOARD_mechlovin_hannah910_rev1
+ #include "rev1.h"
+#elif KEYBOARD_mechlovin_hannah910_rev2
+ #include "rev2.h"
+#endif
diff --git a/keyboards/mechlovin/hannah910/keymaps/ansi/readme.md b/keyboards/mechlovin/hannah910/keymaps/ansi/readme.md
deleted file mode 100644
index b0dfa055c6..0000000000
--- a/keyboards/mechlovin/hannah910/keymaps/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ansi keymap for hannah910
diff --git a/keyboards/mechlovin/hannah910/keymaps/default/readme.md b/keyboards/mechlovin/hannah910/keymaps/default/readme.md
deleted file mode 100644
index 6abbe27c4b..0000000000
--- a/keyboards/mechlovin/hannah910/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for hannah910
diff --git a/keyboards/mechlovin/hannah910/readme.md b/keyboards/mechlovin/hannah910/readme.md
index 6cc6b226f1..b16b294a5c 100644
--- a/keyboards/mechlovin/hannah910/readme.md
+++ b/keyboards/mechlovin/hannah910/readme.md
@@ -4,12 +4,18 @@
Replacement PCB and plate for TGR 910 keyboard
-Keyboard Maintainer: [Mechlovin'](https://github.com/mechlovin)
-Hardware Supported: TGR910 CE, TGR910 SE
-Hardware Availability: [Reddit Group Buy](https://www.reddit.com/r/mechmarket/comments/dhwvbn/gb_1015_update_hannah_910_group_buy_tgr_910/)
+* Keyboard Maintainer: [Mechlovin'](https://github.com/mechlovin)
+* Hardware Supported: TGR910 CE, TGR910 SE
+* Hardware Availability: [Reddit Group Buy](https://www.reddit.com/r/mechmarket/comments/dhwvbn/gb_1015_update_hannah_910_group_buy_tgr_910/)
Make example for this keyboard (after setting up your build environment):
- make mechlovin/hannah910:default
+ make mechlovin/hannah910/rev1:default
+ make mechlovin/hannah910/rev2:default
+
+Make firmware for keymap with VIA:
+
+ make mechlovin/hannah910/rev1:via
+ make mechlovin/hannah910/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/mechlovin/hannah910/rev1/config.h b/keyboards/mechlovin/hannah910/rev1/config.h
new file mode 100644
index 0000000000..906e0c8846
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/config.h
@@ -0,0 +1,6 @@
+#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/info.json b/keyboards/mechlovin/hannah910/rev1/info.json
index 7bc6c74414..7bc6c74414 100644
--- a/keyboards/mechlovin/hannah910/info.json
+++ b/keyboards/mechlovin/hannah910/rev1/info.json
diff --git a/keyboards/mechlovin/hannah910/keymaps/ansi/keymap.c b/keyboards/mechlovin/hannah910/rev1/keymaps/ansi/keymap.c
index 97dd7a5f02..c16620a74e 100644
--- a/keyboards/mechlovin/hannah910/keymaps/ansi/keymap.c
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/ansi/keymap.c
@@ -23,7 +23,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_ansi( /* Base */
+ [1] = LAYOUT_ansi( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/mechlovin/hannah910/rev1/keymaps/ansi/readme.md b/keyboards/mechlovin/hannah910/rev1/keymaps/ansi/readme.md
new file mode 100644
index 0000000000..0b0b0e3fb7
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/ansi/readme.md
@@ -0,0 +1 @@
+# The ansi keymap for hannah910v1
diff --git a/keyboards/mechlovin/hannah910/keymaps/default/keymap.c b/keyboards/mechlovin/hannah910/rev1/keymaps/default/keymap.c
index 48499a111a..ae53cc3f71 100644
--- a/keyboards/mechlovin/hannah910/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/default/keymap.c
@@ -15,15 +15,30 @@
*/
#include QMK_KEYBOARD_H
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = 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_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,
- 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_NUBS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ 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_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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_all( /* Base */
+ [1] = LAYOUT_all( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/mechlovin/hannah910/rev1/keymaps/default/readme.md b/keyboards/mechlovin/hannah910/rev1/keymaps/default/readme.md
new file mode 100644
index 0000000000..fcfadce951
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for hannah910v1
diff --git a/keyboards/mechlovin/hannah910/rev1/keymaps/via/keymap.c b/keyboards/mechlovin/hannah910/rev1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1b91e2aad1
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2019 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( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_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,
+ 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_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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev1/keymaps/via/readme.md b/keyboards/mechlovin/hannah910/rev1/keymaps/via/readme.md
new file mode 100644
index 0000000000..3e54ca18c5
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default keymap (VIA support) for hannah910v1 \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev1/keymaps/via/rules.mk b/keyboards/mechlovin/hannah910/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mechlovin/hannah910/rev1/readme.md b/keyboards/mechlovin/hannah910/rev1/readme.md
new file mode 100644
index 0000000000..04df333d18
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/readme.md
@@ -0,0 +1,15 @@
+# hannah910
+
+![hannah910](https://i.imgur.com/n8WN5Z7.jpg)
+
+Replacement PCB and plate for TGR 910 keyboard
+
+* Keyboard Maintainer: [Mechlovin'](https://github.com/mechlovin)
+* Hardware Supported: TGR910 CE, TGR910 SE
+* Hardware Availability: [Reddit Group Buy](https://www.reddit.com/r/mechmarket/comments/dhwvbn/gb_1015_update_hannah_910_group_buy_tgr_910/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/hannah910/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/mechlovin/hannah910/rev1/rev1.h b/keyboards/mechlovin/hannah910/rev1/rev1.h
new file mode 100644
index 0000000000..d2b39dba0c
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/rev1.h
@@ -0,0 +1,48 @@
+#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, 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 \
+) \
+{ \
+ { 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, k45 }, \
+ { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, k64, KC_NO, k65, KC_NO, k66, KC_NO, k67, k68, k69, k70, k71 }, \
+}
+#define LAYOUT_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, k29, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45, \
+ k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
+ k61, k62, k63, k65, k67, k68, k69, k70, k71 \
+) \
+{ \
+ { 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, KC_NO, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45 }, \
+ { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, KC_NO, k67, k68, k69, k70, k71 }, \
+}
+
+#define LAYOUT_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
+ 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, k43, k45, \
+ k46, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
+ k61, k62, k63, k65, k67, k68, k69, k70, k71 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, KC_NO }, \
+ { 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, KC_NO, k43, k45 }, \
+ { k46, KC_NO, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, KC_NO, k67, k68, k69, k70, k71 }, \
+}
diff --git a/keyboards/mechlovin/hannah910/rev1/rules.mk b/keyboards/mechlovin/hannah910/rev1/rules.mk
new file mode 100644
index 0000000000..5e17282eb0
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev1/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/config.h b/keyboards/mechlovin/hannah910/rev2/config.h
new file mode 100644
index 0000000000..3ae3cb65bc
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/config.h
@@ -0,0 +1,6 @@
+#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
new file mode 100644
index 0000000000..df48fbcf32
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Hannah910 Rev.2",
+ "url": "",
+ "maintainer": "Team Mechlovin'",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 72,
+ "layout": [
+ {"label":"K00 (B0,B5)", "x":0, "y":0},
+ {"label":"K01 (B0,B6)", "x":1, "y":0},
+ {"label":"K02 (B0,B7)", "x":2, "y":0},
+ {"label":"K03 (B0,C0)", "x":3, "y":0},
+ {"label":"K04 (B0,C1)", "x":4, "y":0},
+ {"label":"K05 (B0,C2)", "x":5, "y":0},
+ {"label":"K06 (B0,C3)", "x":6, "y":0},
+ {"label":"K07 (B0,C4)", "x":7, "y":0},
+ {"label":"K08 (B0,C5)", "x":8, "y":0},
+ {"label":"K09 (B0,C6)", "x":9, "y":0},
+ {"label":"K0A (B0,C7)", "x":10, "y":0},
+ {"label":"K0B (B0,D0)", "x":11, "y":0},
+ {"label":"K0C (B0,D1)", "x":12, "y":0},
+ {"label":"K0D (B0,D2)", "x":13, "y":0},
+ {"label":"K0E (B0,D3)", "x":14, "y":0},
+ {"label":"K49 (B4,C6)", "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":"K1D (B1,D2)", "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":"K2C (B2,D1)", "x":12.75, "y":2},
+ {"label":"K2D (B2,D2)", "x":13.75, "y":2, "w":1.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":"K44 (B4,C1)", "x":3.75, "y":4, "w":2.75},
+ {"label":"K46 (B4,C3)", "x":6.5, "y":4, "w":1.25},
+ {"label":"K48 (B4,C5)", "x":7.75, "y":4, "w":2.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}
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/keymap.c b/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/keymap.c
new file mode 100644
index 0000000000..022f1f3b37
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2019 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_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_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
+ 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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/readme.md b/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/readme.md
new file mode 100644
index 0000000000..63604a09e4
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/ansi/readme.md
@@ -0,0 +1,2 @@
+# The ansi keymap for hannah910v2
+GB PCB rev.2 here: https://www.reddit.com/r/mechmarket/comments/esv0um/gb_team_mechlovin_hannah_910_v2_infinity_ce_jane/ \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/default/keymap.c b/keyboards/mechlovin/hannah910/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c0f66cebcf
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2019 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( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
+ 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_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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/default/readme.md b/keyboards/mechlovin/hannah910/rev2/keymaps/default/readme.md
new file mode 100644
index 0000000000..63604a09e4
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/default/readme.md
@@ -0,0 +1,2 @@
+# The ansi keymap for hannah910v2
+GB PCB rev.2 here: https://www.reddit.com/r/mechmarket/comments/esv0um/gb_team_mechlovin_hannah_910_v2_infinity_ce_jane/ \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/via/keymap.c b/keyboards/mechlovin/hannah910/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9c2a72916d
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2019 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( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
+ 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_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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( /* Layer2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/via/readme.md b/keyboards/mechlovin/hannah910/rev2/keymaps/via/readme.md
new file mode 100644
index 0000000000..9db84a195e
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/via/readme.md
@@ -0,0 +1,2 @@
+# The default keymap (VIA support) for hannah910v2
+GB PCB rev.2 here: https://www.reddit.com/r/mechmarket/comments/esv0um/gb_team_mechlovin_hannah_910_v2_infinity_ce_jane/ \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/keymaps/via/rules.mk b/keyboards/mechlovin/hannah910/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mechlovin/hannah910/rev2/readme.md b/keyboards/mechlovin/hannah910/rev2/readme.md
new file mode 100644
index 0000000000..6fc4a06f71
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/readme.md
@@ -0,0 +1,19 @@
+# hannah910v2
+
+![hannah910](https://i.imgur.com/rRbSn8U.jpg)
+
+Replacement PCB and plate for TGR 910 keyboard (maybe fit with dolinger 65)
+
+* Keyboard Maintainer: [Mechlovin'](https://github.com/mechlovin)
+* Hardware Supported: TGR910 CE, TGR910 SE
+* Hardware Availability: [Reddit Group Buy](https://www.reddit.com/r/mechmarket/comments/dhwvbn/gb_1015_update_hannah_910_group_buy_tgr_910/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/hannah910/rev2:default
+
+Build firmware for VIA:
+
+ make mechlovin/hannah910/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/mechlovin/hannah910/rev2/rev2.h b/keyboards/mechlovin/hannah910/rev2/rev2.h
new file mode 100644
index 0000000000..d212d1ea3e
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/rev2.h
@@ -0,0 +1,50 @@
+#pragma once
+
+
+#include "quantum.h"
+
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, k67, \
+ 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, k45, \
+ k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
+ k61, k62, k63, k64, k65, k66, k68, k69, k70, k71, k72 \
+) \
+{ \
+ { 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, k45 }, \
+ { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, k64, KC_NO, k65, KC_NO, k66, k67, k68, k69, k70, k71, k72 }, \
+}
+#define LAYOUT_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, k66, \
+ k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k29, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45, \
+ k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
+ k61, k62, k63, k65, k67, k68, k69, k70, k71 \
+) \
+{ \
+ { 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, KC_NO, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k45 }, \
+ { k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, k66, k67, k68, k69, k70, k71 }, \
+}
+
+#define LAYOUT_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k66, \
+ 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, k43, k45, \
+ k46, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, \
+ k61, k62, k63, k65, k67, k68, k69, k70, k71 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, KC_NO }, \
+ { 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, KC_NO, k43, k45 }, \
+ { k46, KC_NO, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60 }, \
+ { k61, k62, k63, KC_NO, KC_NO, KC_NO, k65, KC_NO, KC_NO, k66, k67, k68, k69, k70, k71 }, \
+}
+
diff --git a/keyboards/mechlovin/hannah910/rev2/rules.mk b/keyboards/mechlovin/hannah910/rev2/rules.mk
new file mode 100644
index 0000000000..e8100a0f42
--- /dev/null
+++ b/keyboards/mechlovin/hannah910/rev2/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rules.mk b/keyboards/mechlovin/hannah910/rules.mk
index 5e17282eb0..a356867197 100644
--- a/keyboards/mechlovin/hannah910/rules.mk
+++ b/keyboards/mechlovin/hannah910/rules.mk
@@ -1,33 +1 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs \ No newline at end of file
+DEFAULT_FOLDER = mechlovin/hannah910/rev1
diff --git a/keyboards/mechlovin/infinityce/config.h b/keyboards/mechlovin/infinityce/config.h
new file mode 100644
index 0000000000..ff10e183d5
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/config.h
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 mechlovin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#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
+#define DESCRIPTION Team.Mechlovin Infinity CE
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { D7, D6, B6, B1, C6, C7 }
+#define MATRIX_COL_PINS { B5, B4, B0, D5, D4, D1, D0, E6, F7, F6, F5, F4, F1, F0, B2, D3, D2}
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN E2
+#define RGBLED_NUM 31
+#define RGBLIGHT_LIMIT_VAL 255
+#define RGBLIGHT_ANIMATIONS \ No newline at end of file
diff --git a/keyboards/mechlovin/infinityce/infinityce.c b/keyboards/mechlovin/infinityce/infinityce.c
new file mode 100644
index 0000000000..5d75b480b3
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/infinityce.c
@@ -0,0 +1,42 @@
+/* Copyright 2020 mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "infinityce.h"
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ matrix_init_user();
+ led_init_ports();
+};
+
+void led_init_ports(void) {
+ // * Set our LED pins as output
+ setPinOutput(B3);
+}
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ writePin(B3, led_state.caps_lock);
+ rgblight_set_effect_range(1, 30);
+ if (led_state.scroll_lock) {
+ rgblight_setrgb_at(255, 255, 255, 0);
+ } else {
+ rgblight_setrgb_at(0, 0, 0, 0);
+ }
+ }
+ return res;
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/infinityce/infinityce.h b/keyboards/mechlovin/infinityce/infinityce.h
new file mode 100644
index 0000000000..26a8f37493
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/infinityce.h
@@ -0,0 +1,67 @@
+/* Copyright 2020 mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#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, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4G, \
+ 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, K4G, 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 }, \
+}
+
+#define LAYOUT_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, K3D, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4G, \
+ 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, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4G, 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 }, \
+}
+
+#define LAYOUT_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, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4G, \
+ 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, KC_NO, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4G, 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/infinityce/info.json b/keyboards/mechlovin/infinityce/info.json
new file mode 100644
index 0000000000..61801e991f
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/info.json
@@ -0,0 +1,293 @@
+{
+ "keyboard_name": "Infinity CE",
+ "url": "",
+ "maintainer": "Team Mechlovin'",
+ "width": 18.25,
+ "height": 6.25,
+ "layouts": {
+ "LAYOUT_all": {
+ "key_count": 91,
+ "layout": [
+ {"label":"K00 (B0,B6)", "x":0, "y":0},
+ {"label":"K01 (B0,B7)", "x":1.25, "y":0},
+ {"label":"K02 (B0,C0)", "x":2.25, "y":0},
+ {"label":"K03 (B0,C1)", "x":3.25, "y":0},
+ {"label":"K04 (B0,C2)", "x":4.25, "y":0},
+ {"label":"K05 (B0,C3)", "x":5.5, "y":0},
+ {"label":"K06 (B0,C4)", "x":6.5, "y":0},
+ {"label":"K07 (B0,C5)", "x":7.5, "y":0},
+ {"label":"K08 (B0,C6)", "x":8.5, "y":0},
+ {"label":"K09 (B0,C7)", "x":9.75, "y":0},
+ {"label":"K0A (B0,D0)", "x":10.75, "y":0},
+ {"label":"K0B (B0,D1)", "x":11.75, "y":0},
+ {"label":"K0C (B0,D2)", "x":12.75, "y":0},
+ {"label":"K0D (B0,D3)", "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,B7)", "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, "w":2},
+ {"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,B7)", "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,B7)", "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,B7)", "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,B7)", "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}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "key_count": 88,
+ "layout": [
+ {"label":"K00 (B0,B6)", "x":0, "y":0},
+ {"label":"K01 (B0,B7)", "x":1.25, "y":0},
+ {"label":"K02 (B0,C0)", "x":2.25, "y":0},
+ {"label":"K03 (B0,C1)", "x":3.25, "y":0},
+ {"label":"K04 (B0,C2)", "x":4.25, "y":0},
+ {"label":"K05 (B0,C3)", "x":5.5, "y":0},
+ {"label":"K06 (B0,C4)", "x":6.5, "y":0},
+ {"label":"K07 (B0,C5)", "x":7.5, "y":0},
+ {"label":"K08 (B0,C6)", "x":8.5, "y":0},
+ {"label":"K09 (B0,C7)", "x":9.75, "y":0},
+ {"label":"K0A (B0,D0)", "x":10.75, "y":0},
+ {"label":"K0B (B0,D1)", "x":11.75, "y":0},
+ {"label":"K0C (B0,D2)", "x":12.75, "y":0},
+ {"label":"K0D (B0,D3)", "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,B7)", "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, "w":2},
+ {"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,B7)", "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,B7)", "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":"K3D (B3,D3)", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":2.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":"K4D (B4,D3)", "x":12.25, "y":4.25, "w":2.75},
+ {"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,B7)", "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}
+ ]
+ },
+ "LAYOUT_iso": {
+ "key_count": 89,
+ "layout": [
+ {"label":"K00 (B0,B6)", "x":0, "y":0},
+ {"label":"K01 (B0,B7)", "x":1.25, "y":0},
+ {"label":"K02 (B0,C0)", "x":2.25, "y":0},
+ {"label":"K03 (B0,C1)", "x":3.25, "y":0},
+ {"label":"K04 (B0,C2)", "x":4.25, "y":0},
+ {"label":"K05 (B0,C3)", "x":5.5, "y":0},
+ {"label":"K06 (B0,C4)", "x":6.5, "y":0},
+ {"label":"K07 (B0,C5)", "x":7.5, "y":0},
+ {"label":"K08 (B0,C6)", "x":8.5, "y":0},
+ {"label":"K09 (B0,C7)", "x":9.75, "y":0},
+ {"label":"K0A (B0,D0)", "x":10.75, "y":0},
+ {"label":"K0B (B0,D1)", "x":11.75, "y":0},
+ {"label":"K0C (B0,D2)", "x":12.75, "y":0},
+ {"label":"K0D (B0,D3)", "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,B7)", "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, "w":2},
+ {"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,B7)", "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":"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,B7)", "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":2.25, "w":1.25, "h":2},
+ {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
+ {"label":"K41 (B4,B7)", "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":"K4D (B4,D3)", "x":12.25, "y":4.25, "w":2.75},
+ {"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,B7)", "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}
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/infinityce/keymaps/default/keymap.c b/keyboards/mechlovin/infinityce/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5b3747b6ee
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+/* Copyright 2020 mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+
+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, RGB_MOD, 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_SLSH, 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_BSLS, MO(1), KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
diff --git a/keyboards/mechlovin/infinityce/keymaps/default/readme.md b/keyboards/mechlovin/infinityce/keymaps/default/readme.md
new file mode 100644
index 0000000000..32a6731924
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for infinityce
diff --git a/keyboards/mechlovin/infinityce/keymaps/via/keymap.c b/keyboards/mechlovin/infinityce/keymaps/via/keymap.c
new file mode 100644
index 0000000000..310529e0ea
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2020 mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+
+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, RGB_MOD, 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_SLSH, 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_BSLS, MO(1), KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+ [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
+ ),
+};
diff --git a/keyboards/mechlovin/infinityce/keymaps/via/readme.md b/keyboards/mechlovin/infinityce/keymaps/via/readme.md
new file mode 100644
index 0000000000..992bbfbcec
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# The VIA keymap for infinityce
+
+![infinityce](https://i.imgur.com/f2VPnXY.png)
diff --git a/keyboards/mechlovin/infinityce/keymaps/via/rules.mk b/keyboards/mechlovin/infinityce/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/infinityce/readme.md b/keyboards/mechlovin/infinityce/readme.md
new file mode 100644
index 0000000000..376dd3cb46
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/readme.md
@@ -0,0 +1,19 @@
+# infinityce
+
+![infinityce](https://i.imgur.com/GyH1G1M.jpg)
+
+Replacement PCB for TGR Jane CE V2 keyboard
+
+* Keyboard Maintainer: [mechlovin](https://github.com/mechlovin)
+* Hardware Supported: Infinity CE PCB
+* Hardware Availability: [GeekhackGB](https://geekhack.org/index.php?topic=104345.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/infinityce:default
+
+Build firmware for VIA:
+
+ make mechlovin/infinityce: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/mechlovin/infinityce/rules.mk b/keyboards/mechlovin/infinityce/rules.mk
new file mode 100644
index 0000000000..8e8807c5e9
--- /dev/null
+++ b/keyboards/mechlovin/infinityce/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/mechmini/v1/config.h b/keyboards/mechmini/v1/config.h
index eb15a368ad..07422f9ffd 100644
--- a/keyboards/mechmini/v1/config.h
+++ b/keyboards/mechmini/v1/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef V1_CONFIG_H
-#define V1_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -38,11 +37,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_UART 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
/* RGB underglow */
// The RGB_DI_PIN value seems to be shared between all PS2AVRGB boards.
// The same pin is used on the JJ40, at least.
#define RGBLED_NUM 16
#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN E2
-
-#endif
diff --git a/keyboards/mechmini/v1/rules.mk b/keyboards/mechmini/v1/rules.mk
index 1c6252c59b..6f2adc2f81 100644
--- a/keyboards/mechmini/v1/rules.mk
+++ b/keyboards/mechmini/v1/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/mechmini/v2/rules.mk b/keyboards/mechmini/v2/rules.mk
index 72d307322c..a827743192 100755
--- a/keyboards/mechmini/v2/rules.mk
+++ b/keyboards/mechmini/v2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/mehkee96/config.h b/keyboards/mehkee96/config.h
index d506626d1e..afc9d0a7b1 100644
--- a/keyboards/mehkee96/config.h
+++ b/keyboards/mehkee96/config.h
@@ -16,6 +16,9 @@
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
#define DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLED_NUM 16
#define RGBLIGHT_ANIMATIONS
/* key combination for command */
diff --git a/keyboards/mehkee96/mehkee96.c b/keyboards/mehkee96/mehkee96.c
index d9e2bac7a5..ae83a1bb50 100644
--- a/keyboards/mehkee96/mehkee96.c
+++ b/keyboards/mehkee96/mehkee96.c
@@ -16,3 +16,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mehkee96.h"
+
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
+}
diff --git a/keyboards/mehkee96/rules.mk b/keyboards/mehkee96/rules.mk
index a7d36548f0..b91a69f83b 100644
--- a/keyboards/mehkee96/rules.mk
+++ b/keyboards/mehkee96/rules.mk
@@ -14,12 +14,12 @@ BOOTLOADER = bootloadHID
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+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 = yes # Commands for debug and configuration
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/meira/rules.mk b/keyboards/meira/rules.mk
index 8357e780bf..c9949c1692 100644
--- a/keyboards/meira/rules.mk
+++ b/keyboards/meira/rules.mk
@@ -14,16 +14,16 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/meishi/rules.mk b/keyboards/meishi/rules.mk
index 571a1c48ce..3b27a9be0b 100644
--- a/keyboards/meishi/rules.mk
+++ b/keyboards/meishi/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/meishi2/rules.mk b/keyboards/meishi2/rules.mk
index 7218e1e1bf..1aa3379312 100644
--- a/keyboards/meishi2/rules.mk
+++ b/keyboards/meishi2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/melody96/rules.mk b/keyboards/melody96/rules.mk
index 1e6d4bb7cd..c1f1f22ba3 100644
--- a/keyboards/melody96/rules.mk
+++ b/keyboards/melody96/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/meme/rules.mk b/keyboards/meme/rules.mk
index 621c2dded1..a076df944a 100644
--- a/keyboards/meme/rules.mk
+++ b/keyboards/meme/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/meson/rules.mk b/keyboards/meson/rules.mk
index 323ec666a9..2fe1d15467 100644
--- a/keyboards/meson/rules.mk
+++ b/keyboards/meson/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# change yes to no to disable
#
SPLIT_KEYBOARD = yes
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -26,9 +26,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/miniaxe/rules.mk b/keyboards/miniaxe/rules.mk
index 204aeed76e..cf5efab09a 100644
--- a/keyboards/miniaxe/rules.mk
+++ b/keyboards/miniaxe/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
DEBUG_ENABLE = no
CUSTOM_MATRIX = no # Use custom matrix code
diff --git a/keyboards/minidox/config.h b/keyboards/minidox/config.h
index 7502983b6b..b3d375656f 100644
--- a/keyboards/minidox/config.h
+++ b/keyboards/minidox/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -61,9 +60,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#ifdef SUBPROJECT_rev1
- #include "rev1/config.h"
-#endif
-
-#endif
diff --git a/keyboards/minidox/eeprom-lefthand.eep b/keyboards/minidox/eeprom-lefthand.eep
deleted file mode 100644
index e5a7bc1e57..0000000000
--- a/keyboards/minidox/eeprom-lefthand.eep
+++ /dev/null
@@ -1,2 +0,0 @@
-:0F000000000000000000000000000000000001F0
-:00000001FF
diff --git a/keyboards/minidox/eeprom-righthand.eep b/keyboards/minidox/eeprom-righthand.eep
deleted file mode 100644
index 7ea44f52ef..0000000000
--- a/keyboards/minidox/eeprom-righthand.eep
+++ /dev/null
@@ -1,2 +0,0 @@
-:0F000000000000000000000000000000000000F1
-:00000001FF
diff --git a/keyboards/minidox/i2c.c b/keyboards/minidox/i2c.c
deleted file mode 100644
index 084c890c40..0000000000
--- a/keyboards/minidox/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
-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/minidox/i2c.h b/keyboards/minidox/i2c.h
deleted file mode 100644
index c15b6bc506..0000000000
--- a/keyboards/minidox/i2c.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef I2C_H
-#define I2C_H
-
-#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);
-
-
-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();
-
-#endif
diff --git a/keyboards/minidox/keymaps/xyverz/keymap.c b/keyboards/minidox/keymaps/xyverz/keymap.c
index 994ee4e1b4..4c7a05227f 100644
--- a/keyboards/minidox/keymaps/xyverz/keymap.c
+++ b/keyboards/minidox/keymaps/xyverz/keymap.c
@@ -169,9 +169,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
- writePinLow(D5);
setPinInput(B0);
- writePinLow(B0);
#endif
};
@@ -192,4 +190,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
-} \ No newline at end of file
+}
diff --git a/keyboards/minidox/matrix.c b/keyboards/minidox/matrix.c
deleted file mode 100644
index 27a38dca02..0000000000
--- a/keyboards/minidox/matrix.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "pro_micro.h"
-#include "config.h"
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#define ERROR_DISCONNECT_COUNT 5
-
-static uint8_t debouncing = DEBOUNCE;
-static const int ROWS_PER_HAND = MATRIX_ROWS/2;
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
- matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
- matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- debug_enable = true;
- debug_matrix = true;
- debug_mouse = true;
- // initialize row and col
- unselect_rows();
- init_cols();
-
- TX_RX_LED_INIT;
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- matrix_init_quantum();
-}
-
-uint8_t _matrix_scan(void)
-{
- // Right hand is stored after the left in the matirx so, we need to offset it
- int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i+offset] != cols) {
- matrix_debouncing[i+offset] = cols;
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- matrix[i+offset] = matrix_debouncing[i+offset];
- }
- }
- }
-
- return 1;
-}
-
-#ifdef USE_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- if (serial_update_buffers()) {
- return 1;
- }
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- int ret = _matrix_scan();
-
-
-
-#ifdef USE_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- TXLED1;
-
- 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
- TXLED0;
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2);
-
-#ifdef USE_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- for(int x = 0; x < MATRIX_COLS; x++) {
- _SFR_IO8((col_pins[x] >> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
- _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
- }
-}
-
-static matrix_row_t read_cols(void)
-{
- matrix_row_t result = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
- }
- return result;
-}
-
-static void unselect_rows(void)
-{
- for(int x = 0; x < ROWS_PER_HAND; x++) {
- _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
- _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
- }
-}
-
-static void select_row(uint8_t row)
-{
- _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
- _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
-}
diff --git a/keyboards/minidox/minidox.h b/keyboards/minidox/minidox.h
index 6e8add206b..5d5ca9f501 100644
--- a/keyboards/minidox/minidox.h
+++ b/keyboards/minidox/minidox.h
@@ -1,10 +1,7 @@
-#ifndef MINIDOX_H
-#define MINIDOX_H
+#pragma once
#ifdef KEYBOARD_minidox_rev1
#include "rev1.h"
#endif
#include "quantum.h"
-
-#endif \ No newline at end of file
diff --git a/keyboards/minidox/readme.md b/keyboards/minidox/readme.md
index 74afedc18b..ec52e1f757 100644
--- a/keyboards/minidox/readme.md
+++ b/keyboards/minidox/readme.md
@@ -1,75 +1,27 @@
-MiniDox
-=====
+# MiniDox
![MiniDox](http://i.imgur.com/iWb3yO0.jpg)
A compact version of the ErgoDox
-Keyboard Maintainer: That-Canadian
-Hardware Supported: MiniDox PCB rev1 Pro Micro
+* Keyboard Maintainer: That-Canadian
+* Hardware Supported: MiniDox PCB rev1 Pro Micro
Make example for this keyboard (after setting up your build environment):
make minidox/rev1:default
+Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)):
+
+ make minidox/rev1:default:flash
+
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.
## Build Guide
A build guide for putting together the MiniDox v1 can be found here: [MiniDox Build Log / Guide](http://imgur.com/a/vImo6)
-Flashing
--------
-Note: Most of this is copied from the Let's Split readme, because it is awesome
-
-From the root directory run `make PROJECT:KEYMAP:avrdude` for automatic serial port resolution and flashing.
-Example: `make minidox/rev1:default:avrdude`
-
-Choosing which board to plug the USB cable into (choosing Master)
---------
-Because the two boards are identical, the firmware has logic to differentiate the left and right board.
-
-It uses two strategies to figure things out: look at the EEPROM (memory on the chip) or looks if the current board has the usb cable.
-
-The EEPROM approach requires additional setup (flashing the eeeprom) but allows you to swap the usb cable to either side.
-
-The USB cable approach is easier to setup and if you just want the usb cable on the left board, you do not need to do anything extra.
-
-### Setting the left hand as master
-If you always plug the usb cable into the left board, nothing extra is needed as this is the default. Comment out `EE_HANDS` and comment out `I2C_MASTER_RIGHT` or `MASTER_RIGHT` if for some reason it was set.
-
-### Setting the right hand as master
-If you always plug the usb cable into the right board, add an extra flag to your `config.h`
-```
- #define MASTER_RIGHT
-```
-
-### Setting EE_hands to use either hands as master
-If you define `EE_HANDS` in your `config.h`, you will need to set the
-EEPROM for the left and right halves.
-
-The EEPROM is used to store whether the
-half is left handed or right handed. This makes it so that the same firmware
-file will run on both hands instead of having to flash left and right handed
-versions of the firmware to each half. To flash the EEPROM file for the left
-half run:
-```
-avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:"./quantum/split_common/eeprom-lefthand.eep"
-// or the equivalent in dfu-programmer
-
-```
-and similarly for right half
-```
-avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:"./quantum/split_common/eeprom-righthand.eep"
-// or the equivalent in dfu-programmer
-```
-
-NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`)
-After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash.
+## Choosing which board to plug the USB cable into (choosing Master)
-Note that you need to program both halves, but you have the option of using
-different keymaps for each half. You could program the left half with a QWERTY
-layout and the right half with a Colemak layout using bootmagic's default layout option.
-Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the
-right half is connected.
+Because the two boards are identical, the firmware has logic to differentiate the left and right board. It uses two strategies to figure things out, [EE_HANDS](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) or [by define](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-define). See [setting-handedness](https://docs.qmk.fm/#/config_options?id=setting-handedness) for more information.
diff --git a/keyboards/minidox/rev1/config.h b/keyboards/minidox/rev1/config.h
index b7272bdb05..734ca562fd 100644
--- a/keyboards/minidox/rev1/config.h
+++ b/keyboards/minidox/rev1/config.h
@@ -15,10 +15,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/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
-
-#include "../config.h"
+#pragma once
#define DEVICE_VER 0x0001
@@ -26,11 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B2, B6, B4, B5 }
#define MATRIX_COL_PINS { F4, D3, D2, D1, D4 }
+#define SOFT_SERIAL_PIN D0
+
#define USE_SERIAL
//#define EE_HANDS
-
-#define I2C_MASTER_LEFT
-//#define I2C_MASTER_RIGHT
-
-#endif
diff --git a/keyboards/minidox/rev1/rev1.h b/keyboards/minidox/rev1/rev1.h
index 5d32b05d41..bfa0e5fcc0 100644
--- a/keyboards/minidox/rev1/rev1.h
+++ b/keyboards/minidox/rev1/rev1.h
@@ -1,7 +1,4 @@
-#ifndef REV1_H
-#define REV1_H
-
-#include "../minidox.h"
+#pragma once
#include "quantum.h"
@@ -24,5 +21,3 @@
{ k61, k62, k63, k64, k65 }, \
{ ___, ___, k73, k74, k75 } \
}
-
-#endif
diff --git a/keyboards/minidox/rules.mk b/keyboards/minidox/rules.mk
index dd2affb3f9..1446c51444 100644
--- a/keyboards/minidox/rules.mk
+++ b/keyboards/minidox/rules.mk
@@ -12,29 +12,25 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= no # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
-COMMAND_ENABLE ?= yes # Commands for debug and configuration
-NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
-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 ?= no # Enable WS2812 RGB underlight.
-USE_I2C ?= no
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-CUSTOM_MATRIX = yes
-SRC += matrix.c \
- i2c.c \
- split_util.c \
- serial.c
+SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = minidox/rev1
diff --git a/keyboards/minidox/serial.c b/keyboards/minidox/serial.c
deleted file mode 100644
index 74bcbb6bf6..0000000000
--- a/keyboards/minidox/serial.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <stdbool.h>
-#include "serial.h"
-
-#ifndef USE_I2C
-
-// Serial pulse period in microseconds. Its probably a bad idea to lower this
-// value.
-#define SERIAL_DELAY 24
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-
-#define SLAVE_DATA_CORRUPT (1<<0)
-volatile uint8_t status = 0;
-
-inline static
-void serial_delay(void) {
- _delay_us(SERIAL_DELAY);
-}
-
-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(void) {
- SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static
-uint8_t serial_read_pin(void) {
- return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static
-void serial_low(void) {
- SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static
-void serial_high(void) {
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void serial_master_init(void) {
- serial_output();
- serial_high();
-}
-
-void serial_slave_init(void) {
- serial_input();
-
- // Enable INT0
- EIMSK |= _BV(INT0);
- // Trigger on falling edge of INT0
- EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-}
-
-// Used by the master to synchronize timing with the slave.
-static
-void sync_recv(void) {
- serial_input();
- // This shouldn't hang if the slave disconnects because the
- // serial line will float to high if the slave does disconnect.
- while (!serial_read_pin());
- serial_delay();
-}
-
-// Used by the slave to send a synchronization signal to the master.
-static
-void sync_send(void) {
- serial_output();
-
- serial_low();
- serial_delay();
-
- serial_high();
-}
-
-// Reads a byte from the serial line
-static
-uint8_t serial_read_byte(void) {
- uint8_t byte = 0;
- serial_input();
- for ( uint8_t i = 0; i < 8; ++i) {
- byte = (byte << 1) | serial_read_pin();
- serial_delay();
- _delay_us(1);
- }
-
- return byte;
-}
-
-// Sends a byte with MSB ordering
-static
-void serial_write_byte(uint8_t data) {
- uint8_t b = 8;
- serial_output();
- while( b-- ) {
- if(data & (1 << b)) {
- serial_high();
- } else {
- serial_low();
- }
- serial_delay();
- }
-}
-
-// interrupt handle to be used by the slave device
-ISR(SERIAL_PIN_INTERRUPT) {
- sync_send();
-
- uint8_t checksum = 0;
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_slave_buffer[i]);
- sync_send();
- checksum += serial_slave_buffer[i];
- }
- serial_write_byte(checksum);
- sync_send();
-
- // wait for the sync to finish sending
- serial_delay();
-
- // read the middle of pulses
- _delay_us(SERIAL_DELAY/2);
-
- uint8_t checksum_computed = 0;
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_master_buffer[i] = serial_read_byte();
- sync_send();
- checksum_computed += serial_master_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_send();
-
- serial_input(); // end transaction
-
- if ( checksum_computed != checksum_received ) {
- status |= SLAVE_DATA_CORRUPT;
- } else {
- status &= ~SLAVE_DATA_CORRUPT;
- }
-}
-
-inline
-bool serial_slave_DATA_CORRUPT(void) {
- return status & SLAVE_DATA_CORRUPT;
-}
-
-// Copies the serial_slave_buffer to the master and sends the
-// serial_master_buffer to the slave.
-//
-// Returns:
-// 0 => no error
-// 1 => slave did not respond
-int serial_update_buffers(void) {
- // this code is very time dependent, so we need to disable interrupts
- cli();
-
- // signal to the slave that we want to start a transaction
- serial_output();
- serial_low();
- _delay_us(1);
-
- // wait for the slaves response
- serial_input();
- serial_high();
- _delay_us(SERIAL_DELAY);
-
- // check if the slave is present
- if (serial_read_pin()) {
- // slave failed to pull the line low, assume not present
- sei();
- return 1;
- }
-
- // if the slave is present syncronize with it
- sync_recv();
-
- uint8_t checksum_computed = 0;
- // receive data from the slave
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_slave_buffer[i] = serial_read_byte();
- sync_recv();
- checksum_computed += serial_slave_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_recv();
-
- if (checksum_computed != checksum_received) {
- sei();
- return 1;
- }
-
- uint8_t checksum = 0;
- // send data to the slave
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_master_buffer[i]);
- sync_recv();
- checksum += serial_master_buffer[i];
- }
- serial_write_byte(checksum);
- sync_recv();
-
- // always, release the line when not in use
- serial_output();
- serial_high();
-
- sei();
- return 0;
-}
-
-#endif
diff --git a/keyboards/minidox/serial.h b/keyboards/minidox/serial.h
deleted file mode 100644
index 15fe4db7b4..0000000000
--- a/keyboards/minidox/serial.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef MY_SERIAL_H
-#define MY_SERIAL_H
-
-#include "config.h"
-#include <stdbool.h>
-
-/* TODO: some defines for interrupt setup */
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD0)
-#define SERIAL_PIN_INTERRUPT INT0_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 1
-
-// Buffers for master - slave communication
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-bool serial_slave_data_corrupt(void);
-
-#endif
diff --git a/keyboards/minidox/split_util.c b/keyboards/minidox/split_util.c
deleted file mode 100644
index 39639c3b4b..0000000000
--- a/keyboards/minidox/split_util.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/power.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <avr/eeprom.h>
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "config.h"
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else
-# include "serial.h"
-#endif
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
- #ifdef EE_HANDS
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
- #else
- // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
- #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
- isLeftHand = !has_usb();
- #else
- isLeftHand = has_usb();
- #endif
- #endif
-}
-
-static void keyboard_master_setup(void) {
-#ifdef USE_I2C
- i2c_master_init();
-#ifdef SSD1306OLED
- matrix_master_OLED_init ();
-#endif
-#else
- serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
-#ifdef USE_I2C
- i2c_slave_init(SLAVE_I2C_ADDRESS);
-#else
- serial_slave_init();
-#endif
-}
-
-bool has_usb(void) {
- USBCON |= (1 << OTGPADE); //enables VBUS pad
- _delay_us(5);
- return (USBSTA & (1<<VBUS)); //checks state of VBUS
-}
-
-void split_keyboard_setup(void) {
- setup_handedness();
-
- if (has_usb()) {
- keyboard_master_setup();
- } else {
- keyboard_slave_setup();
- }
- sei();
-}
-
-void keyboard_slave_loop(void) {
- matrix_init();
-
- while (1) {
- matrix_slave_scan();
- }
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
- split_keyboard_setup();
-
- if (!has_usb()) {
- keyboard_slave_loop();
- }
-}
diff --git a/keyboards/minidox/split_util.h b/keyboards/minidox/split_util.h
deleted file mode 100644
index 595a0659e1..0000000000
--- a/keyboards/minidox/split_util.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-#define SLAVE_I2C_ADDRESS 0x32
-
-extern volatile bool isLeftHand;
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
-
-void split_keyboard_setup(void);
-bool has_usb(void);
-void keyboard_slave_loop(void);
-
-void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/mint60/config.h b/keyboards/mint60/config.h
index c98b9c1af8..19a17a7c5e 100644
--- a/keyboards/mint60/config.h
+++ b/keyboards/mint60/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-#include <serial_config.h>
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -28,11 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT Mint60
#define DESCRIPTION A row staggered split keyboard
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-#define USE_SERIAL
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -54,6 +48,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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 BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
diff --git a/keyboards/mint60/i2c.c b/keyboards/mint60/i2c.c
deleted file mode 100644
index 4bee5c6398..0000000000
--- a/keyboards/mint60/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/mint60/i2c.h b/keyboards/mint60/i2c.h
deleted file mode 100644
index 47cf6bd1b2..0000000000
--- a/keyboards/mint60/i2c.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef I2C_H
-#define I2C_H
-
-#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();
-
-#endif
diff --git a/keyboards/mint60/keymaps/default/keymap.c b/keyboards/mint60/keymaps/default/keymap.c
index 0c65f73c7e..a56bc5a1ad 100644
--- a/keyboards/mint60/keymaps/default/keymap.c
+++ b/keyboards/mint60/keymaps/default/keymap.c
@@ -14,22 +14,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
-#endif
-
-
-#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
enum custom_keycodes {
RGBRST = SAFE_RANGE
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
@@ -47,10 +36,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-// define variables for reactive RGB
-bool TOG_STATUS = false;
-int RGB_current_mode;
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGBRST:
@@ -58,22 +43,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
}
#endif
break;
}
return true;
}
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/mint60/matrix.c b/keyboards/mint60/matrix.c
deleted file mode 100644
index 30f3c56bcf..0000000000
--- a/keyboards/mint60/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 <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 "pro_micro.h"
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#define ERROR_DISCONNECT_COUNT 5
-
-static uint8_t debouncing = DEBOUNCE;
-static const int ROWS_PER_HAND = MATRIX_ROWS/2;
-static uint8_t error_count = 0;
-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();
-
- TX_RX_LED_INIT;
-
- // 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_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- int ret=serial_update_buffers();
- if (ret ) {
- if(ret==2)RXLED1;
- return 1;
- }
-RXLED0;
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- if (is_master) {
- matrix_master_scan();
- }else{
- matrix_slave_scan();
-
- int offset = (isLeftHand) ? ROWS_PER_HAND : 0;
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[offset+i] = serial_master_buffer[i];
- }
-
- matrix_scan_quantum();
- }
- return 1;
-}
-
-
-uint8_t matrix_master_scan(void) {
-
- int ret = _matrix_scan();
-
-#ifndef KEYBOARD_helix_rev1
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_I2C
-// for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
-// i2c_slave_buffer[i] = matrix[offset+i];
-// }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_master_buffer[i] = matrix[offset+i];
- }
-#endif
-#endif
-
-#ifdef USE_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- TXLED1;
-
- 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
- TXLED0;
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- for(int x = 0; x < MATRIX_COLS; x++) {
- _SFR_IO8((col_pins[x] >> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
- _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
- }
-}
-
-static matrix_row_t read_cols(void)
-{
- matrix_row_t result = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
- }
- return result;
-}
-
-static void unselect_rows(void)
-{
- for(int x = 0; x < ROWS_PER_HAND; x++) {
- _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
- _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
- }
-}
-
-static void select_row(uint8_t row)
-{
- _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
- _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
-}
diff --git a/keyboards/mint60/mint60.c b/keyboards/mint60/mint60.c
index 724bea757a..8905392eff 100644
--- a/keyboards/mint60/mint60.c
+++ b/keyboards/mint60/mint60.c
@@ -14,30 +14,3 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mint60.h"
-
-void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
-
- matrix_init_user();
-}
-
-void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
-
- matrix_scan_user();
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- // put your per-action keyboard code here
- // runs for every action, just before processing by the firmware
-
- return process_record_user(keycode, record);
-}
-
-void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
-
- led_set_user(usb_led);
-}
diff --git a/keyboards/mint60/mint60.h b/keyboards/mint60/mint60.h
index ed2ee255f4..78529921aa 100644
--- a/keyboards/mint60/mint60.h
+++ b/keyboards/mint60/mint60.h
@@ -13,25 +13,10 @@
* 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 MINT60_H
-#define MINT60_H
+#pragma once
#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
-
-
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
@@ -55,5 +40,3 @@
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, KC_NO, R43, KC_NO, R45, R46, R47 }, \
}
-
-#endif
diff --git a/keyboards/mint60/rules.mk b/keyboards/mint60/rules.mk
index 037e814312..bd9f3154d9 100644
--- a/keyboards/mint60/rules.mk
+++ b/keyboards/mint60/rules.mk
@@ -14,27 +14,22 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-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
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-CUSTOM_MATRIX = yes
-SRC += i2c.c \
- serial.c \
- matrix.c \
- split_util.c
-USE_I2C = yes
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/mint60/serial.c b/keyboards/mint60/serial.c
deleted file mode 100644
index 5919415877..0000000000
--- a/keyboards/mint60/serial.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <stdbool.h>
-#include "serial.h"
-
-#ifdef USE_SERIAL
-
-#define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
-
-// Serial pulse period in microseconds.
-#define SELECT_SERIAL_SPEED 1
-#if SELECT_SERIAL_SPEED == 0
- // Very High speed
- #define SERIAL_DELAY 4 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 10 // cycles
-#elif SELECT_SERIAL_SPEED == 1
- // High speed
- #define SERIAL_DELAY 6 // micro sec
- #define READ_WRITE_START_ADJUST 23 // cycles
- #define READ_WRITE_WIDTH_ADJUST 10 // cycles
-#elif SELECT_SERIAL_SPEED == 2
- // Middle speed
- #define SERIAL_DELAY 12 // micro sec
- #define READ_WRITE_START_ADJUST 25 // cycles
- #define READ_WRITE_WIDTH_ADJUST 10 // cycles
-#elif SELECT_SERIAL_SPEED == 3
- // Low speed
- #define SERIAL_DELAY 24 // micro sec
- #define READ_WRITE_START_ADJUST 25 // cycles
- #define READ_WRITE_WIDTH_ADJUST 10 // cycles
-#elif SELECT_SERIAL_SPEED == 4
- // Very Low speed
- #define SERIAL_DELAY 50 // micro sec
- #define READ_WRITE_START_ADJUST 25 // cycles
- #define READ_WRITE_WIDTH_ADJUST 10 // cycles
-#else
-#error Illegal Serial Speed
-#endif
-
-
-#define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2)
-#define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2)
-
-#define SLAVE_INT_WIDTH 1
-#define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-
-#define SLAVE_DATA_CORRUPT (1<<0)
-volatile uint8_t status = 0;
-
-inline static
-void serial_delay(void) {
- _delay_us(SERIAL_DELAY);
-}
-
-inline static
-void serial_delay_half1(void) {
- _delay_us(SERIAL_DELAY_HALF1);
-}
-
-inline static
-void serial_delay_half2(void) {
- _delay_us(SERIAL_DELAY_HALF2);
-}
-
-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) {
- SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static
-uint8_t serial_read_pin(void) {
- return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static
-void serial_low(void) {
- SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static
-void serial_high(void) {
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void serial_master_init(void) {
- serial_output();
- serial_high();
-}
-
-void serial_slave_init(void) {
- serial_input_with_pullup();
-
-#if SERIAL_PIN_MASK == _BV(PD0)
- // Enable INT0
- EIMSK |= _BV(INT0);
- // Trigger on falling edge of INT0
- EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-#elif SERIAL_PIN_MASK == _BV(PD2)
- // Enable INT2
- EIMSK |= _BV(INT2);
- // Trigger on falling edge of INT2
- EICRA &= ~(_BV(ISC20) | _BV(ISC21));
-#else
- #error unknown SERIAL_PIN_MASK value
-#endif
-}
-
-// Used by the sender to synchronize timing with the reciver.
-static
-void sync_recv(void) {
- for (int i = 0; i < SERIAL_DELAY*5 && serial_read_pin(); i++ ) {
- }
- // This shouldn't hang if the slave disconnects because the
- // serial line will float to high if the slave does disconnect.
- while (!serial_read_pin());
-}
-
-// Used by the reciver to send a synchronization signal to the sender.
-static
-void sync_send(void) {
- serial_low();
- serial_delay();
- serial_high();
-}
-
-// Reads a byte from the serial line
-static
-uint8_t serial_read_byte(void) {
- uint8_t byte = 0;
- _delay_sub_us(READ_WRITE_START_ADJUST);
- for ( uint8_t i = 0; i < 8; ++i) {
- serial_delay_half1(); // read the middle of pulses
- byte = (byte << 1) | serial_read_pin();
- _delay_sub_us(READ_WRITE_WIDTH_ADJUST);
- serial_delay_half2();
- }
- return byte;
-}
-
-// Sends a byte with MSB ordering
-static
-void serial_write_byte(uint8_t data) {
- uint8_t b = 1<<7;
- while( b ) {
- if(data & b) {
- serial_high();
- } else {
- serial_low();
- }
- b >>= 1;
- serial_delay();
- }
- serial_low(); // sync_send() / senc_recv() need raise edge
-}
-
-// interrupt handle to be used by the slave device
-ISR(SERIAL_PIN_INTERRUPT) {
- serial_output();
-
- // slave send phase
- uint8_t checksum = 0;
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- sync_send();
- serial_write_byte(serial_slave_buffer[i]);
- checksum += serial_slave_buffer[i];
- }
- sync_send();
- serial_write_byte(checksum);
-
- // slave switch to input
- sync_send(); //0
- serial_delay_half1(); //1
- serial_low(); //2
- serial_input_with_pullup(); //2
- serial_delay_half1(); //3
-
- // slave recive phase
- uint8_t checksum_computed = 0;
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- sync_recv();
- serial_master_buffer[i] = serial_read_byte();
- checksum_computed += serial_master_buffer[i];
- }
- sync_recv();
- uint8_t checksum_received = serial_read_byte();
-
- if ( checksum_computed != checksum_received ) {
- status |= SLAVE_DATA_CORRUPT;
- } else {
- status &= ~SLAVE_DATA_CORRUPT;
- }
-
- sync_recv(); //weit master output to high
-}
-
-inline
-bool serial_slave_DATA_CORRUPT(void) {
- return status & SLAVE_DATA_CORRUPT;
-}
-
-// Copies the serial_slave_buffer to the master and sends the
-// serial_master_buffer to the slave.
-//
-// Returns:
-// 0 => no error
-// 1 => slave did not respond
-// 2 => checksum error
-int serial_update_buffers(void) {
- // this code is very time dependent, so we need to disable interrupts
- cli();
-
- // signal to the slave that we want to start a transaction
- serial_output();
- serial_low();
- _delay_us(SLAVE_INT_WIDTH);
-
- // wait for the slaves response
- serial_input_with_pullup();
- _delay_us(SLAVE_INT_RESPONSE_TIME);
-
- // check if the slave is present
- if (serial_read_pin()) {
- // slave failed to pull the line low, assume not present
- serial_output();
- serial_high();
- sei();
- return 1;
- }
-
- // master recive phase
- // if the slave is present syncronize with it
-
- uint8_t checksum_computed = 0;
- // receive data from the slave
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- sync_recv();
- serial_slave_buffer[i] = serial_read_byte();
- checksum_computed += serial_slave_buffer[i];
- }
- sync_recv();
- uint8_t checksum_received = serial_read_byte();
-
- if (checksum_computed != checksum_received) {
- serial_output();
- serial_high();
- sei();
- return 2;
- }
-
- // master switch to output
- sync_recv(); //0
- serial_delay(); //1
- serial_low(); //3
- serial_output(); // 3
- serial_delay_half1(); //4
-
- // master send phase
- uint8_t checksum = 0;
-
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- sync_send();
- serial_write_byte(serial_master_buffer[i]);
- checksum += serial_master_buffer[i];
- }
- sync_send();
- serial_write_byte(checksum);
-
- // always, release the line when not in use
- sync_send();
-
- sei();
- return 0;
-}
-
-#endif
diff --git a/keyboards/mint60/serial.h b/keyboards/mint60/serial.h
deleted file mode 100644
index c3c9569b2c..0000000000
--- a/keyboards/mint60/serial.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef SOFT_SERIAL_H
-#define SOFT_SERIAL_H
-
-#include <stdbool.h>
-
-// ////////////////////////////////////////////
-// Need Soft Serial defines in serial_config.h
-// ////////////////////////////////////////////
-// ex.
-// #define SERIAL_PIN_DDR DDRD
-// #define SERIAL_PIN_PORT PORTD
-// #define SERIAL_PIN_INPUT PIND
-// #define SERIAL_PIN_MASK _BV(PD?) ?=0,2
-// #define SERIAL_PIN_INTERRUPT INT?_vect ?=0,2
-// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-// #define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
-
-// Buffers for master - slave communication
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-bool serial_slave_data_corrupt(void);
-
-#endif /* SOFT_SERIAL_H */
diff --git a/keyboards/mint60/serial_config.h b/keyboards/mint60/serial_config.h
deleted file mode 100644
index 82c6e4e836..0000000000
--- a/keyboards/mint60/serial_config.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SOFT_SERIAL_CONFIG_H
-#define SOFT_SERIAL_CONFIG_H
-
-/* Soft Serial defines */
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD2)
-#define SERIAL_PIN_INTERRUPT INT2_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
-
-//// #error rev2 serial config
-
-#endif /* SOFT_SERIAL_CONFIG_H */
diff --git a/keyboards/mint60/split_util.c b/keyboards/mint60/split_util.c
deleted file mode 100644
index cd3a1896e5..0000000000
--- a/keyboards/mint60/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_I2C
-# include "i2c.h"
-#else
-# include "serial.h"
-#endif
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
- #ifdef EE_HANDS
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
- #else
- // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
- #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
- isLeftHand = !has_usb();
- #else
- isLeftHand = has_usb();
- #endif
- #endif
-}
-
-static void keyboard_master_setup(void) {
-
-#ifdef USE_I2C
- i2c_master_init();
-#else
- serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
-
-#ifdef USE_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/mint60/split_util.h b/keyboards/mint60/split_util.h
deleted file mode 100644
index 687ca19bd3..0000000000
--- a/keyboards/mint60/split_util.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
-
-#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);
-
-#endif
diff --git a/keyboards/mitosis/rules.mk b/keyboards/mitosis/rules.mk
index 420c49f9b9..466987e8c1 100644
--- a/keyboards/mitosis/rules.mk
+++ b/keyboards/mitosis/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/miuni32/rules.mk b/keyboards/miuni32/rules.mk
index 68622e672a..9f36d744a3 100644
--- a/keyboards/miuni32/rules.mk
+++ b/keyboards/miuni32/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# 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/model01/rules.mk b/keyboards/model01/rules.mk
index 5e3cbaa332..29c028ac85 100644
--- a/keyboards/model01/rules.mk
+++ b/keyboards/model01/rules.mk
@@ -14,16 +14,16 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
CUSTOM_MATRIX = yes
@@ -32,4 +32,4 @@ SRC += leds.c \
matrix.c
# You can set RGB_MATRIX_ENABLE = no in your rules.mk to disable this and save the Flash
-RGB_MATRIX_ENABLE = custom # Enable RGB matrix effects (+10000).
+RGB_MATRIX_ENABLE = custom # Enable RGB matrix effects.
diff --git a/keyboards/montsinger/rebound/config.h b/keyboards/montsinger/rebound/config.h
new file mode 100644
index 0000000000..271664d96f
--- /dev/null
+++ b/keyboards/montsinger/rebound/config.h
@@ -0,0 +1,62 @@
+/*
+Copyright 2020 Ross Montsinger
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x552F
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Montsinger
+#define PRODUCT Rebound
+#define DESCRIPTION "A conjoined Let's Split"
+
+/* 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 { 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
+
+/* 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/montsinger/rebound/keymaps/curry/keymap.c b/keyboards/montsinger/rebound/keymaps/curry/keymap.c
new file mode 100644
index 0000000000..1b8f4f4ac9
--- /dev/null
+++ b/keyboards/montsinger/rebound/keymaps/curry/keymap.c
@@ -0,0 +1,63 @@
+#include "curry.h"
+
+#define LAYOUT_rebound_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_ortho_4x12_wrapper( \
+ KC_TAB, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
+ KC_ESC, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
+ KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_ENT, \
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ )
+#define LAYOUT_rebound_base_wrapper(...) LAYOUT_rebound_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_rebound_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+ [_COLEMAK] = LAYOUT_rebound_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DVORAK] = LAYOUT_rebound_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_WORKMAN] = LAYOUT_rebound_base_wrapper(
+ _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
+ _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
+ _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
+ ),
+
+ [_LOWER] = LAYOUT_ortho_4x12_wrapper(
+ KC_F11, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F12,
+ KC_GRV, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
+ _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______
+ ),
+
+ [_RAISE] = LAYOUT_ortho_4x12_wrapper(
+ _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_DEL,
+ KC_TILD, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
+ _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______
+ ),
+
+ [_ADJUST] = LAYOUT_ortho_4x12_wrapper(
+ KC_MAKE, ___________________BLANK___________________, _________________ADJUST_R1_________________, KC_RST,
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
+ MG_NKRO, ___________________BLANK___________________, _________________ADJUST_R3_________________, _______,
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______
+ )
+
+
+};
diff --git a/keyboards/montsinger/rebound/keymaps/curry/rules.mk b/keyboards/montsinger/rebound/keymaps/curry/rules.mk
new file mode 100644
index 0000000000..36225f7ba6
--- /dev/null
+++ b/keyboards/montsinger/rebound/keymaps/curry/rules.mk
@@ -0,0 +1 @@
+CTPC = yes
diff --git a/keyboards/montsinger/rebound/keymaps/default/keymap.c b/keyboards/montsinger/rebound/keymaps/default/keymap.c
new file mode 100644
index 0000000000..94d9ef91dc
--- /dev/null
+++ b/keyboards/montsinger/rebound/keymaps/default/keymap.c
@@ -0,0 +1,163 @@
+#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
+{
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+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 |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* 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_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | 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_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+
+};
+
+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;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c
new file mode 100644
index 0000000000..8391ec8e14
--- /dev/null
+++ b/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c
@@ -0,0 +1,55 @@
+#include QMK_KEYBOARD_H
+#include "rossman360.h"
+
+#define PGMOD LT(_NUM, KC_PGDN)
+#define TABMOD LT(_FN1, KC_TAB)
+#define SPCMOD LT(_FN1, KC_SPACE)
+#define ENTMOD LT(_FN2, KC_ENTER)
+#define ESCMOD LT(_NUM, KC_ESC)
+#define RSMOD LT(_FN1, KC_RSHIFT)
+
+enum layer_names {
+ _BASE,
+ _DEL,
+ _FN1,
+ _FN2,
+ _NUM,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT_ortho_4x12(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , NTAB ,
+ JUMPBACK, 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_MINS,
+ CMDBSP , ALTDEL , KC_NO , CTRLSP , TABMOD , PGMOD , ENTMOD , SPCMOD , MO(_DEL),KC_NO , KC_BSPC, KC_DEL
+ ),
+
+[_FN1] = LAYOUT_ortho_4x12(
+ _______, TAB1 , TAB2 , TAB3 , TAB4 , _______, _______, UNDO , _______, _______, _______, CTAB ,
+ KC_CAPS, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , KC_NO ,
+ _______, _______, XPANDR , _______, _______, _______, _______, PMERGE , KC_DOWN, _______, _______, _______,
+ WREFRESH,_______, _______, _______, LWORD , RWORD , RVOLD , RVOLU , _______, _______, _______, _______
+ ),
+
+[_FN2] = LAYOUT_ortho_4x12(
+ _______, SPEAK1 , SPEAK2 , SPEAK3 , SPEAK4 , _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, PARADOWN, CSPEAK, _______, _______, _______, _______, _______, _______
+ ),
+
+[_DEL] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
+ REMCAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP ,KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
+ _______, _______, _______, KC_DEL , KC_BSPC, BWORD , _______, _______, _______, _______, _______, _______
+ ),
+
+[_NUM] = LAYOUT_ortho_4x12(
+ _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_MINS, KC_EQL,
+ KC_CAPS, _______, _______, _______, _______, _______, KC_MINS, KC_4 , KC_5 , KC_6 , KC_COLN, _______,
+ _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_1 , KC_2 , KC_3 , KC_BSLS, _______,
+ _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_0 , _______, _______, _______
+ )
+};
diff --git a/keyboards/montsinger/rebound/readme.md b/keyboards/montsinger/rebound/readme.md
new file mode 100755
index 0000000000..d634408cc9
--- /dev/null
+++ b/keyboards/montsinger/rebound/readme.md
@@ -0,0 +1,15 @@
+# Rebound
+
+![Rebound](https://imgur.com/zMPhNmm.jpg)
+
+A conjoined-split 40% 4x12 ortholinear keyboard made and sold by Montsinger. [More info on Montsinger.net](https://montsinger.net).
+
+* Keyboard Maintainer: [Rossman360](https://github.com/rossman360)
+* Hardware Supported: Pro Micro, Elite-C
+* Hardware Availability: [Montsinger.net](https://montsinger.net)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make montsinger/rebound: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/montsinger/rebound/rebound.c b/keyboards/montsinger/rebound/rebound.c
new file mode 100644
index 0000000000..fbb10be713
--- /dev/null
+++ b/keyboards/montsinger/rebound/rebound.c
@@ -0,0 +1 @@
+#include "rebound.h"
diff --git a/keyboards/montsinger/rebound/rebound.h b/keyboards/montsinger/rebound/rebound.h
new file mode 100644
index 0000000000..0ba4c51ceb
--- /dev/null
+++ b/keyboards/montsinger/rebound/rebound.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 Ross Montsinger
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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
+ * 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_4x12( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B\
+ ) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B } \
+}
diff --git a/keyboards/montsinger/rebound/rules.mk b/keyboards/montsinger/rebound/rules.mk
new file mode 100644
index 0000000000..efa3133039
--- /dev/null
+++ b/keyboards/montsinger/rebound/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+
+LAYOUTS = ortho_4x12
+LAYOUTS_HAS_RGB=no
diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk
index 3c67b3c287..b0628b37f3 100644
--- a/keyboards/moon/rules.mk
+++ b/keyboards/moon/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# custom matrix setup
CUSTOM_MATRIX = yes
diff --git a/keyboards/mt40/rules.mk b/keyboards/mt40/rules.mk
index 338a83cc74..fa22bf61bd 100644
--- a/keyboards/mt40/rules.mk
+++ b/keyboards/mt40/rules.mk
@@ -12,10 +12,10 @@ MCU = atmega32a
BOOTLOADER = bootloadHID
# build options
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ # nkro-doesnt-work
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
diff --git a/keyboards/mt980/rules.mk b/keyboards/mt980/rules.mk
index b3655bf723..02877c5991 100644
--- a/keyboards/mt980/rules.mk
+++ b/keyboards/mt980/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/mxss/config.h b/keyboards/mxss/config.h
index 812f301d6f..264caec970 100644
--- a/keyboards/mxss/config.h
+++ b/keyboards/mxss/config.h
@@ -21,12 +21,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 0x6060
+#define VENDOR_ID 0x4D78 // "Mx" -> MxBlue
+#define PRODUCT_ID 0x5353 // "SS" -> MxSS
#define DEVICE_VER 0x0001
#define MANUFACTURER MxBlue
#define PRODUCT MxSS
-#define DESCRIPTION Custom Polycarb Keyboard
+#define DESCRIPTION MxSS Polycarb Keyboard
/* key matrix size */
#define MATRIX_ROWS 5
@@ -56,6 +56,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+// Just for posterity, define bootlite matrix pos
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+// FLED config takes up 1 byte, stored color count takes 1, stored colors take up to 8
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 10
+
/* 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).
*/
diff --git a/keyboards/mxss/keymaps/default/keymap.c b/keyboards/mxss/keymaps/default/keymap.c
index 17cebe0c8f..b69d91df9d 100644
--- a/keyboards/mxss/keymaps/default/keymap.c
+++ b/keyboards/mxss/keymaps/default/keymap.c
@@ -15,31 +15,32 @@
*/
#include QMK_KEYBOARD_H
+hs_set caps_color = { .hue = 0, .sat = 255 };
+
// Colors for layers
// Format: {hue, saturation}
// {0, 0} to turn off the LED
// Add additional rows to handle more layers
-const hs_set layer_colors[] = {
- [0] = {0, 0}, // Color for Layer 0
- [1] = {86, 255}, // Color for Layer 1
- [2] = {36, 255}, // Color for Layer 2
- [3] = {185, 255}, // Color for Layer 3
+hs_set layer_colors[4] = {
+ [0] = {.hue = 0, .sat = 0}, // Color for Layer 0
+ [1] = {.hue = 86, .sat = 255}, // Color for Layer 1
+ [2] = {.hue = 36, .sat = 255}, // Color for Layer 2
+ [3] = {.hue = 185, .sat = 255}, // Color for Layer 3
};
-const size_t lc_size = sizeof(layer_colors) / sizeof(uint16_t);
+size_t lc_size = sizeof(layer_colors) / sizeof(uint16_t);
// Use NEW_SAFE_RANGE to define new custom keycodes in order to not overwrite the ones used for front LED control
enum custom_keycodes {
- MY_KEYCODE = NEW_SAFE_RANGE,
+ MY_KEYCODE = NEW_SAFE_RANGE,
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT( /* Base */
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
KC_CAPSLOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
LAYOUT( /* L1 */
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default-iso/config.h b/keyboards/mxss/keymaps/via/config.h
index 41d70907eb..7451a7be4f 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default-iso/config.h
+++ b/keyboards/mxss/keymaps/via/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 westfoxtrot
+/* Copyright 2018 Jumail Mundekkat / MxBlue
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,4 +16,4 @@
#pragma once
-// place overrides here
+#define LAYER_STATE_8BIT
diff --git a/keyboards/mxss/keymaps/via/keymap.c b/keyboards/mxss/keymaps/via/keymap.c
new file mode 100644
index 0000000000..34e40592a6
--- /dev/null
+++ b/keyboards/mxss/keymaps/via/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2018 Jumail Mundekkat / MxBlue
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT_all( /* L0 */
+ 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_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPSLOCK, 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_PGUP,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ LAYOUT_all( /* L1 */
+ KC_GRV, KC_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_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PSCR, FLED_VAD, FLED_VAI, FLED_MOD, RGB_VAI,
+ RESET, 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, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD, RGB_SAI, RGB_TOG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI
+ )
+};
diff --git a/keyboards/mxss/keymaps/via/rules.mk b/keyboards/mxss/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mxss/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mxss/mxss.c b/keyboards/mxss/mxss.c
index 42ecdbc469..48ea466419 100644
--- a/keyboards/mxss/mxss.c
+++ b/keyboards/mxss/mxss.c
@@ -1,4 +1,4 @@
-/* Copyright 2018 Jumail Mundekkat / MxBlue
+/* Copyright 2020 Jumail Mundekkat / MxBlue
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -12,63 +12,29 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * EEPROM management code from ../cannonkeys/stm32f072/keyboard.c
*/
-
+
#include QMK_KEYBOARD_H
#include "tmk_core/common/eeprom.h"
#include "tmk_core/common/action_layer.h"
#include "rgblight.h"
+#include "via.h"
+#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
-// Variables for controlling front LED application
-uint8_t fled_mode; // Mode for front LEDs
-uint8_t fled_val; // Brightness for front leds (0 - 255)
-LED_TYPE fleds[2]; // Front LED rgb values for indicator mode use
-
-// Predefined colors for layers
-// Format: {hue, saturation}
-// {0, 0} to turn off the LED
-// Add additional rows to handle more layers
-__attribute__ ((weak))
-const hs_set layer_colors[] = {
- [0] = {0, 0}, // Color for Layer 0
- [1] = {86, 255}, // Color for Layer 1
- [2] = {36, 255}, // Color for Layer 2
- [3] = {185, 255}, // Color for Layer 3
-};
-
-__attribute__ ((weak))
-const size_t lc_size = sizeof(layer_colors) / sizeof(uint16_t);
+void via_init_kb(void) {
+ fled_init();
+}
void matrix_init_kb(void) {
- // If EEPROM config exists, load it
- if (eeprom_is_valid()) {
- fled_config fled_conf;
- fled_conf.raw = eeprom_read_byte(EEPROM_FRONTLED_ADDR);
- fled_mode = fled_conf.mode;
- fled_val = fled_conf.val * FLED_VAL_STEP;
- // Else, default config
- } else {
- fled_mode = FLED_RGB;
- fled_val = 10 * FLED_VAL_STEP;
- eeprom_update_conf(); // Store default config to EEPROM
- }
-
- // Set default values for leds
- setrgb(0, 0, 0, &fleds[0]);
- setrgb(0, 0, 0, &fleds[1]);
-
- // Handle lighting for indicator mode
- if (fled_mode == FLED_INDI) {
- // Enable capslock led if enabled on host
- if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))
- sethsv(FLED_CAPS_H, FLED_CAPS_S, fled_val, &fleds[0]);
-
- // Determine and set colour of layer LED according to current layer
- // if hue = sat = 0, leave LED off
- uint8_t layer = biton32(layer_state);
- if (layer < lc_size && !(layer_colors[layer].hue == 0 && layer_colors[layer].hue == 0))
- sethsv(layer_colors[layer].hue, layer_colors[layer].sat, fled_val, &fleds[1]);
- }
+ // If VIA is disabled, we still need to load settings
+ // Call via_init_kb() the same way as via_init(), with setting
+ // EEPROM valid afterwards.
+#ifndef VIA_ENABLE
+ fled_init();
+ via_eeprom_set_valid(true);
+#endif // VIA_ENABLE
matrix_init_user();
}
@@ -82,132 +48,35 @@ void matrix_scan_kb(void) {
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// Handle custom keycodes for front LED operation
- switch (keycode) {
- case FLED_MOD: // Change between front LED operation modes (off, indicator, RGB)
- if (record->event.pressed)
- fled_mode_cycle();
- break;
-
- case FLED_VAI: // Increase the brightness of the front LEDs by FLED_VAL_STEP
- if (record->event.pressed)
- fled_val_increase();
- break;
-
- case FLED_VAD: // Decrease the brightness of the front LEDs by FLED_VAL_STEP
- if (record->event.pressed)
- fled_val_decrease();
- break;
-
- default:
- break; // Process all other keycodes normally
- }
-
+ process_record_fled(keycode, record);
return process_record_user(keycode, record);
}
-void led_set_kb(uint8_t usb_led) {
- // Set indicator LED appropriately, whether it is used or not
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- sethsv(FLED_CAPS_H, FLED_CAPS_S, fled_val, &fleds[0]);
- } else {
- setrgb(0, 0, 0, &fleds[0]);
- }
-
- rgblight_set();
- led_set_user(usb_led);
-}
-
-uint32_t layer_state_set_kb(uint32_t state) {
- // Determine and set colour of layer LED according to current layer
- // if hue = sat = 0, leave LED off
- uint8_t layer = biton32(state);
-
- if (layer < lc_size && !(layer_colors[layer].hue == 0 && layer_colors[layer].hue == 0))
- sethsv(layer_colors[layer].hue, layer_colors[layer].sat, fled_val, &fleds[1]);
- else
- setrgb(0, 0, 0, &fleds[1]);
-
- return state;
-}
-
-// EEPROM Management
-
-// Test if magic value is present at expected location
-bool eeprom_is_valid(void)
-{
- return (eeprom_read_word(EEPROM_MAGIC_ADDR) == EEPROM_MAGIC);
-}
-
-// Set magic value at expected location
-void eeprom_set_valid(bool valid)
-{
- eeprom_update_word(EEPROM_MAGIC_ADDR, valid ? EEPROM_MAGIC : 0xFFFF);
+bool led_update_kb(led_t led_state) {
+ fled_lock_update(led_state);
+ return led_update_user(led_state);
}
-// Store current front led config in EEPROM
-void eeprom_update_conf(void)
-{
- // Create storage struct and set values
- fled_config conf;
- conf.mode = fled_mode;
-
- // Small hack to ensure max value is stored correctly
- if (fled_val == 255)
- conf.val = 256 / FLED_VAL_STEP;
- else
- conf.val = fled_val / FLED_VAL_STEP;
-
- // Set magic value and store config
- eeprom_set_valid(true);
- eeprom_update_byte(EEPROM_FRONTLED_ADDR, conf.raw);
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ fled_layer_update(state);
+ return layer_state_set_user(state);
}
-// Custom keycode functions
+// Fallback eeprom functions if VIA is not enabled
+#ifndef VIA_ENABLE
-void fled_mode_cycle(void)
+// Sets VIA/keyboard level usage of EEPROM to valid/invalid
+// Keyboard level code (eg. via_init_kb()) should not call this
+void via_eeprom_set_valid(bool valid)
{
- // FLED -> FLED_RGB -> FLED_INDI
- switch (fled_mode) {
- case FLED_OFF:
- fled_mode = FLED_RGB;
- break;
-
- case FLED_RGB:
- fled_mode = FLED_INDI;
- break;
-
- case FLED_INDI:
- fled_mode = FLED_OFF;
- break;
- }
-
- // Update stored config
- eeprom_update_conf();
- rgblight_set();
+ char *p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54"
+ uint8_t magic0 = ( ( p[2] & 0x0F ) << 4 ) | ( p[3] & 0x0F );
+ uint8_t magic1 = ( ( p[5] & 0x0F ) << 4 ) | ( p[6] & 0x0F );
+ uint8_t magic2 = ( ( p[8] & 0x0F ) << 4 ) | ( p[9] & 0x0F );
+
+ eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+0, valid ? magic0 : 0xFF);
+ eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+1, valid ? magic1 : 0xFF);
+ eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+2, valid ? magic2 : 0xFF);
}
-void fled_val_increase(void)
-{
- // Increase val by FLED_VAL_STEP, handling the upper edge case
- if (fled_val + FLED_VAL_STEP > 255)
- fled_val = 255;
- else
- fled_val += FLED_VAL_STEP;
-
- // Update stored config
- eeprom_update_conf();
- rgblight_set();
-}
-
-void fled_val_decrease(void)
-{
- // Decrease val by FLED_VAL_STEP, handling the lower edge case
- if (fled_val - FLED_VAL_STEP > 255)
- fled_val = 255;
- else
- fled_val -= FLED_VAL_STEP;
-
- // Update stored config
- eeprom_update_conf();
- rgblight_set();
-}
+#endif
diff --git a/keyboards/mxss/mxss.h b/keyboards/mxss/mxss.h
index 3572a19cdb..4074d411cc 100644
--- a/keyboards/mxss/mxss.h
+++ b/keyboards/mxss/mxss.h
@@ -13,8 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MXSS_H
-#define MXSS_H
+#pragma once
#include "quantum.h"
#include "mxss_frontled.h"
@@ -204,4 +203,18 @@
{ k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
}
-#endif
+// All the gubs
+#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, k3E, \
+ k40, k41, k42, k43, k46, k48, k4A, k4B, k4C, k4D, k4E \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, KC_NO, k4A, k4B, k4C, k4D, k4E }, \
+}
diff --git a/keyboards/mxss/mxss_frontled.c b/keyboards/mxss/mxss_frontled.c
new file mode 100644
index 0000000000..3f19747d28
--- /dev/null
+++ b/keyboards/mxss/mxss_frontled.c
@@ -0,0 +1,264 @@
+/* Copyright 2020 Jumail Mundekkat / MxBlue
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Extended from the work done by fcoury: https://github.com/qmk/qmk_firmware/pull/4915
+ */
+
+#include "mxss_frontled.h"
+#include "tmk_core/common/eeprom.h"
+#include "rgblight.h"
+#include "via.h"
+#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
+
+// Variables for controlling front LED application
+uint8_t fled_mode; // Mode for front LEDs
+uint8_t fled_val; // Brightness for front leds (0 - 255)
+LED_TYPE fleds[2]; // Front LED rgb values for indicator mode use
+
+// Layer indicator colors
+__attribute__ ((weak))
+hs_set layer_colors[FRONTLED_COLOR_MAXCNT];
+
+// Caps lock indicator color
+__attribute__ ((weak))
+hs_set caps_color;
+
+__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()) {
+ fled_load_conf();
+ // Else, default config
+ } else {
+ // Default mode/brightness
+ fled_mode = FLED_RGB;
+ fled_val = 10 * FLED_VAL_STEP;
+
+ // Default colors
+ caps_color.hue = 0;
+ caps_color.sat = 255;
+ layer_colors[0].hue = 0;
+ layer_colors[0].sat = 0;
+ layer_colors[1].hue = 86;
+ layer_colors[1].sat = 255;
+ layer_colors[2].hue = 36;
+ layer_colors[2].sat = 255;
+ layer_colors[3].hue = 185;
+ layer_colors[3].sat = 255;
+
+ fled_update_conf(); // Store default config to EEPROM
+ }
+
+ // Set default values for leds
+ setrgb(0, 0, 0, &fleds[0]);
+ setrgb(0, 0, 0, &fleds[1]);
+
+ // Handle lighting for indicator mode
+ if (fled_mode == FLED_INDI) {
+ fled_lock_update(host_keyboard_led_state());
+ fled_layer_update(layer_state);
+ }
+}
+
+void process_record_fled(uint16_t keycode, keyrecord_t *record) {
+ // Handle custom keycodes for front LED operation
+ switch (keycode) {
+ case FLED_MOD: // Change between front LED operation modes (off, indicator, RGB)
+ if (record->event.pressed)
+ fled_mode_cycle();
+ break;
+
+ case FLED_VAI: // Increase the brightness of the front LEDs by FLED_VAL_STEP
+ if (record->event.pressed)
+ fled_val_increase();
+ break;
+
+ case FLED_VAD: // Decrease the brightness of the front LEDs by FLED_VAL_STEP
+ if (record->event.pressed)
+ fled_val_decrease();
+ break;
+
+ default:
+ break; // Process all other keycodes normally
+ }
+
+ return;
+}
+
+void fled_load_conf(void) {
+ // Load config
+ fled_config fled_conf;
+ fled_conf.raw = eeprom_read_byte(FRONTLED_CONF_ADDR);
+ fled_mode = fled_conf.mode;
+ fled_val = fled_conf.val * FLED_VAL_STEP;
+
+ // Load color data
+ uint8_t stored_cnt = eeprom_read_byte(FRONTLED_COLOR_CNT_ADDR);
+ uint16_t *color_ptr = FRONTLED_COLOR_ADDR;
+ caps_color.raw = eeprom_read_word(color_ptr); // Should always store at least 1 color
+ for (uint8_t i = 1; i < stored_cnt; i++) {
+ if (i == lc_size) // Can't load more layers than we have available
+ break;
+ layer_colors[i].raw = eeprom_read_word(&color_ptr[i]);
+ }
+ layer_colors[0].raw = 0; // hue = sat = 0 for layer 0
+}
+
+// Store current front led config in EEPROM
+void fled_update_conf(void)
+{
+ // Create storage struct and set values
+ fled_config conf;
+ conf.mode = fled_mode;
+
+ // Small hack to ensure max value is stored correctly
+ if (fled_val == 255)
+ conf.val = 256 / FLED_VAL_STEP;
+ else
+ conf.val = fled_val / FLED_VAL_STEP;
+
+ // Store config
+ eeprom_update_byte(FRONTLED_CONF_ADDR, conf.raw);
+
+ // Store color data
+ uint16_t *color_ptr = FRONTLED_COLOR_ADDR;
+ eeprom_update_word(color_ptr, caps_color.raw);
+ // Start from 1, layer 0 is not modifiable and therefore not persisted
+ uint8_t i = 1;
+ for (; i < lc_size; i++) {
+ if (i == FRONTLED_COLOR_MAXCNT) // Can't store more than the EEPROM we have available
+ break;
+ eeprom_update_word(&color_ptr[i], layer_colors[i].raw);
+ }
+ eeprom_update_byte(FRONTLED_COLOR_CNT_ADDR, i); // For safety, store the count of colors stored
+}
+
+// Custom keycode functions
+
+void fled_mode_cycle(void)
+{
+ // FLED -> FLED_RGB -> FLED_INDI
+ switch (fled_mode) {
+ case FLED_OFF:
+ fled_mode = FLED_RGB;
+ rgblight_timer_enable();
+ break;
+
+ case FLED_RGB:
+ fled_mode = FLED_INDI;
+ break;
+
+ case FLED_INDI:
+ fled_mode = FLED_OFF;
+ break;
+ }
+
+ // Update stored config
+ fled_update_conf();
+ rgblight_set();
+}
+
+void fled_val_increase(void)
+{
+ // Increase val by FLED_VAL_STEP, handling the upper edge case
+ if (fled_val + FLED_VAL_STEP > 255)
+ fled_val = 255;
+ else
+ fled_val += FLED_VAL_STEP;
+
+ // Update stored config
+ fled_update_conf();
+ rgblight_set();
+}
+
+void fled_val_decrease(void)
+{
+ // Decrease val by FLED_VAL_STEP, handling the lower edge case
+ if (fled_val - FLED_VAL_STEP > 255)
+ fled_val = 255;
+ else
+ fled_val -= FLED_VAL_STEP;
+
+ // Update stored config
+ fled_update_conf();
+ rgblight_set();
+}
+
+void fled_layer_update(layer_state_t state) {
+ // Determine and set colour of layer LED according to current layer
+ // if hue = sat = 0, leave LED off
+ uint8_t layer = get_highest_layer(state);
+
+ if (layer < lc_size && !(layer_colors[layer].hue == 0 && layer_colors[layer].sat == 0)) {
+ sethsv(layer_colors[layer].hue, layer_colors[layer].sat, fled_val, &fleds[1]);
+ } else {
+ setrgb(0, 0, 0, &fleds[1]);
+ }
+}
+
+void fled_lock_update(led_t led_state) {
+ // Set indicator LED appropriately, whether it is used or not
+ if (led_state.caps_lock) {
+ sethsv(caps_color.hue, caps_color.sat, fled_val, &fleds[0]);
+ } else {
+ setrgb(0, 0, 0, &fleds[0]);
+ }
+
+ rgblight_set();
+}
+
+void set_fled_layer_color(uint8_t layer, hs_set hs) {
+ // Update layer colors and refresh LEDs
+ layer_colors[layer] = hs;
+ fled_layer_update(layer_state);
+ fled_update_conf();
+}
+
+hs_set get_fled_layer_color(uint8_t layer) {
+ return layer_colors[layer];
+}
+
+void set_fled_caps_color(hs_set hs) {
+ // Update caplock color and refresh LEDs
+ caps_color = hs;
+ fled_lock_update(host_keyboard_led_state());
+ fled_update_conf();
+}
+
+hs_set get_fled_caps_color(void) {
+ return caps_color;
+}
+
+// Fallback eeprom functions if VIA is not enabled
+#ifndef VIA_ENABLE
+
+// Can be called in an overriding via_init_kb() to test if keyboard level code usage of
+// EEPROM is invalid and use/save defaults.
+bool via_eeprom_is_valid(void)
+{
+ char *p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54"
+ uint8_t magic0 = ( ( p[2] & 0x0F ) << 4 ) | ( p[3] & 0x0F );
+ uint8_t magic1 = ( ( p[5] & 0x0F ) << 4 ) | ( p[6] & 0x0F );
+ uint8_t magic2 = ( ( p[8] & 0x0F ) << 4 ) | ( p[9] & 0x0F );
+
+ return (eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+0 ) == magic0 &&
+ eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+1 ) == magic1 &&
+ eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+2 ) == magic2 );
+}
+
+#endif
diff --git a/keyboards/mxss/mxss_frontled.h b/keyboards/mxss/mxss_frontled.h
index 1350266ba9..3660668655 100644
--- a/keyboards/mxss/mxss_frontled.h
+++ b/keyboards/mxss/mxss_frontled.h
@@ -1,4 +1,4 @@
-/* Copyright 2018 Jumail Mundekkat / MxBlue
+/* Copyright 2020 Jumail Mundekkat / MxBlue
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,11 +16,12 @@
// EEPROM management code taken from Wilba6582
// https://github.com/Wilba6582/qmk_firmware/blob/zeal60/keyboards/zeal60/zeal_eeprom.h
-
-#ifndef MXSS_FRONTLED_H
-#define MXSS_FRONTLED_H
+#pragma once
+
+#include "quantum.h"
#include "quantum_keycodes.h"
+#include "via.h"
// RGBLED index for front LEDs
#define RGBLIGHT_FLED1 14
@@ -29,13 +30,13 @@
// Brightness increase step for front LEDs
#define FLED_VAL_STEP 8
-// QMK never uses more then 32bytes of EEPROM, so our region starts there
-// Magic value to verify the state of the EEPROM
-#define EEPROM_MAGIC 0xC3E7
-#define EEPROM_MAGIC_ADDR ((void*)32)
-
// Front LED settings
-#define EEPROM_FRONTLED_ADDR ((void*)34)
+#define FRONTLED_CONF_ADDR ((uint8_t*) VIA_EEPROM_CUSTOM_CONFIG_ADDR)
+#define FRONTLED_COLOR_CNT_ADDR (FRONTLED_CONF_ADDR + 1)
+#define FRONTLED_COLOR_ADDR ((uint16_t*)(FRONTLED_COLOR_CNT_ADDR + 1))
+
+// No point persisting more 4, VIA only allows editing of 3 + 1 for caps
+#define FRONTLED_COLOR_MAXCNT 4
// Modes for front LEDs
#define FLED_OFF 0b00
@@ -43,10 +44,6 @@
#define FLED_RGB 0b10
#define FLED_UNDEF 0b11
-// Hard-coded color for capslock indicator in FLED_INDI mode, H:0% S:100% = Red
-#define FLED_CAPS_H 0
-#define FLED_CAPS_S 255
-
// Config storage format for EEPROM
typedef union {
uint8_t raw;
@@ -57,25 +54,35 @@ typedef union {
} fled_config;
// Structure to store hue and saturation values
-typedef struct _hs_set {
- uint16_t hue;
- uint8_t sat;
+typedef union {
+ uint16_t raw;
+ struct {
+ uint8_t hue;
+ uint8_t sat;
+ };
} hs_set;
// Custom keycodes for front LED control
enum fled_keycodes {
- FLED_MOD = SAFE_RANGE,
- FLED_VAI,
- FLED_VAD,
- NEW_SAFE_RANGE // define a new safe range
+ FLED_MOD = USER00, // USER00 = VIA custom keycode start
+ FLED_VAI,
+ FLED_VAD,
+ NEW_SAFE_RANGE // define a new safe range
};
-bool eeprom_is_valid(void); // Check if EEPROM has been set up
-void eeprom_set_valid(bool valid); // Change validity state of EEPROM
-void eeprom_update_conf(void); // Store current front LED config to EEPROM
+void fled_init(void); // Run init functions for front LEDs
+void process_record_fled(uint16_t keycode, keyrecord_t* record); // Process keycodes for front LEDs
+void fled_load_conf(void); // Load front LED config from EEPROM
+void fled_update_conf(void); // Store current front LED config to EEPROM
void fled_mode_cycle(void); // Cycle between the 3 modes for the front LEDs
void fled_val_increase(void); // Increase the brightness of the front LEDs
void fled_val_decrease(void); // Decrease the brightness of the front LEDs
-#endif //MXSS_FRONTLED_H \ No newline at end of file
+void fled_layer_update(layer_state_t state); // Process layer update for front LEDs
+void fled_lock_update(led_t led_state); // Process lock update for front LEDs
+
+void set_fled_layer_color(uint8_t layer, hs_set hs); // Set color for a given layer
+void set_fled_caps_color(hs_set hs); // Set color for the capslock indicator
+hs_set get_fled_caps_color(void); // Get color for the capslock indicator
+hs_set get_fled_layer_color(uint8_t layer); // Get color for a given layer
diff --git a/keyboards/mxss/readme.md b/keyboards/mxss/readme.md
index 181b6366a0..f35709adee 100644
--- a/keyboards/mxss/readme.md
+++ b/keyboards/mxss/readme.md
@@ -2,6 +2,11 @@
![MxSS - Polycarb 65% Kit for MX/SMK](https://i.imgur.com/WDTWcmU.jpg)
+### Important Note:
+**This PCB supports the VIA configurator, and this is the recommended way to configure the keymap on this keyboard. Building the firmware should only be necessary if you would like to change the colours of the front LEDs in indicator mode.**
+
+**For more information about the VIA configurator, [see here](https://caniusevia.com/).**
+
### Information:
- Case: Frosted Polycarbonate, CNC milled
@@ -51,4 +56,4 @@ Colors for FLED_INDI mode are hardcoded as hue/saturation values, the caps lock
# Further Notes
- As SAFE_RANGE is used for defining the custom keycodes seen above, please use NEW_SAFE_RANGE as the starting value for any custom keycodes in keymap.c, as per the example. \ No newline at end of file
+ As SAFE_RANGE is used for defining the custom keycodes seen above, please use NEW_SAFE_RANGE as the starting value for any custom keycodes in keymap.c, as per the example.
diff --git a/keyboards/mxss/rgblight.c b/keyboards/mxss/rgblight.c
index 73f94f3ab0..9e17510b59 100644
--- a/keyboards/mxss/rgblight.c
+++ b/keyboards/mxss/rgblight.c
@@ -14,814 +14,1166 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <math.h>
-#include <avr/eeprom.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
+#include <string.h>
+#ifdef __AVR__
+# include <avr/eeprom.h>
+# include <avr/interrupt.h>
+#endif
+#ifdef STM32_EEPROM_ENABLE
+# include "hal.h"
+# include "eeprom.h"
+# include "eeprom_stm32.h"
+#endif
+#include "wait.h"
#include "progmem.h"
#include "timer.h"
#include "rgblight.h"
+#include "color.h"
#include "debug.h"
#include "led_tables.h"
+#include "lib/lib8tion/lib8tion.h"
+#ifdef VELOCIKEY_ENABLE
+# include "velocikey.h"
+#endif
+// MxSS custom
#include "mxss_frontled.h"
-#ifndef RGBLIGHT_LIMIT_VAL
-#define RGBLIGHT_LIMIT_VAL 255
+#ifdef RGBLIGHT_SPLIT
+/* for split keyboard */
+# define RGBLIGHT_SPLIT_SET_CHANGE_MODE rgblight_status.change_flags |= RGBLIGHT_STATUS_CHANGE_MODE
+# define RGBLIGHT_SPLIT_SET_CHANGE_HSVS rgblight_status.change_flags |= RGBLIGHT_STATUS_CHANGE_HSVS
+# define RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS rgblight_status.change_flags |= (RGBLIGHT_STATUS_CHANGE_MODE | RGBLIGHT_STATUS_CHANGE_HSVS)
+# define RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE rgblight_status.change_flags |= RGBLIGHT_STATUS_CHANGE_TIMER
+# define RGBLIGHT_SPLIT_ANIMATION_TICK rgblight_status.change_flags |= RGBLIGHT_STATUS_ANIMATION_TICK
+#else
+# define RGBLIGHT_SPLIT_SET_CHANGE_MODE
+# define RGBLIGHT_SPLIT_SET_CHANGE_HSVS
+# define RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS
+# define RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE
+# define RGBLIGHT_SPLIT_ANIMATION_TICK
#endif
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#define MAX(a,b) (((a)>(b))?(a):(b))
-
-#define LED_PTRTOIND(ptr) ((uint32_t) (ptr - led)/sizeof(LED_TYPE))
-
-void copyrgb(LED_TYPE *src, LED_TYPE *dst);
+#define _RGBM_SINGLE_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_SINGLE_DYNAMIC(sym)
+#define _RGBM_MULTI_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_MULTI_DYNAMIC(sym)
+#define _RGBM_TMP_STATIC(sym, msym) RGBLIGHT_MODE_##sym,
+#define _RGBM_TMP_DYNAMIC(sym, msym)
+static uint8_t static_effect_table[] = {
+#include "rgblight_modes.h"
+};
+
+#define _RGBM_SINGLE_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_SINGLE_DYNAMIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_MULTI_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_MULTI_DYNAMIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_TMP_STATIC(sym, msym) RGBLIGHT_MODE_##msym,
+#define _RGBM_TMP_DYNAMIC(sym, msym) RGBLIGHT_MODE_##msym,
+static uint8_t mode_base_table[] = {
+ 0, // RGBLIGHT_MODE_zero
+#include "rgblight_modes.h"
+};
+
+static inline int is_static_effect(uint8_t mode) { return memchr(static_effect_table, mode, sizeof(static_effect_table)) != NULL; }
+
+#ifdef RGBLIGHT_LED_MAP
+const uint8_t led_map[] PROGMEM = RGBLIGHT_LED_MAP;
+#endif
-__attribute__ ((weak))
-const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};
-__attribute__ ((weak))
-const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {120, 60, 30};
-__attribute__ ((weak))
-const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20};
-__attribute__ ((weak))
-const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};
-__attribute__ ((weak))
-const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
-__attribute__ ((weak))
-const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90};
-__attribute__ ((weak))
-const uint16_t RGBLED_RGBTEST_INTERVALS[] PROGMEM = {1024};
+#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
+__attribute__((weak)) const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
+#endif
rgblight_config_t rgblight_config;
+rgblight_status_t rgblight_status = {.timer_enabled = false};
+bool is_rgblight_initialized = false;
+
+#ifdef RGBLIGHT_USE_TIMER
+animation_status_t animation_status = {};
+#endif
+#ifndef LED_ARRAY
LED_TYPE led[RGBLED_NUM];
+# define LED_ARRAY led
+#endif
-bool rgblight_timer_enabled = false;
+static uint8_t clipping_start_pos = 0;
+static uint8_t clipping_num_leds = RGBLED_NUM;
+static uint8_t effect_start_pos = 0;
+static uint8_t effect_end_pos = RGBLED_NUM;
+static uint8_t effect_num_leds = RGBLED_NUM;
+// MxSS custom
extern uint8_t fled_mode;
extern uint8_t fled_val;
extern LED_TYPE fleds[2];
hs_set fled_hs[2];
-void sethsv(uint16_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
- uint8_t r = 0, g = 0, b = 0, base, color;
-
- // if led is front leds, cache the hue and sat values
- if (led1 == &led[RGBLIGHT_FLED1]) {
- fled_hs[0].hue = hue;
- fled_hs[0].sat = sat;
- } else if (led1 == &led[RGBLIGHT_FLED2]) {
- fled_hs[1].hue = hue;
- fled_hs[1].sat = sat;
- }
+void copyrgb(LED_TYPE *src, LED_TYPE *dst) {
+ (*dst).r = (*src).r;
+ (*dst).g = (*src).g;
+ (*dst).b = (*src).b;
+}
- if (val > RGBLIGHT_LIMIT_VAL) {
- val=RGBLIGHT_LIMIT_VAL; // limit the val
- }
+void rgblight_set_clipping_range(uint8_t start_pos, uint8_t num_leds) {
+ clipping_start_pos = start_pos;
+ clipping_num_leds = num_leds;
+}
- if (sat == 0) { // Acromatic color (gray). Hue doesn't mind.
- r = val;
- g = val;
- b = val;
- } else {
- base = ((255 - sat) * val) >> 8;
- color = (val - base) * (hue % 60) / 60;
-
- switch (hue / 60) {
- case 0:
- r = val;
- g = base + color;
- b = base;
- break;
- case 1:
- r = val - color;
- g = val;
- b = base;
- break;
- case 2:
- r = base;
- g = val;
- b = base + color;
- break;
- case 3:
- r = base;
- g = val - color;
- b = val;
- break;
- case 4:
- r = base + color;
- g = base;
- b = val;
- break;
- case 5:
- r = val;
- g = base;
- b = val - color;
- break;
- }
- }
- r = pgm_read_byte(&CIE1931_CURVE[r]);
- g = pgm_read_byte(&CIE1931_CURVE[g]);
- b = pgm_read_byte(&CIE1931_CURVE[b]);
+void rgblight_set_effect_range(uint8_t start_pos, uint8_t num_leds) {
+ if (start_pos >= RGBLED_NUM) return;
+ if (start_pos + num_leds > RGBLED_NUM) return;
+ effect_start_pos = start_pos;
+ effect_end_pos = start_pos + num_leds;
+ effect_num_leds = num_leds;
+}
- setrgb(r, g, b, led1);
+void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) {
+ HSV hsv = {hue, sat, val};
+ // MxSS custom
+ // if led is front leds, cache the hue and sat values
+ if (led1 == &led[RGBLIGHT_FLED1]) {
+ fled_hs[0].hue = hue;
+ fled_hs[0].sat = sat;
+ } else if (led1 == &led[RGBLIGHT_FLED2]) {
+ fled_hs[1].hue = hue;
+ fled_hs[1].sat = sat;
+ } RGB rgb = hsv_to_rgb(hsv);
+ setrgb(rgb.r, rgb.g, rgb.b, led1);
}
+void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); }
+
void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) {
- (*led1).r = r;
- (*led1).g = g;
- (*led1).b = b;
+ (*led1).r = r;
+ (*led1).g = g;
+ (*led1).b = b;
+#ifdef RGBW
+ (*led1).w = 0;
+#endif
}
-void copyrgb(LED_TYPE *src, LED_TYPE *dst) {
- (*dst).r = (*src).r;
- (*dst).g = (*src).g;
- (*dst).b = (*src).b;
+void rgblight_check_config(void) {
+ /* Add some out of bound checks for RGB light config */
+
+ if (rgblight_config.mode < RGBLIGHT_MODE_STATIC_LIGHT) {
+ rgblight_config.mode = RGBLIGHT_MODE_STATIC_LIGHT;
+ } else if (rgblight_config.mode > RGBLIGHT_MODES) {
+ rgblight_config.mode = RGBLIGHT_MODES;
+ }
+
+ if (rgblight_config.val > RGBLIGHT_LIMIT_VAL) {
+ rgblight_config.val = RGBLIGHT_LIMIT_VAL;
+ }
}
uint32_t eeconfig_read_rgblight(void) {
- return eeprom_read_dword(EECONFIG_RGBLIGHT);
+#if defined(__AVR__) || defined(STM32_EEPROM_ENABLE) || defined(PROTOCOL_ARM_ATSAM) || defined(EEPROM_SIZE)
+ return eeprom_read_dword(EECONFIG_RGBLIGHT);
+#else
+ return 0;
+#endif
}
+
void eeconfig_update_rgblight(uint32_t val) {
- eeprom_update_dword(EECONFIG_RGBLIGHT, val);
+#if defined(__AVR__) || defined(STM32_EEPROM_ENABLE) || defined(PROTOCOL_ARM_ATSAM) || defined(EEPROM_SIZE)
+ rgblight_check_config();
+ eeprom_update_dword(EECONFIG_RGBLIGHT, val);
+#endif
}
+
void eeconfig_update_rgblight_default(void) {
- dprintf("eeconfig_update_rgblight_default\n");
- rgblight_config.enable = 1;
- rgblight_config.mode = 1;
- rgblight_config.hue = 0;
- rgblight_config.sat = 255;
- rgblight_config.val = RGBLIGHT_LIMIT_VAL;
- rgblight_config.speed = 0;
- eeconfig_update_rgblight(rgblight_config.raw);
+ rgblight_config.enable = 1;
+ rgblight_config.mode = RGBLIGHT_MODE_STATIC_LIGHT;
+ rgblight_config.hue = 0;
+ rgblight_config.sat = UINT8_MAX;
+ rgblight_config.val = RGBLIGHT_LIMIT_VAL;
+ rgblight_config.speed = 0;
+ RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS;
+ eeconfig_update_rgblight(rgblight_config.raw);
}
+
void eeconfig_debug_rgblight(void) {
- dprintf("rgblight_config eprom\n");
- dprintf("rgblight_config.enable = %d\n", rgblight_config.enable);
- dprintf("rghlight_config.mode = %d\n", rgblight_config.mode);
- dprintf("rgblight_config.hue = %d\n", rgblight_config.hue);
- dprintf("rgblight_config.sat = %d\n", rgblight_config.sat);
- dprintf("rgblight_config.val = %d\n", rgblight_config.val);
- dprintf("rgblight_config.speed = %d\n", rgblight_config.speed);
+ dprintf("rgblight_config EEPROM:\n");
+ dprintf("rgblight_config.enable = %d\n", rgblight_config.enable);
+ dprintf("rghlight_config.mode = %d\n", rgblight_config.mode);
+ dprintf("rgblight_config.hue = %d\n", rgblight_config.hue);
+ dprintf("rgblight_config.sat = %d\n", rgblight_config.sat);
+ dprintf("rgblight_config.val = %d\n", rgblight_config.val);
+ dprintf("rgblight_config.speed = %d\n", rgblight_config.speed);
}
void rgblight_init(void) {
- debug_enable = 1; // Debug ON!
- dprintf("rgblight_init called.\n");
- dprintf("rgblight_init start!\n");
- if (!eeconfig_is_enabled()) {
- dprintf("rgblight_init eeconfig is not enabled.\n");
- eeconfig_init();
- eeconfig_update_rgblight_default();
- }
- rgblight_config.raw = eeconfig_read_rgblight();
- if (!rgblight_config.mode) {
- dprintf("rgblight_init rgblight_config.mode = 0. Write default values to EEPROM.\n");
- eeconfig_update_rgblight_default();
+ /* if already initialized, don't do it again.
+ If you must do it again, extern this and set to false, first.
+ This is a dirty, dirty hack until proper hooks can be added for keyboard startup. */
+ if (is_rgblight_initialized) {
+ return;
+ }
+
+ dprintf("rgblight_init called.\n");
+ dprintf("rgblight_init start!\n");
+ if (!eeconfig_is_enabled()) {
+ dprintf("rgblight_init eeconfig is not enabled.\n");
+ eeconfig_init();
+ eeconfig_update_rgblight_default();
+ }
rgblight_config.raw = eeconfig_read_rgblight();
- }
- eeconfig_debug_rgblight(); // display current eeprom values
+ RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS;
+ if (!rgblight_config.mode) {
+ dprintf("rgblight_init rgblight_config.mode = 0. Write default values to EEPROM.\n");
+ eeconfig_update_rgblight_default();
+ rgblight_config.raw = eeconfig_read_rgblight();
+ }
+ rgblight_check_config();
- #ifdef RGBLIGHT_ANIMATIONS
- rgblight_timer_init(); // setup the timer
- #endif
+ eeconfig_debug_rgblight(); // display current eeprom values
- if (rgblight_config.enable) {
- rgblight_mode_noeeprom(rgblight_config.mode);
- }
+#ifdef RGBLIGHT_USE_TIMER
+ rgblight_timer_init(); // setup the timer
+#endif
+
+ if (rgblight_config.enable) {
+ rgblight_mode_noeeprom(rgblight_config.mode);
+ }
+
+ is_rgblight_initialized = true;
}
+uint32_t rgblight_read_dword(void) { return rgblight_config.raw; }
+
void rgblight_update_dword(uint32_t dword) {
- rgblight_config.raw = dword;
- eeconfig_update_rgblight(rgblight_config.raw);
- if (rgblight_config.enable)
- rgblight_mode(rgblight_config.mode);
- else {
- #ifdef RGBLIGHT_ANIMATIONS
- rgblight_timer_disable();
- #endif
- rgblight_set();
- }
+ RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS;
+ rgblight_config.raw = dword;
+ if (rgblight_config.enable)
+ rgblight_mode_noeeprom(rgblight_config.mode);
+ else {
+#ifdef RGBLIGHT_USE_TIMER
+ rgblight_timer_disable();
+#endif
+ rgblight_set();
+ }
}
void rgblight_increase(void) {
- uint8_t mode = 0;
- if (rgblight_config.mode < RGBLIGHT_MODES) {
- mode = rgblight_config.mode + 1;
- }
- rgblight_mode(mode);
+ uint8_t mode = 0;
+ if (rgblight_config.mode < RGBLIGHT_MODES) {
+ mode = rgblight_config.mode + 1;
+ }
+ rgblight_mode(mode);
}
void rgblight_decrease(void) {
- uint8_t mode = 0;
- // Mode will never be < 1. If it ever is, eeprom needs to be initialized.
- if (rgblight_config.mode > 1) {
- mode = rgblight_config.mode - 1;
- }
- rgblight_mode(mode);
+ uint8_t mode = 0;
+ // Mode will never be < 1. If it ever is, eeprom needs to be initialized.
+ if (rgblight_config.mode > RGBLIGHT_MODE_STATIC_LIGHT) {
+ mode = rgblight_config.mode - 1;
+ }
+ rgblight_mode(mode);
}
-void rgblight_step(void) {
- uint8_t mode = 0;
- mode = rgblight_config.mode + 1;
- if (mode > RGBLIGHT_MODES) {
- mode = 1;
- }
- rgblight_mode(mode);
+void rgblight_step_helper(bool write_to_eeprom) {
+ uint8_t mode = 0;
+ mode = rgblight_config.mode + 1;
+ if (mode > RGBLIGHT_MODES) {
+ mode = 1;
+ }
+ rgblight_mode_eeprom_helper(mode, write_to_eeprom);
}
-void rgblight_step_reverse(void) {
- uint8_t mode = 0;
- mode = rgblight_config.mode - 1;
- if (mode < 1) {
- mode = RGBLIGHT_MODES;
- }
- rgblight_mode(mode);
+void rgblight_step_noeeprom(void) { rgblight_step_helper(false); }
+void rgblight_step(void) { rgblight_step_helper(true); }
+void rgblight_step_reverse_helper(bool write_to_eeprom) {
+ uint8_t mode = 0;
+ mode = rgblight_config.mode - 1;
+ if (mode < 1) {
+ mode = RGBLIGHT_MODES;
+ }
+ rgblight_mode_eeprom_helper(mode, write_to_eeprom);
}
+void rgblight_step_reverse_noeeprom(void) { rgblight_step_reverse_helper(false); }
+void rgblight_step_reverse(void) { rgblight_step_reverse_helper(true); }
uint8_t rgblight_get_mode(void) {
- if (!rgblight_config.enable) {
- return false;
- }
+ if (!rgblight_config.enable) {
+ return false;
+ }
- return rgblight_config.mode;
+ return rgblight_config.mode;
}
void rgblight_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
- if (!rgblight_config.enable) {
- return;
- }
- if (mode < 1) {
- rgblight_config.mode = 1;
- } else if (mode > RGBLIGHT_MODES) {
- rgblight_config.mode = RGBLIGHT_MODES;
- } else {
- rgblight_config.mode = mode;
- }
- if (write_to_eeprom) {
- eeconfig_update_rgblight(rgblight_config.raw);
- xprintf("rgblight mode [EEPROM]: %u\n", rgblight_config.mode);
- } else {
- xprintf("rgblight mode [NOEEPROM]: %u\n", rgblight_config.mode);
- }
- if (rgblight_config.mode == 1) {
- #ifdef RGBLIGHT_ANIMATIONS
- rgblight_timer_disable();
- #endif
- } else if ((rgblight_config.mode >= 2 && rgblight_config.mode <= 24) ||
- rgblight_config.mode == 35 ) {
- // MODE 2-5, breathing
- // MODE 6-8, rainbow mood
- // MODE 9-14, rainbow swirl
- // MODE 15-20, snake
- // MODE 21-23, knight
- // MODE 24, xmas
- // MODE 35 RGB test
-
- #ifdef RGBLIGHT_ANIMATIONS
- rgblight_timer_enable();
- #endif
- } else if (rgblight_config.mode >= 25 && rgblight_config.mode <= 34) {
- // MODE 25-34, static gradient
-
- #ifdef RGBLIGHT_ANIMATIONS
- rgblight_timer_disable();
- #endif
- }
- rgblight_sethsv_noeeprom(rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
-}
-
-void rgblight_mode(uint8_t mode) {
- rgblight_mode_eeprom_helper(mode, true);
+ if (!rgblight_config.enable) {
+ return;
+ }
+ if (mode < RGBLIGHT_MODE_STATIC_LIGHT) {
+ rgblight_config.mode = RGBLIGHT_MODE_STATIC_LIGHT;
+ } else if (mode > RGBLIGHT_MODES) {
+ rgblight_config.mode = RGBLIGHT_MODES;
+ } else {
+ rgblight_config.mode = mode;
+ }
+ RGBLIGHT_SPLIT_SET_CHANGE_MODE;
+ if (write_to_eeprom) {
+ eeconfig_update_rgblight(rgblight_config.raw);
+ dprintf("rgblight mode [EEPROM]: %u\n", rgblight_config.mode);
+ } else {
+ dprintf("rgblight mode [NOEEPROM]: %u\n", rgblight_config.mode);
+ }
+ if (is_static_effect(rgblight_config.mode)) {
+#ifdef RGBLIGHT_USE_TIMER
+ rgblight_timer_disable();
+#endif
+ } else {
+#ifdef RGBLIGHT_USE_TIMER
+ rgblight_timer_enable();
+#endif
+ }
+#ifdef RGBLIGHT_USE_TIMER
+ animation_status.restart = true;
+#endif
+ rgblight_sethsv_noeeprom(rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
}
-void rgblight_mode_noeeprom(uint8_t mode) {
- rgblight_mode_eeprom_helper(mode, false);
-}
+void rgblight_mode(uint8_t mode) { rgblight_mode_eeprom_helper(mode, true); }
+void rgblight_mode_noeeprom(uint8_t mode) { rgblight_mode_eeprom_helper(mode, false); }
void rgblight_toggle(void) {
- xprintf("rgblight toggle [EEPROM]: rgblight_config.enable = %u\n", !rgblight_config.enable);
- if (rgblight_config.enable) {
- rgblight_disable();
- }
- else {
- rgblight_enable();
- }
+ dprintf("rgblight toggle [EEPROM]: rgblight_config.enable = %u\n", !rgblight_config.enable);
+ if (rgblight_config.enable) {
+ rgblight_disable();
+ } else {
+ rgblight_enable();
+ }
}
void rgblight_toggle_noeeprom(void) {
- xprintf("rgblight toggle [NOEEPROM]: rgblight_config.enable = %u\n", !rgblight_config.enable);
- if (rgblight_config.enable) {
- rgblight_disable_noeeprom();
- }
- else {
- rgblight_enable_noeeprom();
- }
+ dprintf("rgblight toggle [NOEEPROM]: rgblight_config.enable = %u\n", !rgblight_config.enable);
+ if (rgblight_config.enable) {
+ rgblight_disable_noeeprom();
+ } else {
+ rgblight_enable_noeeprom();
+ }
}
void rgblight_enable(void) {
- rgblight_config.enable = 1;
- // No need to update EEPROM here. rgblight_mode() will do that, actually
- //eeconfig_update_rgblight(rgblight_config.raw);
- xprintf("rgblight enable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
- rgblight_mode(rgblight_config.mode);
+ rgblight_config.enable = 1;
+ // No need to update EEPROM here. rgblight_mode() will do that, actually
+ // eeconfig_update_rgblight(rgblight_config.raw);
+ dprintf("rgblight enable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
+ rgblight_mode(rgblight_config.mode);
}
void rgblight_enable_noeeprom(void) {
- rgblight_config.enable = 1;
- xprintf("rgblight enable [NOEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
- rgblight_mode_noeeprom(rgblight_config.mode);
+ rgblight_config.enable = 1;
+ dprintf("rgblight enable [NOEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
+ rgblight_mode_noeeprom(rgblight_config.mode);
}
void rgblight_disable(void) {
- rgblight_config.enable = 0;
- eeconfig_update_rgblight(rgblight_config.raw);
- xprintf("rgblight disable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
- #ifdef RGBLIGHT_ANIMATIONS
- //rgblight_timer_disable();
- #endif
- _delay_ms(50);
- rgblight_set();
+ rgblight_config.enable = 0;
+ eeconfig_update_rgblight(rgblight_config.raw);
+ dprintf("rgblight disable [EEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
+#ifdef RGBLIGHT_USE_TIMER
+ rgblight_timer_disable();
+#endif
+ RGBLIGHT_SPLIT_SET_CHANGE_MODE;
+ wait_ms(50);
+ rgblight_set();
}
void rgblight_disable_noeeprom(void) {
- rgblight_config.enable = 0;
- xprintf("rgblight disable [noEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
- #ifdef RGBLIGHT_ANIMATIONS
+ rgblight_config.enable = 0;
+ dprintf("rgblight disable [NOEEPROM]: rgblight_config.enable = %u\n", rgblight_config.enable);
+#ifdef RGBLIGHT_USE_TIMER
rgblight_timer_disable();
- #endif
- _delay_ms(50);
- rgblight_set();
+#endif
+ RGBLIGHT_SPLIT_SET_CHANGE_MODE;
+ wait_ms(50);
+ rgblight_set();
}
-
-// Deals with the messy details of incrementing an integer
-uint8_t increment( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
- int16_t new_value = value;
- new_value += step;
- return MIN( MAX( new_value, min ), max );
+void rgblight_increase_hue_helper(bool write_to_eeprom) {
+ uint8_t hue = rgblight_config.hue + RGBLIGHT_HUE_STEP;
+ rgblight_sethsv_eeprom_helper(hue, rgblight_config.sat, rgblight_config.val, write_to_eeprom);
}
-
-uint8_t decrement( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
- int16_t new_value = value;
- new_value -= step;
- return MIN( MAX( new_value, min ), max );
+void rgblight_increase_hue_noeeprom(void) { rgblight_increase_hue_helper(false); }
+void rgblight_increase_hue(void) { rgblight_increase_hue_helper(true); }
+void rgblight_decrease_hue_helper(bool write_to_eeprom) {
+ uint8_t hue = rgblight_config.hue - RGBLIGHT_HUE_STEP;
+ rgblight_sethsv_eeprom_helper(hue, rgblight_config.sat, rgblight_config.val, write_to_eeprom);
}
-
-void rgblight_increase_hue(void) {
- uint16_t hue;
- hue = (rgblight_config.hue+RGBLIGHT_HUE_STEP) % 360;
- rgblight_sethsv(hue, rgblight_config.sat, rgblight_config.val);
+void rgblight_decrease_hue_noeeprom(void) { rgblight_decrease_hue_helper(false); }
+void rgblight_decrease_hue(void) { rgblight_decrease_hue_helper(true); }
+void rgblight_increase_sat_helper(bool write_to_eeprom) {
+ uint8_t sat = qadd8(rgblight_config.sat, RGBLIGHT_SAT_STEP);
+ rgblight_sethsv_eeprom_helper(rgblight_config.hue, sat, rgblight_config.val, write_to_eeprom);
}
-void rgblight_decrease_hue(void) {
- uint16_t hue;
- if (rgblight_config.hue-RGBLIGHT_HUE_STEP < 0) {
- hue = (rgblight_config.hue + 360 - RGBLIGHT_HUE_STEP) % 360;
- } else {
- hue = (rgblight_config.hue - RGBLIGHT_HUE_STEP) % 360;
- }
- rgblight_sethsv(hue, rgblight_config.sat, rgblight_config.val);
-}
-void rgblight_increase_sat(void) {
- uint8_t sat;
- if (rgblight_config.sat + RGBLIGHT_SAT_STEP > 255) {
- sat = 255;
- } else {
- sat = rgblight_config.sat + RGBLIGHT_SAT_STEP;
- }
- rgblight_sethsv(rgblight_config.hue, sat, rgblight_config.val);
-}
-void rgblight_decrease_sat(void) {
- uint8_t sat;
- if (rgblight_config.sat - RGBLIGHT_SAT_STEP < 0) {
- sat = 0;
- } else {
- sat = rgblight_config.sat - RGBLIGHT_SAT_STEP;
- }
- rgblight_sethsv(rgblight_config.hue, sat, rgblight_config.val);
-}
-void rgblight_increase_val(void) {
- uint8_t val;
- if (rgblight_config.val + RGBLIGHT_VAL_STEP > RGBLIGHT_LIMIT_VAL) {
- val = RGBLIGHT_LIMIT_VAL;
- } else {
- val = rgblight_config.val + RGBLIGHT_VAL_STEP;
- }
- rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val);
-}
-void rgblight_decrease_val(void) {
- uint8_t val;
- if (rgblight_config.val - RGBLIGHT_VAL_STEP < 0) {
- val = 0;
- } else {
- val = rgblight_config.val - RGBLIGHT_VAL_STEP;
- }
- rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val);
+void rgblight_increase_sat_noeeprom(void) { rgblight_increase_sat_helper(false); }
+void rgblight_increase_sat(void) { rgblight_increase_sat_helper(true); }
+void rgblight_decrease_sat_helper(bool write_to_eeprom) {
+ uint8_t sat = qsub8(rgblight_config.sat, RGBLIGHT_SAT_STEP);
+ rgblight_sethsv_eeprom_helper(rgblight_config.hue, sat, rgblight_config.val, write_to_eeprom);
+}
+void rgblight_decrease_sat_noeeprom(void) { rgblight_decrease_sat_helper(false); }
+void rgblight_decrease_sat(void) { rgblight_decrease_sat_helper(true); }
+void rgblight_increase_val_helper(bool write_to_eeprom) {
+ uint8_t val = qadd8(rgblight_config.val, RGBLIGHT_VAL_STEP);
+ rgblight_sethsv_eeprom_helper(rgblight_config.hue, rgblight_config.sat, val, write_to_eeprom);
+}
+void rgblight_increase_val_noeeprom(void) { rgblight_increase_val_helper(false); }
+void rgblight_increase_val(void) { rgblight_increase_val_helper(true); }
+void rgblight_decrease_val_helper(bool write_to_eeprom) {
+ uint8_t val = qsub8(rgblight_config.val, RGBLIGHT_VAL_STEP);
+ rgblight_sethsv_eeprom_helper(rgblight_config.hue, rgblight_config.sat, val, write_to_eeprom);
}
+void rgblight_decrease_val_noeeprom(void) { rgblight_decrease_val_helper(false); }
+void rgblight_decrease_val(void) { rgblight_decrease_val_helper(true); }
void rgblight_increase_speed(void) {
- rgblight_config.speed = increment( rgblight_config.speed, 1, 0, 3 );
- eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
+ if (rgblight_config.speed < 3) rgblight_config.speed++;
+ // RGBLIGHT_SPLIT_SET_CHANGE_HSVS; // NEED?
+ eeconfig_update_rgblight(rgblight_config.raw); // EECONFIG needs to be increased to support this
}
void rgblight_decrease_speed(void) {
- rgblight_config.speed = decrement( rgblight_config.speed, 1, 0, 3 );
- eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
+ if (rgblight_config.speed > 0) rgblight_config.speed--;
+ // RGBLIGHT_SPLIT_SET_CHANGE_HSVS; // NEED??
+ eeconfig_update_rgblight(rgblight_config.raw); // EECONFIG needs to be increased to support this
}
-void rgblight_sethsv_noeeprom_old(uint16_t hue, uint8_t sat, uint8_t val) {
- if (rgblight_config.enable) {
- LED_TYPE tmp_led;
- sethsv(hue, sat, val, &tmp_led);
- fled_hs[0].hue = fled_hs[1].hue = hue;
- fled_hs[0].sat = fled_hs[1].sat = sat;
- // dprintf("rgblight set hue [MEMORY]: %u,%u,%u\n", inmem_config.hue, inmem_config.sat, inmem_config.val);
- rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
- }
+void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) {
+ if (rgblight_config.enable) {
+ // MxSS custom code
+ fled_hs[0].hue = fled_hs[1].hue = hue;
+ fled_hs[0].sat = fled_hs[1].sat = sat;
+
+ LED_TYPE tmp_led;
+ sethsv(hue, sat, val, &tmp_led);
+ rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
+ }
}
-void rgblight_sethsv_eeprom_helper(uint16_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom) {
- if (rgblight_config.enable) {
- if (rgblight_config.mode == 1) {
- // same static color
- LED_TYPE tmp_led;
- sethsv(hue, sat, val, &tmp_led);
-
- fled_hs[0].hue = fled_hs[1].hue = hue;
- fled_hs[0].sat = fled_hs[1].sat = sat;
-
- rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
- } else {
- // all LEDs in same color
- if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) {
- // breathing mode, ignore the change of val, use in memory value instead
- val = rgblight_config.val;
- } else if (rgblight_config.mode >= 6 && rgblight_config.mode <= 14) {
- // rainbow mood and rainbow swirl, ignore the change of hue
- hue = rgblight_config.hue;
- } else if (rgblight_config.mode >= 25 && rgblight_config.mode <= 34) {
- // static gradient
- uint16_t _hue;
- int8_t direction = ((rgblight_config.mode - 25) % 2) ? -1 : 1;
- uint16_t range = pgm_read_word(&RGBLED_GRADIENT_RANGES[(rgblight_config.mode - 25) / 2]);
- for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- _hue = (range / RGBLED_NUM * i * direction + hue + 360) % 360;
- dprintf("rgblight rainbow set hsv: %u,%u,%d,%u\n", i, _hue, direction, range);
- sethsv(_hue, sat, val, (LED_TYPE *)&led[i]);
+void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom) {
+ if (rgblight_config.enable) {
+ rgblight_status.base_mode = mode_base_table[rgblight_config.mode];
+ if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) {
+ // same static color
+ LED_TYPE tmp_led;
+ sethsv(hue, sat, val, &tmp_led);
+
+ // MxSS custom
+ // Cache hue/sat for rgb
+ fled_hs[0].hue = fled_hs[1].hue = hue;
+ fled_hs[0].sat = fled_hs[1].sat = sat;
+
+ rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b);
+ } else {
+ // all LEDs in same color
+ if (1 == 0) { // dummy
+ }
+#ifdef RGBLIGHT_EFFECT_BREATHING
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_BREATHING) {
+ // breathing mode, ignore the change of val, use in memory value instead
+ val = rgblight_config.val;
+ }
+#endif
+#ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_RAINBOW_MOOD) {
+ // rainbow mood, ignore the change of hue
+ hue = rgblight_config.hue;
+ }
+#endif
+#ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_RAINBOW_SWIRL) {
+ // rainbow swirl, ignore the change of hue
+ hue = rgblight_config.hue;
+ }
+#endif
+#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_STATIC_GRADIENT) {
+ // static gradient
+ uint8_t delta = rgblight_config.mode - rgblight_status.base_mode;
+ bool direction = (delta % 2) == 0;
+# ifdef __AVR__
+ // probably due to how pgm_read_word is defined for ARM, but the ARM compiler really hates this line
+ uint8_t range = pgm_read_word(&RGBLED_GRADIENT_RANGES[delta / 2]);
+# else
+ uint8_t range = RGBLED_GRADIENT_RANGES[delta / 2];
+# endif
+ for (uint8_t i = 0; i < effect_num_leds; i++) {
+ uint8_t _hue = ((uint16_t)i * (uint16_t)range) / effect_num_leds;
+ if (direction) {
+ _hue = hue + _hue;
+ } else {
+ _hue = hue - _hue;
+ }
+ dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range);
+ sethsv(_hue, sat, val, (LED_TYPE *)&led[i + effect_start_pos]);
+ }
+ rgblight_set();
+ }
+#endif
+ }
+#ifdef RGBLIGHT_SPLIT
+ if (rgblight_config.hue != hue || rgblight_config.sat != sat || rgblight_config.val != val) {
+ RGBLIGHT_SPLIT_SET_CHANGE_HSVS;
+ }
+#endif
+ rgblight_config.hue = hue;
+ rgblight_config.sat = sat;
+ rgblight_config.val = val;
+ if (write_to_eeprom) {
+ eeconfig_update_rgblight(rgblight_config.raw);
+ dprintf("rgblight set hsv [EEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
+ } else {
+ dprintf("rgblight set hsv [NOEEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
}
- rgblight_set();
- }
- }
- rgblight_config.hue = hue;
- rgblight_config.sat = sat;
- rgblight_config.val = val;
- if (write_to_eeprom) {
- eeconfig_update_rgblight(rgblight_config.raw);
- xprintf("rgblight set hsv [EEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
- } else {
- xprintf("rgblight set hsv [NOEEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
}
- }
}
-void rgblight_sethsv(uint16_t hue, uint8_t sat, uint8_t val) {
- rgblight_sethsv_eeprom_helper(hue, sat, val, true);
-}
+void rgblight_sethsv(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_sethsv_eeprom_helper(hue, sat, val, true); }
-void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) {
- rgblight_sethsv_eeprom_helper(hue, sat, val, false);
-}
+void rgblight_sethsv_noeeprom(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_sethsv_eeprom_helper(hue, sat, val, false); }
-uint16_t rgblight_get_hue(void) {
- return rgblight_config.hue;
+uint8_t rgblight_get_hue(void) { return rgblight_config.hue; }
+
+uint8_t rgblight_get_sat(void) { return rgblight_config.sat; }
+
+uint8_t rgblight_get_val(void) { return rgblight_config.val; }
+
+void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
+ if (!rgblight_config.enable) {
+ return;
+ }
+
+ for (uint8_t i = effect_start_pos; i < effect_end_pos; i++) {
+ led[i].r = r;
+ led[i].g = g;
+ led[i].b = b;
+#ifdef RGBW
+ led[i].w = 0;
+#endif
+ }
+ rgblight_set();
}
-uint8_t rgblight_get_sat(void) {
- return rgblight_config.sat;
+void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index) {
+ if (!rgblight_config.enable || index >= RGBLED_NUM) {
+ return;
+ }
+
+ led[index].r = r;
+ led[index].g = g;
+ led[index].b = b;
+#ifdef RGBW
+ led[index].w = 0;
+#endif
+ rgblight_set();
}
-uint8_t rgblight_get_val(void) {
- return rgblight_config.val;
+void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) {
+ if (!rgblight_config.enable) {
+ return;
+ }
+
+ LED_TYPE tmp_led;
+ sethsv(hue, sat, val, &tmp_led);
+ rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
}
-void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
- if (!rgblight_config.enable) { return; }
+#if defined(RGBLIGHT_EFFECT_BREATHING) || defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) || defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) || defined(RGBLIGHT_EFFECT_SNAKE) || defined(RGBLIGHT_EFFECT_KNIGHT)
- for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- led[i].r = r;
- led[i].g = g;
- led[i].b = b;
- }
- rgblight_set();
+static uint8_t get_interval_time(const uint8_t *default_interval_address, uint8_t velocikey_min, uint8_t velocikey_max) {
+ return
+# ifdef VELOCIKEY_ENABLE
+ velocikey_enabled() ? velocikey_match_speed(velocikey_min, velocikey_max) :
+# endif
+ pgm_read_byte(default_interval_address);
}
-void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index) {
- if (!rgblight_config.enable || index >= RGBLED_NUM) { return; }
+#endif
+
+void rgblight_setrgb_range(uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t end) {
+ if (!rgblight_config.enable || start < 0 || start >= end || end > RGBLED_NUM) {
+ return;
+ }
- led[index].r = r;
- led[index].g = g;
- led[index].b = b;
- rgblight_set();
+ for (uint8_t i = start; i < end; i++) {
+ led[i].r = r;
+ led[i].g = g;
+ led[i].b = b;
+#ifdef RGBW
+ led[i].w = 0;
+#endif
+ }
+ rgblight_set();
+ wait_ms(1);
}
-void rgblight_sethsv_at(uint16_t hue, uint8_t sat, uint8_t val, uint8_t index) {
- if (!rgblight_config.enable) { return; }
+void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) {
+ if (!rgblight_config.enable) {
+ return;
+ }
- LED_TYPE tmp_led;
- sethsv(hue, sat, val, &tmp_led);
- rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
+ LED_TYPE tmp_led;
+ sethsv(hue, sat, val, &tmp_led);
+ rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end);
}
+#ifndef RGBLIGHT_SPLIT
+void rgblight_setrgb_master(uint8_t r, uint8_t g, uint8_t b) { rgblight_setrgb_range(r, g, b, 0, (uint8_t)RGBLED_NUM / 2); }
+
+void rgblight_setrgb_slave(uint8_t r, uint8_t g, uint8_t b) { rgblight_setrgb_range(r, g, b, (uint8_t)RGBLED_NUM / 2, (uint8_t)RGBLED_NUM); }
+
+void rgblight_sethsv_master(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_sethsv_range(hue, sat, val, 0, (uint8_t)RGBLED_NUM / 2); }
+
+void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_sethsv_range(hue, sat, val, (uint8_t)RGBLED_NUM / 2, (uint8_t)RGBLED_NUM); }
+#endif // ifndef RGBLIGHT_SPLIT
+
+#ifndef RGBLIGHT_CUSTOM_DRIVER
void rgblight_set(void) {
- if (!rgblight_config.enable) {
+ LED_TYPE *start_led;
+ uint16_t num_leds = clipping_num_leds;
+
+ if (!rgblight_config.enable) {
+ for (uint8_t i = effect_start_pos; i < effect_end_pos; i++) {
+ if (i == RGBLIGHT_FLED1 && i == RGBLIGHT_FLED2)
+ continue;
+
+ led[i].r = 0;
+ led[i].g = 0;
+ led[i].b = 0;
+# ifdef RGBW
+ led[i].w = 0;
+# endif
+ }
+ }
+
+# ifdef RGBLIGHT_LED_MAP
+ LED_TYPE led0[RGBLED_NUM];
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- if (i == RGBLIGHT_FLED1 && i == RGBLIGHT_FLED2)
- continue;
-
- led[i].r = 0;
- led[i].g = 0;
- led[i].b = 0;
+ led0[i] = led[pgm_read_byte(&led_map[i])];
}
- }
-
- switch (fled_mode) {
+ start_led = led0 + clipping_start_pos;
+# else
+ start_led = led + clipping_start_pos;
+# endif
+
+#ifdef RGBW
+ for (uint8_t i = 0; i < num_leds; i++) {
+ convert_rgb_to_rgbw(&start_led[i]);
+ }
+#endif
+ // MxSS custom
+ switch (fled_mode) {
case FLED_OFF:
- setrgb(0, 0, 0, &led[RGBLIGHT_FLED1]);
- setrgb(0, 0, 0, &led[RGBLIGHT_FLED2]);
+ setrgb(0, 0, 0, &led[RGBLIGHT_FLED1]);
+ setrgb(0, 0, 0, &led[RGBLIGHT_FLED2]);
break;
-
+
case FLED_INDI:
- copyrgb(&fleds[0], &led[RGBLIGHT_FLED1]);
- copyrgb(&fleds[1], &led[RGBLIGHT_FLED2]);
+ copyrgb(&fleds[0], &led[RGBLIGHT_FLED1]);
+ copyrgb(&fleds[1], &led[RGBLIGHT_FLED2]);
break;
-
+
case FLED_RGB:
- if (fled_hs[0].hue == 0 && fled_hs[0].hue == 0 && (rgblight_config.mode >= 15 && rgblight_config.mode <= 23))
- setrgb(0, 0, 0, &led[RGBLIGHT_FLED1]);
- else
- sethsv(fled_hs[0].hue, fled_hs[0].sat, fled_val, &led[RGBLIGHT_FLED1]);
-
- if (fled_hs[1].hue == 0 && fled_hs[1].hue == 0 && (rgblight_config.mode >= 15 && rgblight_config.mode <= 23))
- setrgb(0, 0, 0, &led[RGBLIGHT_FLED2]);
- else
- sethsv(fled_hs[1].hue, fled_hs[1].sat, fled_val, &led[RGBLIGHT_FLED2]);
+ if (fled_hs[0].hue == 0 && fled_hs[0].hue == 0 &&
+ (rgblight_status.base_mode == RGBLIGHT_MODE_SNAKE ||
+ rgblight_status.base_mode == RGBLIGHT_MODE_KNIGHT))
+ setrgb(0, 0, 0, &led[RGBLIGHT_FLED1]);
+ else
+ sethsv(fled_hs[0].hue, fled_hs[0].sat, fled_val, &led[RGBLIGHT_FLED1]);
+
+ if (fled_hs[1].hue == 0 && fled_hs[1].hue == 0 &&
+ (rgblight_status.base_mode == RGBLIGHT_MODE_SNAKE ||
+ rgblight_status.base_mode == RGBLIGHT_MODE_KNIGHT))
+ setrgb(0, 0, 0, &led[RGBLIGHT_FLED2]);
+ else
+ sethsv(fled_hs[1].hue, fled_hs[1].sat, fled_val, &led[RGBLIGHT_FLED2]);
break;
-
+
default:
break;
}
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(start_led, num_leds);
+}
+#endif
+
+#ifdef RGBLIGHT_SPLIT
+/* for split keyboard master side */
+uint8_t rgblight_get_change_flags(void) { return rgblight_status.change_flags; }
+
+void rgblight_clear_change_flags(void) { rgblight_status.change_flags = 0; }
+
+void rgblight_get_syncinfo(rgblight_syncinfo_t *syncinfo) {
+ syncinfo->config = rgblight_config;
+ syncinfo->status = rgblight_status;
+}
+
+/* for split keyboard slave side */
+void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom) {
+ if (syncinfo->status.change_flags & RGBLIGHT_STATUS_CHANGE_MODE) {
+ if (syncinfo->config.enable) {
+ rgblight_config.enable = 1; // == rgblight_enable_noeeprom();
+ rgblight_mode_eeprom_helper(syncinfo->config.mode, write_to_eeprom);
+ } else {
+ rgblight_disable_noeeprom();
+ }
+ }
+ if (syncinfo->status.change_flags & RGBLIGHT_STATUS_CHANGE_HSVS) {
+ rgblight_sethsv_eeprom_helper(syncinfo->config.hue, syncinfo->config.sat, syncinfo->config.val, write_to_eeprom);
+ // rgblight_config.speed = config->speed; // NEED???
+ }
+# ifdef RGBLIGHT_USE_TIMER
+ if (syncinfo->status.change_flags & RGBLIGHT_STATUS_CHANGE_TIMER) {
+ if (syncinfo->status.timer_enabled) {
+ rgblight_timer_enable();
+ } else {
+ rgblight_timer_disable();
+ }
+ }
+# ifndef RGBLIGHT_SPLIT_NO_ANIMATION_SYNC
+ if (syncinfo->status.change_flags & RGBLIGHT_STATUS_ANIMATION_TICK) {
+ animation_status.restart = true;
+ }
+# endif /* RGBLIGHT_SPLIT_NO_ANIMATION_SYNC */
+# endif /* RGBLIGHT_USE_TIMER */
}
+#endif /* RGBLIGHT_SPLIT */
-#ifdef RGBLIGHT_ANIMATIONS
+#ifdef RGBLIGHT_USE_TIMER
-// Animation timer -- AVR Timer3
+typedef void (*effect_func_t)(animation_status_t *anim);
+
+// Animation timer -- use system timer (AVR Timer0)
void rgblight_timer_init(void) {
- // static uint8_t rgblight_timer_is_init = 0;
- // if (rgblight_timer_is_init) {
- // return;
- // }
- // rgblight_timer_is_init = 1;
- // /* Timer 3 setup */
- // TCCR3B = _BV(WGM32) // CTC mode OCR3A as TOP
- // | _BV(CS30); // Clock selelct: clk/1
- // /* Set TOP value */
- // uint8_t sreg = SREG;
- // cli();
- // OCR3AH = (RGBLED_TIMER_TOP >> 8) & 0xff;
- // OCR3AL = RGBLED_TIMER_TOP & 0xff;
- // SREG = sreg;
-
- rgblight_timer_enabled = true;
+ // OLD!!!! Animation timer -- AVR Timer3
+ // static uint8_t rgblight_timer_is_init = 0;
+ // if (rgblight_timer_is_init) {
+ // return;
+ // }
+ // rgblight_timer_is_init = 1;
+ // /* Timer 3 setup */
+ // TCCR3B = _BV(WGM32) // CTC mode OCR3A as TOP
+ // | _BV(CS30); // Clock selelct: clk/1
+ // /* Set TOP value */
+ // uint8_t sreg = SREG;
+ // cli();
+ // OCR3AH = (RGBLED_TIMER_TOP >> 8) & 0xff;
+ // OCR3AL = RGBLED_TIMER_TOP & 0xff;
+ // SREG = sreg;
+
+ rgblight_status.timer_enabled = false;
+ RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE;
}
void rgblight_timer_enable(void) {
- rgblight_timer_enabled = true;
- dprintf("TIMER3 enabled.\n");
+ if (!is_static_effect(rgblight_config.mode)) {
+ rgblight_status.timer_enabled = true;
+ }
+ animation_status.last_timer = timer_read();
+ RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE;
+ dprintf("rgblight timer enabled.\n");
}
void rgblight_timer_disable(void) {
- rgblight_timer_enabled = false;
- dprintf("TIMER3 disabled.\n");
+ // MxSS custom code
+ if (fled_mode != FLED_RGB) {
+ rgblight_status.timer_enabled = false;
+ RGBLIGHT_SPLIT_SET_CHANGE_TIMER_ENABLE;
+ dprintf("rgblight timer disable.\n");
+ }
}
void rgblight_timer_toggle(void) {
- rgblight_timer_enabled ^= rgblight_timer_enabled;
- dprintf("TIMER3 toggled.\n");
+ dprintf("rgblight timer toggle.\n");
+ if (rgblight_status.timer_enabled) {
+ rgblight_timer_disable();
+ } else {
+ rgblight_timer_enable();
+ }
}
void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b) {
- rgblight_enable();
- rgblight_mode(1);
- rgblight_setrgb(r, g, b);
+ rgblight_enable();
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_setrgb(r, g, b);
+}
+
+static void rgblight_effect_dummy(animation_status_t *anim) {
+ // do nothing
+ /********
+ dprintf("rgblight_task() what happened?\n");
+ dprintf("is_static_effect %d\n", is_static_effect(rgblight_config.mode));
+ dprintf("mode = %d, base_mode = %d, timer_enabled %d, ",
+ rgblight_config.mode, rgblight_status.base_mode,
+ rgblight_status.timer_enabled);
+ dprintf("last_timer = %d\n",anim->last_timer);
+ **/
}
void rgblight_task(void) {
- if (rgblight_timer_enabled) {
- // mode = 1, static light, do nothing here
- if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) {
- // mode = 2 to 5, breathing mode
- rgblight_effect_breathing(rgblight_config.mode - 2);
- } else if (rgblight_config.mode >= 6 && rgblight_config.mode <= 8) {
- // mode = 6 to 8, rainbow mood mod
- rgblight_effect_rainbow_mood(rgblight_config.mode - 6);
- } else if (rgblight_config.mode >= 9 && rgblight_config.mode <= 14) {
- // mode = 9 to 14, rainbow swirl mode
- rgblight_effect_rainbow_swirl(rgblight_config.mode - 9);
- } else if (rgblight_config.mode >= 15 && rgblight_config.mode <= 20) {
- // mode = 15 to 20, snake mode
- rgblight_effect_snake(rgblight_config.mode - 15);
- } else if (rgblight_config.mode >= 21 && rgblight_config.mode <= 23) {
- // mode = 21 to 23, knight mode
- rgblight_effect_knight(rgblight_config.mode - 21);
- } else if (rgblight_config.mode == 24) {
- // mode = 24, christmas mode
- rgblight_effect_christmas();
- } else if (rgblight_config.mode == 35) {
- // mode = 35, RGB test
- rgblight_effect_rgbtest();
+ if (rgblight_status.timer_enabled) {
+ effect_func_t effect_func = rgblight_effect_dummy;
+ uint16_t interval_time = 2000; // dummy interval
+ uint8_t delta = rgblight_config.mode - rgblight_status.base_mode;
+ animation_status.delta = delta;
+
+ // static light mode, do nothing here
+ if (1 == 0) { // dummy
+ }
+# ifdef RGBLIGHT_EFFECT_BREATHING
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_BREATHING) {
+ // breathing mode
+ interval_time = get_interval_time(&RGBLED_BREATHING_INTERVALS[delta], 1, 100);
+ effect_func = rgblight_effect_breathing;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_RAINBOW_MOOD) {
+ // rainbow mood mode
+ interval_time = get_interval_time(&RGBLED_RAINBOW_MOOD_INTERVALS[delta], 5, 100);
+ effect_func = rgblight_effect_rainbow_mood;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_RAINBOW_SWIRL) {
+ // rainbow swirl mode
+ interval_time = get_interval_time(&RGBLED_RAINBOW_SWIRL_INTERVALS[delta / 2], 1, 100);
+ effect_func = rgblight_effect_rainbow_swirl;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_SNAKE
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_SNAKE) {
+ // snake mode
+ interval_time = get_interval_time(&RGBLED_SNAKE_INTERVALS[delta / 2], 1, 200);
+ effect_func = rgblight_effect_snake;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_KNIGHT
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_KNIGHT) {
+ // knight mode
+ interval_time = get_interval_time(&RGBLED_KNIGHT_INTERVALS[delta], 5, 100);
+ effect_func = rgblight_effect_knight;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_CHRISTMAS
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_CHRISTMAS) {
+ // christmas mode
+ interval_time = RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL;
+ effect_func = (effect_func_t)rgblight_effect_christmas;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_RGB_TEST
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_RGB_TEST) {
+ // RGB test mode
+ interval_time = pgm_read_word(&RGBLED_RGBTEST_INTERVALS[0]);
+ effect_func = (effect_func_t)rgblight_effect_rgbtest;
+ }
+# endif
+# ifdef RGBLIGHT_EFFECT_ALTERNATING
+ else if (rgblight_status.base_mode == RGBLIGHT_MODE_ALTERNATING) {
+ interval_time = 500;
+ effect_func = (effect_func_t)rgblight_effect_alternating;
+ }
+# endif
+ if (animation_status.restart) {
+ animation_status.restart = false;
+ animation_status.last_timer = timer_read() - interval_time - 1;
+ animation_status.pos16 = 0; // restart signal to local each effect
+ }
+ if (timer_elapsed(animation_status.last_timer) >= interval_time) {
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ static uint16_t report_last_timer = 0;
+ static bool tick_flag = false;
+ uint16_t oldpos16;
+ if (tick_flag) {
+ tick_flag = false;
+ if (timer_elapsed(report_last_timer) >= 30000) {
+ report_last_timer = timer_read();
+ dprintf("rgblight animation tick report to slave\n");
+ RGBLIGHT_SPLIT_ANIMATION_TICK;
+ }
+ }
+ oldpos16 = animation_status.pos16;
+# endif
+ animation_status.last_timer += interval_time;
+ effect_func(&animation_status);
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ if (animation_status.pos16 == 0 && oldpos16 != 0) {
+ tick_flag = true;
+ }
+# endif
+ }
}
- }
}
-// Effects
-void rgblight_effect_breathing(uint8_t interval) {
- static uint8_t pos = 0;
- static uint16_t last_timer = 0;
- float val;
+#endif /* RGBLIGHT_USE_TIMER */
- if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_BREATHING_INTERVALS[interval])) {
- return;
- }
- last_timer = timer_read();
+// Effects
+#ifdef RGBLIGHT_EFFECT_BREATHING
+
+# ifndef RGBLIGHT_EFFECT_BREATHE_CENTER
+# ifndef RGBLIGHT_BREATHE_TABLE_SIZE
+# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256 or 128 or 64
+# endif
+# include <rgblight_breathe_table.h>
+# endif
+
+__attribute__((weak)) const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};
+
+void rgblight_effect_breathing(animation_status_t *anim) {
+ float val;
+
+ // http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
+# ifdef RGBLIGHT_EFFECT_BREATHE_TABLE
+ val = pgm_read_byte(&rgblight_effect_breathe_table[anim->pos / table_scale]);
+# else
+ val = (exp(sin((anim->pos / 255.0) * M_PI)) - RGBLIGHT_EFFECT_BREATHE_CENTER / M_E) * (RGBLIGHT_EFFECT_BREATHE_MAX / (M_E - 1 / M_E));
+# endif
+ rgblight_sethsv_noeeprom_old(rgblight_config.hue, rgblight_config.sat, val);
+ anim->pos = (anim->pos + 1);
+}
+#endif
+#ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
+__attribute__((weak)) const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {120, 60, 30};
- // http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
- val = (exp(sin((pos/255.0)*M_PI)) - RGBLIGHT_EFFECT_BREATHE_CENTER/M_E)*(RGBLIGHT_EFFECT_BREATHE_MAX/(M_E-1/M_E));
- rgblight_sethsv_noeeprom_old(rgblight_config.hue, rgblight_config.sat, val);
- pos = (pos + 1) % 256;
+void rgblight_effect_rainbow_mood(animation_status_t *anim) {
+ rgblight_sethsv_noeeprom_old(anim->current_hue, rgblight_config.sat, rgblight_config.val);
+ anim->current_hue++;
}
-void rgblight_effect_rainbow_mood(uint8_t interval) {
- static uint16_t current_hue = 0;
- static uint16_t last_timer = 0;
+#endif
- if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_RAINBOW_MOOD_INTERVALS[interval])) {
- return;
- }
- last_timer = timer_read();
- rgblight_sethsv_noeeprom_old(current_hue, rgblight_config.sat, rgblight_config.val);
- current_hue = (current_hue + 1) % 360;
-}
-void rgblight_effect_rainbow_swirl(uint8_t interval) {
- static uint16_t current_hue = 0;
- static uint16_t last_timer = 0;
- uint16_t hue;
- uint8_t i;
- if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_RAINBOW_SWIRL_INTERVALS[interval / 2])) {
- return;
- }
- last_timer = timer_read();
- for (i = 0; i < RGBLED_NUM; i++) {
- hue = (360 / RGBLED_NUM * i + current_hue) % 360;
- sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i]);
- }
- rgblight_set();
+#ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# ifndef RGBLIGHT_RAINBOW_SWIRL_RANGE
+# define RGBLIGHT_RAINBOW_SWIRL_RANGE 255
+# endif
+
+__attribute__((weak)) const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20};
+
+void rgblight_effect_rainbow_swirl(animation_status_t *anim) {
+ uint8_t hue;
+ uint8_t i;
+
+ for (i = 0; i < effect_num_leds; i++) {
+ hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / effect_num_leds * i + anim->current_hue);
+ sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + effect_start_pos]);
+ }
+ rgblight_set();
- if (interval % 2) {
- current_hue = (current_hue + 1) % 360;
- } else {
- if (current_hue - 1 < 0) {
- current_hue = 359;
+ if (anim->delta % 2) {
+ anim->current_hue++;
} else {
- current_hue = current_hue - 1;
+ anim->current_hue--;
}
- }
}
-void rgblight_effect_snake(uint8_t interval) {
- static uint8_t pos = 0;
- static uint16_t last_timer = 0;
- uint8_t i, j;
- int8_t k;
- int8_t increment = 1;
- if (interval % 2) {
- increment = -1;
- }
- if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_SNAKE_INTERVALS[interval / 2])) {
- return;
- }
- last_timer = timer_read();
-
- fled_hs[0].hue = fled_hs[1].hue = 0;
- fled_hs[0].sat = fled_hs[1].sat = 0;
-
- for (i = 0; i < RGBLED_NUM; i++) {
- led[i].r = 0;
- led[i].g = 0;
- led[i].b = 0;
-
- for (j = 0; j < RGBLIGHT_EFFECT_SNAKE_LENGTH; j++) {
- k = pos + j * increment;
- if (k < 0) {
- k = k + RGBLED_NUM;
- }
- if (i == k) {
- sethsv(rgblight_config.hue, rgblight_config.sat, (uint8_t)(rgblight_config.val*(RGBLIGHT_EFFECT_SNAKE_LENGTH-j)/RGBLIGHT_EFFECT_SNAKE_LENGTH), (LED_TYPE *)&led[i]);
- }
+#endif
+
+#ifdef RGBLIGHT_EFFECT_SNAKE
+__attribute__((weak)) const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};
+
+void rgblight_effect_snake(animation_status_t *anim) {
+ static uint8_t pos = 0;
+ uint8_t i, j;
+ int8_t k;
+ int8_t increment = 1;
+
+ if (anim->delta % 2) {
+ increment = -1;
}
- }
- rgblight_set();
- if (increment == 1) {
- if (pos - 1 < 0) {
- pos = RGBLED_NUM - 1;
+
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ if (anim->pos == 0) { // restart signal
+ if (increment == 1) {
+ pos = effect_num_leds - 1;
+ } else {
+ pos = 0;
+ }
+ anim->pos = 1;
+ }
+# endif
+
+ // MxSS custom
+ fled_hs[0].hue = fled_hs[1].hue = 0;
+ fled_hs[0].sat = fled_hs[1].sat = 0;
+
+ for (i = 0; i < effect_num_leds; i++) {
+ LED_TYPE *ledp = led + i + effect_start_pos;
+ ledp->r = 0;
+ ledp->g = 0;
+ ledp->b = 0;
+# ifdef RGBW
+ ledp->w = 0;
+# endif
+ for (j = 0; j < RGBLIGHT_EFFECT_SNAKE_LENGTH; j++) {
+ k = pos + j * increment;
+ if (k > RGBLED_NUM) {
+ k = k % RGBLED_NUM;
+ }
+ if (k < 0) {
+ k = k + effect_num_leds;
+ }
+ if (i == k) {
+ sethsv(rgblight_config.hue, rgblight_config.sat, (uint8_t)(rgblight_config.val * (RGBLIGHT_EFFECT_SNAKE_LENGTH - j) / RGBLIGHT_EFFECT_SNAKE_LENGTH), ledp);
+ }
+ }
+ }
+ rgblight_set();
+ if (increment == 1) {
+ if (pos - 1 < 0) {
+ pos = effect_num_leds - 1;
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ anim->pos = 0;
+# endif
+ } else {
+ pos -= 1;
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ anim->pos = 1;
+# endif
+ }
} else {
- pos -= 1;
+ pos = (pos + 1) % effect_num_leds;
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ anim->pos = pos;
+# endif
}
- } else {
- pos = (pos + 1) % RGBLED_NUM;
- }
}
-void rgblight_effect_knight(uint8_t interval) {
- static uint16_t last_timer = 0;
- if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_KNIGHT_INTERVALS[interval])) {
- return;
- }
- last_timer = timer_read();
-
- static int8_t low_bound = 0;
- static int8_t high_bound = RGBLIGHT_EFFECT_KNIGHT_LENGTH - 1;
- static int8_t increment = 1;
- uint8_t i, cur;
-
- // Set all the LEDs to 0
- for (i = 0; i < RGBLED_NUM; i++) {
- led[i].r = 0;
- led[i].g = 0;
- led[i].b = 0;
- }
- // Determine which LEDs should be lit up
- for (i = 0; i < RGBLIGHT_EFFECT_KNIGHT_LED_NUM; i++) {
- cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % RGBLED_NUM;
+#endif
- if (i >= low_bound && i <= high_bound) {
- sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]);
- } else {
- if (i == RGBLIGHT_FLED1 || i == RGBLIGHT_FLED2) {
- fled_hs[0].hue = fled_hs[1].hue = 0;
- fled_hs[0].sat = fled_hs[1].sat = 0;
- }
-
- led[cur].r = 0;
- led[cur].g = 0;
- led[cur].b = 0;
+#ifdef RGBLIGHT_EFFECT_KNIGHT
+__attribute__((weak)) const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
+
+void rgblight_effect_knight(animation_status_t *anim) {
+ static int8_t low_bound = 0;
+ static int8_t high_bound = RGBLIGHT_EFFECT_KNIGHT_LENGTH - 1;
+ static int8_t increment = 1;
+ uint8_t i, cur;
+
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ if (anim->pos == 0) { // restart signal
+ anim->pos = 1;
+ low_bound = 0;
+ high_bound = RGBLIGHT_EFFECT_KNIGHT_LENGTH - 1;
+ increment = 1;
+ }
+# endif
+ // Set all the LEDs to 0
+ for (i = effect_start_pos; i < effect_end_pos; i++) {
+ led[i].r = 0;
+ led[i].g = 0;
+ led[i].b = 0;
+# ifdef RGBW
+ led[i].w = 0;
+# endif
+ }
+ // Determine which LEDs should be lit up
+ for (i = 0; i < RGBLIGHT_EFFECT_KNIGHT_LED_NUM; i++) {
+ cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % effect_num_leds + effect_start_pos;
+
+ if (i >= low_bound && i <= high_bound) {
+ sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]);
+ } else {
+ // MxSS custom code
+ if (cur == RGBLIGHT_FLED1) {
+ fled_hs[0].hue = fled_hs[0].sat = 0;
+ } else if (cur == RGBLIGHT_FLED2) {
+ fled_hs[1].hue = fled_hs[1].sat = 0;
+ }
+
+ led[cur].r = 0;
+ led[cur].g = 0;
+ led[cur].b = 0;
+# ifdef RGBW
+ led[cur].w = 0;
+# endif
+ }
+ }
+ rgblight_set();
+
+ // Move from low_bound to high_bound changing the direction we increment each
+ // time a boundary is hit.
+ low_bound += increment;
+ high_bound += increment;
+
+ if (high_bound <= 0 || low_bound >= RGBLIGHT_EFFECT_KNIGHT_LED_NUM - 1) {
+ increment = -increment;
+# if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
+ if (increment == 1) {
+ anim->pos = 0;
+ }
+# endif
}
- }
- rgblight_set();
-
- // Move from low_bound to high_bound changing the direction we increment each
- // time a boundary is hit.
- low_bound += increment;
- high_bound += increment;
-
- if (high_bound <= 0 || low_bound >= RGBLIGHT_EFFECT_KNIGHT_LED_NUM - 1) {
- increment = -increment;
- }
}
+#endif
+#ifdef RGBLIGHT_EFFECT_CHRISTMAS
+void rgblight_effect_christmas(animation_status_t *anim) {
+ uint8_t hue;
+ uint8_t i;
-void rgblight_effect_christmas(void) {
- static uint16_t current_offset = 0;
- static uint16_t last_timer = 0;
- uint16_t hue;
- uint8_t i;
- if (timer_elapsed(last_timer) < RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL) {
- return;
- }
- last_timer = timer_read();
- current_offset = (current_offset + 1) % 2;
- for (i = 0; i < RGBLED_NUM; i++) {
- hue = 0 + ((i/RGBLIGHT_EFFECT_CHRISTMAS_STEP + current_offset) % 2) * 120;
- sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i]);
- }
- rgblight_set();
+ anim->current_offset = (anim->current_offset + 1) % 2;
+ for (i = 0; i < effect_num_leds; i++) {
+ hue = 0 + ((i / RGBLIGHT_EFFECT_CHRISTMAS_STEP + anim->current_offset) % 2) * 85;
+ sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + effect_start_pos]);
+ }
+ rgblight_set();
}
+#endif
-void rgblight_effect_rgbtest(void) {
- static uint8_t pos = 0;
- static uint16_t last_timer = 0;
- static uint8_t maxval = 0;
- uint8_t g; uint8_t r; uint8_t b;
+#ifdef RGBLIGHT_EFFECT_RGB_TEST
+__attribute__((weak)) const uint16_t RGBLED_RGBTEST_INTERVALS[] PROGMEM = {1024};
- if (timer_elapsed(last_timer) < pgm_read_word(&RGBLED_RGBTEST_INTERVALS[0])) {
- return;
- }
+void rgblight_effect_rgbtest(animation_status_t *anim) {
+ static uint8_t maxval = 0;
+ uint8_t g;
+ uint8_t r;
+ uint8_t b;
- if( maxval == 0 ) {
- LED_TYPE tmp_led;
- sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
- maxval = tmp_led.r;
- }
- last_timer = timer_read();
- g = r = b = 0;
- switch( pos ) {
- case 0: r = maxval; break;
- case 1: g = maxval; break;
- case 2: b = maxval; break;
- }
- rgblight_setrgb(r, g, b);
- pos = (pos + 1) % 3;
+ if (maxval == 0) {
+ LED_TYPE tmp_led;
+ sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led);
+ maxval = tmp_led.r;
+ }
+ g = r = b = 0;
+ switch (anim->pos) {
+ // MxSS custom code
+ case 0:
+ r = maxval;
+ fled_hs[0].hue = 0;
+ fled_hs[0].sat = 255;
+ fled_hs[1].hue = 0;
+ fled_hs[1].sat = 255;
+ break;
+ case 1:
+ g = maxval;
+ fled_hs[0].hue = 85;
+ fled_hs[0].sat = 255;
+ fled_hs[1].hue = 85;
+ fled_hs[1].sat = 255;
+ break;
+ case 2:
+ b = maxval;
+ fled_hs[0].hue = 170;
+ fled_hs[0].sat = 255;
+ fled_hs[1].hue = 170;
+ fled_hs[1].sat = 255;
+ break;
+ }
+ rgblight_setrgb(r, g, b);
+ anim->pos = (anim->pos + 1) % 3;
}
+#endif
-#endif /* RGBLIGHT_ANIMATIONS */
+#ifdef RGBLIGHT_EFFECT_ALTERNATING
+void rgblight_effect_alternating(animation_status_t *anim) {
+ for (int i = 0; i < effect_num_leds; i++) {
+ LED_TYPE *ledp = led + i + effect_start_pos;
+ if (i < effect_num_leds / 2 && anim->pos) {
+ sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
+ } else if (i >= effect_num_leds / 2 && !anim->pos) {
+ sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp);
+ } else {
+ sethsv(rgblight_config.hue, rgblight_config.sat, 0, ledp);
+ }
+ }
+ rgblight_set();
+ anim->pos = (anim->pos + 1) % 2;
+}
+#endif
diff --git a/keyboards/mxss/rgblight.h b/keyboards/mxss/rgblight.h
index 0013a34386..e3aa098e4d 100644
--- a/keyboards/mxss/rgblight.h
+++ b/keyboards/mxss/rgblight.h
@@ -16,137 +16,245 @@
#ifndef RGBLIGHT_H
#define RGBLIGHT_H
-#ifdef RGBLIGHT_ANIMATIONS
- #define RGBLIGHT_MODES 35
-#else
- #define RGBLIGHT_MODES 1
-#endif
-
-#ifndef RGBLIGHT_EFFECT_BREATHE_CENTER
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1-2.7
-#endif
-
-#ifndef RGBLIGHT_EFFECT_BREATHE_MAX
-#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0-255
-#endif
-
-#ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4
-#endif
-
-#ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
-#endif
-
-#ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET
-#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0
-#endif
-
-#ifndef RGBLIGHT_EFFECT_KNIGHT_LED_NUM
-#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM
-#endif
-
-#ifndef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL
-#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000
-#endif
-
-#ifndef RGBLIGHT_EFFECT_CHRISTMAS_STEP
-#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2
-#endif
-
-#ifndef RGBLIGHT_HUE_STEP
-#define RGBLIGHT_HUE_STEP 10
-#endif
-#ifndef RGBLIGHT_SAT_STEP
-#define RGBLIGHT_SAT_STEP 17
-#endif
-#ifndef RGBLIGHT_VAL_STEP
-#define RGBLIGHT_VAL_STEP 17
-#endif
-
-#define RGBLED_TIMER_TOP F_CPU/(256*64)
+#include "rgblight_reconfig.h"
+
+/***** rgblight_mode(mode)/rgblight_mode_noeeprom(mode) ****
+
+ old mode number (before 0.6.117) to new mode name table
+
+|-----------------|-----------------------------------|
+| old mode number | new mode name |
+|-----------------|-----------------------------------|
+| 1 | RGBLIGHT_MODE_STATIC_LIGHT |
+| 2 | RGBLIGHT_MODE_BREATHING |
+| 3 | RGBLIGHT_MODE_BREATHING + 1 |
+| 4 | RGBLIGHT_MODE_BREATHING + 2 |
+| 5 | RGBLIGHT_MODE_BREATHING + 3 |
+| 6 | RGBLIGHT_MODE_RAINBOW_MOOD |
+| 7 | RGBLIGHT_MODE_RAINBOW_MOOD + 1 |
+| 8 | RGBLIGHT_MODE_RAINBOW_MOOD + 2 |
+| 9 | RGBLIGHT_MODE_RAINBOW_SWIRL |
+| 10 | RGBLIGHT_MODE_RAINBOW_SWIRL + 1 |
+| 11 | RGBLIGHT_MODE_RAINBOW_SWIRL + 2 |
+| 12 | RGBLIGHT_MODE_RAINBOW_SWIRL + 3 |
+| 13 | RGBLIGHT_MODE_RAINBOW_SWIRL + 4 |
+| 14 | RGBLIGHT_MODE_RAINBOW_SWIRL + 5 |
+| 15 | RGBLIGHT_MODE_SNAKE |
+| 16 | RGBLIGHT_MODE_SNAKE + 1 |
+| 17 | RGBLIGHT_MODE_SNAKE + 2 |
+| 18 | RGBLIGHT_MODE_SNAKE + 3 |
+| 19 | RGBLIGHT_MODE_SNAKE + 4 |
+| 20 | RGBLIGHT_MODE_SNAKE + 5 |
+| 21 | RGBLIGHT_MODE_KNIGHT |
+| 22 | RGBLIGHT_MODE_KNIGHT + 1 |
+| 23 | RGBLIGHT_MODE_KNIGHT + 2 |
+| 24 | RGBLIGHT_MODE_CHRISTMAS |
+| 25 | RGBLIGHT_MODE_STATIC_GRADIENT |
+| 26 | RGBLIGHT_MODE_STATIC_GRADIENT + 1 |
+| 27 | RGBLIGHT_MODE_STATIC_GRADIENT + 2 |
+| 28 | RGBLIGHT_MODE_STATIC_GRADIENT + 3 |
+| 29 | RGBLIGHT_MODE_STATIC_GRADIENT + 4 |
+| 30 | RGBLIGHT_MODE_STATIC_GRADIENT + 5 |
+| 31 | RGBLIGHT_MODE_STATIC_GRADIENT + 6 |
+| 32 | RGBLIGHT_MODE_STATIC_GRADIENT + 7 |
+| 33 | RGBLIGHT_MODE_STATIC_GRADIENT + 8 |
+| 34 | RGBLIGHT_MODE_STATIC_GRADIENT + 9 |
+| 35 | RGBLIGHT_MODE_RGB_TEST |
+| 36 | RGBLIGHT_MODE_ALTERNATING |
+|-----------------|-----------------------------------|
+ *****/
+
+#define _RGBM_SINGLE_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_SINGLE_DYNAMIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_MULTI_STATIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_MULTI_DYNAMIC(sym) RGBLIGHT_MODE_##sym,
+#define _RGBM_TMP_STATIC(sym, msym) RGBLIGHT_MODE_##sym,
+#define _RGBM_TMP_DYNAMIC(sym, msym) RGBLIGHT_MODE_##sym,
+enum RGBLIGHT_EFFECT_MODE {
+ RGBLIGHT_MODE_zero = 0,
+#include "rgblight_modes.h"
+ RGBLIGHT_MODE_last
+};
+
+#ifndef RGBLIGHT_H_DUMMY_DEFINE
+
+# define RGBLIGHT_MODES (RGBLIGHT_MODE_last - 1)
+
+// sample: #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85
+
+# ifndef RGBLIGHT_EFFECT_BREATHE_MAX
+# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0-255
+# endif
+
+# ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH
+# define RGBLIGHT_EFFECT_SNAKE_LENGTH 4
+# endif
+
+# ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH
+# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
+# endif
+
+# ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET
+# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0
+# endif
+
+# ifndef RGBLIGHT_EFFECT_KNIGHT_LED_NUM
+# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM (effect_num_leds)
+# endif
+
+# ifndef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL
+# define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000
+# endif
+
+# ifndef RGBLIGHT_EFFECT_CHRISTMAS_STEP
+# define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2
+# endif
+
+# ifndef RGBLIGHT_HUE_STEP
+# define RGBLIGHT_HUE_STEP 8
+# endif
+# ifndef RGBLIGHT_SAT_STEP
+# define RGBLIGHT_SAT_STEP 17
+# endif
+# ifndef RGBLIGHT_VAL_STEP
+# define RGBLIGHT_VAL_STEP 17
+# endif
+# ifndef RGBLIGHT_LIMIT_VAL
+# define RGBLIGHT_LIMIT_VAL 255
+# endif
+
+# define RGBLED_TIMER_TOP F_CPU / (256 * 64)
// #define RGBLED_TIMER_TOP 0xFF10
-#include <stdint.h>
-#include <stdbool.h>
-#include "eeconfig.h"
-#ifndef RGBLIGHT_CUSTOM_DRIVER
-#include "ws2812.h"
-#endif
-#include "color.h"
-#include "rgblight_list.h"
+# include <stdint.h>
+# include <stdbool.h>
+# include "eeconfig.h"
+# ifndef RGBLIGHT_CUSTOM_DRIVER
+# include "ws2812.h"
+# endif
+# include "color.h"
+# include "rgblight_list.h"
+
+# if defined(__AVR__)
+# include <avr/pgmspace.h>
+# endif
extern LED_TYPE led[RGBLED_NUM];
-extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM;
-extern const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM;
-extern const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[3] PROGMEM;
-extern const uint8_t RGBLED_SNAKE_INTERVALS[3] PROGMEM;
-extern const uint8_t RGBLED_KNIGHT_INTERVALS[3] PROGMEM;
+extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM;
+extern const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM;
+extern const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[3] PROGMEM;
+extern const uint8_t RGBLED_SNAKE_INTERVALS[3] PROGMEM;
+extern const uint8_t RGBLED_KNIGHT_INTERVALS[3] PROGMEM;
extern const uint16_t RGBLED_RGBTEST_INTERVALS[1] PROGMEM;
+extern bool is_rgblight_initialized;
+// Should stay in sycn with rgb matrix config as we reuse eeprom storage for both (for now)
typedef union {
- uint32_t raw;
- struct {
- bool enable :1;
- uint8_t mode :6;
- uint16_t hue :9;
- uint8_t sat :8;
- uint8_t val :8;
- uint8_t speed :8;//EECONFIG needs to be increased to support this
- };
+ uint32_t raw;
+ struct {
+ bool enable : 1;
+ uint8_t mode : 7;
+ uint8_t hue : 8;
+ uint8_t sat : 8;
+ uint8_t val : 8;
+ uint8_t speed : 8; // EECONFIG needs to be increased to support this
+ };
} rgblight_config_t;
-void rgblight_init(void);
+typedef struct _rgblight_status_t {
+ uint8_t base_mode;
+ bool timer_enabled;
+# ifdef RGBLIGHT_SPLIT
+ uint8_t change_flags;
+# endif
+} rgblight_status_t;
+
+/* === Utility Functions ===*/
+void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1);
+void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); // without RGBLIGHT_LIMIT_VAL check
+void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1);
+
+/* === Low level Functions === */
+void rgblight_set(void);
+void rgblight_set_clipping_range(uint8_t start_pos, uint8_t num_leds);
+
+/* === Effects and Animations Functions === */
+/* effect range setting */
+void rgblight_set_effect_range(uint8_t start_pos, uint8_t num_leds);
+
+/* direct operation */
+void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index);
+void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index);
+void rgblight_setrgb_range(uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t end);
+void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end);
+void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b);
+
+# ifndef RGBLIGHT_SPLIT
+void rgblight_setrgb_master(uint8_t r, uint8_t g, uint8_t b);
+void rgblight_setrgb_slave(uint8_t r, uint8_t g, uint8_t b);
+void rgblight_sethsv_master(uint8_t hue, uint8_t sat, uint8_t val);
+void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val);
+# endif
+
+/* effect mode change */
+void rgblight_mode(uint8_t mode);
+void rgblight_mode_noeeprom(uint8_t mode);
void rgblight_increase(void);
void rgblight_decrease(void);
+void rgblight_step(void);
+void rgblight_step_noeeprom(void);
+void rgblight_step_reverse(void);
+void rgblight_step_reverse_noeeprom(void);
+
+/* effects mode disable/enable */
void rgblight_toggle(void);
+void rgblight_toggle_noeeprom(void);
void rgblight_enable(void);
+void rgblight_enable_noeeprom(void);
void rgblight_disable(void);
-void rgblight_step(void);
-void rgblight_step_reverse(void);
-uint8_t rgblight_get_mode(void);
-void rgblight_mode(uint8_t mode);
-void rgblight_set(void);
-void rgblight_update_dword(uint32_t dword);
+void rgblight_disable_noeeprom(void);
+
+/* hue, sat, val change */
void rgblight_increase_hue(void);
+void rgblight_increase_hue_noeeprom(void);
void rgblight_decrease_hue(void);
+void rgblight_decrease_hue_noeeprom(void);
void rgblight_increase_sat(void);
+void rgblight_increase_sat_noeeprom(void);
void rgblight_decrease_sat(void);
+void rgblight_decrease_sat_noeeprom(void);
void rgblight_increase_val(void);
+void rgblight_increase_val_noeeprom(void);
void rgblight_decrease_val(void);
+void rgblight_decrease_val_noeeprom(void);
void rgblight_increase_speed(void);
void rgblight_decrease_speed(void);
-void rgblight_sethsv(uint16_t hue, uint8_t sat, uint8_t val);
-uint16_t rgblight_get_hue(void);
+void rgblight_sethsv(uint8_t hue, uint8_t sat, uint8_t val);
+void rgblight_sethsv_noeeprom(uint8_t hue, uint8_t sat, uint8_t val);
+
+/* query */
+uint8_t rgblight_get_mode(void);
+uint8_t rgblight_get_hue(void);
uint8_t rgblight_get_sat(void);
uint8_t rgblight_get_val(void);
-void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b);
-void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index);
-void rgblight_sethsv_at(uint16_t hue, uint8_t sat, uint8_t val, uint8_t index);
+/* === qmk_firmware (core)internal Functions === */
+void rgblight_init(void);
+uint32_t rgblight_read_dword(void);
+void rgblight_update_dword(uint32_t dword);
uint32_t eeconfig_read_rgblight(void);
-void eeconfig_update_rgblight(uint32_t val);
-void eeconfig_update_rgblight_default(void);
-void eeconfig_debug_rgblight(void);
+void eeconfig_update_rgblight(uint32_t val);
+void eeconfig_update_rgblight_default(void);
+void eeconfig_debug_rgblight(void);
void rgb_matrix_increase(void);
void rgb_matrix_decrease(void);
-void sethsv(uint16_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1);
-void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1);
-
-void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val);
-void rgblight_mode_noeeprom(uint8_t mode);
-void rgblight_toggle_noeeprom(void);
-void rgblight_enable_noeeprom(void);
-void rgblight_disable_noeeprom(void);
-
-void rgblight_sethsv_eeprom_helper(uint16_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom);
+void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom);
void rgblight_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom);
-
-#define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF)
+# define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF)
void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b);
void rgblight_task(void);
@@ -155,12 +263,52 @@ void rgblight_timer_init(void);
void rgblight_timer_enable(void);
void rgblight_timer_disable(void);
void rgblight_timer_toggle(void);
-void rgblight_effect_breathing(uint8_t interval);
-void rgblight_effect_rainbow_mood(uint8_t interval);
-void rgblight_effect_rainbow_swirl(uint8_t interval);
-void rgblight_effect_snake(uint8_t interval);
-void rgblight_effect_knight(uint8_t interval);
-void rgblight_effect_christmas(void);
-void rgblight_effect_rgbtest(void);
-
-#endif
+
+# ifdef RGBLIGHT_SPLIT
+# define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0)
+# define RGBLIGHT_STATUS_CHANGE_HSVS (1 << 1)
+# define RGBLIGHT_STATUS_CHANGE_TIMER (1 << 2)
+# define RGBLIGHT_STATUS_ANIMATION_TICK (1 << 3)
+
+typedef struct _rgblight_syncinfo_t {
+ rgblight_config_t config;
+ rgblight_status_t status;
+} rgblight_syncinfo_t;
+
+/* for split keyboard master side */
+uint8_t rgblight_get_change_flags(void);
+void rgblight_clear_change_flags(void);
+void rgblight_get_syncinfo(rgblight_syncinfo_t *syncinfo);
+/* for split keyboard slave side */
+void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom);
+# endif
+
+# ifdef RGBLIGHT_USE_TIMER
+
+typedef struct _animation_status_t {
+ uint16_t last_timer;
+ uint8_t delta; /* mode - base_mode */
+ bool restart;
+ union {
+ uint16_t pos16;
+ uint8_t pos;
+ int8_t current_hue;
+ uint16_t current_offset;
+ };
+} animation_status_t;
+
+extern animation_status_t animation_status;
+
+void rgblight_effect_breathing(animation_status_t *anim);
+void rgblight_effect_rainbow_mood(animation_status_t *anim);
+void rgblight_effect_rainbow_swirl(animation_status_t *anim);
+void rgblight_effect_snake(animation_status_t *anim);
+void rgblight_effect_knight(animation_status_t *anim);
+void rgblight_effect_christmas(animation_status_t *anim);
+void rgblight_effect_rgbtest(animation_status_t *anim);
+void rgblight_effect_alternating(animation_status_t *anim);
+
+# endif
+
+#endif // #ifndef RGBLIGHT_H_DUMMY_DEFINE
+#endif // RGBLIGHT_H
diff --git a/keyboards/mxss/rules.mk b/keyboards/mxss/rules.mk
index f9210319e3..ccdca3fbec 100644
--- a/keyboards/mxss/rules.mk
+++ b/keyboards/mxss/rules.mk
@@ -14,26 +14,28 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+SRC += mxss_frontled.c
+
# Remove the common RGB light code and use my iteration instead
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
SRC += rgblight.c
+SRC += color.c
SRC += ws2812.c
CIE1931_CURVE = yes
-LED_BREATHING_TABLE = yes
diff --git a/keyboards/mxss/templates/keymap.c b/keyboards/mxss/templates/keymap.c
index 13dbb7206c..a18cff77f0 100644
--- a/keyboards/mxss/templates/keymap.c
+++ b/keyboards/mxss/templates/keymap.c
@@ -14,23 +14,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-#include "mxss_frontled.h"
-// Predefined colors for layers
+hs_set caps_color = { .hue = 0, .sat = 255 };
+
+// Colors for layers
// Format: {hue, saturation}
// {0, 0} to turn off the LED
// Add additional rows to handle more layers
-hs_set layer_colors[] = {
- [0] = {0, 0}, // Color for Layer 0
- [1] = {86, 255}, // Color for Layer 1
- [2] = {36, 255}, // Color for Layer 2
- [3] = {185, 255}, // Color for Layer 3
+hs_set layer_colors[4] = {
+ [0] = {.hue = 0, .sat = 0}, // Color for Layer 0
+ [1] = {.hue = 86, .sat = 255}, // Color for Layer 1
+ [2] = {.hue = 36, .sat = 255}, // Color for Layer 2
+ [3] = {.hue = 185, .sat = 255}, // Color for Layer 3
};
-const size_t lc_size = sizeof(layer_colors) / sizeof(uint16_t);
+size_t lc_size = sizeof(layer_colors) / sizeof(uint16_t);
// Use NEW_SAFE_RANGE to define new custom keycodes in order to not overwrite the ones used for front LED control
enum custom_keycodes {
- MY_KEYCODE = NEW_SAFE_RANGE,
+ MY_KEYCODE = NEW_SAFE_RANGE,
};
diff --git a/keyboards/nafuda/config.h b/keyboards/nafuda/config.h
index 3db4401d49..be3348668d 100644
--- a/keyboards/nafuda/config.h
+++ b/keyboards/nafuda/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { F4, F5, F6 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/naked48/rev1/config.h b/keyboards/naked48/rev1/config.h
index d770fefb49..21f7aa55ec 100644
--- a/keyboards/naked48/rev1/config.h
+++ b/keyboards/naked48/rev1/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS_RIGHT { D4, C6, D7, E6 }
#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, B6, B4, B5, B2, B2 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/naked48/rules.mk b/keyboards/naked48/rules.mk
index 75e073df6d..e4a63a7b22 100644
--- a/keyboards/naked48/rules.mk
+++ b/keyboards/naked48/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/naked60/rev1/config.h b/keyboards/naked60/rev1/config.h
index ac0c0ab2fc..b082e1227f 100644
--- a/keyboards/naked60/rev1/config.h
+++ b/keyboards/naked60/rev1/config.h
@@ -41,6 +41,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_ROW_PINS_RIGHT { D1, D0, D4, C6, B6 }
//#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, D7, E6, B4, B5, D3 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/naked60/rules.mk b/keyboards/naked60/rules.mk
index f5bce8d50c..fa1b630d42 100644
--- a/keyboards/naked60/rules.mk
+++ b/keyboards/naked60/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/naked64/rev1/config.h b/keyboards/naked64/rev1/config.h
index 2e48edbc03..d9aff6be13 100644
--- a/keyboards/naked64/rev1/config.h
+++ b/keyboards/naked64/rev1/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS_RIGHT { D4, C6, D7, E6, B4, B5, B2, B2 }
#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, B6 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/naked64/rules.mk b/keyboards/naked64/rules.mk
index 864baccc8f..0d18a5650b 100644
--- a/keyboards/naked64/rules.mk
+++ b/keyboards/naked64/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/namecard2x4/rules.mk b/keyboards/namecard2x4/rules.mk
index 4c4f8c9ee0..1b9e03d971 100644
--- a/keyboards/namecard2x4/rules.mk
+++ b/keyboards/namecard2x4/rules.mk
@@ -14,22 +14,22 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
#UNICODEMAP_ENABLE = yes # for emoji user
#RGBLIGHT_ENABLE = yes # uncomment if you want addressable led strips
diff --git a/keyboards/ncc1701kb/info.json b/keyboards/ncc1701kb/info.json
index bc0f04db16..d5a80ba0d1 100644
--- a/keyboards/ncc1701kb/info.json
+++ b/keyboards/ncc1701kb/info.json
@@ -6,7 +6,17 @@
"height": 3,
"layouts": {
"LAYOUT": {
- "layout": [{"x":0, "y":0}, {"label":"Encoder", "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}]
+ "layout": [
+ {"x":0, "y":0},
+ {"label":"Encoder", "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/ncc1701kb/keymaps/brushsize/keymap.c b/keyboards/ncc1701kb/keymaps/brushsize/keymap.c
new file mode 100644
index 0000000000..4150e70997
--- /dev/null
+++ b/keyboards/ncc1701kb/keymaps/brushsize/keymap.c
@@ -0,0 +1,51 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* LAYER 0
+ * ,-----------------------.
+ * | << | MUTE | >> | ENCODER - PRESS (MUTE) / KNOB (Brush size)
+ * |-------+-------+-------|
+ * | STOP | PLAY | MEDIA |
+ * |-------+-------+-------|
+ * | CALC | MAIL | PC/FN |
+ * `-----------------------'
+ */
+[0] = LAYOUT(
+ KC_MPRV, KC_MUTE, KC_MNXT,
+ KC_MSTP, KC_MPLY, KC_MSEL,
+ KC_CALC, KC_MAIL, LT(1, KC_MYCM)
+),
+
+/* LAYER 1
+ * ,-----------------------.
+ * |BL TOG | | BREATH|
+ * |-------+-------+-------|
+ * | BL + | BL - |BL CYCL|
+ * |-------+-------+-------|
+ * | BL ON | BL OFF| |
+ * `-----------------------'
+ */
+[1] = LAYOUT(
+ BL_TOGG, KC_TRNS, BL_BRTG,
+ BL_INC, BL_DEC, BL_STEP,
+ BL_ON, BL_OFF, KC_TRNS
+)
+
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_RBRC);
+ } else {
+ tap_code(KC_LBRC);
+ }
+ } else if (index == 1) { /* Second encoder */
+ if (clockwise) {
+ tap_code(KC_RBRC);
+ } else {
+ tap_code(KC_LBRC);
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/nek_type_a/rules.mk b/keyboards/nek_type_a/rules.mk
index db5b1642c8..8ee1054bfc 100644
--- a/keyboards/nek_type_a/rules.mk
+++ b/keyboards/nek_type_a/rules.mk
@@ -14,10 +14,10 @@ F_CPU = 8000000
# ATmega328P USBasp
BOOTLOADER = caterina
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes
DEBUG_ENABLE = yes
BLUETOOTH = AdafruitBLE
diff --git a/keyboards/newgame40/rules.mk b/keyboards/newgame40/rules.mk
index ab07dd2b6a..148981354e 100644
--- a/keyboards/newgame40/rules.mk
+++ b/keyboards/newgame40/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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 # 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
diff --git a/keyboards/nightmare/rules.mk b/keyboards/nightmare/rules.mk
index 66a778b6c2..5fa842c8bb 100644
--- a/keyboards/nightmare/rules.mk
+++ b/keyboards/nightmare/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/nk65/config.h b/keyboards/nk65/config.h
index 767959b626..826e54180c 100755
--- a/keyboards/nk65/config.h
+++ b/keyboards/nk65/config.h
@@ -140,4 +140,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
-#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 32
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/nomu30/rules.mk b/keyboards/nomu30/rules.mk
index e05730c69e..4b7193da49 100644
--- a/keyboards/nomu30/rules.mk
+++ b/keyboards/nomu30/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/novelpad/rules.mk b/keyboards/novelpad/rules.mk
index 54e4cea03b..ea58b3da06 100755
--- a/keyboards/novelpad/rules.mk
+++ b/keyboards/novelpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/noxary/220/rules.mk b/keyboards/noxary/220/rules.mk
index 785fb488d4..f099fefb5d 100644
--- a/keyboards/noxary/220/rules.mk
+++ b/keyboards/noxary/220/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_6x4
diff --git a/keyboards/noxary/260/rules.mk b/keyboards/noxary/260/rules.mk
index 4d9977cd3b..f17a6c17df 100644
--- a/keyboards/noxary/260/rules.mk
+++ b/keyboards/noxary/260/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
EXTRAFLAGS += -flto
LAYOUTS = 60_ansi 60_iso 60_hhkb 60_tsangan_hhkb
diff --git a/keyboards/noxary/268/rules.mk b/keyboards/noxary/268/rules.mk
index 59e6b524cf..b57e64fcec 100644
--- a/keyboards/noxary/268/rules.mk
+++ b/keyboards/noxary/268/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/noxary/268_2/268_2.c b/keyboards/noxary/268_2/268_2.c
index 9e2d822364..5af56a386d 100644
--- a/keyboards/noxary/268_2/268_2.c
+++ b/keyboards/noxary/268_2/268_2.c
@@ -21,7 +21,6 @@ void led_set_kb(uint8_t usb_led) {
writePinHigh(B0);
} else {
setPinInput(B0);
- writePinLow(B0);
}
led_set_user(usb_led);
diff --git a/keyboards/noxary/268_2/rules.mk b/keyboards/noxary/268_2/rules.mk
index 2f9d087656..230ecc4538 100644
--- a/keyboards/noxary/268_2/rules.mk
+++ b/keyboards/noxary/268_2/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/noxary/280/280.c b/keyboards/noxary/280/280.c
index 441f0ad84a..1743ebc0d5 100644
--- a/keyboards/noxary/280/280.c
+++ b/keyboards/noxary/280/280.c
@@ -28,43 +28,10 @@ void matrix_init_kb(void) {
matrix_init_user();
}
-/*
-void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
-
- matrix_scan_user();
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- // put your per-action keyboard code here
- // runs for every action, just before processing by the firmware
-
- return process_record_user(keycode, record);
-}
-
-void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
-
- led_set_user(usb_led);
-}
-
-*/
-
-
-void led_set_kb(uint8_t usb_led) {
-
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinLow(D5);
- } else {
- writePinHigh(D5);
- }
-
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- writePinLow(D0);
- } else {
- writePinHigh(D0);
+bool led_update_kb(led_t led_state) {
+ if(led_update_user(led_state)) {
+ writePin(D5, led_state.caps_lock);
+ writePin(D0, led_state.scroll_lock);
}
-
- led_set_user(usb_led);
+ return true;
} \ No newline at end of file
diff --git a/keyboards/noxary/280/keymaps/via/keymap.c b/keyboards/noxary/280/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d7fe691702
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/via/keymap.c
@@ -0,0 +1,118 @@
+/* Copyright 2019 Rozakin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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.
+#define _BL 0
+#define _FL1 1
+#define _FL2 2
+#define _FL3 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* _BL: Base Layer(Default) - For ISO enter use ANSI enter
+ * ,------------------------------------------------------------. ,--------------.
+ * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11| f12| |Prnt|ScLk|Paus|
+ * |------------------------------------------------------------| |--------------|
+ * | ~ | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BSpc| | Ins|Home|PgUp|
+ * |------------------------------------------------------------| |--------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | Del| End|PgDn|
+ * |------------------------------------------------------------| `--------------'
+ * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| Ent|
+ * |------------------------------------------------------------| ,----.
+ * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift|Mo(1)| | Up |
+ * |------------------------------------------------------------| ,--------------.
+ * |Ctrl|Win |Alt | Space |Alt |Win |Mo(1) |Ctrl | |Left| Dn |Rght|
+ * `------------------------------------------------------------' `--------------'
+ */
+ [_BL] = 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_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_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(_FL1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT),
+ /* _FL1: Function Layer 1 - For ISO enter use ANSI enter
+ * ,------------------------------------------------------------. ,--------------.
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | |RST| | | | | | | | | | | | | |
+ * |------------------------------------------------------------| `--------------'
+ * | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| ,----.
+ * | | | | | | | | | |Bl-|Bl+| | Mute| | |Vol+|
+ * |------------------------------------------------------------| ,--------------.
+ * | | | | BL_Toggle | | | | | | |Vol-| |
+ * `------------------------------------------------------------' `--------------'
+ */
+ [_FL1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, _______, KC_VOLU,
+ _______, _______, _______, BL_TOGG, _______, _______, _______, _______, _______, KC_VOLD, _______),
+ /* _FL2: Function Layer 2 - For ISO enter use ANSI enter
+ * ,------------------------------------------------------------. ,--------------.
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| `--------------'
+ * | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| ,----.
+ * | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| ,--------------.
+ * | | | | | | | | | | | | |
+ * `------------------------------------------------------------' `--------------'
+ */
+ [_FL2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ /* _FL3: Function Layer 3 - For ISO enter use ANSI enter
+ * ,------------------------------------------------------------. ,--------------.
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| `--------------'
+ * | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| ,----.
+ * | | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------| ,--------------.
+ * | | | | | | | | | | | | |
+ * `------------------------------------------------------------' `--------------'
+ */
+ [_FL3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ };
+
diff --git a/keyboards/noxary/280/keymaps/via/readme.md b/keyboards/noxary/280/keymaps/via/readme.md
new file mode 100644
index 0000000000..71535a3bd7
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for Noxary 280 \ No newline at end of file
diff --git a/keyboards/noxary/280/keymaps/via/rules.mk b/keyboards/noxary/280/keymaps/via/rules.mk
new file mode 100644
index 0000000000..96d2d189b2
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/noxary/280/rules.mk b/keyboards/noxary/280/rules.mk
index 7ac7c8f654..e75034e26e 100644
--- a/keyboards/noxary/280/rules.mk
+++ b/keyboards/noxary/280/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/noxary/x268/rules.mk b/keyboards/noxary/x268/rules.mk
index 8b2d28fcda..a8654dc912 100644
--- a/keyboards/noxary/x268/rules.mk
+++ b/keyboards/noxary/x268/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/numatreus/config.h b/keyboards/numatreus/config.h
new file mode 100644
index 0000000000..5b16ef34d8
--- /dev/null
+++ b/keyboards/numatreus/config.h
@@ -0,0 +1,100 @@
+/*
+Copyright 2019 yohei <yohewi@gmail.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xE80A
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yohewi
+#define PRODUCT NumAtreus
+#define DESCRIPTION QMK keyboard firmware for NumAtreus
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 11
+
+
+// wiring of each half
+#define MATRIX_ROW_PINS { C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D2, D1, D0, D4 }
+
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+//#define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+// keyboard RGB LED support
+//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
+// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
+#define RGBLED_NUM 6
+
+#define RGBLIGHT_LIMIT_VAL 200
+#define RGBLIGHT_VAL_STEP 17
+
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for stonehenge30 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
+
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/numatreus/info.json b/keyboards/numatreus/info.json
new file mode 100644
index 0000000000..452d2a9150
--- /dev/null
+++ b/keyboards/numatreus/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "numatreus",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 13,
+ "height": 4.7,
+ "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/default/keymap.c b/keyboards/numatreus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..99053002fb
--- /dev/null
+++ b/keyboards/numatreus/keymaps/default/keymap.c
@@ -0,0 +1,60 @@
+#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,
+ _LOWER,
+ _RAISE,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT( /* 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 , . /
+ * SFT TAB CTL LW space bksp||ALT Ent RS - ' =
+ */
+ 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_TAB, KC_LCTL, MO(_LOWER), KC_SPC, KC_BSPC, KC_LALT, KC_ENT, MO(_RAISE), KC_MINS, KC_QUOT, KC_PEQL
+ ),
+
+ /*
+ * 1 2 3 4 5 || 6 7 8 9 0
+ * F1 F2 F3 F4 F5 || F6 F7 F8 F9 F10
+ * F11 F12 ( ) & || ` [ ] + \
+ * lower insert super shift space bksp|| alt Ent fn . - =
+ */
+ [_RAISE] = LAYOUT( /* [> RAISE <] */
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 ,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 ,
+ KC_F11, KC_F12, KC_LPRN, KC_RPRN, KC_AMPR, KC_GRV, KC_LBRC, KC_RBRC, KC_PSLS, KC_BSLS ,
+ KC_NO, KC_INS, KC_LGUI, KC_LSFT, KC_SPC, KC_BSPC, KC_LALT, KC_ENT, KC_TRNS, KC_DOT, KC_PMNS, KC_EQL ),
+
+
+ /*
+ * ! @ # $ % || ^ & * ( )
+ * DEL ESC || PGDN PGUP PSCR
+ * CAPS volup ENT reset || UP
+ * voldn super shift space bspc|| alt ent LEFT DOWN RGHT
+ */
+ [_LOWER] = LAYOUT( /* [> LOWER <] */
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN ,
+ KC_DELT, KC_ESC, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_PGUP, KC_PSCR, KC_NO, KC_NO,
+ KC_CAPS, KC_VOLU, KC_NO, KC_ENT, RESET, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO ,
+ KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_SPC, KC_BSPC, KC_LALT, KC_ENT, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT )
+
+};
diff --git a/keyboards/numatreus/keymaps/hdbx/keymap.c b/keyboards/numatreus/keymaps/hdbx/keymap.c
new file mode 100644
index 0000000000..98fe4d67d8
--- /dev/null
+++ b/keyboards/numatreus/keymaps/hdbx/keymap.c
@@ -0,0 +1,230 @@
+// WindowsでJIS配列として認識しているときに、オシャレなUS配列用キーキャップを使うためのキーマップです。
+// Google日本語入力の場合、以下のキー設定を行うとLower,Raiseのタップでそれぞれ半角入力と全角入力を切り替えできるようになります。
+// ・Henkan(入力文字なし/直接入力)に「IMEを有効化」を割り当て
+// ・Muhenkan(入力文字なし/直接入力)に「IMEを無効化」を割り当て
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h" // qmk_firmware-master/quantum/keymap_extras/keymap_jp.h 日本語キーボード設定用
+#include <sendstring_jis.h> // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避
+
+// 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,
+ _HDBX,
+ _LOWER,
+ _RAISE,
+ _GAME,
+ _ADJUST
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ HDBX,
+ MCR1, // マクロ1
+ MCR2, // マクロ2
+ MCR3, // マクロ3
+ MCR4, // マクロ4
+ MCR5, // マクロ5
+ WN_SCLN, // タップでJISの「:」 シフトでJISの「;」 (Windows)
+ DM_PLY1,
+ DM_PLY2,
+ DM_REC1,
+ DM_REC2,
+ DM_RSTP,
+};
+
+// Use Dynamic macro
+
+// Fillers to make layering more clear
+#define LOWER LT(_LOWER, KC_MHEN) // タップで無変換 ホールドでLower
+#define RAISE LT(_RAISE, KC_HENK) // タップで変換 ホールドでRaise
+#define GUI_ESC GUI_T(KC_ESC) // タップでESC ホールドでGUI
+#define SFT_BS SFT_T(KC_BSPC) // タップでBackSpace ホールドでSHIFT
+#define CTL_ENT CTL_T(KC_ENT) // タップでEnter ホールドでCTRL
+#define CTL_TAB CTL_T(KC_TAB) // タップでTAB ホールドでCTRL
+#define SFT_DEL SFT_T(KC_DEL) // タップでDELETE ホールドでSHIFT
+#define ALT_LBR ALT_T(JP_LBRC) // タップで[ ホールドでALT
+#define SFT_RBR SFT_T(JP_RBRC) // タップで] ホールドでSHIFT
+#define SFT_SPC S(KC_SPC) // Shift + Space
+#define WN_CAPS S(KC_CAPS) // Caps Lock (Windows)
+#define GAME TO(_GAME) // _GAMEレイヤーへ移動
+#define ADJUST TO(_ADJUST) // _ADJUSTレイヤーへ移動
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty配列
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | S | D | F | G | | H | J | K | L | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | V | B | | N | M | , | . | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |Alt/[ |WINESC| ~ |Sft/Bs|Lower |CtlEnt|Space |Raise |CtrlTb| - | ' |Sft/] |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_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, WN_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ ALT_LBR, GUI_ESC, JP_TILD, SFT_BS, LOWER, CTL_ENT, KC_SPC, RAISE, CTL_TAB, KC_MINS, JP_QUOT, SFT_RBR
+ ),
+
+ /* HDBX配列 デフォルトレイヤーをこの配列にしたい場合は、AdjustレイヤーでK (Lower + Raise + K)
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | E | , | . | | Y | D | P | F | : |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | I | O | U | G | | M | N | T | R | S |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | V | B | | H | J | K | L | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |Alt/[ |WINESC| ~ |Sft/Bs|Lower |CtlEnt|Space |Raise |CtrlTb| - | ' |Sft/] |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_HDBX] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_COMM, KC_DOT, KC_Y, KC_D, KC_P, KC_F, WN_SCLN,
+ KC_A, KC_I, KC_O, KC_U, KC_G, KC_M, KC_N, KC_T, KC_R, KC_S,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_H, KC_J, KC_K, KC_L, KC_SLSH,
+ ALT_LBR, GUI_ESC, JP_TILD, SFT_BS, LOWER, CTL_ENT, KC_SPC, RAISE, CTL_TAB, KC_MINS, JP_QUOT, SFT_RBR
+ ),
+
+ /* Lower
+ * ,----------------------------------. ,----------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | | 7 | 8 | 9 | . | Bspc |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | F6 | F7 | F8 | F9 | F10 | | 4 | 5 | 6 | + | * |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * |Zen/Ha|ScLock|Pause | F11 | F12 | | 1 | 2 | 3 | - | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Alt | WIN | ` |SftDel|Lower | Ctrl |SftSpc|Raise | 0 | , | = |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_7, KC_8, KC_9, KC_DOT, KC_BSPC,
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST,
+ KC_ZKHK, KC_SLCK, KC_PAUS, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_PMNS, KC_PSLS,
+ KC_LALT, KC_LGUI, JP_GRV, SFT_DEL, _______, KC_LCTL, SFT_SPC, _______, KC_0, KC_COMM, JP_EQL, KC_ENT
+ ),
+
+ /* Raise
+ * ,----------------------------------. ,----------------------------------.
+ * | ! | @ | # | $ | % | | Home | App | Ins | Calc |PrtScr|
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ^ | & | * | \ | | | | Left | Down | Up |Right | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ` | { | } | < | > | | End | Mute | ( | ) | ? |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Alt | WIN | ` | Del |Lower | Ctrl | Caps |Raise | Ctrl | _ | " |Shift |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_EXLM, JP_AT, KC_HASH, KC_DLR, KC_PERC, KC_HOME, KC_APP, KC_INS, KC_CALC, KC_PSCR,
+ JP_CIRC, JP_AMPR, JP_ASTR, JP_YEN, JP_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN,
+ JP_GRV, JP_LCBR, JP_RCBR, KC_LT, KC_GT, KC_END, KC_MUTE, JP_LPRN, JP_RPRN, KC_QUES,
+ KC_LALT, KC_LGUI, JP_GRV, KC_DEL, _______, KC_LCTL, WN_CAPS, _______, KC_RCTL, JP_UNDS, JP_DQT, KC_RSFT
+ ),
+
+ /* GAME ゲームやテンキー固定で使用するレイヤーです。AdjustレイヤーでGを押下して遷移。戻るときはtoBaseから。
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | Up | E | R | T | | 7 | 8 | 9 | . | Bspc |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Left | Down |Right | F | G | | 4 | 5 | 6 | + | * |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | V | B | | 1 | 2 | 3 | - | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Alt | Esc | Tab |Shift |Space | Ctrl |toBase| \ | 0 | , | = |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_GAME] = LAYOUT(
+ KC_Q, KC_UP, KC_E, KC_R, KC_T, KC_7, KC_8, KC_9, KC_DOT, KC_BSPC,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_F, KC_G, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_1, KC_2, KC_3, KC_PMNS, KC_PSLS,
+ KC_LALT, KC_ESC, KC_TAB, KC_LSFT, KC_SPC, KC_LCTL, ADJUST, JP_YEN, KC_0, KC_COMM, JP_EQL, KC_ENT
+ ),
+
+ /* Adjust (Lower + Raise)
+ * ,----------------------------------. ,----------------------------------.
+ * | MCR1 | MCR2 | MCR3 | MCR4 | MCR5 | |DyMcr1|DyMcr2|RcMcr1|RcMcr2|StpRec|
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | |ToGAME| | |Qwerty| HDBX | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |RESET | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_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
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+return state;
+}
+
+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 HDBX:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_HDBX);
+ }
+ return false;
+ break;
+ static bool lshift = false;
+ case WN_SCLN: // コロン「;:」
+ if (record->event.pressed) {
+ lshift = get_mods() & MOD_BIT(KC_LSFT);
+ if (lshift) {
+ unregister_code(KC_LSFT);
+ tap_code(JP_SCLN);
+ } else {
+ tap_code(JP_SCLN);
+ }
+ }
+ return false;
+ break;
+ case MCR1:
+ if (record->event.pressed) {
+ SEND_STRING("0123456789"); // 送信文字列
+ }
+ return false;
+ break;
+ case MCR2:
+ if (record->event.pressed) {
+ SEND_STRING("hogehoge\n"); // 送信文字列
+ }
+ return false;
+ break;
+ case MCR3:
+ if (record->event.pressed) {
+ SEND_STRING("hoge@hoge.hoge"); // 送信文字列
+ }
+ return false;
+ break;
+ case MCR4:
+ if (record->event.pressed) {
+ SEND_STRING("\"\""SS_TAP(X_LEFT)); // 送信文字列
+ }
+ return false;
+ break;
+ case MCR5:
+ if (record->event.pressed) {
+ SEND_STRING("<>"SS_TAP(X_LEFT)); // 送信文字列
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/numatreus/keymaps/hdbx/rules.mk b/keyboards/numatreus/keymaps/hdbx/rules.mk
new file mode 100644
index 0000000000..d4e78b385c
--- /dev/null
+++ b/keyboards/numatreus/keymaps/hdbx/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/numatreus/keymaps/like_jis/config.h b/keyboards/numatreus/keymaps/like_jis/config.h
new file mode 100644
index 0000000000..961de83e42
--- /dev/null
+++ b/keyboards/numatreus/keymaps/like_jis/config.h
@@ -0,0 +1,59 @@
+/*
+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
+
+#ifdef TAPPING_TERM
+#undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 225
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef MOUSEKEY_ENABLE
+ #undef MOUSEKEY_INTERVAL
+ #define MOUSEKEY_INTERVAL 1
+
+ #undef MOUSEKEY_TIME_TO_MAX
+ #define MOUSEKEY_TIME_TO_MAX 150
+
+ #undef MOUSEKEY_MAX_SPEED
+ #define MOUSEKEY_MAX_SPEED 3
+
+ #undef MOUSEKEY_MOVE_DELTA
+ #define MOUSEKEY_MOVE_DELTA 4
+
+ #undef MOUSEKEY_DELAY
+ #define MOUSEKEY_DELAY 0
+#endif
+
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_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
diff --git a/keyboards/numatreus/keymaps/like_jis/keymap.c b/keyboards/numatreus/keymaps/like_jis/keymap.c
new file mode 100644
index 0000000000..eb9e9230d7
--- /dev/null
+++ b/keyboards/numatreus/keymaps/like_jis/keymap.c
@@ -0,0 +1,196 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE = 0,
+ _NUMPAD,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ BASE = SAFE_RANGE,
+ NUMPAD,
+ KANJI,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST
+};
+
+enum tapdances{
+ TD_CODO = 0,
+ // TD_MNUB,
+};
+
+// Layer Mode aliases
+#define KC_LOWER LOWER
+#define KC_RAISE RAISE
+#define KC_ADJST ADJUST
+#define KC_DLNP NUMPAD //DF(_NUMPAD)
+#define KC_DLBS BASE //DF(_BASE)
+
+#define KC_ZSFT LSFT_T(KC_Z)
+#define KC_MNSF LSFT_T(KC_MINS)
+#define KC_ESCT LCTL_T(KC_ESC)
+#define KC_TBAL LALT_T(KC_TAB)
+#define KC_11SF LSFT_T(KC_F11)
+#define KC_ALAP LALT_T(KC_APP)
+#define KC_JEQL LSFT(KC_MINS)
+#define KC_WLCK LALT(KC_L)
+#define KC_SFEQ LSFT(KC_MINS)
+#define KC_SFPL LSFT(KC_SCLN)
+#define KC_SFAS LSFT(KC_QUOT)
+
+#define KC_CODO TD(TD_CODO)
+// #define KC_MNUB TD(TD_MNUB)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
+ // [TD_MNUB] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, LSFT(KC_RO)),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ //,----------------------------------. ,----------------------------------.
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_ZSFT, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_CODO, KC_UP, KC_MNSF,
+ //|------+------+------+------+------|------+------+------+------+------+------+------|
+ KC_ESCT, KC_TBAL, KC_LGUI, KC_LOWER, KC_BSPC, KC_BSPC, KC_SPC, KC_SPC, KC_RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+ //|------+------+------+------+-------------+------+------+------+------+------+------|
+ ),
+
+ [_NUMPAD] = LAYOUT(
+ //,----------------------------------. ,----------------------------------.
+ KC_P7, KC_P8, KC_P9, KC_PAST, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PAST, KC_NLCK,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_P1, KC_P2, KC_P3, KC_PPLS, KC_QUOT, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_QUOT,
+ //|------+------+------+------+------|------+------+------+------+------+------+------|
+ KC_DLBS, KC_P0, KC_PDOT, KC_SFEQ, KC_SPC, KC_DEL, KC_SPC, KC_DLBS, KC_P0, KC_PDOT, KC_SFEQ, KC_BSPC
+ //|------+------+------+------+-------------+------+------+------+------+------+------|
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,----------------------------------. ,----------------------------------.
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_11SF, KC_F12, KC_DLNP, KANJI, KC_ENT, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO,
+ //|------+------+------+------+------|------+------+------+------+------+------+------|
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ //|------+------+------+------+-------------+------+------+------+------+------+------|
+ ),
+
+ [_RAISE] = LAYOUT(
+ //,----------------------------------. ,----------------------------------.
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_QUOT, KC_4, KC_5, KC_6, KC_MINS,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLSH, KC_1, KC_2, KC_3, KC_PPLS,
+ //|------+------+------+------+------|------+------+------+------+------+------+------|
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WLCK, KC_TRNS, KC_0, KC_DOT, KC_JEQL
+ //|------+------+------+------+-------------+------+------+------+------+------+------|
+ ),
+
+ [_ADJUST] = LAYOUT(
+ //,----------------------------------. ,----------------------------------.
+ RESET, 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,
+ //|------+------+------+------+------| |------+------+------+------+------|
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NLCK, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX,
+ //|------+------+------+------+------|------+------+------+------+------+------+------|
+ KC_LSFT, 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
+ //|------+------+------+------+-------------+------+------+------+------+------+------|
+ )
+};
+
+#define L_BASE _BASE
+#define L_NUMPAD (1<<_NUMPAD)
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case BASE:
+ if (record->event.pressed) {
+ default_layer_set(L_BASE);
+ }
+ break;
+ case NUMPAD:
+ if (record->event.pressed) {
+ default_layer_set(L_NUMPAD);
+ }
+ break;
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ case KANJI:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lalt_lgui == false) {
+ register_code(KC_LANG2);
+ } else {
+ tap_code16(A(KC_GRV));
+ }
+ } else {
+ unregister_code(KC_LANG2);
+ }
+ break;
+ #ifdef RGBLIGHT_ENABLE
+ //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;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
diff --git a/keyboards/numatreus/keymaps/like_jis/rules.mk b/keyboards/numatreus/keymaps/like_jis/rules.mk
new file mode 100644
index 0000000000..959653f3f8
--- /dev/null
+++ b/keyboards/numatreus/keymaps/like_jis/rules.mk
@@ -0,0 +1,8 @@
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+LED_ANIMATIONS = yes
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
diff --git a/keyboards/numatreus/keymaps/yohewi/keymap.c b/keyboards/numatreus/keymaps/yohewi/keymap.c
new file mode 100644
index 0000000000..8027a972e4
--- /dev/null
+++ b/keyboards/numatreus/keymaps/yohewi/keymap.c
@@ -0,0 +1,61 @@
+#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,
+ _LOWER,
+ _RAISE,
+};
+
+enum custom_keycodes {
+ BASE = SAFE_RANGE,
+ LOWER,
+ RAISE,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * q w e r t || y u i o p
+ * a s d f g || h j k l ;
+ * z x c v b || n m , . \
+ * esc tab ctl lw spc bspc|| GRV ent RS / alt -
+ */
+
+ [_QWERTY] = LAYOUT( /* Qwerty */
+ 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 ,
+ SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_BSLS) ,
+ KC_ESC, KC_TAB, KC_LCTL, MO(_LOWER), KC_SPC, KC_BSPC, LALT(KC_GRV), KC_ENT, MO(_RAISE), KC_DOT, KC_RALT, KC_MINS ),
+
+
+ /*
+ * 1 2 3 4 5 || 6 7 8 9 0
+ * # < > = - || _ + ENT
+ * [ ] ( ) & || ` . UP \
+ * TRANS TRANS TRANS TRANS TRANS TRANS|| TRANS TRANS RS LEFT DPWM RGHT
+ */
+ [_RAISE] = LAYOUT( /* [> RAISE <] */
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 ,
+ KC_HASH, KC_LABK, KC_RABK, KC_EQL, KC_MINS, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, KC_ENT ,
+ KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_GRV, KC_TRNS, KC_DOT, KC_UP, KC_BSLS ,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ /*
+ * ! @ # $ % || ^ & * ( )
+ * F1 F2 F3 F4 F5 || F6 F7 F8 F9 F10
+ * F11 F12 reset || , UP \
+ * TRNS TRNS TRNS TRNS TRNS TRNS||TRNS TRNS TRNS LEFT DPWM RGHT
+ */
+
+ [_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_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/numatreus/numatreus.c b/keyboards/numatreus/numatreus.c
new file mode 100644
index 0000000000..0338210e86
--- /dev/null
+++ b/keyboards/numatreus/numatreus.c
@@ -0,0 +1 @@
+#include "numatreus.h" \ No newline at end of file
diff --git a/keyboards/numatreus/numatreus.h b/keyboards/numatreus/numatreus.h
new file mode 100644
index 0000000000..6ec56504ab
--- /dev/null
+++ b/keyboards/numatreus/numatreus.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "quantum.h"
+
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT( \
+ 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, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \
+ { k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b } \
+}
diff --git a/keyboards/numatreus/readme.md b/keyboards/numatreus/readme.md
new file mode 100644
index 0000000000..e945c31467
--- /dev/null
+++ b/keyboards/numatreus/readme.md
@@ -0,0 +1,13 @@
+# NumAtreus
+
+A small mechanical keyboard that is based around the shape of the human hand.
+
+* Keyboard Maintainer: yohewi(yohewi@gmail.com)
+* Hardware Supported: NumAtreus, PCB
+* Hardware Availability: [Case Data](https://github.com/yohewi/NumAtreuscase)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make numatreus: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/numatreus/rules.mk b/keyboards/numatreus/rules.mk
new file mode 100644
index 0000000000..f1efe4cc5e
--- /dev/null
+++ b/keyboards/numatreus/rules.mk
@@ -0,0 +1,36 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+#MIDI_ENABLE = no # MIDI controls
+UNICODE_ENABLE = yes # Unicode
+#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+#TAP_DANCE_ENABLE = yes
+RGBLIGHT_ENABLE = no
+LED_ANIMATIONS = no
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ogre/ergo_single/config.h b/keyboards/ogre/ergo_single/config.h
new file mode 100644
index 0000000000..68e94a11a4
--- /dev/null
+++ b/keyboards/ogre/ergo_single/config.h
@@ -0,0 +1,45 @@
+/*
+Copyright 2020 ctrlshiftba
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER ctrlshiftba
+#define PRODUCT ergo_single
+#define DESCRIPTION a keycap friendly ergo. the non-split version
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/* Keyboard Matrix Assignments */
+#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 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN B6
+#define RGBLED_NUM 14
+#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 13, 12,11, 10, 9, 8, 7}
+#define RGBLIGHT_ANIMATIONS
+#define DEBOUNCE 5
diff --git a/keyboards/ogre/ergo_single/ergo_single.c b/keyboards/ogre/ergo_single/ergo_single.c
new file mode 100644
index 0000000000..b48b0a02e2
--- /dev/null
+++ b/keyboards/ogre/ergo_single/ergo_single.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ergo_single.h"
diff --git a/keyboards/ogre/ergo_single/ergo_single.h b/keyboards/ogre/ergo_single/ergo_single.h
new file mode 100644
index 0000000000..f8f9ddf65f
--- /dev/null
+++ b/keyboards/ogre/ergo_single/ergo_single.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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( \
+ k63, k00, k10, k20, k30, k40, k50, k60, k65, k55, k45, k35, k25, k15, k05, k68, \
+ k01, k11, k21, k31, k41, k51, k61, k66, k56, k46, k36, k26, k16, k06, \
+ k02, k12, k22, k32, k42, k52, k62, k67, k57, k47, k37, k27, k17, k07, \
+ k03, k13, k23, k33, k43, k53, k58, k48, k38, k28, k18, k08, \
+ k04, k14, k24, k34, k44, k54, k64, k69, k59, k49, k39, k29, k19, k09 \
+) \
+{ \
+ { k00, k10, k20, k30, k40, k50, k60 }, \
+ { k01, k11, k21, k31, k41, k51, k61 }, \
+ { k02, k12, k22, k32, k42, k52, k62 }, \
+ { k03, k13, k23, k33, k43, k53, k63 }, \
+ { k04, k14, k24, k34, k44, k54, k64 }, \
+ { k05, k15, k25, k35, k45, k55, k65 }, \
+ { k06, k16, k26, k36, k46, k56, k66 }, \
+ { k07, k17, k27, k37, k47, k57, k67 }, \
+ { k08, k18, k28, k38, k48, k58, k68 }, \
+ { k09, k19, k29, k39, k49, k59, k69 }, \
+}
diff --git a/keyboards/ogre/ergo_single/keymaps/default/keymap.c b/keyboards/ogre/ergo_single/keymaps/default/keymap.c
new file mode 100644
index 0000000000..94e725791e
--- /dev/null
+++ b/keyboards/ogre/ergo_single/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 TP_Z MT(MOD_LCTL, KC_Z)
+#define TP_X MT(MOD_LGUI, KC_X)
+#define TP_GR MT(MOD_LCTL, KC_GRV)
+#define TP_SPC LT(1, KC_SPC)
+#define TP_ENT LT(1, KC_ENT)
+#define TP_QUOT MT(MOD_RGUI, KC_QUOT)
+#define TP_RCTRL MT(MOD_RCTL, KC_RBRC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_LBRC, 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_PGDN, KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TP_QUOT,
+ KC_LSFT, TP_Z, TP_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ TP_GR, KC_LALT, KC_LEFT, KC_RGHT, TP_SPC, KC_SPC, KC_BSPC, KC_RALT, KC_ENT, TP_ENT, KC_DOWN, KC_UP, KC_LBRC, TP_RCTRL
+ ),
+ [1] = LAYOUT(
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_INS, KC_HOME, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_M_P, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MENU, _______
+ ),
+};
diff --git a/keyboards/ogre/ergo_single/keymaps/default/readme.md b/keyboards/ogre/ergo_single/keymaps/default/readme.md
new file mode 100644
index 0000000000..a63ad5baa2
--- /dev/null
+++ b/keyboards/ogre/ergo_single/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for ergo_single
diff --git a/keyboards/ogre/ergo_single/readme.md b/keyboards/ogre/ergo_single/readme.md
new file mode 100644
index 0000000000..d39714a6f6
--- /dev/null
+++ b/keyboards/ogre/ergo_single/readme.md
@@ -0,0 +1,15 @@
+# ogre ergo
+## a keycap friendly ergo
+![ogre_ergo](https://i.imgur.com/27rF0jj.jpg)
+
+The ogre ergo is a ergodox inspired keyboard that is a keycap friendly ergo supporting a wide variety of keycap layout possiblities. Its can be built as either a split or single keyboard.
+
+* Keyboard Maintainer: [ctrlshiftba](https://github.com/ctrlshiftbryan)
+* Hardware Supported: the ogre ergo pcb
+* Hardware Availability: https://ctrlshiftba.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ogre/ergo_single: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/ogre/ergo_single/rules.mk b/keyboards/ogre/ergo_single/rules.mk
new file mode 100644
index 0000000000..cd209a9c4e
--- /dev/null
+++ b/keyboards/ogre/ergo_single/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+SPLIT_KEYBOARD = no
diff --git a/keyboards/ogre/ergo_split/config.h b/keyboards/ogre/ergo_split/config.h
new file mode 100644
index 0000000000..05aff98095
--- /dev/null
+++ b/keyboards/ogre/ergo_split/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2020 ctrlshiftba
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER ctrlshiftba
+#define PRODUCT ergo_split
+#define DESCRIPTION a keycap friendly ergo. the split version
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+
+/* 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 D3
+#define SPLIT_HAND_PIN D1
+
+#define RGB_DI_PIN B6
+#define RGBLED_SPLIT { 7, 7 }
+#define RGBLED_NUM 14
+#define RGBLIGHT_LED_MAP { 6, 5, 4, 3, 2, 1, 0, 13, 12,11, 10, 9, 8, 7}
+#define RGBLIGHT_ANIMATIONS
+#define DEBOUNCE 5
diff --git a/keyboards/ogre/ergo_split/ergo_split.c b/keyboards/ogre/ergo_split/ergo_split.c
new file mode 100644
index 0000000000..0d83a5e8e4
--- /dev/null
+++ b/keyboards/ogre/ergo_split/ergo_split.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ergo_split.h"
diff --git a/keyboards/ogre/ergo_split/ergo_split.h b/keyboards/ogre/ergo_split/ergo_split.h
new file mode 100644
index 0000000000..f8f9ddf65f
--- /dev/null
+++ b/keyboards/ogre/ergo_split/ergo_split.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a 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( \
+ k63, k00, k10, k20, k30, k40, k50, k60, k65, k55, k45, k35, k25, k15, k05, k68, \
+ k01, k11, k21, k31, k41, k51, k61, k66, k56, k46, k36, k26, k16, k06, \
+ k02, k12, k22, k32, k42, k52, k62, k67, k57, k47, k37, k27, k17, k07, \
+ k03, k13, k23, k33, k43, k53, k58, k48, k38, k28, k18, k08, \
+ k04, k14, k24, k34, k44, k54, k64, k69, k59, k49, k39, k29, k19, k09 \
+) \
+{ \
+ { k00, k10, k20, k30, k40, k50, k60 }, \
+ { k01, k11, k21, k31, k41, k51, k61 }, \
+ { k02, k12, k22, k32, k42, k52, k62 }, \
+ { k03, k13, k23, k33, k43, k53, k63 }, \
+ { k04, k14, k24, k34, k44, k54, k64 }, \
+ { k05, k15, k25, k35, k45, k55, k65 }, \
+ { k06, k16, k26, k36, k46, k56, k66 }, \
+ { k07, k17, k27, k37, k47, k57, k67 }, \
+ { k08, k18, k28, k38, k48, k58, k68 }, \
+ { k09, k19, k29, k39, k49, k59, k69 }, \
+}
diff --git a/keyboards/ogre/ergo_split/keymaps/default/keymap.c b/keyboards/ogre/ergo_split/keymaps/default/keymap.c
new file mode 100644
index 0000000000..94e725791e
--- /dev/null
+++ b/keyboards/ogre/ergo_split/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2020 ctrlshiftba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 TP_Z MT(MOD_LCTL, KC_Z)
+#define TP_X MT(MOD_LGUI, KC_X)
+#define TP_GR MT(MOD_LCTL, KC_GRV)
+#define TP_SPC LT(1, KC_SPC)
+#define TP_ENT LT(1, KC_ENT)
+#define TP_QUOT MT(MOD_RGUI, KC_QUOT)
+#define TP_RCTRL MT(MOD_RCTL, KC_RBRC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_LBRC, 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_PGDN, KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TP_QUOT,
+ KC_LSFT, TP_Z, TP_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ TP_GR, KC_LALT, KC_LEFT, KC_RGHT, TP_SPC, KC_SPC, KC_BSPC, KC_RALT, KC_ENT, TP_ENT, KC_DOWN, KC_UP, KC_LBRC, TP_RCTRL
+ ),
+ [1] = LAYOUT(
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_INS, KC_HOME, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_M_P, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MENU, _______
+ ),
+};
diff --git a/keyboards/ogre/ergo_split/keymaps/default/readme.md b/keyboards/ogre/ergo_split/keymaps/default/readme.md
new file mode 100644
index 0000000000..4e225222b1
--- /dev/null
+++ b/keyboards/ogre/ergo_split/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for ergo_split
diff --git a/keyboards/ogre/ergo_split/readme.md b/keyboards/ogre/ergo_split/readme.md
new file mode 100644
index 0000000000..e027e6be02
--- /dev/null
+++ b/keyboards/ogre/ergo_split/readme.md
@@ -0,0 +1,15 @@
+# ogre ergo (split)
+## a keycap friendly ergo
+![ogre_ergo_split](https://i.imgur.com/55luvRi.jpg)
+
+The ogre ergo is a ergodox inspired keyboard that is a keycap friendly ergo supporting a wide variety of keycap layout possiblities. Its can be built as either a split or single keyboard.
+
+* Keyboard Maintainer: [ctrlshiftba](https://github.com/ctrlshiftbryan)
+* Hardware Supported: the ogre ergo pcb
+* Hardware Availability: https://ctrlshiftba.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ogre/ergo_split: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/ogre/ergo_split/rules.mk b/keyboards/ogre/ergo_split/rules.mk
new file mode 100644
index 0000000000..06f53864c1
--- /dev/null
+++ b/keyboards/ogre/ergo_split/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/ok60/rules.mk b/keyboards/ok60/rules.mk
index 6a0b6cfb35..064683816f 100644
--- a/keyboards/ok60/rules.mk
+++ b/keyboards/ok60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/omnikey_blackheart/rules.mk b/keyboards/omnikey_blackheart/rules.mk
index 648f84eeed..59f163e2f4 100644
--- a/keyboards/omnikey_blackheart/rules.mk
+++ b/keyboards/omnikey_blackheart/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+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
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/orange75/rules.mk b/keyboards/orange75/rules.mk
index d5b1f1e10a..ce242bb2a9 100644
--- a/keyboards/orange75/rules.mk
+++ b/keyboards/orange75/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/org60/rules.mk b/keyboards/org60/rules.mk
index 3e00a04937..a57d68acc5 100644
--- a/keyboards/org60/rules.mk
+++ b/keyboards/org60/rules.mk
@@ -15,12 +15,12 @@ BOOTLOADER = atmel-dfu
AUDIO_ENABLE = no # Audio output on port C6
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
COMMAND_ENABLE = no # Commands for debug and configuration
-CONSOLE_ENABLE = no # Console for debug(+400)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug
+EXTRAKEY_ENABLE = yes # Audio control and System control
MIDI_ENABLE = no # MIDI controls
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+MOUSEKEY_ENABLE = yes # Mouse keys
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/orthodox/keymaps/xyverz/keymap.c b/keyboards/orthodox/keymaps/xyverz/keymap.c
index cc3c38943b..0417c1a4a0 100644
--- a/keyboards/orthodox/keymaps/xyverz/keymap.c
+++ b/keyboards/orthodox/keymaps/xyverz/keymap.c
@@ -63,9 +63,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
- writePinLow(D5);
setPinInput(B0);
- writePinLow(B0);
#endif
};
@@ -86,4 +84,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
-} \ No newline at end of file
+}
diff --git a/keyboards/orthodox/rules.mk b/keyboards/orthodox/rules.mk
index 59f039a76d..384938ed05 100644
--- a/keyboards/orthodox/rules.mk
+++ b/keyboards/orthodox/rules.mk
@@ -5,10 +5,10 @@ MCU = atmega32u4
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/otaku_split/rev0/rules.mk b/keyboards/otaku_split/rev0/rules.mk
index 8c41bc5a2e..15240c6d93 100644
--- a/keyboards/otaku_split/rev0/rules.mk
+++ b/keyboards/otaku_split/rev0/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD=yes
diff --git a/keyboards/otaku_split/rev1/rules.mk b/keyboards/otaku_split/rev1/rules.mk
index 8c41bc5a2e..15240c6d93 100644
--- a/keyboards/otaku_split/rev1/rules.mk
+++ b/keyboards/otaku_split/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD=yes
diff --git a/keyboards/paladin64/rules.mk b/keyboards/paladin64/rules.mk
index 558d1855a1..6caa47e907 100755
--- a/keyboards/paladin64/rules.mk
+++ b/keyboards/paladin64/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= yes # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= yes # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= yes # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/panc60/config.h b/keyboards/panc60/config.h
index c565f39bcc..b3bcdc9733 100644
--- a/keyboards/panc60/config.h
+++ b/keyboards/panc60/config.h
@@ -37,5 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/panc60/panc60.c b/keyboards/panc60/panc60.c
index 6bd16a4bdc..d7ff52963c 100644
--- a/keyboards/panc60/panc60.c
+++ b/keyboards/panc60/panc60.c
@@ -16,30 +16,18 @@
#include "panc60.h"
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
diff --git a/keyboards/pancake/feather/rules.mk b/keyboards/pancake/feather/rules.mk
index ed10c5faa7..c54fbf06e0 100644
--- a/keyboards/pancake/feather/rules.mk
+++ b/keyboards/pancake/feather/rules.mk
@@ -18,10 +18,10 @@ BOOTLOADER = caterina
# comment out to disable the options.
#
BLUETOOTH = AdafruitBLE
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/pancake/promicro/rules.mk b/keyboards/pancake/promicro/rules.mk
index 3ede4cd34b..6ed9e88e99 100644
--- a/keyboards/pancake/promicro/rules.mk
+++ b/keyboards/pancake/promicro/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/pdxkbc/rules.mk b/keyboards/pdxkbc/rules.mk
index 7218e1e1bf..1aa3379312 100644
--- a/keyboards/pdxkbc/rules.mk
+++ b/keyboards/pdxkbc/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/pearl/config.h b/keyboards/pearl/config.h
index 0ae69e8e2b..5dbba3ec0d 100644
--- a/keyboards/pearl/config.h
+++ b/keyboards/pearl/config.h
@@ -31,7 +31,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/pearl/pearl.c b/keyboards/pearl/pearl.c
index 093b5fdd93..b08ee6f888 100644
--- a/keyboards/pearl/pearl.c
+++ b/keyboards/pearl/pearl.c
@@ -17,32 +17,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "pearl.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/peiorisboards/ixora/chconf.h b/keyboards/peiorisboards/ixora/chconf.h
index b836a3b99c..e811705ba3 100644
--- a/keyboards/peiorisboards/ixora/chconf.h
+++ b/keyboards/peiorisboards/ixora/chconf.h
@@ -102,10 +102,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
@@ -518,4 +514,4 @@
#endif /* CHCONF_H */
-/** @} */ \ No newline at end of file
+/** @} */
diff --git a/keyboards/peiorisboards/ixora/config.h b/keyboards/peiorisboards/ixora/config.h
index bf74b13cc1..77ba89c292 100644
--- a/keyboards/peiorisboards/ixora/config.h
+++ b/keyboards/peiorisboards/ixora/config.h
@@ -17,7 +17,7 @@
#define MATRIX_ROW_PINS { A0 }
#define MATRIX_COL_PINS { B4, A15, B3, A1, B6, B5 }
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/peiorisboards/ixora/rules.mk b/keyboards/peiorisboards/ixora/rules.mk
index 0cea106d05..1d93c6a303 100644
--- a/keyboards/peiorisboards/ixora/rules.mk
+++ b/keyboards/peiorisboards/ixora/rules.mk
@@ -12,3 +12,7 @@ CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/percent/canoe/canoe.c b/keyboards/percent/canoe/canoe.c
index 79c6330fe8..dd31640e6d 100644
--- a/keyboards/percent/canoe/canoe.c
+++ b/keyboards/percent/canoe/canoe.c
@@ -17,32 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "canoe.h"
-#ifdef BACKLIGHT_ENABLE
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // Turn out the lights
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // Turn on the lights
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
- }
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_init_ports(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
+}
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h
index 950e0806e5..21b3dcea64 100644
--- a/keyboards/percent/canoe/config.h
+++ b/keyboards/percent/canoe/config.h
@@ -38,7 +38,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
diff --git a/keyboards/percent/canoe/rules.mk b/keyboards/percent/canoe/rules.mk
index 6340c81224..9661eaefeb 100644
--- a/keyboards/percent/canoe/rules.mk
+++ b/keyboards/percent/canoe/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/percent/skog/backlight.c b/keyboards/percent/skog/backlight.c
deleted file mode 100644
index 94e8126d88..0000000000
--- a/keyboards/percent/skog/backlight.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-#define NUMLOCK_PORT (1 << 0) // D0
-#define CAPSLOCK_PORT (1 << 1) // D1
-#define BACKLIGHT_PORT (1 << 4) // D4
-#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/percent/skog/backlight_custom.h b/keyboards/percent/skog/backlight_custom.h
deleted file mode 100644
index 51365fe3ba..0000000000
--- a/keyboards/percent/skog/backlight_custom.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#pragma once
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
diff --git a/keyboards/percent/skog/breathing_custom.h b/keyboards/percent/skog/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/percent/skog/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/percent/skog/config.h b/keyboards/percent/skog/config.h
index 7a0c703ec9..15844711f6 100644
--- a/keyboards/percent/skog/config.h
+++ b/keyboards/percent/skog/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
@@ -36,8 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 2
#define RGBLIGHT_ANIMATIONS
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 5
#define NO_UART 1
-
-#endif
diff --git a/keyboards/percent/skog/rules.mk b/keyboards/percent/skog/rules.mk
index da03a2e0c3..0d243b8581 100644
--- a/keyboards/percent/skog/rules.mk
+++ b/keyboards/percent/skog/rules.mk
@@ -21,11 +21,7 @@ BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
-BACKLIGHT_CUSTOM_DRIVER = yes
-
OPT_DEFS = -DDEBUG_LEVEL=0
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-SRC = backlight.c
diff --git a/keyboards/percent/skog/skog.c b/keyboards/percent/skog/skog.c
index 1c26c550e5..152fc56845 100644
--- a/keyboards/percent/skog/skog.c
+++ b/keyboards/percent/skog/skog.c
@@ -19,20 +19,20 @@ ps2avrGB support code by Kenneth A. (bminiex/.[ch])
#include "skog.h"
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-/// Overrides functions in `quantum.c`
-void backlight_init_ports(void) {
- b_led_init_ports();
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_task(void) {
- b_led_task();
+void led_init_ports(void) {
+ setPinOutput(D1);
+ setPinOutput(D6);
}
-void backlight_set(uint8_t level) {
- b_led_set(level);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/percent/skog_lite/config.h b/keyboards/percent/skog_lite/config.h
index 97d11238e3..a3d4a225f1 100644
--- a/keyboards/percent/skog_lite/config.h
+++ b/keyboards/percent/skog_lite/config.h
@@ -32,11 +32,13 @@ 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, A5, A4, C5, C3}
+#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
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/percent/skog_lite/info.json b/keyboards/percent/skog_lite/info.json
index d8e382cce0..a1d10f59c4 100644
--- a/keyboards/percent/skog_lite/info.json
+++ b/keyboards/percent/skog_lite/info.json
@@ -1,20 +1,280 @@
{
- "keyboard_name": "Skog Lite",
- "url": "",
- "maintainer": "qmk",
- "width": 18.25,
- "height": 6.5,
- "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}]
- },
+ "keyboard_name": "Skog Lite",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 18.25,
+ "height": 6.25,
+ "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.5},
+ {"x":16.25, "y":0.5},
+ {"x":17.25, "y":0.5},
+ {"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.75},
+ {"x":16.25, "y":1.75},
+ {"x":17.25, "y":1.75},
+ {"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.75},
+ {"x":16.25, "y":2.75},
+ {"x":17.25, "y":2.75},
+ {"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_7u_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.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
- },
+ "LAYOUT_tkl_7u_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.5},
+ {"x":16.25, "y":0.5},
+ {"x":17.25, "y":0.5},
+ {"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.75},
+ {"x":16.25, "y":1.75},
+ {"x":17.25, "y":1.75},
+ {"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.75},
+ {"x":16.25, "y":2.75},
+ {"x":17.25, "y":2.75},
+ {"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}
+ ]
+ },
- "LAYOUT_tkl_7u_ansi_blocker": {
- "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}]
- }
- }
+ "LAYOUT_tkl_7u_ansi_blocker": {
+ "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.5},
+ {"x":16.25, "y":0.5},
+ {"x":17.25, "y":0.5},
+ {"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.75},
+ {"x":16.25, "y":1.75},
+ {"x":17.25, "y":1.75},
+ {"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.75},
+ {"x":16.25, "y":2.75},
+ {"x":17.25, "y":2.75},
+ {"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":2.5, "y":5.25, "w":1.5},
+ {"x":4, "y":5.25, "w":7},
+ {"x":11, "y":5.25, "w":1.5},
+ {"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/percent/skog_lite/keymaps/binman/keymap.c b/keyboards/percent/skog_lite/keymaps/binman/keymap.c
new file mode 100755
index 0000000000..40308e1a6e
--- /dev/null
+++ b/keyboards/percent/skog_lite/keymaps/binman/keymap.c
@@ -0,0 +1,20 @@
+#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_DEL, RGB_TOG, 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_MUTE, KC_VOLU, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MRWD, KC_VOLD, KC_MFFD,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_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_NO, KC_LGUI, KC_SPC, KC_RGUI, KC_NO, KC_RALT, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/percent/skog_lite/keymaps/binman/readme.md b/keyboards/percent/skog_lite/keymaps/binman/readme.md
new file mode 100755
index 0000000000..d4bf1929d6
--- /dev/null
+++ b/keyboards/percent/skog_lite/keymaps/binman/readme.md
@@ -0,0 +1,3 @@
+# binman Skog Lite layout
+
+This mostly just changes the "TKL" section of the board to be media and lighting controls. Bottom row has also been modified a bit. \ No newline at end of file
diff --git a/keyboards/percent/skog_lite/rules.mk b/keyboards/percent/skog_lite/rules.mk
index 1d2372c77f..dbcb6c1888 100644
--- a/keyboards/percent/skog_lite/rules.mk
+++ b/keyboards/percent/skog_lite/rules.mk
@@ -11,14 +11,16 @@ MCU = atmega32a
# ATmega328P USBasp
BOOTLOADER = bootloadHID
-# build options
-BOOTMAGIC_ENABLE = no
-MOUSEKEY_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-CONSOLE_ENABLE = yes
-COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = yes
-RGBLIGHT_ENABLE = yes
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
OPT_DEFS = -DDEBUG_LEVEL=0
diff --git a/keyboards/percent/skog_lite/skog_lite.c b/keyboards/percent/skog_lite/skog_lite.c
index a6c00f5293..95d3982113 100644
--- a/keyboards/percent/skog_lite/skog_lite.c
+++ b/keyboards/percent/skog_lite/skog_lite.c
@@ -16,32 +16,20 @@
#include "skog_lite.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/phantom/keymaps/rgbmod/rules.mk b/keyboards/phantom/keymaps/rgbmod/rules.mk
index 2892bb424d..e4865902ce 100644
--- a/keyboards/phantom/keymaps/rgbmod/rules.mk
+++ b/keyboards/phantom/keymaps/rgbmod/rules.mk
@@ -18,14 +18,14 @@
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/phantom/rules.mk b/keyboards/phantom/rules.mk
index 1c8d7b916d..79c64ac7af 100644
--- a/keyboards/phantom/rules.mk
+++ b/keyboards/phantom/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/pinky/rules.mk b/keyboards/pinky/rules.mk
index 395afeff0e..2e315382ff 100644
--- a/keyboards/pinky/rules.mk
+++ b/keyboards/pinky/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes
diff --git a/keyboards/plaid/rules.mk b/keyboards/plaid/rules.mk
index e020114b33..068ebe4ba9 100644
--- a/keyboards/plaid/rules.mk
+++ b/keyboards/plaid/rules.mk
@@ -17,10 +17,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -28,12 +28,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index 7fb0dec50f..ff4d8daedc 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -5,11 +5,11 @@ MCU = STM32F303
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index c6298d247b..34ef052487 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -163,12 +163,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SYMB] = LAYOUT_planck_grid(
esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
del, at, dlr, eql, lprn, lbrc, rbrc, rprn, astr, hash, plus, gbp,
- caps, grv, pipe, bsls, lcbr, tild, circ, rcbr, ampr, exlm, perc, caps,
+ ____, grv, pipe, bsls, lcbr, tild, circ, rcbr, ampr, exlm, perc, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
),
[MOVE] = LAYOUT_planck_grid(
- esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, xxxx,
+ esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, caps,
del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx,
____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
diff --git a/keyboards/planck/keymaps/samuel/README.org b/keyboards/planck/keymaps/samuel/README.org
index 3c0f08a9d9..d38b8fc3b5 100644
--- a/keyboards/planck/keymaps/samuel/README.org
+++ b/keyboards/planck/keymaps/samuel/README.org
@@ -7,117 +7,162 @@ before, so bear with me.
* Layers
-#+BEGIN_COMMENT
-#+NAME: empty-layer
-| <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> |
-|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
-| - | - | - | - | - | - | - | - | - | - | - | - |
-| - | - | - | - | - | - | - | - | - | - | - | - |
-| - | - | - | - | - | - | - | - | - | - | - | - |
-| - | - | - | - | - | - | - | - | - | - | - | - |
-|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
-#+END_COMMENT
-
-This is my "pretty" org mode organized table for my main dvorak layer. If you
-don't use org mode, it won't be that exciting, but if you enjoy working in org
-mode, you can edit this table directly, and this file is tangled to the actual
-keymap. No more organizing spaces or converting to and from comments.
-
-#+NAME: home-layer
-|--------+--------+------+------+------+-----+-----+-----+------+-------+--------+--------|
-| T_LRSE | QUOT | COMM | DOT | P | Y | F | G | C | R | L | T_RRSE |
-| T_LSFT | A | O | E | U | I | D | H | T | N | S | T_RSFT |
-| T_LCTL | SCLN | Q | J | K | X | B | M | W | V | Z | T_RCTL |
-| T_LGUI | T_LALT | UP | DOWN | BSPC | TAB | ENT | SPC | LEFT | RIGHT | T_RALT | T_RGUI |
-|--------+--------+------+------+------+-----+-----+-----+------+-------+--------+--------|
-
-This qwerty layout is just so normal people can try out the board. Tap keys
-would need to be customized I think, more on that later. I also put another
-dvorak key here because I have nightmares of getting trapped in this forsaken
-layout.
-
-#+NAME: qwerty-layer
-|--------+--------+----+------+------+-----+-----+-----+------+-------+--------+--------|
-| T_LRSE | Q | W | E | R | T | Y | U | I | O | P | T_RRSE |
-| T_LSFT | A | S | D | F | G | H | J | K | L | SCLN | T_RSFT |
-| T_LCTL | Z | X | C | V | B | N | M | COMM | DOT | QUOT | T_RCTL |
-| T_LGUI | T_LALT | UP | DOWN | BSPC | TAB | ENT | SPC | LEFT | RIGHT | T_RALT | DVORAK |
-|--------+--------+----+------+------+-----+-----+-----+------+-------+--------+--------|
-
-I tried to keep my layout bare bones, just what would be available on a normal
-keyboard, minus some keys I never used. This one secondary layer should cover a
-majority of the keys not found on the home layer. The bottom left copies a normal
-keyboards symbols from shifted numbers, and the rest is placed where convenient,
-with some considerations for one handed use, hence the shortcuts in the top
-left.
-
-#+NAME: secondary-layer
-|--------+--------+--------+--------+--------+------+------+-----+--------+--------+-------+--------|
-| -- | EZUNDO | EZCOPY | EZCUT | EZPSTE | INS | EQL | 7 | 8 | 9 | -- | -- |
-| EZSHFT | ESC | CAPS | PGUP | PGDN | HOME | ASTR | 4 | 5 | 6 | 0 | EZSHFT |
-| EZCTRL | EXLM | AT | HASH | DLR | PERC | CIRC | 1 | 2 | 3 | COM | EZCTRL |
-| EZGUI | EZALT | EZUP | EZDOWN | SPC | AMPR | PIPE | END | EZLEFT | EZRGHT | EZALT | EZGUI |
-|--------+--------+--------+--------+--------+------+------+-----+--------+--------+-------+--------|
-
-Basic command layer for one-shot macros and function keys.
-
-#+NAME: command-layer
-|----+-----+-----+-----+-----+--------+--------+------+-------+------+-----+----|
-| -- | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | -- |
-| -- | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | -- |
-| -- | F21 | F22 | F23 | F24 | QWERTY | DVORAK | USER | EMAIL | NAME | -- | -- |
-| -- | -- | -- | -- | -- | -- | -- | DIR | -- | -- | -- | -- |
-|----+-----+-----+-----+-----+--------+--------+------+-------+------+-----+----|
-
-But wait, we are missing several important keys? well, yes, but the modifier keys
-all do other keys when tapped. More about that in the keymap section.
+ #+BEGIN_COMMENT
+ #+NAME: empty-layer
+ | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> | <6> |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | - | - | - | - | - | - | - | - | - | - | - | - |
+ | - | - | - | - | - | - | - | - | - | - | - | - |
+ | - | - | - | - | - | - | - | - | - | - | - | - |
+ | - | - | - | - | - | - | - | - | - | - | - | - |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ #+END_COMMENT
+
+ This is my "pretty" org mode organized table for my main dvorak layer. If you
+ don't use org mode, it won't be that exciting, but if you enjoy working in org
+ mode, you can edit this table directly, and this file is tangled to the actual
+ keymap. No more organizing spaces or converting to and from comments.
+
+ #+NAME: home-layer
+ |--------+--------+------+------+-----+-----+------+-----+------+-------+--------+--------|
+ | T_LRSE | QUOT | COMM | DOT | P | Y | F | G | C | R | L | T_RRSE |
+ | T_LSFT | A | O | E | U | I | D | H | T | N | S | T_RSFT |
+ | T_LCTL | SCLN | Q | J | K | X | B | M | W | V | Z | T_RCTL |
+ | T_LGUI | T_LALT | UP | DOWN | SPC | EQL | GRAVE | SPC | LEFT | RIGHT | T_RALT | T_RGUI |
+ |--------+--------+------+------+-----+-----+------+-----+------+-------+--------+--------|
+
+ Tap keys. Used only with the "T_" keys above.
+
+ #+NAME: tap-layer
+ |----------+------+---+---+---+---+---+---+---+---+------+----------|
+ | DEL | - | - | - | - | - | - | - | - | - | - | BSPC |
+ | TAB | - | - | - | - | - | - | - | - | - | - | ENTER |
+ | LBRACKET | - | - | - | - | - | - | - | - | - | - | RBRACKET |
+ | SLASH | LPRN | - | - | - | - | - | - | - | - | RPRN | MINS |
+ |----------+------+---+---+---+---+---+---+---+---+------+----------|
+
+ #+NAME: hold-layer
+ |------+------+---+---+---+---+---+---+---+---+------+------|
+ | RISE | - | - | - | - | - | - | - | - | - | - | RISE |
+ | LSFT | - | - | - | - | - | - | - | - | - | - | RSFT |
+ | LCTL | - | - | - | - | - | - | - | - | - | - | RCTL |
+ | LGUI | LALT | - | - | - | - | - | - | - | - | RALT | RGUI |
+ |------+------+---+---+---+---+---+---+---+---+------+------|
+
+ I tried to keep my layout bare bones, just what would be available on a normal
+ keyboard, minus some keys I never used. This one secondary layer should cover a
+ majority of the keys not found on the home layer. The bottom left copies a normal
+ keyboards symbols from shifted numbers, and the rest is placed where convenient,
+ with some considerations for one handed use, hence the shortcuts in the top
+ left.
+
+ #+NAME: secondary-layer
+ |--------+--------+--------+--------+--------+------+--------+-----+--------+--------+-------+--------|
+ | -- | EZUNDO | EZCOPY | EZCUT | EZPSTE | INS | ASTR | 7 | 8 | 9 | -- | -- |
+ | EZSHFT | ESC | CAPS | PGUP | PGDN | HOME | AMPR | 4 | 5 | 6 | 0 | EZSHFT |
+ | EZCTRL | EXLM | AT | HASH | DLR | PERC | CIRC | 1 | 2 | 3 | COM | EZCTRL |
+ | EZGUI | EZALT | EZUP | EZDOWN | SPC | PIPE | BSLASH | END | EZLEFT | EZRGHT | EZALT | EZGUI |
+ |--------+--------+--------+--------+--------+------+--------+-----+--------+--------+-------+--------|
+
+ Basic command layer for one-shot macros and function keys.
+
+ #+NAME: command-layer
+ |----+-----+-----+-----+-----+--------+--------+-----+-----+-----+-----+----|
+ | -- | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | -- |
+ | -- | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | -- |
+ | -- | F21 | F22 | F23 | F24 | QWERTY | DVORAK | -- | -- | -- | -- | -- |
+ | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
+ |----+-----+-----+-----+-----+--------+--------+-----+-----+-----+-----+----|
+
+ This qwerty layout is just so normal people can try out the board. Tap keys
+ would need to be customized I think, more on that later. I also put another
+ dvorak key here because I have nightmares of getting trapped in this forsaken
+ layout.
+
+ #+NAME: qwerty-layer
+ |--------+--------+----+------+-----+-----+------+-----+------+-------+--------+--------|
+ | T_LRSE | Q | W | E | R | T | Y | U | I | O | P | T_RRSE |
+ | T_LSFT | A | S | D | F | G | H | J | K | L | SCLN | T_RSFT |
+ | T_LCTL | Z | X | C | V | B | N | M | COMM | DOT | QUOT | T_RCTL |
+ | T_LGUI | T_LALT | UP | DOWN | SPC | EQL | GRAVE | SPC | LEFT | RIGHT | T_RALT | DVORAK |
+ |--------+--------+----+------+-----+-----+------+-----+------+-------+--------+--------|
+
* Keymap Conversion in Python
-This python can convert that table into the array needed for the keymap file. It
-simply prepends every key with "KC_". I used to use a dictionary to convert some
-keys from the table into qmk keycodes, but the double convertion was
-unneccessary so I just prepended all my macros with KC and moved all the
-implementation to the `process-user-input` function.
-
-#+NAME:layer-to-array
-#+BEGIN_SRC python :var keys=secondary-layer :tangle no
-results = "{"
-row = 0
-while row < len(keys):
- results += '{ '
- key = 0
- while key < len(keys[row]):
- keyName = str(keys[row][key])
+ This python can convert that table into the array needed for the keymap file. It
+ simply prepends every key with "KC_". I used to use a dictionary to convert some
+ keys from the table into qmk keycodes, but the double convertion was
+ unneccessary so I just prepended all my macros with KC and moved all the
+ implementation to the `process-user-input` function.
+
+ #+NAME:layer-to-array
+ #+BEGIN_SRC python :var keys=secondary-layer :tangle no
+ row = 0
+ results = ''
+ while row < len(keys):
+ key = 0
+ while key < len(keys[row]):
+ keyName = str(keys[row][key])
+ if keyName == '--':
+ keyName = 'TRANSPARENT'
+ results += 'KC_' + keyName
+ if key != 11:
+ results += ', '
+ key+=1
+ if row != 3:
+ results += ','
+ results += '\n'
+ row+=1
+ return results
+ #+END_SRC
+
+ Tap keys are technically defined in the mod_lift function. but this is will
+ implement that function from the org table.
+
+ #+NAME:define-tap-key
+ #+BEGIN_SRC python :var row=3 :var col=1 :var id=0 :var tapkeys=tap-layer :var holdkeys=hold-layer :tangle no
+ def getKey(keys, istapkey):
+ if istapkey == True:
+ keyName = str(keys[row][col])
+ else:
+ keyName = str(keys[row][col])
if keyName == '--':
keyName = 'TRANSPARENT'
- results += 'KC_' + keyName
- if key != 11:
- results += ', '
- key+=1
- results += '}'
- if row != 3:
- results += ','
- results += '\n'
- row+=1
-results += '},\n'
-return results
-#+END_SRC
+ if istapkey == False:
+ return 'KC_T_' + keyName, 'KC_' + keyName
+ else:
+ return 'KC_' + keyName
+ tapKeyName = getKey(tapkeys, True)
+ holdKeyMacro, holdKeyName = getKey(holdkeys, False)
+ return """case %s:
+ if (record->event.pressed) {
+ mod_press(%s, %s, %i);
+ } else {
+ mod_lift(%s, %s, %i);
+ }
+ return false;
+ break;""" % (holdKeyMacro, tapKeyName, holdKeyName, id, tapKeyName, holdKeyName, id)
+
+ #+END_SRC
+
* keymap.c
-Now that we laid out our layout, lets lay out our kemap file.
+ Now that we laid out our layout, lets lay out our keymap file.
+
+** Headers
-#+BEGIN_SRC C :noweb yes
+ #+BEGIN_SRC C :noweb yes
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
-#+END_SRC
+ #+END_SRC
** Keycodes
-#+BEGIN_SRC C :noweb yes
+ #+BEGIN_SRC C :noweb yes
// where the 'T_' communicates how the key does something different when tapped.
enum planck_keycodes {
//DVORAK = SAFE_RANGE,
@@ -145,18 +190,14 @@ KC_EZGUI,
KC_EZALT,
KC_DVORAK,
KC_QWERTY,
-KC_USER,
-KC_EMAIL,
-KC_NAME,
-KC_DIR,
KC_COM
};
-#+END_SRC
+ #+END_SRC
** Import Key table
-#+BEGIN_SRC C :noweb yes
+ #+BEGIN_SRC C :noweb yes
enum planck_layers {
_DVORAK,
_QWERTY,
@@ -166,457 +207,286 @@ _COMMAND
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
-[_DVORAK] =
-
-#+END_SRC
+ #+END_SRC
-#+BEGIN_SRC C :noweb yes
+ #+BEGIN_SRC C :noweb yes
+[_DVORAK] = LAYOUT_planck_grid(
<<layer-to-array(home-layer)>>
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
-[_QWERTY] =
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
+),
+[_QWERTY] = LAYOUT_planck_grid(
<<layer-to-array(qwerty-layer)>>
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
-[_RISE] =
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
+),
+[_RISE] = LAYOUT_planck_grid(
<<layer-to-array(secondary-layer)>>
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
-[_COMMAND] =
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
+),
+[_COMMAND] = LAYOUT_planck_grid(
<<layer-to-array(command-layer)>>
-
-#+END_SRC
-
-#+BEGIN_SRC C :noweb yes
+)
};
-#+END_SRC
+ #+END_SRC
** Tap Keys
-I don't like tap keys coming out on release. When modified, I often let go of
-the modifier too early because the tap button doesn't come out untill release. I
-guess you could save the state of the board on press and then apply it after the
-timer, but what I really want is the keys to come out on press when they can and
-when it is most useful. For me, that is when they are modified a single time. So
-I kind "locked" the board into only doing single modifiers, making them faster.
-Disadvantages are double modified keys must be done with one shot keys (its
-actually not that bad, it feels like emacs!) and triple modified keys are
-impossible at the moment.
-
-#+BEGIN_SRC C :noweb yes
-
-static uint16_t tap_timer = 0;
-char last_mod = 10;
-
-void mod_press(uint16_t tap_code, uint16_t hold_code, int id) {
- // this first if body makes double modified keys impossible, but stops the
- // delay when modifying a tap key which would result in the tap key not
- // getting modified.
- if (last_mod != id && last_mod != 10) {
- tap_code16(tap_code);
- last_mod = 10;
- } else {
- tap_timer = timer_read();
- last_mod = id;
- register_code(hold_code);
- }
-}
-
-void mod_lift(uint16_t tap_code, uint16_t hold_code, int id) {
- unregister_code(hold_code);
- if (last_mod == id && timer_elapsed(tap_timer) < TAPPING_TERM) {
- tap_code16(tap_code);
- last_mod = 10;
- }
-}
-
-#+END_SRC
-
+ I don't like tap keys coming out on release. When modified, I often let go of
+ the modifier too early because the tap button doesn't come out untill release. I
+ guess you could save the state of the board on press and then apply it after the
+ timer, but what I really want is the keys to come out on press when they can and
+ when it is most useful. For me, that is when they are modified a single time. So
+ I kind of "locked" the board into only doing single modifiers, making them faster.
+ Disadvantages are double modified keys must be done with one shot keys (its
+ actually not that bad, it feels like emacs!) and triple modified keys are
+ impossible at the moment.
+
+ #+BEGIN_SRC C :noweb yes
+
+ static uint16_t tap_timer = 0;
+ char last_mod = 10;
+
+ void mod_press(uint16_t tap_code, uint16_t hold_code, int id) {
+ /* this first if body makes double modified keys impossible, but stops the */
+ /* delay when modifying a tap key which would result in the tap key not */
+ /* getting modified. */
+ if (last_mod != id && last_mod != 10) {
+ tap_code16(tap_code);
+ last_mod = 10;
+ } else {
+ tap_timer = timer_read();
+ last_mod = id;
+ register_code(hold_code);
+ }
+ }
+
+ void mod_lift(uint16_t tap_code, uint16_t hold_code, int id) {
+ unregister_code(hold_code);
+ if (last_mod == id && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(tap_code);
+ }
+ last_mod = 10;
+ }
+
+ #+END_SRC
** Process User Input
-#+BEGIN_SRC C :noweb yes
+ #+BEGIN_SRC C :noweb yes
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
-#+END_SRC
-
-** Layouts
-
-Set Dvorak layout
-
-#+BEGIN_SRC C :noweb yes
-case KC_DVORAK:
-if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
-}
-return true;
-break;
-
-#+END_SRC
-
-Set Qwerty layout.
-
-#+BEGIN_SRC C :noweb yes
-case KC_QWERTY:
-if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
-}
-return true;
-break;
-
-#+END_SRC
-
-** Alt and ()
-
-Left and right alt are ( and ) when tapped. I put them on alt instead of a more
-conveniant key like control because parentheses do not need to be shift modified
-ever, unlike some other tap keys seen in the next sections.
-
-#+BEGIN_SRC C :noweb yes
-case KC_T_LALT:
-if (record->event.pressed) {
- mod_press(S(KC_9), KC_LALT, 0);
-} else {
- mod_lift(S(KC_9), KC_LALT, 0);
-}
-return false;
-break;
-case KC_T_RALT:
-if (record->event.pressed) {
- mod_press(S(KC_0), KC_RALT, 1);
-} else {
- mod_lift(S(KC_0), KC_RALT, 1);
-}
-return false;
-break;
-
-#+END_SRC
-
-** Gui and `\
-
-I place gui in the bottom corner because I believe it is the hardest key to
-reach, so gui seemed like a good fit for a dedicated key that I never want to
-have to spam. For tap keys, I used equally unused keys that are not apart of the
-number pad or shifted number keys.
-
-#+BEGIN_SRC C :noweb yes
-case KC_T_LGUI:
-if (record->event.pressed) {
- mod_press(KC_GRAVE, KC_LGUI, 2);
-} else {
- mod_lift(KC_GRAVE, KC_LGUI, 2);
-}
-return false;
-break;
-case KC_T_RGUI:
-if (record->event.pressed) {
- mod_press(KC_BSLASH, KC_RGUI, 3);
-} else {
- mod_lift(KC_BSLASH, KC_RGUI, 3);
-}
-return false;
-break;
-
-#+END_SRC
-
-** Ctrl and []
-
-Left and right control are [] respectively when they are tapped, making { and }
-also very convenient.
-
-#+BEGIN_SRC C :noweb yes
-case KC_T_LCTL:
-if (record->event.pressed) {
- mod_press(KC_LBRACKET, KC_LCTL, 4);
-} else {
- mod_lift(KC_LBRACKET, KC_LCTL, 4);
-}
-return false;
-break;
-case KC_T_RCTL:
-if (record->event.pressed) {
- mod_press(KC_RBRACKET, KC_RCTL, 5);
-} else {
- mod_lift(KC_RBRACKET, KC_RCTL, 5);
-}
-return false;
-break;
-
-#+END_SRC
-
-** Shft and =-
-
-I place shift on the home row, so having '-' right of my pinkie is standard, and
-it only felt natural to put its opposite, '=/+' on the other side. I put an
-extra one on the right side in the secondary layer for the num pad.
-
-#+BEGIN_SRC C :noweb yes
-case KC_T_LSFT:
-if (record->event.pressed) {
- mod_press(KC_EQUAL, KC_LSFT, 6);
-} else {
- mod_lift(KC_EQUAL, KC_LSFT, 6);
-}
-return false;
-break;
-case KC_T_RSFT:
-if (record->event.pressed) {
- mod_press(KC_MINUS, KC_RSFT, 7);
-} else {
- mod_lift(KC_MINUS, KC_RSFT, 7);
-}
-return false;
-break;
-
-#+END_SRC
-
-** Rise, DEL, and /
-
-I use the top corners as rise because I decided that I do not like using layers
-with my thumbs. It feels uncomfortable to hold keys down with the side of my
-thumb, and backspace, tab, enter, and spacebar keep them satisfied. My pinky is
-for holding modifiers, so it makes sense to put the layer key with the other
-modifiers. Both my left and right layer keys activate the same layer which also
-makes sense to me. You wouldn't want left and right shift to do different things
-
-I used to have escape in the top left, but I use delete a lot more, and putting
-escape under a layer has not been a problem at all. I put / in the top right
-corner again mimicing a standard dvorak keyboard.
-
-#+BEGIN_SRC C :noweb yes
-case KC_T_LRSE:
-if (record->event.pressed) {
- tap_timer = timer_read();
- last_mod = 8;
- layer_on(_RISE);
-} else {
- layer_off(_RISE);
- if (last_mod == 8 && timer_elapsed(tap_timer) < TAPPING_TERM) {
- tap_code16(KC_DELETE);
- last_mod = 10;
- }
-}
-return false;
-break;
-case KC_T_RRSE:
-if (record->event.pressed) {
- tap_timer = timer_read();
- last_mod = 9;
- layer_on(_RISE);
-} else {
- layer_off(_RISE);
- if (last_mod == 9 && timer_elapsed(tap_timer) < TAPPING_TERM) {
- tap_code16(KC_SLASH);
- last_mod = 10;
- }
-}
-return false;
-break;
-
-#+END_SRC
-
-** EZ Keys
-
-EZ or "easy" keys do things that can already be done on the board, but I want an
-easier way of doing them.
-
-*** One Shot Keys
-
-Since I made modified tap keys occur on press instead of release, I need one
-shot keys to press any key with more than one modifier.
-
-#+BEGIN_SRC C :noweb yes
-case KC_EZSHFT:
-if (record->event.pressed) {
- set_oneshot_mods(MOD_LSFT);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZCTRL:
-if (record->event.pressed) {
- set_oneshot_mods(MOD_LCTL);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZALT:
-if (record->event.pressed) {
- set_oneshot_mods(MOD_LALT);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZGUI:
-if (record->event.pressed) {
- set_oneshot_mods(MOD_LGUI);
- last_mod = 10;
-}
-return false;
-break;
-
-#+END_SRC
-
-*** Arrows
-
-I use ctrl+shift+arrows keys a lot, so when the layer key is pressed they became
-lazy versions of themselves with control and shift already pressed.
-
-I also added undo, copy, paste, and cut to be easily available with only the
-left hand like on a qwerty or colemek keyboard.
-
-#+BEGIN_SRC C :noweb yes
-case KC_EZRGHT:
-if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_RGHT));
- unregister_code(KC_LCTL);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZLEFT:
-if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_LEFT));
- unregister_code(KC_LCTL);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZDOWN:
-if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_DOWN));
- unregister_code(KC_LCTL);
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZUP:
-if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_UP));
- unregister_code(KC_LCTL);
- last_mod = 10;
-}
-return false;
-break;
-#+END_SRC
-
-*** Undo, Copy, Cut, Paste
-
-#+BEGIN_SRC C :noweb yes
-case KC_EZUNDO:
-if (record->event.pressed) {
- tap_code16(C(KC_Z));
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZCOPY:
-if (record->event.pressed) {
- tap_code16(C(KC_C));
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZCUT:
-if (record->event.pressed) {
- tap_code16(C(KC_X));
- last_mod = 10;
-}
-return false;
-break;
-case KC_EZPSTE:
-if (record->event.pressed) {
- tap_code16(C(KC_V));
- last_mod = 10;
-}
-return false;
-break;
-#+END_SRC
-
-** Commands
-
-Start command layer one shot
-
-#+BEGIN_SRC C :noweb yes
-case KC_COM:
-if (record->event.pressed) {
- layer_on(_COMMAND);
- set_oneshot_layer(_COMMAND, ONESHOT_START);
- last_mod = 10;
-} else {
- clear_oneshot_layer_state (ONESHOT_PRESSED);
-}
-return false;
-break;
-#+END_SRC
-
-Just some strings I notice that I type a lot.
-
-#+BEGIN_SRC C :noweb yes
-case KC_USER:
-if (record->event.pressed) {
- send_string("mhostley");
- last_mod = 10;
-}
-return true;
-break;
-case KC_EMAIL:
-if (record->event.pressed) {
- send_string("mhostley@gmail.com");
- last_mod = 10;
-}
-return true;
-break;
-case KC_NAME:
-if (record->event.pressed) {
- send_string("Samuel Jahnke");
- last_mod = 10;
-}
-return true;
-break;
-case KC_DIR:
-if (record->event.pressed) {
- send_string("home/mhostley/");
- last_mod = 10;
-}
-return true;
-break;
-
-#+END_SRC
-
-** Standard inputs interupt tap
-
-Finally, if just a standard key is tapped, set the interupted flag.
-Keep this last.
-
-#+BEGIN_SRC C :noweb yes
-}
-last_mod = 10;
-return true;
-}
-#+END_SRC
+ #+END_SRC
+
+*** Layouts
+
+ Set Dvorak layout
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return true;
+ break;
+
+ #+END_SRC
+
+ Set Qwerty layout.
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return true;
+ break;
+
+ #+END_SRC
+
+*** Custom Keys
+**** Command Layer One Shot
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_COM:
+ if (record->event.pressed) {
+ layer_on(_COMMAND);
+ set_oneshot_layer(_COMMAND, ONESHOT_START);
+ last_mod = 10;
+ } else {
+ clear_oneshot_layer_state (ONESHOT_PRESSED);
+ }
+ return false;
+ break;
+ #+END_SRC
+
+**** Tap Keys
+
+ #+BEGIN_SRC C :noweb yes
+ <<define-tap-key(3, 1, 0)>>
+ <<define-tap-key(3, 10, 1)>>
+ <<define-tap-key(3, 0, 2)>>
+ <<define-tap-key(3, 11, 3)>>
+ <<define-tap-key(2, 0, 4)>>
+ <<define-tap-key(2, 11, 5)>>
+ <<define-tap-key(1, 0, 6)>>
+ <<define-tap-key(1, 11, 7)>>
+ #+END_SRC
+
+**** Rise Keys
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_T_LRSE:
+ if (record->event.pressed) {
+ tap_timer = timer_read();
+ last_mod = 8;
+ layer_on(_RISE);
+ } else {
+ layer_off(_RISE);
+ if (last_mod == 8 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_DELETE);
+ last_mod = 10;
+ }
+ }
+ return false;
+ break;
+ case KC_T_RRSE:
+ if (record->event.pressed) {
+ tap_timer = timer_read();
+ last_mod = 9;
+ layer_on(_RISE);
+ } else {
+ layer_off(_RISE);
+ if (last_mod == 9 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_BSPACE);
+ last_mod = 10;
+ }
+ }
+ return false;
+ break;
+
+ #+END_SRC
+
+**** One Shot Keys
+
+ Since I made modified tap keys occur on press instead of release, I need one
+ shot keys to press any key with more than one modifier.
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_EZSHFT:
+ if (record->event.pressed) {
+ set_oneshot_mods(MOD_LSFT);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZCTRL:
+ if (record->event.pressed) {
+ set_oneshot_mods(MOD_LCTL);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZALT:
+ if (record->event.pressed) {
+ set_oneshot_mods(MOD_LALT);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZGUI:
+ if (record->event.pressed) {
+ set_oneshot_mods(MOD_LGUI);
+ last_mod = 10;
+ }
+ return false;
+ break;
+
+ #+END_SRC
+
+**** C-S Arrows
+
+ I use ctrl+shift+arrows keys a lot, so when the layer key is pressed they became
+ lazy versions of themselves with control and shift already pressed.
+
+ I also added undo, copy, paste, and cut to be easily available with only the
+ left hand like on a qwerty or colemek keyboard.
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_EZRGHT:
+ if (record->event.pressed) {
+ register_code(KC_LCTL);
+ tap_code16(S(KC_RGHT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZLEFT:
+ if (record->event.pressed) {
+ register_code(KC_LCTL);
+ tap_code16(S(KC_LEFT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZDOWN:
+ if (record->event.pressed) {
+ register_code(KC_LCTL);
+ tap_code16(S(KC_DOWN));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZUP:
+ if (record->event.pressed) {
+ register_code(KC_LCTL);
+ tap_code16(S(KC_UP));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+ }
+ return false;
+ break;
+ #+END_SRC
+
+**** Undo, Copy, Cut, Paste
+
+ #+BEGIN_SRC C :noweb yes
+ case KC_EZUNDO:
+ if (record->event.pressed) {
+ tap_code16(C(KC_Z));
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZCOPY:
+ if (record->event.pressed) {
+ tap_code16(C(KC_C));
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZCUT:
+ if (record->event.pressed) {
+ tap_code16(C(KC_X));
+ last_mod = 10;
+ }
+ return false;
+ break;
+ case KC_EZPSTE:
+ if (record->event.pressed) {
+ tap_code16(C(KC_V));
+ last_mod = 10;
+ }
+ return false;
+ break;
+ #+END_SRC
+
+*** Standard inputs interupt tap
+
+ Finally, if just a standard key is tapped, set the interupted flag.
+ Keep this last.
+
+ #+BEGIN_SRC C :noweb yes
+ }
+ last_mod = 10;
+ return true;
+ }
+ #+END_SRC
diff --git a/keyboards/planck/keymaps/samuel/keymap.c b/keyboards/planck/keymaps/samuel/keymap.c
index ff1424489f..20e64a022b 100644
--- a/keyboards/planck/keymaps/samuel/keymap.c
+++ b/keyboards/planck/keymaps/samuel/keymap.c
@@ -29,10 +29,6 @@ KC_EZGUI,
KC_EZALT,
KC_DVORAK,
KC_QWERTY,
-KC_USER,
-KC_EMAIL,
-KC_NAME,
-KC_DIR,
KC_COM
};
@@ -45,47 +41,39 @@ _COMMAND
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_DVORAK] =
-
-{{ KC_T_LRSE, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_T_RRSE},
-{ KC_T_LSFT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_T_RSFT},
-{ KC_T_LCTL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_T_RCTL},
-{ KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_BSPC, KC_TAB, KC_ENT, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_T_RGUI}
-},
-
-[_QWERTY] =
-
-{{ KC_T_LRSE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_T_RRSE},
-{ KC_T_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_T_RSFT},
-{ KC_T_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, KC_T_RCTL},
-{ KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_BSPC, KC_TAB, KC_ENT, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_DVORAK}
-},
-
-[_RISE] =
-
-{{ KC_TRANSPARENT, KC_EZUNDO, KC_EZCOPY, KC_EZCUT, KC_EZPSTE, KC_INS, KC_EQL, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_TRANSPARENT},
-{ KC_EZSHFT, KC_ESC, KC_CAPS, KC_PGUP, KC_PGDN, KC_HOME, KC_ASTR, KC_4, KC_5, KC_6, KC_0, KC_EZSHFT},
-{ KC_EZCTRL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_1, KC_2, KC_3, KC_COM, KC_EZCTRL},
-{ KC_EZGUI, KC_EZALT, KC_EZUP, KC_EZDOWN, KC_SPC, KC_AMPR, KC_PIPE, KC_END, KC_EZLEFT, KC_EZRGHT, KC_EZALT, KC_EZGUI}
-},
-
-[_COMMAND] =
-
-{{ KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_F21, KC_F22, KC_F23, KC_F24, KC_QWERTY, KC_DVORAK, KC_USER, KC_EMAIL, KC_NAME, KC_TRANSPARENT, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_DIR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT}
-},
-
+[_DVORAK] = LAYOUT_planck_grid(
+KC_T_LRSE, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_T_RRSE,
+KC_T_LSFT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_T_RSFT,
+KC_T_LCTL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_T_RCTL,
+KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_SPC, KC_EQL, KC_GRAVE, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_T_RGUI
+),
+[_QWERTY] = LAYOUT_planck_grid(
+KC_T_LRSE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_T_RRSE,
+KC_T_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_T_RSFT,
+KC_T_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, KC_T_RCTL,
+KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_SPC, KC_EQL, KC_GRAVE, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_DVORAK
+),
+[_RISE] = LAYOUT_planck_grid(
+KC_TRANSPARENT, KC_EZUNDO, KC_EZCOPY, KC_EZCUT, KC_EZPSTE, KC_INS, KC_ASTR, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_TRANSPARENT,
+KC_EZSHFT, KC_ESC, KC_CAPS, KC_PGUP, KC_PGDN, KC_HOME, KC_AMPR, KC_4, KC_5, KC_6, KC_0, KC_EZSHFT,
+KC_EZCTRL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_1, KC_2, KC_3, KC_COM, KC_EZCTRL,
+KC_EZGUI, KC_EZALT, KC_EZUP, KC_EZDOWN, KC_SPC, KC_PIPE, KC_BSLASH, KC_END, KC_EZLEFT, KC_EZRGHT, KC_EZALT, KC_EZGUI
+),
+[_COMMAND] = LAYOUT_planck_grid(
+KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRANSPARENT,
+KC_TRANSPARENT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRANSPARENT,
+KC_TRANSPARENT, KC_F21, KC_F22, KC_F23, KC_F24, KC_QWERTY, KC_DVORAK, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
+KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
+)
};
static uint16_t tap_timer = 0;
char last_mod = 10;
void mod_press(uint16_t tap_code, uint16_t hold_code, int id) {
- // this first if body makes double modified keys impossible, but stops the
- // delay when modifying a tap key which would result in the tap key not
- // getting modified.
+ /* this first if body makes double modified keys impossible, but stops the */
+ /* delay when modifying a tap key which would result in the tap key not */
+ /* getting modified. */
if (last_mod != id && last_mod != 10) {
tap_code16(tap_code);
last_mod = 10;
@@ -100,8 +88,8 @@ void mod_lift(uint16_t tap_code, uint16_t hold_code, int id) {
unregister_code(hold_code);
if (last_mod == id && timer_elapsed(tap_timer) < TAPPING_TERM) {
tap_code16(tap_code);
- last_mod = 10;
}
+ last_mod = 10;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -121,73 +109,81 @@ if (record->event.pressed) {
return true;
break;
-case KC_T_LALT:
-if (record->event.pressed) {
- mod_press(S(KC_9), KC_LALT, 0);
-} else {
- mod_lift(S(KC_9), KC_LALT, 0);
-}
-return false;
-break;
-case KC_T_RALT:
+case KC_COM:
if (record->event.pressed) {
- mod_press(S(KC_0), KC_RALT, 1);
+ layer_on(_COMMAND);
+ set_oneshot_layer(_COMMAND, ONESHOT_START);
+ last_mod = 10;
} else {
- mod_lift(S(KC_0), KC_RALT, 1);
+ clear_oneshot_layer_state (ONESHOT_PRESSED);
}
return false;
break;
+case KC_T_LALT:
+ if (record->event.pressed) {
+ mod_press(KC_LPRN, KC_LALT, 0);
+ } else {
+ mod_lift(KC_LPRN, KC_LALT, 0);
+ }
+ return false;
+ break;
+case KC_T_RALT:
+ if (record->event.pressed) {
+ mod_press(KC_RPRN, KC_RALT, 1);
+ } else {
+ mod_lift(KC_RPRN, KC_RALT, 1);
+ }
+ return false;
+ break;
case KC_T_LGUI:
-if (record->event.pressed) {
- mod_press(KC_GRAVE, KC_LGUI, 2);
-} else {
- mod_lift(KC_GRAVE, KC_LGUI, 2);
-}
-return false;
-break;
+ if (record->event.pressed) {
+ mod_press(KC_SLASH, KC_LGUI, 2);
+ } else {
+ mod_lift(KC_SLASH, KC_LGUI, 2);
+ }
+ return false;
+ break;
case KC_T_RGUI:
-if (record->event.pressed) {
- mod_press(KC_BSLASH, KC_RGUI, 3);
-} else {
- mod_lift(KC_BSLASH, KC_RGUI, 3);
-}
-return false;
-break;
-
+ if (record->event.pressed) {
+ mod_press(KC_MINS, KC_RGUI, 3);
+ } else {
+ mod_lift(KC_MINS, KC_RGUI, 3);
+ }
+ return false;
+ break;
case KC_T_LCTL:
-if (record->event.pressed) {
- mod_press(KC_LBRACKET, KC_LCTL, 4);
-} else {
- mod_lift(KC_LBRACKET, KC_LCTL, 4);
-}
-return false;
-break;
+ if (record->event.pressed) {
+ mod_press(KC_LBRACKET, KC_LCTL, 4);
+ } else {
+ mod_lift(KC_LBRACKET, KC_LCTL, 4);
+ }
+ return false;
+ break;
case KC_T_RCTL:
-if (record->event.pressed) {
- mod_press(KC_RBRACKET, KC_RCTL, 5);
-} else {
- mod_lift(KC_RBRACKET, KC_RCTL, 5);
-}
-return false;
-break;
-
+ if (record->event.pressed) {
+ mod_press(KC_RBRACKET, KC_RCTL, 5);
+ } else {
+ mod_lift(KC_RBRACKET, KC_RCTL, 5);
+ }
+ return false;
+ break;
case KC_T_LSFT:
-if (record->event.pressed) {
- mod_press(KC_EQUAL, KC_LSFT, 6);
-} else {
- mod_lift(KC_EQUAL, KC_LSFT, 6);
-}
-return false;
-break;
+ if (record->event.pressed) {
+ mod_press(KC_TAB, KC_LSFT, 6);
+ } else {
+ mod_lift(KC_TAB, KC_LSFT, 6);
+ }
+ return false;
+ break;
case KC_T_RSFT:
-if (record->event.pressed) {
- mod_press(KC_MINUS, KC_RSFT, 7);
-} else {
- mod_lift(KC_MINUS, KC_RSFT, 7);
-}
-return false;
-break;
+ if (record->event.pressed) {
+ mod_press(KC_ENTER, KC_RSFT, 7);
+ } else {
+ mod_lift(KC_ENTER, KC_RSFT, 7);
+ }
+ return false;
+ break;
case KC_T_LRSE:
if (record->event.pressed) {
@@ -211,7 +207,7 @@ if (record->event.pressed) {
} else {
layer_off(_RISE);
if (last_mod == 9 && timer_elapsed(tap_timer) < TAPPING_TERM) {
- tap_code16(KC_SLASH);
+ tap_code16(KC_BSPACE);
last_mod = 10;
}
}
@@ -313,46 +309,6 @@ if (record->event.pressed) {
return false;
break;
-case KC_COM:
-if (record->event.pressed) {
- layer_on(_COMMAND);
- set_oneshot_layer(_COMMAND, ONESHOT_START);
- last_mod = 10;
-} else {
- clear_oneshot_layer_state (ONESHOT_PRESSED);
-}
-return false;
-break;
-
-case KC_USER:
-if (record->event.pressed) {
- send_string("mhostley");
- last_mod = 10;
-}
-return true;
-break;
-case KC_EMAIL:
-if (record->event.pressed) {
- send_string("mhostley@gmail.com");
- last_mod = 10;
-}
-return true;
-break;
-case KC_NAME:
-if (record->event.pressed) {
- send_string("Samuel Jahnke");
- last_mod = 10;
-}
-return true;
-break;
-case KC_DIR:
-if (record->event.pressed) {
- send_string("home/mhostley/");
- last_mod = 10;
-}
-return true;
-break;
-
}
last_mod = 10;
return true;
diff --git a/keyboards/planck/light/rules.mk b/keyboards/planck/light/rules.mk
index 0d86bb8a55..e64f6e2f18 100644
--- a/keyboards/planck/light/rules.mk
+++ b/keyboards/planck/light/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev1/rules.mk b/keyboards/planck/rev1/rules.mk
index 3c85e172be..98ae26cbed 100644
--- a/keyboards/planck/rev1/rules.mk
+++ b/keyboards/planck/rev1/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev2/rules.mk b/keyboards/planck/rev2/rules.mk
index 3c85e172be..98ae26cbed 100644
--- a/keyboards/planck/rev2/rules.mk
+++ b/keyboards/planck/rev2/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk
index 3c85e172be..98ae26cbed 100644
--- a/keyboards/planck/rev3/rules.mk
+++ b/keyboards/planck/rev3/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk
index 299ee4aadc..8454ea0e72 100644
--- a/keyboards/planck/rev4/rules.mk
+++ b/keyboards/planck/rev4/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev5/rules.mk b/keyboards/planck/rev5/rules.mk
index 3c95f132c9..4958572545 100644
--- a/keyboards/planck/rev5/rules.mk
+++ b/keyboards/planck/rev5/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = qmk-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index 429fc50a2c..49f6088c37 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -5,11 +5,11 @@ MCU = STM32F303
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/playkbtw/ca66/rules.mk b/keyboards/playkbtw/ca66/rules.mk
index 28cb37adec..c3371db0f9 100644
--- a/keyboards/playkbtw/ca66/rules.mk
+++ b/keyboards/playkbtw/ca66/rules.mk
@@ -15,9 +15,9 @@ BOOTLOADER = atmel-dfu
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = lite
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/playkbtw/pk60/rules.mk b/keyboards/playkbtw/pk60/rules.mk
index 2c812e3658..23b1868429 100644
--- a/keyboards/playkbtw/pk60/rules.mk
+++ b/keyboards/playkbtw/pk60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/preonic/keymaps/alfrdmalr/config.h b/keyboards/preonic/keymaps/alfrdmalr/config.h
new file mode 100644
index 0000000000..d906664c95
--- /dev/null
+++ b/keyboards/preonic/keymaps/alfrdmalr/config.h
@@ -0,0 +1,40 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PREONIC_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#define LEADER_TIMEOUT 400
+#define LEADER_PER_KEY_TIMING
diff --git a/keyboards/preonic/keymaps/alfrdmalr/keymap.c b/keyboards/preonic/keymaps/alfrdmalr/keymap.c
new file mode 100644
index 0000000000..c2a682d4a3
--- /dev/null
+++ b/keyboards/preonic/keymaps/alfrdmalr/keymap.c
@@ -0,0 +1,192 @@
+/* Copyright 2015-2017 Jack Humbert 2019-2020 Alfred Maler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+enum preonic_layers {
+ _QWERTY,
+ _SETTINGS,
+ _SYMBOLS,
+ _NAVIGATION,
+ _NUMPAD,
+};
+
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ SYMBOLS,
+ NAVIGATION,
+ NUMPAD,
+ SETTINGS
+};
+
+#define NUMSPACE LT(_NUMPAD, KC_SPC)
+#define NAVLAYER MO(_NAVIGATION)
+#define SYMLAYER MO(_SYMBOLS)
+#define CTRLSHFT C(KC_LSFT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | DEL |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | NAV | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | Z | X | C | V | B | N | M | , | . | / | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | C/S | LGUI | LALT | SYMB | SPACE/NUM | SYMB | RALT | SETT | MUTG | LEAD |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_preonic_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ NAVLAYER, 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, CTRLSHFT, KC_LGUI, KC_LALT, SYMLAYER, NUMSPACE, NUMSPACE, SYMLAYER, KC_RALT, SETTINGS, MU_TOG, KC_LEAD
+),
+
+/* SYMBOLS
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TAB | # | $ | { | } | | | ^ | * | | | ~ | DEL |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ESC | < | > | ( | ) | | | - | + | & | \ | ` |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | ! | @ | [ | ] | | | _ | = | % | / | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_SYMBOLS] = LAYOUT_preonic_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_TAB, KC_HASH, KC_DOLLAR, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_CIRC, KC_ASTR, KC_PIPE, KC_TILD, KC_DEL,
+ KC_NO, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_MINS, KC_PLUS, KC_AMPR, KC_BSLS, KC_GRV,
+ KC_LSFT, KC_EXCLAIM, KC_AT, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_UNDS, KC_EQL, KC_PERC, KC_SLSH, KC_RSFT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* NAVIGATION
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | | | SPC | F5 | | INS | HOME | END | TAB | | DEL |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | NAV | SHFT | CTRl | ALT | GUI | | LEFT | DOWN | UP | RGHT | | ENTR |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | UNDO | CUT | COPY | PSTE | | SPC | PGDO | PGUP | | | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | ESC | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NAVIGATION] = LAYOUT_preonic_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_TRNS, KC_NO, KC_NO, KC_SPC, KC_F5, KC_NO, KC_INS, KC_HOME, KC_END, KC_TAB, KC_NO, KC_DEL,
+ KC_TRNS, KC_LSFT, KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_ENT,
+ KC_TRNS, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), KC_NO, KC_SPC, KC_PGDN, KC_PGUP, KC_NO, KC_NO, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ESC, KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* NUMPAD
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | F9 | F10 | F11 | F12 | | | 7 | 8 | 9 | - | DEL |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ESC | F5 | F6 | F7 | F8 | SPC | SPC | 4 | 5 | 6 | + | ENTR |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | F1 | F2 | F3 | F4 | ALT | CAPS | 1 | 2 | 3 | / | TRNS |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | 0 | , | . | * | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = LAYOUT_preonic_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_TAB, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_MINS, KC_DEL,
+ KC_ESC, KC_F5, KC_F6, KC_F7, KC_F8, KC_SPC, KC_SPC, KC_4, KC_5, KC_6, KC_PLUS, KC_ENT,
+ KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_LALT, KC_CAPS, KC_1, KC_2, KC_3, KC_SLSH, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_COMM, KC_DOT, KC_ASTR, KC_TRNS
+),
+
+/* SETTINGS
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty| | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | ASTG |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_SETTINGS] = 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,
+ _______, _______, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
+ KC_ASTG, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+};
+
+
+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;
+
+LEADER_EXTERNS();
+
+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
+
+ LEADER_DICTIONARY() {
+ leading = false;
+ SEQ_FIVE_KEYS(KC_R, KC_E, KC_S, KC_E, KC_T) {
+ reset_keyboard();
+ }
+ leader_end();
+ }
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ default:
+ return true;
+ }
+} \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/alfrdmalr/readme.md b/keyboards/preonic/keymaps/alfrdmalr/readme.md
new file mode 100644
index 0000000000..13c5d711cd
--- /dev/null
+++ b/keyboards/preonic/keymaps/alfrdmalr/readme.md
@@ -0,0 +1,80 @@
+# alfrdmalr's preonic layout
+## Overview
+The alphanumeric characters and symbols are spread between three main 'typing' layers: QWERTY, NUMPAD, and SYMBOLS. The NUMPAD layer also holds the first twelve function keys.
+
+A fourth layer, NAVIGATION, contains useful modifiers, shortcuts, and navigation functions like the arrow keys and page up/down. This layer also provides access to the ENTER and ESC keys.
+
+Finally, a SETTINGS layer can be used to adjust certain keyboard-related options. Right now, this is pretty similar to the default settings layer (the planck's ADJUST layer). Primary differences are the inclusion of an autoshift toggle and the removal of the reset button. The bootloader functionality has been moved to a leader key sequence: LEAD - R - E - S - E - T.
+
+```
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | NAV | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | Z | X | C | V | B | N | M | , | . | / | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | C/S | LGUI | LALT | SYMB | SPACE/NUM | SYMB | RALT | SETT |mu tog| LEAD |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ /* SYMBOLS
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | # | $ | { | } | | | ^ | * | | | ~ | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | < | > | ( | ) | | | - | + | & | ` | ENTR |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | ! | @ | [ | ] | | | _ | = | % | / | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ /* NUMPAD
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | F9 | F10 | F11 | F12 | | | 7 | 8 | 9 | - | DEL |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ESC | F5 | F6 | F7 | F8 | SPC | SPC | 4 | 5 | 6 | + | ENTR |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | F1 | F2 | F3 | F4 | ALT | CAPS | 1 | 2 | 3 | / | TRNS |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | 0 | , | . | * | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ /* NAVIGATION
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | | | SPC | F5 | | INS | HOME | END | TAB | | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | NAV | SHIFT| CTRl | ALT | GUI | | LEFT | DOWN | UP | RIGHT| | ENTR |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SHFT | UNDO | CUT | COPY | PASTE| | SPC | PGDO | PGUP | | | SHFT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | ESC | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ /* SETTINGS
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty| | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | ASTG |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ ```
+ ASTG = autoshift toggle
diff --git a/keyboards/preonic/keymaps/alfrdmalr/rules.mk b/keyboards/preonic/keymaps/alfrdmalr/rules.mk
new file mode 100644
index 0000000000..291bb16fab
--- /dev/null
+++ b/keyboards/preonic/keymaps/alfrdmalr/rules.mk
@@ -0,0 +1,3 @@
+SRC += muse.c
+AUTO_SHIFT_ENABLE = yes
+LEADER_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/mverteuil/config.h b/keyboards/preonic/keymaps/mverteuil/config.h
new file mode 100644
index 0000000000..51b278f647
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil/config.h
@@ -0,0 +1,39 @@
+#ifdef AUDIO_ENABLE
+# if __has_include("copyright.h")
+# include "copyright.h"
+# endif
+
+# define AUDIO_CLICKY_DELAY_DURATION 0
+# define AUDIO_CLICKY_FREQ_DEFAULT 100.0f
+# define AUDIO_CLICKY_FREQ_MIN 61.0f
+# define AUDIO_CLICKY_FREQ_RANDOMNESS 0.2f
+# define DAC_SAMPLE_MAX 7000U
+# define STARTUP_SONG SONG(WORKMAN_SOUND)
+# define GOODBYE_SONG SONG(COIN_SOUND)
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/preonic/keymaps/mverteuil/keymap.c b/keyboards/preonic/keymaps/mverteuil/keymap.c
new file mode 100644
index 0000000000..621d60be6a
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil/keymap.c
@@ -0,0 +1,508 @@
+/* Copyright 2015-2017 Jack Humbert, 2019 Matthew de Verteuil
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "mverteuil.h"
+
+/* TapDance Aliases */
+#define TD_LBRK TD(TD_BRACKETS_LEFT)
+#define TD_RBRK TD(TD_BRACKETS_RIGHT)
+#define TD_CLES TD(TD_CONTROL_ESCAPE)
+#define TD_NPFR TD(TD_NUMPAD_FUNCTIONROW)
+#define TD_PLEQ TD(TD_PLUS_EQUALS)
+#define TD_SCOL TD(TD_SEMICOLON_COLON)
+#define TD_SLQU TD(TD_SLASH_QUESTION)
+#define TD_SQDQ TD(TD_QUOTE_DOUBLEQUOTE)
+#define TD_USMI TD(TD_UNDERSCORE_MINUS)
+
+/* Sentinel value for invalid tap dance exit */
+#define TAP_DANCE_NO_MATCH 64
+
+enum preonic_layers {
+ _QWERTY,
+ _FUNCTIONROW,
+ _NUMPAD,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ NUMPAD,
+ LOWER,
+ RAISE,
+ BACKLIT,
+};
+
+enum tapdance_keycodes {
+ TD_BRACKETS_LEFT,
+ TD_BRACKETS_RIGHT,
+ TD_CONTROL_ESCAPE,
+ TD_NUMPAD_FUNCTIONROW,
+ TD_PLUS_EQUALS,
+ TD_QUOTE_DOUBLEQUOTE,
+ TD_SEMICOLON_COLON,
+ TD_SLASH_QUESTION,
+ TD_UNDERSCORE_MINUS,
+};
+
+typedef enum {
+ SINGLE_TAP,
+ SINGLE_HOLD,
+ DOUBLE_TAP,
+ DOUBLE_HOLD,
+ TRIPLE_TAP,
+ TRIPLE_HOLD,
+} t_tap_state;
+
+typedef struct {
+ t_tap_state left_brackets;
+ t_tap_state numpad_funcrow;
+ t_tap_state right_brackets;
+} t_tap;
+
+t_tap_state get_tapdance_state(qk_tap_dance_state_t *state);
+
+void td_numpad_funcrow_finished(qk_tap_dance_state_t *state, void *user_data);
+void td_numpad_funcrow_reset(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_left_finished(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_left_reset(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_right_finished(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_right_reset(qk_tap_dance_state_t *state, void *user_data);
+
+/* Tap Dance Definitions */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ /* Tap once for left parenthesis, twice for left bracket, thrice for left brace */
+ [TD_BRACKETS_LEFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_brackets_left_finished, td_brackets_left_reset),
+ /* Tap once for right parenthesis, twice for right bracket, thrice for right brace */
+ [TD_BRACKETS_RIGHT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_brackets_right_finished, td_brackets_right_reset),
+ /* Tap once for control, twice for escape */
+ [TD_CONTROL_ESCAPE] = ACTION_TAP_DANCE_DOUBLE(KC_LCTRL, KC_ESCAPE),
+ /* Tap once for plus, twice for equals */
+ [TD_PLUS_EQUALS] = ACTION_TAP_DANCE_DOUBLE(KC_PLUS, KC_EQUAL),
+ /* Hold for numpad, tap twice to toggle function row, double hold for temporary function row */
+ [TD_NUMPAD_FUNCTIONROW] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_numpad_funcrow_finished, td_numpad_funcrow_reset),
+ /* Tap once for single quote, twice for double quote */
+ [TD_QUOTE_DOUBLEQUOTE] = ACTION_TAP_DANCE_DOUBLE(KC_QUOTE, KC_DOUBLE_QUOTE),
+ /* Tap once for semicolon, twice for colon */
+ [TD_SEMICOLON_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCOLON, KC_COLON),
+ /* Tap once for slash, twice for question mark */
+ [TD_SLASH_QUESTION] = ACTION_TAP_DANCE_DOUBLE(KC_SLASH, KC_QUESTION),
+ /* Tap once for underscore, twice for minus */
+ [TD_UNDERSCORE_MINUS] = ACTION_TAP_DANCE_DOUBLE(KC_UNDERSCORE, KC_MINUS),
+};
+
+/* clang-format off */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | ! | @ | # | $ | % | ^ | & | * | _ - | + = | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | ' " |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |CtlEsc| A | S | D | F | G | H | J | K | L | ; : | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up | GUI |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |NP FRw| Ctrl | Alt | GUI |Lower | Space |Raise | / ? | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_preonic_1x2uC (
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, TD_USMI, TD_PLEQ, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD_SQDQ,
+ TD_CLES, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD_SCOL, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RGUI,
+ TD_NPFR, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, TD_SLQU, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Function Row
+ * ,-----------------------------------------------------------------------------------.
+ * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FUNCTIONROW] = LAYOUT_preonic_1x2uC (
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Numpad
+ * ,------+------+------+------+------+------|------+------+------+------+------+------.
+ * | | | | | | | | Tab | / | * |Bksp | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | 7 | 8 | 9 | - | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | 4 | 5 | 6 | + | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | 1 | 2 | 3 |Enter | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | 0 | . |Enter | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = LAYOUT_preonic_1x2uC (
+ _______, _______, _______, _______, _______, _______, _______, KC_TAB, KC_SLSH, KC_PAST, KC_BSPC, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_PDOT, KC_PENT, _______
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | Vol+ | | | | | | | | Play | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Prev | Vol- | Next | | | ? | _ | + | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | Mute | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RGBmod| | | | | | | \ | Home | PgDn | End |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_preonic_1x2uC (
+ 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_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______,
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, KC_QUES, KC_UNDS, KC_PLUS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BSLS, KC_HOME, KC_PGDN, KC_END
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | [ { (| ) } ]| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_preonic_1x2uC (
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, TD_LBRK, TD_RBRK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_PIPE, _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |AudTog|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX| Debug| Reset|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |ClkTog|ClkFq-|ClkFq+|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|TermOn|TermOf|
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |MusTog|Voice- Voice+|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|XXXXXX|AGnorm|AGswap|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |MidTog|Rplain|Rbreat|Rrainb|Rswirl|Rsnake|Rkridr|Rxmas |Rgrad |RGBtst|XXXXXX|Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RGBmod|RGBhue|RBGsat|RGBval| | | |XXXXXX|XXXXXX|XXXXXX|XXXXXX|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_preonic_1x2uC (
+ AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, RESET,
+ 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,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_TOG, _______, XXXXXXX,RGB_RMOD, RGB_SPD, RGB_MOD
+)
+
+};
+/* clang-format on */
+
+float s_audio_on[][2] = AUDIO_ON_SONG;
+float s_layer_lower[][2] = LAYER_LOWER_SONG;
+float s_layer_raise[][2] = LAYER_RAISE_SONG;
+
+void audio_on_user() { PLAY_SONG(s_audio_on); };
+
+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);
+ PLAY_SONG(s_layer_lower);
+ } 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);
+ PLAY_SONG(s_layer_raise);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+ backlight_step();
+#endif
+#ifdef __AVR__
+ writePinLow(E6);
+#endif
+ } else {
+ unregister_code(KC_RSFT);
+#ifdef __AVR__
+ writePinHigh(E6);
+#endif
+ }
+ return false;
+ break;
+ }
+ return true;
+};
+
+/* Global TapDance State */
+static t_tap qk_tap_state = {
+ .left_brackets = 0,
+ .numpad_funcrow = 0,
+ .right_brackets = 0,
+};
+
+float s_functionrow_on[][2] = LAYER_FUNCROW_ON_SONG;
+float s_functionrow_off[][2] = LAYER_FUNCROW_OFF_SONG;
+float s_numpad_toggle[][2] = LAYER_NMPAD_SONG;
+
+t_tap_state get_tapdance_state(qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) {
+ return SINGLE_TAP;
+ } else {
+ return SINGLE_HOLD;
+ }
+ } else if (state->count == 2) {
+ if (state->interrupted || !state->pressed) {
+ return DOUBLE_TAP;
+ } else {
+ return DOUBLE_HOLD;
+ }
+ } else if (state->count == 3) {
+ if (state->interrupted || !state->pressed) {
+ return TRIPLE_TAP;
+ } else {
+ return TRIPLE_HOLD;
+ }
+ } else
+ return TAP_DANCE_NO_MATCH;
+}
+
+void td_numpad_funcrow_finished(qk_tap_dance_state_t *state, void *user_data) {
+ qk_tap_state.numpad_funcrow = get_tapdance_state(state);
+ switch (qk_tap_state.numpad_funcrow) {
+ case SINGLE_TAP ... SINGLE_HOLD:
+ layer_on(_NUMPAD);
+ PLAY_SONG(s_numpad_toggle);
+ break;
+ case DOUBLE_HOLD:
+ layer_on(_FUNCTIONROW);
+ break;
+ case DOUBLE_TAP:
+ if (layer_state_is(_FUNCTIONROW)) {
+ layer_off(_FUNCTIONROW);
+ PLAY_SONG(s_functionrow_off);
+ } else {
+ layer_on(_FUNCTIONROW);
+ PLAY_SONG(s_functionrow_on);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void td_numpad_funcrow_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (qk_tap_state.numpad_funcrow) {
+ case SINGLE_HOLD:
+ layer_off(_NUMPAD);
+ break;
+ case DOUBLE_HOLD:
+ layer_off(_FUNCTIONROW);
+ break;
+ default:
+ break;
+ }
+}
+
+void td_brackets_left_finished(qk_tap_dance_state_t *state, void *user_data) {
+ qk_tap_state.left_brackets = get_tapdance_state(state);
+ switch (qk_tap_state.left_brackets) {
+ case SINGLE_TAP:
+ register_code16(KC_LEFT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ register_code(KC_LBRACKET);
+ break;
+ case TRIPLE_TAP:
+ register_code16(KC_LEFT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+}
+
+void td_brackets_left_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (qk_tap_state.left_brackets) {
+ case SINGLE_TAP:
+ unregister_code16(KC_LEFT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ unregister_code(KC_LBRACKET);
+ break;
+ case TRIPLE_TAP:
+ unregister_code16(KC_LEFT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+ qk_tap_state.left_brackets = 0;
+}
+
+void td_brackets_right_finished(qk_tap_dance_state_t *state, void *user_data) {
+ qk_tap_state.right_brackets = get_tapdance_state(state);
+ switch (qk_tap_state.right_brackets) {
+ case SINGLE_TAP:
+ register_code16(KC_RIGHT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ register_code(KC_RBRACKET);
+ break;
+ case TRIPLE_TAP:
+ register_code16(KC_RIGHT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+}
+
+void td_brackets_right_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (qk_tap_state.right_brackets) {
+ case SINGLE_TAP:
+ unregister_code16(KC_RIGHT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ unregister_code(KC_RBRACKET);
+ break;
+ case TRIPLE_TAP:
+ unregister_code16(KC_RIGHT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+ qk_tap_state.right_brackets = 0;
+}
+
+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;
+
+void encoder_update_user(uint8_t index, 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) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ 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/preonic/keymaps/mverteuil/readme.md b/keyboards/preonic/keymaps/mverteuil/readme.md
new file mode 100644
index 0000000000..b21df3f8fa
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil/readme.md
@@ -0,0 +1,2 @@
+# mverteuil does olkb preonic
+## 1x2u: One 2u spacebar on bottom row
diff --git a/keyboards/preonic/keymaps/mverteuil/rules.mk b/keyboards/preonic/keymaps/mverteuil/rules.mk
new file mode 100644
index 0000000000..a29a3cad79
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil/rules.mk
@@ -0,0 +1,5 @@
+SRC += muse.c
+
+AUDIO_ENABLE = yes
+MIDI_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/mverteuil_2x2u/config.h b/keyboards/preonic/keymaps/mverteuil_2x2u/config.h
new file mode 100644
index 0000000000..51b278f647
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil_2x2u/config.h
@@ -0,0 +1,39 @@
+#ifdef AUDIO_ENABLE
+# if __has_include("copyright.h")
+# include "copyright.h"
+# endif
+
+# define AUDIO_CLICKY_DELAY_DURATION 0
+# define AUDIO_CLICKY_FREQ_DEFAULT 100.0f
+# define AUDIO_CLICKY_FREQ_MIN 61.0f
+# define AUDIO_CLICKY_FREQ_RANDOMNESS 0.2f
+# define DAC_SAMPLE_MAX 7000U
+# define STARTUP_SONG SONG(WORKMAN_SOUND)
+# define GOODBYE_SONG SONG(COIN_SOUND)
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c
new file mode 100644
index 0000000000..232b853114
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c
@@ -0,0 +1,413 @@
+/* Copyright 2015-2017 Jack Humbert, 2019 Matthew de Verteuil
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "mverteuil.h"
+
+/* Layer Aliases */
+#define LT_LWSP LT(_LOWER, KC_SPACE)
+#define LT_RSRT LT(_RAISE, KC_ENTER)
+#define MO_NUMS MO(_NUMPAD)
+
+/* Mod-Tap Aliases */
+#define MT_CESC CTL_T(KC_ESCAPE)
+
+/* TapDance Aliases */
+#define TD_LBRK TD(TD_BRACKETS_LEFT)
+#define TD_RBRK TD(TD_BRACKETS_RIGHT)
+#define TD_PLEQ TD(TD_PLUS_EQUALS)
+#define TD_SCOL TD(TD_SEMICOLON_COLON)
+#define TD_SLQU TD(TD_SLASH_QUESTION)
+#define TD_SQDQ TD(TD_QUOTE_DOUBLEQUOTE)
+#define TD_USMI TD(TD_UNDERSCORE_MINUS)
+
+/* Sentinel value for invalid tap dance exit */
+#define TAP_DANCE_NO_MATCH 64
+
+enum preonic_layers {
+ _QWERTY,
+ _NUMPAD,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ NUMPAD,
+ LOWER,
+ RAISE,
+ BACKLIT,
+};
+
+enum tapdance_keycodes {
+ TD_BRACKETS_LEFT,
+ TD_BRACKETS_RIGHT,
+ TD_CONTROL_ESCAPE,
+ TD_PLUS_EQUALS,
+ TD_QUOTE_DOUBLEQUOTE,
+ TD_SEMICOLON_COLON,
+ TD_SLASH_QUESTION,
+ TD_UNDERSCORE_MINUS,
+};
+
+typedef enum {
+ SINGLE_TAP,
+ SINGLE_HOLD,
+ DOUBLE_TAP,
+ DOUBLE_HOLD,
+ TRIPLE_TAP,
+ TRIPLE_HOLD,
+} t_tap_state;
+
+typedef struct {
+ t_tap_state left_brackets;
+ t_tap_state right_brackets;
+} t_tap;
+
+t_tap_state get_tapdance_state(qk_tap_dance_state_t *state);
+
+void td_brackets_left_finished(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_left_reset(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_right_finished(qk_tap_dance_state_t *state, void *user_data);
+void td_brackets_right_reset(qk_tap_dance_state_t *state, void *user_data);
+
+/* Tap Dance Definitions */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ /* Tap once for left parenthesis, twice for left bracket, thrice for left brace */
+ [TD_BRACKETS_LEFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_brackets_left_finished, td_brackets_left_reset),
+ /* Tap once for right parenthesis, twice for right bracket, thrice for right brace */
+ [TD_BRACKETS_RIGHT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_brackets_right_finished, td_brackets_right_reset),
+ /* Tap once for plus, twice for equals */
+ [TD_PLUS_EQUALS] = ACTION_TAP_DANCE_DOUBLE(KC_PLUS, KC_EQUAL),
+ /* Tap once for single quote, twice for double quote */
+ [TD_QUOTE_DOUBLEQUOTE] = ACTION_TAP_DANCE_DOUBLE(KC_QUOTE, KC_DOUBLE_QUOTE),
+ /* Tap once for semicolon, twice for colon */
+ [TD_SEMICOLON_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCOLON, KC_COLON),
+ /* Tap once for slash, twice for question mark */
+ [TD_SLASH_QUESTION] = ACTION_TAP_DANCE_DOUBLE(KC_SLASH, KC_QUESTION),
+ /* Tap once for underscore, twice for minus */
+ [TD_UNDERSCORE_MINUS] = ACTION_TAP_DANCE_DOUBLE(KC_UNDERSCORE, KC_MINUS),
+};
+
+/* clang-format off */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------.
+ * | ` | ! | @ | # | $ | % | ^ | & | * | _ - | + = | Bksp |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | ' " |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * |CtrlEsc| A | S | D | F | G | H | J | K | L | ; : | / ? |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | ↑ | RShift|
+ * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
+ * |NumPad | Ctrl | Alt | GUI | Lower/Space | Raise/Enter | GUI | ← | ↓ | → |
+ * `-----------------------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_preonic_2x2u (
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, TD_USMI, TD_PLEQ, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD_SQDQ,
+ MT_CESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD_SCOL, TD_SLQU,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ MO_NUMS, KC_LCTL, KC_LALT, KC_LGUI, LT_LWSP, LT_RSRT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Numpad
+ * ,-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------.
+ * | | | | | | | | Tab | / | * | Bksp | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | 7 | 8 | 9 | - | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | 4 | 5 | 6 | + | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | 1 | 2 | 3 | Enter | |
+ * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | | | 0 | . | Enter | |
+ * `-----------------------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = LAYOUT_preonic_2x2u (
+ _______, _______, _______, _______, _______, _______, _______, KC_TAB, KC_SLSH, KC_PAST, KC_BSPC, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______,
+ _______, _______, _______, _______, _______, _______, KC_KP_0, KC_PDOT, KC_PENT, _______
+),
+
+/* Lower
+ * ,-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |Delete |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | Vol+ | | | | | | | | MPlay | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | MPrev | Vol- | MNext | | | | | | | | \ |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | Mute | | | PgUp | |
+ * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | Home | PgDn | End |
+ * `-----------------------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_preonic_2x2u (
+ 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_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______,
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+),
+
+/* Raise
+ * ,-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | | [ { ( | ) } ] | | | |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_preonic_2x2u (
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, TD_LBRK, TD_RBRK, _______, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------.
+ * |AudTog |███████|███████|███████|███████|███████|███████|███████|███████|███████| Debug | Reset |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * |Clicky |ClkFrq-|ClkFrq+|███████|███████|███████|███████|███████|███████|███████|TermOn |TermOff|
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | Music |Voice- |Voice+ |███████|███████|███████|███████|███████|███████|███████|AGnorm |AGswap |
+ * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
+ * | MIDI |R plain|R breat|R rnbow|R swirl|R snake|R knigt|R xmas |R grade|RGBtest|███████| Shift |
+ * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
+ * |RGBmode|RGBhue+|RGBsat+|RGBval+| | |███████|███████|███████|███████|
+ * `-----------------------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_preonic_2x2u (
+ AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, RESET,
+ 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,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX,RGB_RMOD, RGB_SPD, RGB_MOD
+)
+
+};
+/* clang-format on */
+
+float s_audio_on[][2] = AUDIO_ON_SONG;
+float s_layer_lower[][2] = LAYER_LOWER_SONG;
+float s_layer_raise[][2] = LAYER_RAISE_SONG;
+
+void audio_on_user() { PLAY_SONG(s_audio_on); };
+
+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);
+ PLAY_SONG(s_layer_lower);
+ } 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);
+ PLAY_SONG(s_layer_raise);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+ backlight_step();
+#endif
+#ifdef __AVR__
+ writePinLow(E6);
+#endif
+ } else {
+ unregister_code(KC_RSFT);
+#ifdef __AVR__
+ writePinHigh(E6);
+#endif
+ }
+ return false;
+ break;
+ }
+ return true;
+};
+
+/* Global TapDance State */
+static t_tap qk_tap_state = {
+ .left_brackets = 0,
+ .right_brackets = 0,
+};
+
+float s_numpad_toggle[][2] = LAYER_NMPAD_SONG;
+
+t_tap_state get_tapdance_state(qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) {
+ return SINGLE_TAP;
+ } else {
+ return SINGLE_HOLD;
+ }
+ } else if (state->count == 2) {
+ if (state->interrupted || !state->pressed) {
+ return DOUBLE_TAP;
+ } else {
+ return DOUBLE_HOLD;
+ }
+ } else if (state->count == 3) {
+ if (state->interrupted || !state->pressed) {
+ return TRIPLE_TAP;
+ } else {
+ return TRIPLE_HOLD;
+ }
+ } else
+ return TAP_DANCE_NO_MATCH;
+}
+
+void td_brackets_left_finished(qk_tap_dance_state_t *state, void *user_data) {
+ qk_tap_state.left_brackets = get_tapdance_state(state);
+ switch (qk_tap_state.left_brackets) {
+ case SINGLE_TAP:
+ register_code16(KC_LEFT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ register_code(KC_LBRACKET);
+ break;
+ case TRIPLE_TAP:
+ register_code16(KC_LEFT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+}
+
+void td_brackets_left_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (qk_tap_state.left_brackets) {
+ case SINGLE_TAP:
+ unregister_code16(KC_LEFT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ unregister_code(KC_LBRACKET);
+ break;
+ case TRIPLE_TAP:
+ unregister_code16(KC_LEFT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+ qk_tap_state.left_brackets = 0;
+}
+
+void td_brackets_right_finished(qk_tap_dance_state_t *state, void *user_data) {
+ qk_tap_state.right_brackets = get_tapdance_state(state);
+ switch (qk_tap_state.right_brackets) {
+ case SINGLE_TAP:
+ register_code16(KC_RIGHT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ register_code(KC_RBRACKET);
+ break;
+ case TRIPLE_TAP:
+ register_code16(KC_RIGHT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+}
+
+void td_brackets_right_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (qk_tap_state.right_brackets) {
+ case SINGLE_TAP:
+ unregister_code16(KC_RIGHT_PAREN);
+ break;
+ case DOUBLE_TAP:
+ unregister_code(KC_RBRACKET);
+ break;
+ case TRIPLE_TAP:
+ unregister_code16(KC_RIGHT_CURLY_BRACE);
+ break;
+ default:
+ break;
+ }
+ qk_tap_state.right_brackets = 0;
+}
+
+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;
+
+void encoder_update_user(uint8_t index, 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) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ }
+ }
+}
diff --git a/keyboards/preonic/keymaps/mverteuil_2x2u/rules.mk b/keyboards/preonic/keymaps/mverteuil_2x2u/rules.mk
new file mode 100644
index 0000000000..9e55d0aa67
--- /dev/null
+++ b/keyboards/preonic/keymaps/mverteuil_2x2u/rules.mk
@@ -0,0 +1,6 @@
+USER_NAME := mverteuil
+SRC += muse.c
+
+AUDIO_ENABLE = yes
+MIDI_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/preonic/rev1/rules.mk b/keyboards/preonic/rev1/rules.mk
index 2d74f38235..9be496ce79 100644
--- a/keyboards/preonic/rev1/rules.mk
+++ b/keyboards/preonic/rev1/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/preonic/rev2/rules.mk b/keyboards/preonic/rev2/rules.mk
index 06315b2c6c..b98f9b52c8 100644
--- a/keyboards/preonic/rev2/rules.mk
+++ b/keyboards/preonic/rev2/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = qmk-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk
index ad8a829679..4c5d2f2ffe 100644
--- a/keyboards/preonic/rev3/rules.mk
+++ b/keyboards/preonic/rev3/rules.mk
@@ -5,11 +5,11 @@ MCU = STM32F303
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/primekb/prime_e/config.h b/keyboards/primekb/prime_e/config.h
index bf5061b1ae..c564752038 100644
--- a/keyboards/primekb/prime_e/config.h
+++ b/keyboards/primekb/prime_e/config.h
@@ -36,7 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4, D5, D3, D2, D1, D0 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B7
diff --git a/keyboards/primekb/prime_e/rules.mk b/keyboards/primekb/prime_e/rules.mk
index 752497265c..0a08cc2ccd 100644
--- a/keyboards/primekb/prime_e/rules.mk
+++ b/keyboards/primekb/prime_e/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/primekb/prime_l/rules.mk b/keyboards/primekb/prime_l/rules.mk
index d7aca43dfc..f6979a626f 100644
--- a/keyboards/primekb/prime_l/rules.mk
+++ b/keyboards/primekb/prime_l/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/primekb/prime_m/rules.mk b/keyboards/primekb/prime_m/rules.mk
index 615750bfb2..160ed20885 100644
--- a/keyboards/primekb/prime_m/rules.mk
+++ b/keyboards/primekb/prime_m/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = ortho_5x6 numpad_5x6
diff --git a/keyboards/primekb/prime_o/rules.mk b/keyboards/primekb/prime_o/rules.mk
index e9b7f1558b..8c2353de54 100644
--- a/keyboards/primekb/prime_o/rules.mk
+++ b/keyboards/primekb/prime_o/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/primekb/prime_r/rules.mk b/keyboards/primekb/prime_r/rules.mk
index 505ffe1e63..fb3fd385e3 100644
--- a/keyboards/primekb/prime_r/rules.mk
+++ b/keyboards/primekb/prime_r/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+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
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/projectkb/alice/chconf.h b/keyboards/projectkb/alice/chconf.h
index 99fa8ce398..89388dd5a3 100644
--- a/keyboards/projectkb/alice/chconf.h
+++ b/keyboards/projectkb/alice/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/projectkb/alice/config.h b/keyboards/projectkb/alice/config.h
index 4a068a8893..94c1fd16d6 100644
--- a/keyboards/projectkb/alice/config.h
+++ b/keyboards/projectkb/alice/config.h
@@ -62,6 +62,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 1
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
+
+// Let VIA handle the QMK RGBLIGHT
+#define VIA_QMK_RGBLIGHT_ENABLE
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/projectkb/alice/rules.mk b/keyboards/projectkb/alice/rules.mk
index 96904aef3d..97fcc754da 100644
--- a/keyboards/projectkb/alice/rules.mk
+++ b/keyboards/projectkb/alice/rules.mk
@@ -23,3 +23,7 @@ RGBLIGHT_ENABLE = yes
# RAW_ENABLE = yes
# DYNAMIC_KEYMAP_ENABLE = yes
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/puck/rules.mk b/keyboards/puck/rules.mk
index 1bd0b8b1dd..90519649ef 100644
--- a/keyboards/puck/rules.mk
+++ b/keyboards/puck/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = halfkay
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/quantrik/kyuu/rules.mk b/keyboards/quantrik/kyuu/rules.mk
index 4b51619da1..62b1a397b4 100644
--- a/keyboards/quantrik/kyuu/rules.mk
+++ b/keyboards/quantrik/kyuu/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/qwertyydox/rules.mk b/keyboards/qwertyydox/rules.mk
index 4faab2607b..bad5a268af 100644
--- a/keyboards/qwertyydox/rules.mk
+++ b/keyboards/qwertyydox/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/rabbit/rabbit68/rules.mk b/keyboards/rabbit/rabbit68/rules.mk
index 1bf19e4e19..b4d53d2e89 100644
--- a/keyboards/rabbit/rabbit68/rules.mk
+++ b/keyboards/rabbit/rabbit68/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/redox/rules.mk b/keyboards/redox/rules.mk
index 165008f1f0..8ee269a141 100644
--- a/keyboards/redox/rules.mk
+++ b/keyboards/redox/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/redox_w/rules.mk b/keyboards/redox_w/rules.mk
index 22e8cb6b31..8b171f717b 100644
--- a/keyboards/redox_w/rules.mk
+++ b/keyboards/redox_w/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/redscarf_iiplus/verb/rules.mk b/keyboards/redscarf_iiplus/verb/rules.mk
index 169e69d39f..395010b625 100755
--- a/keyboards/redscarf_iiplus/verb/rules.mk
+++ b/keyboards/redscarf_iiplus/verb/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes
SRC += matrix.c
diff --git a/keyboards/redscarf_iiplus/verc/rules.mk b/keyboards/redscarf_iiplus/verc/rules.mk
index e62b78dc65..0157596c06 100755
--- a/keyboards/redscarf_iiplus/verc/rules.mk
+++ b/keyboards/redscarf_iiplus/verc/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = yes
SRC += matrix.c
diff --git a/keyboards/reviung34/rules.mk b/keyboards/reviung34/rules.mk
index 67f2386e03..036fb0c309 100755
--- a/keyboards/reviung34/rules.mk
+++ b/keyboards/reviung34/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/reviung39/rules.mk b/keyboards/reviung39/rules.mk
index 67f2386e03..036fb0c309 100644
--- a/keyboards/reviung39/rules.mk
+++ b/keyboards/reviung39/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h
index 9b136db058..f42783f719 100644
--- a/keyboards/rgbkb/sol/config.h
+++ b/keyboards/rgbkb/sol/config.h
@@ -35,6 +35,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 7
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/rgbkb/sol/keymaps/default/rules.mk b/keyboards/rgbkb/sol/keymaps/default/rules.mk
index 269cf20273..7efa721e32 100644
--- a/keyboards/rgbkb/sol/keymaps/default/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/default/rules.mk
@@ -2,7 +2,7 @@
# Example:
# if you wanted to disable EXTRAKEY_ENABLE, you would copy the line from the rev1/rules.mk file
# and paste it in to this file, changing the yes to no. Like so:
-# EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+# EXTRAKEY_ENABLE = no # Audio control and System control
#
# To keep things clean and tidy, as well as make upgrades easier, only place overrides from the defaults in this file.
diff --git a/keyboards/rgbkb/sol/rev1/rules.mk b/keyboards/rgbkb/sol/rev1/rules.mk
index dd6d25eb98..7be64231c3 100644
--- a/keyboards/rgbkb/sol/rev1/rules.mk
+++ b/keyboards/rgbkb/sol/rev1/rules.mk
@@ -1,14 +1,14 @@
# RGBKB Sol Rev1 Defaults
# Keycode Options
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
UNICODE_ENABLE = no # Unicode keycodes
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# Debug Options
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# RGB Options
diff --git a/keyboards/rgbkb/sol/rev2/rules.mk b/keyboards/rgbkb/sol/rev2/rules.mk
index 40f4c4b8ca..debe8fe6bb 100644
--- a/keyboards/rgbkb/sol/rev2/rules.mk
+++ b/keyboards/rgbkb/sol/rev2/rules.mk
@@ -8,7 +8,7 @@ UNICODE_ENABLE = no # Unicode keycodes
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# Debug Options
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# RGB Options
diff --git a/keyboards/rgbkb/zen/rules.mk b/keyboards/rgbkb/zen/rules.mk
index 4193d23e01..dd1399580e 100644
--- a/keyboards/rgbkb/zen/rules.mk
+++ b/keyboards/rgbkb/zen/rules.mk
@@ -30,10 +30,10 @@ endif
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
MIDI_ENABLE = no # MIDI controls
diff --git a/keyboards/rgbkb/zygomorph/rev1/config.h b/keyboards/rgbkb/zygomorph/rev1/config.h
index 6e55a6a5f5..246e391ac1 100644
--- a/keyboards/rgbkb/zygomorph/rev1/config.h
+++ b/keyboards/rgbkb/zygomorph/rev1/config.h
@@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 6
#define MATRIX_COL_PINS { F4, F6, C7, C6, B6, D4 }
+#define DIODE_DIRECTION COL2ROW
+
#define SOFT_SERIAL_PIN D3
#define ENCODERS_PAD_A { D2 }
diff --git a/keyboards/rgbkb/zygomorph/rules.mk b/keyboards/rgbkb/zygomorph/rules.mk
index 955221fdf2..83706cdf2c 100644
--- a/keyboards/rgbkb/zygomorph/rules.mk
+++ b/keyboards/rgbkb/zygomorph/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_4x12 ortho_5x12
diff --git a/keyboards/runner3680/3x6/config.h b/keyboards/runner3680/3x6/config.h
index d3f3605f55..fd462afb24 100644
--- a/keyboards/runner3680/3x6/config.h
+++ b/keyboards/runner3680/3x6/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6} //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/3x7/config.h b/keyboards/runner3680/3x7/config.h
index e0e6ae8e06..e6acb3735d 100644
--- a/keyboards/runner3680/3x7/config.h
+++ b/keyboards/runner3680/3x7/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/3x8/config.h b/keyboards/runner3680/3x8/config.h
index 0d4e3296a1..257f63a8f4 100644
--- a/keyboards/runner3680/3x8/config.h
+++ b/keyboards/runner3680/3x8/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/4x6/config.h b/keyboards/runner3680/4x6/config.h
index 08838d1b66..06b9bc4dfc 100644
--- a/keyboards/runner3680/4x6/config.h
+++ b/keyboards/runner3680/4x6/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6} //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/4x7/config.h b/keyboards/runner3680/4x7/config.h
index f33f8f9f2b..8bc2da4cdc 100644
--- a/keyboards/runner3680/4x7/config.h
+++ b/keyboards/runner3680/4x7/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/4x8/config.h b/keyboards/runner3680/4x8/config.h
index d85ebb29cf..9f9adfa9d2 100644
--- a/keyboards/runner3680/4x8/config.h
+++ b/keyboards/runner3680/4x8/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/5x6/config.h b/keyboards/runner3680/5x6/config.h
index ae3853a8e8..3ae72dcfd9 100644
--- a/keyboards/runner3680/5x6/config.h
+++ b/keyboards/runner3680/5x6/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6} //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/5x7/config.h b/keyboards/runner3680/5x7/config.h
index 1d56608e6d..004f84edd6 100644
--- a/keyboards/runner3680/5x7/config.h
+++ b/keyboards/runner3680/5x7/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/5x8/config.h b/keyboards/runner3680/5x8/config.h
index 5349fa06aa..11b7d647ed 100644
--- a/keyboards/runner3680/5x8/config.h
+++ b/keyboards/runner3680/5x8/config.h
@@ -34,6 +34,8 @@
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 ,B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+#define DIODE_DIRECTION COL2ROW
+
/* define tapping term */
#define TAPPING_TERM 120
diff --git a/keyboards/runner3680/rules.mk b/keyboards/runner3680/rules.mk
index 3a0b190aef..2bf7ea0cb2 100644
--- a/keyboards/runner3680/rules.mk
+++ b/keyboards/runner3680/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes # Enables split keyboard support
diff --git a/keyboards/s7_elephant/rules.mk b/keyboards/s7_elephant/rules.mk
index 6cbcb56aea..91fe85c3df 100644
--- a/keyboards/s7_elephant/rules.mk
+++ b/keyboards/s7_elephant/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/scarletbandana/rules.mk b/keyboards/scarletbandana/rules.mk
index a3461f3142..ff2b9a258c 100644
--- a/keyboards/scarletbandana/rules.mk
+++ b/keyboards/scarletbandana/rules.mk
@@ -14,16 +14,16 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = yes # Audio output on port C6
diff --git a/keyboards/sck/neiso/rules.mk b/keyboards/sck/neiso/rules.mk
index becaf5e1e0..221054879c 100644
--- a/keyboards/sck/neiso/rules.mk
+++ b/keyboards/sck/neiso/rules.mk
@@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = yes # Audio output on port C6
diff --git a/keyboards/sck/osa/rules.mk b/keyboards/sck/osa/rules.mk
index 2d4a95c9e9..c921304497 100644
--- a/keyboards/sck/osa/rules.mk
+++ b/keyboards/sck/osa/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/scythe/config.h b/keyboards/scythe/config.h
index d577192db3..c4d12bb030 100644
--- a/keyboards/scythe/config.h
+++ b/keyboards/scythe/config.h
@@ -46,7 +46,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SOFT_SERIAL_PIN D0
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B7
diff --git a/keyboards/scythe/rules.mk b/keyboards/scythe/rules.mk
index 54f2f7a529..d268951e33 100644
--- a/keyboards/scythe/rules.mk
+++ b/keyboards/scythe/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
SPLIT_KEYBOARD = yes # Use shared split_common
RGBLIGHT_SPLIT = yes
diff --git a/keyboards/sentraq/number_pad/rules.mk b/keyboards/sentraq/number_pad/rules.mk
index 8df6c4c7c5..7c87642acc 100644
--- a/keyboards/sentraq/number_pad/rules.mk
+++ b/keyboards/sentraq/number_pad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/sentraq/s60_x/default/rules.mk b/keyboards/sentraq/s60_x/default/rules.mk
index 8b3674cd81..3b01239412 100644
--- a/keyboards/sentraq/s60_x/default/rules.mk
+++ b/keyboards/sentraq/s60_x/default/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/sentraq/s60_x/rgb/rules.mk b/keyboards/sentraq/s60_x/rgb/rules.mk
index efd66a1ba1..f765aa8bbc 100644
--- a/keyboards/sentraq/s60_x/rgb/rules.mk
+++ b/keyboards/sentraq/s60_x/rgb/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
@@ -24,7 +24,7 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/sentraq/s65_plus/rules.mk b/keyboards/sentraq/s65_plus/rules.mk
index f4da10aa16..8424d60e4a 100644
--- a/keyboards/sentraq/s65_plus/rules.mk
+++ b/keyboards/sentraq/s65_plus/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
MIDI_ENABLE = no # MIDI controls
diff --git a/keyboards/sentraq/s65_x/rules.mk b/keyboards/sentraq/s65_x/rules.mk
index a6a2319c23..a9cbd2518d 100644
--- a/keyboards/sentraq/s65_x/rules.mk
+++ b/keyboards/sentraq/s65_x/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
MIDI_ENABLE = no # MIDI controls
diff --git a/keyboards/setta21/rev1/config.h b/keyboards/setta21/rev1/config.h
index 57451a7e30..c6c1357d0a 100644
--- a/keyboards/setta21/rev1/config.h
+++ b/keyboards/setta21/rev1/config.h
@@ -34,6 +34,8 @@ 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 DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/shiro/rules.mk b/keyboards/shiro/rules.mk
index 03c1bc8f86..fa18648913 100644
--- a/keyboards/shiro/rules.mk
+++ b/keyboards/shiro/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/signum/3_0/elitec/config.h b/keyboards/signum/3_0/elitec/config.h
index 1e045e2e10..eeafb72360 100644
--- a/keyboards/signum/3_0/elitec/config.h
+++ b/keyboards/signum/3_0/elitec/config.h
@@ -22,6 +22,8 @@
#define MATRIX_COL_PINS { B4, D7, D0, E6, D4, F6, F4, F7, B1, B3, C6, B2 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/signum/3_0/elitec/rules.mk b/keyboards/signum/3_0/elitec/rules.mk
index 6393e0f93f..436c5f0ce2 100644
--- a/keyboards/signum/3_0/elitec/rules.mk
+++ b/keyboards/signum/3_0/elitec/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/singa/config.h b/keyboards/singa/config.h
index badaef5136..e998e6ea96 100644
--- a/keyboards/singa/config.h
+++ b/keyboards/singa/config.h
@@ -37,5 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/singa/rules.mk b/keyboards/singa/rules.mk
index 54328d248d..84eace5ed6 100644
--- a/keyboards/singa/rules.mk
+++ b/keyboards/singa/rules.mk
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
-CONSOLE_ENABLE = yes
+CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/singa/singa.c b/keyboards/singa/singa.c
index 144065d029..360b214a31 100644
--- a/keyboards/singa/singa.c
+++ b/keyboards/singa/singa.c
@@ -16,32 +16,18 @@
#include "singa.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/sirius/uni660/config.h b/keyboards/sirius/uni660/config.h
new file mode 100644
index 0000000000..06f1c78100
--- /dev/null
+++ b/keyboards/sirius/uni660/config.h
@@ -0,0 +1,78 @@
+/*
+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"
+
+/* 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 SiRius Uni660
+#define DESCRIPTION SiRius Uni660
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+//#define BACKLIGHT_LEVELS 3
+
+#define ONESHOT_TIMEOUT 500
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+//UART settings for communication with the RF microcontroller
+#define SERIAL_UART_BAUD 1000000
+#define SERIAL_UART_DATA UDR1
+#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
+#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
+#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
+#define SERIAL_UART_INIT() do { \
+ /* baud rate */ \
+ UBRR1L = SERIAL_UART_UBRR; \
+ /* baud rate */ \
+ UBRR1H = SERIAL_UART_UBRR >> 8; \
+ /* enable TX and RX */ \
+ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
+ /* 8-bit data */ \
+ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
+ } while(0)
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
diff --git a/keyboards/sirius/uni660/info.json b/keyboards/sirius/uni660/info.json
new file mode 100644
index 0000000000..296626d06a
--- /dev/null
+++ b/keyboards/sirius/uni660/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Uni660",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 12,
+ "height": 5.75,
+ "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/sirius/uni660/keymaps/default/keymap.c b/keyboards/sirius/uni660/keymaps/default/keymap.c
new file mode 100644
index 0000000000..336aa84108
--- /dev/null
+++ b/keyboards/sirius/uni660/keymaps/default/keymap.c
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* 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_DEL, KC_INS,
+KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+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_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+KC_F4, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+),
+};
diff --git a/keyboards/sirius/uni660/keymaps/via/keymap.c b/keyboards/sirius/uni660/keymaps/via/keymap.c
new file mode 100644
index 0000000000..61bac7e4d5
--- /dev/null
+++ b/keyboards/sirius/uni660/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* 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_DEL, KC_INS,
+KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+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_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+KC_F4, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+),
+
+[1] = LAYOUT( /* Layer 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[2] = LAYOUT( /* Layer 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[3] = LAYOUT( /* Layer 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
diff --git a/keyboards/sirius/uni660/keymaps/via/rules.mk b/keyboards/sirius/uni660/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/sirius/uni660/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/sirius/uni660/matrix.c b/keyboards/sirius/uni660/matrix.c
new file mode 100644
index 0000000000..3e231b33bc
--- /dev/null
+++ b/keyboards/sirius/uni660/matrix.c
@@ -0,0 +1,160 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2014 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 <stdint.h>
+#include <stdbool.h>
+#if defined(__AVR__)
+#include <avr/io.h>
+#endif
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "timer.h"
+#include "debounce.h"
+
+#if (MATRIX_COLS <= 8)
+# define print_matrix_header() print("\nr/c 01234567\n")
+# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop(matrix[i])
+# define ROW_SHIFTER ((uint8_t)1)
+#elif (MATRIX_COLS <= 16)
+# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
+# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop16(matrix[i])
+# define ROW_SHIFTER ((uint16_t)1)
+#elif (MATRIX_COLS <= 32)
+# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
+# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
+# define matrix_bitpop(i) bitpop32(matrix[i])
+# define ROW_SHIFTER ((uint32_t)1)
+#endif
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t matrix[MATRIX_ROWS];
+
+
+__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) {
+ debounce_init(MATRIX_ROWS);
+ matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void)
+{
+ bool matrix_has_changed = false;
+
+ SERIAL_UART_INIT();
+
+ uint32_t timeout = 0;
+
+ //the s character requests the RF slave to send the matrix
+ SERIAL_UART_DATA = 's';
+
+ //trust the external keystates entirely, erase the last data
+ uint8_t uart_data[17] = {0};
+
+ //there are 16 bytes corresponding to 16 columns, and an end byte
+ for (uint8_t i = 0; i < 17; i++) {
+ //wait for the serial data, timeout if it's been too long
+ //this only happened in testing with a loose wire, but does no
+ //harm to leave it in here
+ while(!SERIAL_UART_RXD_PRESENT){
+ timeout++;
+ if (timeout > 10000){
+ break;
+ }
+ }
+ uart_data[i] = SERIAL_UART_DATA;
+ }
+
+ //check for the end packet, the key state bytes use the LSBs, so 0xE0
+ //will only show up here if the correct bytes were recieved
+ if (uart_data[10] == 0xE0)
+ {
+ //shifting and transferring the keystates to the QMK matrix variable
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ matrix[i] = (uint16_t) uart_data[i*2] | (uint16_t) uart_data[i*2+1] << 8;
+ }
+ }
+
+ debounce(matrix, matrix, MATRIX_ROWS, matrix_has_changed);
+
+ matrix_scan_quantum();
+
+ return matrix_has_changed;
+}
+
+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_matrix_header();
+
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ phex(row); print(": ");
+ print_matrix_row(row);
+ print("\n");
+ }
+}
+
+uint8_t matrix_key_count(void)
+{
+ uint8_t count = 0;
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ count += matrix_bitpop(i);
+ }
+ return count;
+}
diff --git a/keyboards/sirius/uni660/readme.md b/keyboards/sirius/uni660/readme.md
new file mode 100644
index 0000000000..c3d2dbc1b3
--- /dev/null
+++ b/keyboards/sirius/uni660/readme.md
@@ -0,0 +1,13 @@
+# Uni660
+
+The Uni660 is an ergonomic wireless keyboard designed by Sirius.
+
+Join the KeyCommerce [Discord](https://discord.gg/GJ8bdM)
+
+Make example:
+
+ make sirius/uni660:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+To get the U2U into DFU flashing mode, insert the U2U into the computer and connect the ![RST pins](https://i.imgur.com/IlKKXWB.png)
diff --git a/keyboards/sirius/uni660/rules.mk b/keyboards/sirius/uni660/rules.mk
new file mode 100644
index 0000000000..920d8a83dd
--- /dev/null
+++ b/keyboards/sirius/uni660/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+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
+CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+# MIDI_ENABLE = yes # MIDI controls
+UNICODE_ENABLE = yes # Unicode
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+
+# project specific files
+SRC += matrix.c
diff --git a/keyboards/sirius/uni660/uni660.c b/keyboards/sirius/uni660/uni660.c
new file mode 100644
index 0000000000..2144facc56
--- /dev/null
+++ b/keyboards/sirius/uni660/uni660.c
@@ -0,0 +1,35 @@
+#include "uni660.h"
+
+void uart_init(void) {
+ SERIAL_UART_INIT();
+}
+
+void led_init(void) {
+ setPinOutput(D1); // Pin to green, set as output
+ writePinHigh(D1); // Turn it off
+ setPinOutput(F4); // Pins to red and blue, set as output
+ setPinOutput(F5);
+ writePinHigh(F4); // Turn them off
+ writePinHigh(F5);
+}
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ matrix_init_user();
+ uart_init();
+ led_init();
+}
+
+/*
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+{{9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+{{9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+{{9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+{{9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+{{9, 4}, {8, 4}, {7, 4}, {6, 4}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+};
+#endif
+*/
diff --git a/keyboards/sirius/uni660/uni660.h b/keyboards/sirius/uni660/uni660.h
new file mode 100644
index 0000000000..81743adbd8
--- /dev/null
+++ b/keyboards/sirius/uni660/uni660.h
@@ -0,0 +1,61 @@
+#pragma once
+
+#include "quantum.h"
+
+#define red_led_off writePinHigh(F5)
+#define red_led_on writePinLow(F5)
+#define blu_led_off writePinHigh(F4)
+#define blu_led_on writePinLow(F4)
+#define grn_led_off writePinHigh(D1)
+#define grn_led_on writePinLow(D1)
+
+#define set_led_off red_led_off; grn_led_off; blu_led_off
+#define set_led_red red_led_on; grn_led_off; blu_led_off
+#define set_led_blue red_led_off; grn_led_off; blu_led_on
+#define set_led_green red_led_off; grn_led_on; blu_led_off
+#define set_led_yellow red_led_on; grn_led_on; blu_led_off
+#define set_led_magenta red_led_on; grn_led_off; blu_led_on
+#define set_led_cyan red_led_off; grn_led_on; blu_led_on
+#define set_led_white red_led_on; grn_led_on; blu_led_on
+
+/*
+#define LED_B 5
+#define LED_R 6
+#define LED_G 7
+
+#define all_leds_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
+
+#define red_led_on PORTF |= (1<<LED_R)
+#define red_led_off PORTF &= ~(1<<LED_R)
+#define grn_led_on PORTF |= (1<<LED_G)
+#define grn_led_off PORTF &= ~(1<<LED_G)
+#define blu_led_on PORTF |= (1<<LED_B)
+#define blu_led_off PORTF &= ~(1<<LED_B)
+
+#define set_led_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
+#define set_led_red PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_G) | (1<<LED_R)
+#define set_led_blue PORTF = PORTF & ~(1<<LED_G) & ~(1<<LED_R) | (1<<LED_B)
+#define set_led_green PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_R) | (1<<LED_G)
+#define set_led_yellow PORTF = PORTF & ~(1<<LED_B) | (1<<LED_R) | (1<<LED_G)
+#define set_led_magenta PORTF = PORTF & ~(1<<LED_G) | (1<<LED_R) | (1<<LED_B)
+#define set_led_cyan PORTF = PORTF & ~(1<<LED_R) | (1<<LED_B) | (1<<LED_G)
+#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
+*/
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k46, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k3f,\
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k2f,\
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2a, k2b, k2c, k2d, k2e,\
+ k30, k31, k32, k33, k34, k35, k36, k38, k39, k3a, k3b, k3c, k3d, k3e, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4a, k4c, k4d, k4e, k4f \
+) \
+ { \
+ { k00, k01, k02, k03, k04, k05, k06, KC_NO, 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, k22, k23, k24, k25, k26, KC_NO, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f }, \
+ { k30, k31, k32, k33, k34, k35, k36, KC_NO, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \
+ { k40, k41, k42, k43, k44, k45, k46, KC_NO, k48, k49, k4a, KC_NO, k4c, k4d, k4e, k4f } \
+ }
diff --git a/keyboards/sirius/unigo66/config.h b/keyboards/sirius/unigo66/config.h
index 66f7f9542f..3eed36bc0c 100644
--- a/keyboards/sirius/unigo66/config.h
+++ b/keyboards/sirius/unigo66/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define CUSTOM_MATRIX 2
-
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x1001
@@ -31,9 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 16
#define MATRIX_COLS 16
-/* matrix scanning is done in custom_matrix.cpp */
-//#define DIODE_DIRECTION
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/sirius/unigo66/rules.mk b/keyboards/sirius/unigo66/rules.mk
index 53cf934c40..3effc08505 100644
--- a/keyboards/sirius/unigo66/rules.mk
+++ b/keyboards/sirius/unigo66/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+# MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/sixkeyboard/rules.mk b/keyboards/sixkeyboard/rules.mk
index 5b89ff4e62..889ea2fd10 100644
--- a/keyboards/sixkeyboard/rules.mk
+++ b/keyboards/sixkeyboard/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/smk60/rules.mk b/keyboards/smk60/rules.mk
index cbb1c8b74b..45c73d75be 100644
--- a/keyboards/smk60/rules.mk
+++ b/keyboards/smk60/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/snagpad/rules.mk b/keyboards/snagpad/rules.mk
index 9256eaed12..566a398feb 100644
--- a/keyboards/snagpad/rules.mk
+++ b/keyboards/snagpad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/snampad/config.h b/keyboards/snampad/config.h
index a2dc3c6dd5..86dd3ce2fc 100644
--- a/keyboards/snampad/config.h
+++ b/keyboards/snampad/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D0, D1, D2, D3 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
/*
diff --git a/keyboards/snampad/rules.mk b/keyboards/snampad/rules.mk
index 1a1fbe6bc5..91b492ba4a 100644
--- a/keyboards/snampad/rules.mk
+++ b/keyboards/snampad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,11 +25,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LAYOUTS = numpad_6x4
diff --git a/keyboards/southpole/rules.mk b/keyboards/southpole/rules.mk
index d6b65e9609..f1bf7c8fd9 100644
--- a/keyboards/southpole/rules.mk
+++ b/keyboards/southpole/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/spacetime/rules.mk b/keyboards/spacetime/rules.mk
index aa1a889259..7dd7761906 100644
--- a/keyboards/spacetime/rules.mk
+++ b/keyboards/spacetime/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OLED_DRIVER_ENABLE = no
# Enable generic behavior for split boards
diff --git a/keyboards/speedo/rules.mk b/keyboards/speedo/rules.mk
index 4295e2ad7e..b961b08c06 100644
--- a/keyboards/speedo/rules.mk
+++ b/keyboards/speedo/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/standaside/config.h b/keyboards/standaside/config.h
index 80c9f8d21b..92c6b28b97 100644
--- a/keyboards/standaside/config.h
+++ b/keyboards/standaside/config.h
@@ -31,7 +31,7 @@
#define UNUSED_PINS {}
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN C7
diff --git a/keyboards/standaside/rules.mk b/keyboards/standaside/rules.mk
index 1d92c731c3..2960817223 100644
--- a/keyboards/standaside/rules.mk
+++ b/keyboards/standaside/rules.mk
@@ -14,20 +14,20 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
RGBLIGHT_ENABLE = yes # Enable RGB underlighting support
diff --git a/keyboards/staryu/rules.mk b/keyboards/staryu/rules.mk
index 52bb72ca7f..c970388048 100755
--- a/keyboards/staryu/rules.mk
+++ b/keyboards/staryu/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = lufa-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/stella/rules.mk b/keyboards/stella/rules.mk
index b6b8f88417..1f4d192283 100644
--- a/keyboards/stella/rules.mk
+++ b/keyboards/stella/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Supported layouts
LAYOUTS = tkl_ansi tkl_iso
diff --git a/keyboards/subatomic/rules.mk b/keyboards/subatomic/rules.mk
index 4d1c4c1c55..abff350ea0 100644
--- a/keyboards/subatomic/rules.mk
+++ b/keyboards/subatomic/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/suihankey/rules.mk b/keyboards/suihankey/rules.mk
index d4c2e54b13..e3b91d3dac 100644
--- a/keyboards/suihankey/rules.mk
+++ b/keyboards/suihankey/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
OLED_DRIVER_ENABLE = yes
SPLIT_KEYBOARD = no
diff --git a/keyboards/switchplate/README.md b/keyboards/switchplate/README.md
new file mode 100644
index 0000000000..166853f285
--- /dev/null
+++ b/keyboards/switchplate/README.md
@@ -0,0 +1,4 @@
+# Switchplate Peripherals
+All keyboards under the Switchplate Peripherals brand
+
+Website: [here](https://switchplate.co/) \ No newline at end of file
diff --git a/keyboards/switchplate/southpaw_fullsize/config.h b/keyboards/switchplate/southpaw_fullsize/config.h
new file mode 100644
index 0000000000..adbb4f8db4
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/config.h
@@ -0,0 +1,143 @@
+/*
+Copyright 2020 Ryota Goto
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "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
+#define DESCRIPTION A large custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 22
+
+/*
+ * 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 { 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
+
+#define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+
+/* 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
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/switchplate/southpaw_fullsize/info.json b/keyboards/switchplate/southpaw_fullsize/info.json
new file mode 100644
index 0000000000..d4823f1085
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/info.json
@@ -0,0 +1,242 @@
+{
+ "keyboard_name": "southpaw_fullsize",
+ "url": "",
+ "maintainer": "ai03",
+ "width": 22.5,
+ "height": 6.25,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":4.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.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":13.75, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+ {"x":18.25, "y":0},
+ {"x":19.5, "y":0},
+ {"x":20.5, "y":0},
+ {"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},
+ {"x":4.25, "y":1.25},
+ {"x":5.25, "y":1.25},
+ {"x":6.25, "y":1.25},
+ {"x":7.25, "y":1.25},
+ {"x":8.25, "y":1.25},
+ {"x":9.25, "y":1.25},
+ {"x":10.25, "y":1.25},
+ {"x":11.25, "y":1.25},
+ {"x":12.25, "y":1.25},
+ {"x":13.25, "y":1.25},
+ {"x":14.25, "y":1.25},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+ {"x":18.25, "y":1.25},
+ {"x":19.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},
+ {"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.5, "y":2.25},
+ {"x":20.5, "y":2.25},
+ {"x":21.5, "y":2.25},
+ {"x":0, "y":3.25},
+ {"x":1, "y":3.25},
+ {"x":2, "y":3.25},
+ {"x":3, "y":3.25},
+ {"x":4.25, "y":3.25, "w":1.75},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":9, "y":3.25},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.25},
+ {"x":15, "y":3.25},
+ {"x":16, "y":3.25},
+ {"x":17, "y":3.25},
+ {"x":18, "y":3.25, "w":1.25},
+ {"x":0, "y":4.25},
+ {"x":1, "y":4.25},
+ {"x":2, "y":4.25},
+ {"x":3, "y":4.25},
+ {"x":4.25, "y":4.25, "w":1.25},
+ {"x":5.5, "y":4.25},
+ {"x":6.5, "y":4.25},
+ {"x":7.5, "y":4.25},
+ {"x":8.5, "y":4.25},
+ {"x":9.5, "y":4.25},
+ {"x":10.5, "y":4.25},
+ {"x":11.5, "y":4.25},
+ {"x":12.5, "y":4.25},
+ {"x":13.5, "y":4.25},
+ {"x":14.5, "y":4.25},
+ {"x":15.5, "y":4.25},
+ {"x":16.5, "y":4.25, "w":1.75},
+ {"x":18.25, "y":4.25},
+ {"x":20.5, "y":4.25},
+ {"x":0, "y":5.25},
+ {"x":1, "y":5.25},
+ {"x":2, "y":5.25},
+ {"x":3, "y":5.25},
+ {"x":4.25, "y":5.25, "w":1.25},
+ {"x":5.5, "y":5.25, "w":1.25},
+ {"x":6.75, "y":5.25, "w":1.25},
+ {"x":8, "y":5.25, "w":6.25},
+ {"x":14.25, "y":5.25, "w":1.25},
+ {"x":15.5, "y":5.25, "w":1.25},
+ {"x":16.75, "y":5.25, "w":1.25},
+ {"x":18, "y":5.25, "w":1.25},
+ {"x":19.5, "y":5.25},
+ {"x":20.5, "y":5.25},
+ {"x":21.5, "y":5.25}
+ ]
+ },
+ "LAYOUT_ansi_wkl": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":4.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.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":13.75, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+ {"x":18.25, "y":0},
+ {"x":19.5, "y":0},
+ {"x":20.5, "y":0},
+ {"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},
+ {"x":4.25, "y":1.25},
+ {"x":5.25, "y":1.25},
+ {"x":6.25, "y":1.25},
+ {"x":7.25, "y":1.25},
+ {"x":8.25, "y":1.25},
+ {"x":9.25, "y":1.25},
+ {"x":10.25, "y":1.25},
+ {"x":11.25, "y":1.25},
+ {"x":12.25, "y":1.25},
+ {"x":13.25, "y":1.25},
+ {"x":14.25, "y":1.25},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+ {"x":18.25, "y":1.25},
+ {"x":19.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},
+ {"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.5, "y":2.25},
+ {"x":20.5, "y":2.25},
+ {"x":21.5, "y":2.25},
+ {"x":0, "y":3.25},
+ {"x":1, "y":3.25},
+ {"x":2, "y":3.25},
+ {"x":3, "y":3.25},
+ {"x":4.25, "y":3.25, "w":1.75},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":9, "y":3.25},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.25},
+ {"x":15, "y":3.25},
+ {"x":16, "y":3.25},
+ {"x":17, "y":3.25, "w":2.25},
+ {"x":0, "y":4.25},
+ {"x":1, "y":4.25},
+ {"x":2, "y":4.25},
+ {"x":3, "y":4.25},
+ {"x":4.25, "y":4.25, "w":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":20.5, "y":4.25},
+ {"x":0, "y":5.25},
+ {"x":1, "y":5.25},
+ {"x":2, "y":5.25},
+ {"x":3, "y":5.25},
+ {"x":4.25, "y":5.25, "w":1.5},
+ {"x":5.75, "y":5.25},
+ {"x":6.75, "y":5.25, "w":1.5},
+ {"x":8.25, "y":5.25, "w":7},
+ {"x":15.25, "y":5.25, "w":1.5},
+ {"x":16.75, "y":5.25},
+ {"x":17.75, "y":5.25, "w":1.5},
+ {"x":19.5, "y":5.25},
+ {"x":20.5, "y":5.25},
+ {"x":21.5, "y":5.25}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/switchplate/southpaw_fullsize/keymaps/default/keymap.c b/keyboards/switchplate/southpaw_fullsize/keymaps/default/keymap.c
new file mode 100644
index 0000000000..185c98516e
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/keymaps/default/keymap.c
@@ -0,0 +1,42 @@
+/* Copyright 2020 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_all (
+ BL_STEP, BL_TOGG, MO(1) , KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_P4, KC_P5, KC_P6, 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_ENT,
+ KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_all (
+ _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/switchplate/southpaw_fullsize/keymaps/default/readme.md b/keyboards/switchplate/southpaw_fullsize/keymaps/default/readme.md
new file mode 100644
index 0000000000..aea00fdd69
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# The default keymap for southpaw fullsize
+
+Nothing special \ No newline at end of file
diff --git a/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/keymap.c b/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/keymap.c
new file mode 100644
index 0000000000..e66da98325
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2020 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_ansi_wkl (
+ BL_STEP, BL_TOGG, MO(1) , KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_ansi_wkl (
+ _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
diff --git a/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/readme.md b/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/readme.md
new file mode 100644
index 0000000000..39dc221a47
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/keymaps/default_wkl/readme.md
@@ -0,0 +1,3 @@
+# The default WKL keymap for southpaw fullsize
+
+Nothing special \ No newline at end of file
diff --git a/keyboards/switchplate/southpaw_fullsize/readme.md b/keyboards/switchplate/southpaw_fullsize/readme.md
new file mode 100644
index 0000000000..f44d4d46ac
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/readme.md
@@ -0,0 +1,15 @@
+# Southpaw Full Size
+
+![southpaw_fullsize](https://i.imgur.com/Kt8eN8L.jpg)
+
+A fullsize keyboard with southpaw numpad
+
+* Keyboard Maintainer: [Switchplate Peripherals](https://switchplate.co/)/[ai03](https://github.com/ai03-2725)
+* Hardware Supported: The Southpaw Full Size PCB
+* Hardware Availability: GB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make switchplate/southpaw_fullsize: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/switchplate/southpaw_fullsize/rules.mk b/keyboards/switchplate/southpaw_fullsize/rules.mk
new file mode 100644
index 0000000000..46d62bf5dc
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # 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 = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.c b/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.c
new file mode 100644
index 0000000000..253a4fd676
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "southpaw_fullsize.h"
+
+// Optional override functions below.
+// You can leave any or all of these undefined.
+// These are only required if you want to perform custom actions.
+
+#define INDICATOR_NUM D3
+#define INDICATOR_CAPS D4
+#define INDICATOR_SCR D5
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ // D3 Numlock, D4 Capslock, D5 Scrlock
+ setPinOutput(INDICATOR_NUM);
+ setPinOutput(INDICATOR_CAPS);
+ setPinOutput(INDICATOR_SCR);
+
+ matrix_init_user();
+}
+
+bool led_update_kb(led_t led_state) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ bool res = led_update_user(led_state);
+ if (res)
+ {
+ writePin(INDICATOR_NUM, !led_state.num_lock);
+ writePin(INDICATOR_CAPS, !led_state.caps_lock);
+ writePin(INDICATOR_SCR, !led_state.scroll_lock);
+ }
+ return res;
+}
+
diff --git a/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.h b/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.h
new file mode 100644
index 0000000000..b8667f39fc
--- /dev/null
+++ b/keyboards/switchplate/southpaw_fullsize/southpaw_fullsize.h
@@ -0,0 +1,70 @@
+/* Copyright 2020 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This 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, K004, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K019, K020, K021, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K219, K220, K221, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K418, K420, \
+ K500, K501, K502, K503, K504, K505, K506, K510, K513, K514, K515, K516, K519, K520, K521 \
+) \
+{ \
+ { K000, K001, K002, KC_NO, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, KC_NO, K019, K020, K021 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, KC_NO, K219, K220, K221 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, KC_NO, K418, KC_NO, K420, KC_NO }, \
+ { K500, K501, K502, K503, K504, K505, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, KC_NO, K513, K514, K515, K516, KC_NO, KC_NO, K519, K520, K521 } \
+}
+
+#define LAYOUT_ansi_wkl( \
+ K000, K001, K002, K004, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K019, K020, K021, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K219, K220, K221, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K317, \
+ K400, K401, K402, K403, K404, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K418, K420, \
+ K500, K501, K502, K503, K504, K505, K506, K510, K514, K515, K516, K519, K520, K521 \
+) \
+{ \
+ { K000, K001, K002, KC_NO, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, KC_NO, K019, K020, K021 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, KC_NO, K219, K220, K221 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K400, K401, K402, K403, K404, KC_NO, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, KC_NO, K418, KC_NO, K420, KC_NO }, \
+ { K500, K501, K502, K503, K504, K505, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, KC_NO, KC_NO, K514, K515, K516, KC_NO, KC_NO, K519, K520, K521 } \
+}
+
+
+
+
+
+
+
+
diff --git a/keyboards/sx60/rules.mk b/keyboards/sx60/rules.mk
index 4c711dc880..64b2f2b2c2 100755
--- a/keyboards/sx60/rules.mk
+++ b/keyboards/sx60/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+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
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/tada68/keymaps/iso-nor/rules.mk b/keyboards/tada68/keymaps/iso-nor/rules.mk
index 53644093d6..5cbbc34536 100644
--- a/keyboards/tada68/keymaps/iso-nor/rules.mk
+++ b/keyboards/tada68/keymaps/iso-nor/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/tada68/keymaps/iso-uk/rules.mk b/keyboards/tada68/keymaps/iso-uk/rules.mk
index 53644093d6..5cbbc34536 100644
--- a/keyboards/tada68/keymaps/iso-uk/rules.mk
+++ b/keyboards/tada68/keymaps/iso-uk/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/tada68/keymaps/rgb/rules.mk b/keyboards/tada68/keymaps/rgb/rules.mk
index e724782513..247c986165 100644
--- a/keyboards/tada68/keymaps/rgb/rules.mk
+++ b/keyboards/tada68/keymaps/rgb/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/tanuki/config.h b/keyboards/tanuki/config.h
index 1439ed43e8..2dcd7b27d6 100644
--- a/keyboards/tanuki/config.h
+++ b/keyboards/tanuki/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F7 , B1 , D4 , D0 }
#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/tanuki/rules.mk b/keyboards/tanuki/rules.mk
index 516c3db5e6..f8a4ecec3f 100644
--- a/keyboards/tanuki/rules.mk
+++ b/keyboards/tanuki/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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 keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE =yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/tartan/config.h b/keyboards/tartan/config.h
new file mode 100644
index 0000000000..4c49b7e09b
--- /dev/null
+++ b/keyboards/tartan/config.h
@@ -0,0 +1,248 @@
+/*
+Copyright 2019 Takuya Urakawa (dm9records.com)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#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
+#define DESCRIPTION 60% keyboard with through hole components
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 13
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { 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
+
+#define NO_UART 1
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #define RGBLIGHT_HUE_STEP 8
+// #define RGBLIGHT_SAT_STEP 8
+// #define RGBLIGHT_VAL_STEP 8
+// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/tartan/info.json b/keyboards/tartan/info.json
new file mode 100644
index 0000000000..72da8bd9d4
--- /dev/null
+++ b/keyboards/tartan/info.json
@@ -0,0 +1,34 @@
+{
+ "keyboard_name": "Tartan # Through Hole",
+ "keyboard_folder": "tartan",
+ "url": "https://github.com/hsgw/tartan",
+ "maintainer": "hsgw(Takuya Urakawa)",
+ "width": 13,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "key_count": 61,
+ "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}]
+ },
+ "LAYOUT_60_ansi_split_bs": {
+ "key_count": 62,
+ "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":1}, {"label":"", "x":14, "y":0, "w":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":"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}]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "key_count": 63,
+ "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":"BS", "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}, {"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": {
+ "key_count": 62,
+ "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":"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":"~", "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}]
+ },
+ "LAYOUT_60_iso_split_bs": {
+ "key_count": 63,
+ "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}, {"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":"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":"~", "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}]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "key_count": 64,
+ "layout": [{"label":"¬", "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}, {"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":"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":"~", "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}, {"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":"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/tartan/keymaps/default/keymap.c b/keyboards/tartan/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6224b4e615
--- /dev/null
+++ b/keyboards/tartan/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2019 Takuya Urakawa (dm9records.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_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,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_INS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/tartan/keymaps/default/readme.md b/keyboards/tartan/keymaps/default/readme.md
new file mode 100644
index 0000000000..c829d53103
--- /dev/null
+++ b/keyboards/tartan/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Tartan
diff --git a/keyboards/tartan/readme.md b/keyboards/tartan/readme.md
new file mode 100644
index 0000000000..83a3aebaea
--- /dev/null
+++ b/keyboards/tartan/readme.md
@@ -0,0 +1,25 @@
+# Tartan # Through Hole
+
+![tartan](https://i.imgur.com/1qSrVcs.jpg)
+
+A 60% keyboard with only through hole components.
+
+* Keyboard Maintainer: [hsgw](https://github.com/hsgw)
+* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/hsgw/tartan)
+* Hardware Availability: https://5z6p.com/products/tartan/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tartan:default
+
+Flash firmware:
+
+ // In bootloader mode
+ make tartan:default:flash
+
+## Bootloader
+use usbasploader in my 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/tartan/rules.mk b/keyboards/tartan/rules.mk
new file mode 100644
index 0000000000..92658e2d05
--- /dev/null
+++ b/keyboards/tartan/rules.mk
@@ -0,0 +1,41 @@
+# MCU name
+MCU = atmega328p
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = USBasp
+
+
+# disable debug code
+OPT_DEFS = -DDEBUG_LEVEL=0
+
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+
+LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/tartan/tartan.c b/keyboards/tartan/tartan.c
new file mode 100644
index 0000000000..b702633cc9
--- /dev/null
+++ b/keyboards/tartan/tartan.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Takuya Urakawa (dm9records.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "tartan.h"
diff --git a/keyboards/tartan/tartan.h b/keyboards/tartan/tartan.h
new file mode 100644
index 0000000000..e990088894
--- /dev/null
+++ b/keyboards/tartan/tartan.h
@@ -0,0 +1,111 @@
+/* Copyright 2019 Takuya Urakawa (dm9records.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_60_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k4b, \
+ 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, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, KC_NO, k4b, KC_NO } \
+}
+
+#define LAYOUT_60_ansi_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, k4a, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k4b, \
+ 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, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, k4a, k4b, KC_NO } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, k4a, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k4b, \
+ 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, k4c, \
+ k40, k41, k42, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, k4a, k4b, k4c } \
+}
+
+#define LAYOUT_60_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, \
+ 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, k4b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, KC_NO, k4b, KC_NO } \
+}
+
+#define LAYOUT_60_iso_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, k4a, \
+ 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, k4b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, k4a, k4b, KC_NO } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k49, k4a, \
+ 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, k4b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k4c, \
+ k40, k41, k42, k43, k44, k45, k46, k47 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, KC_NO, k49, k4a, k4b, k4c } \
+}
+
+#define LAYOUT_all LAYOUT_60_iso_split_bs_rshift
diff --git a/keyboards/tartan/usbconfig.h b/keyboards/tartan/usbconfig.h
new file mode 100644
index 0000000000..df896cfa91
--- /dev/null
+++ b/keyboards/tartan/usbconfig.h
@@ -0,0 +1,383 @@
+/* Name: usbconfig.h
+ * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
+ */
+
+#pragma once
+
+#include "config.h"
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
+also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
+wire the lines to any other port, as long as D+ is also wired to INT0 (or any
+other hardware interrupt, as long as it is the highest level interrupt, see
+section at the end of this file).
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#define USB_CFG_IOPORTNAME D
+/* This is the port where the USB bus is connected. When you configure it to
+ * "B", the registers PORTB, PINB and DDRB will be used.
+ */
+#define USB_CFG_DMINUS_BIT 3
+/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
+ * This may be any bit in the port.
+ */
+#define USB_CFG_DPLUS_BIT 2
+/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
+ * This may be any bit in the port. Please note that D+ must also be connected
+ * to interrupt pin INT0! [You can also use other interrupts, see section
+ * "Optional MCU Description" below, or you can connect D- to the interrupt, as
+ * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
+ * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
+ * markers every millisecond.]
+ */
+#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
+/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
+ * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
+ * require no crystal, they tolerate +/- 1% deviation from the nominal
+ * frequency. All other rates require a precision of 2000 ppm and thus a
+ * crystal!
+ * Since F_CPU should be defined to your actual clock rate anyway, you should
+ * not need to modify this setting.
+ */
+#define USB_CFG_CHECK_CRC 0
+/* Define this to 1 if you want that the driver checks integrity of incoming
+ * data packets (CRC checks). CRC checks cost quite a bit of code size and are
+ * currently only available for 18 MHz crystal clock. You must choose
+ * USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
+ */
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint (any other endpoint
+ * number).
+ */
+#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this to 1 if you want to compile a version with three endpoints: The
+ * default control endpoint 0, an interrupt-in endpoint 3 (or the number
+ * configured below) and a catch-all default interrupt-in endpoint as above.
+ * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
+ */
+#define USB_CFG_EP3_NUMBER 3
+/* If the so-called endpoint 3 is used, it can now be configured to any other
+ * endpoint number (except 0) with this macro. Default if undefined is 3.
+ */
+/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
+/* The above macro defines the startup condition for data toggling on the
+ * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
+ * Since the token is toggled BEFORE sending any data, the first packet is
+ * sent with the oposite value of this configuration!
+ */
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_SUPPRESS_INTR_CODE 0
+/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
+ * want to send any data over them. If this macro is defined to 1, functions
+ * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
+ * you need the interrupt-in endpoints in order to comply to an interface
+ * (e.g. HID), but never want to send any data. This option saves a couple
+ * of bytes in flash memory and the transmit buffers in RAM.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_READ 0
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to any endpoint other than 0. The endpoint number
+ * can be found in 'usbRxToken'.
+ */
+#define USB_CFG_HAVE_FLOWCONTROL 0
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#define USB_CFG_DRIVER_FLASH_PAGE 0
+/* If the device has more than 64 kBytes of flash, define this to the 64 k page
+ * where the driver's constants (descriptors) are located. Or in other words:
+ * Define this to 1 for boot loaders on the ATMega128.
+ */
+#define USB_CFG_LONG_TRANSFERS 0
+/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
+ * in a single control-in or control-out transfer. Note that the capability
+ * for long transfers increases the driver size.
+ */
+/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
+/* This macro is a hook if you want to do unconventional things. If it is
+ * defined, it's inserted at the beginning of received message processing.
+ * If you eat the received message and don't want default processing to
+ * proceed, do a return after doing your things. One possible application
+ * (besides debugging) is to flash a status LED on each packet.
+ */
+/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
+/* This macro is a hook if you need to know when an USB RESET occurs. It has
+ * one parameter which distinguishes between the start of RESET state and its
+ * end.
+ */
+/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
+/* This macro (if defined) is executed when a USB SET_ADDRESS request was
+ * received.
+ */
+#define USB_COUNT_SOF 0
+/* define this macro to 1 if you need the global variable "usbSofCount" which
+ * counts SOF packets. This feature requires that the hardware interrupt is
+ * connected to D- instead of D+.
+ */
+/* #ifdef __ASSEMBLER__
+ * macro myAssemblerMacro
+ * in YL, TCNT0
+ * sts timer0Snapshot, YL
+ * endm
+ * #endif
+ * #define USB_SOF_HOOK myAssemblerMacro
+ * This macro (if defined) is executed in the assembler module when a
+ * Start Of Frame condition is detected. It is recommended to define it to
+ * the name of an assembler macro which is defined here as well so that more
+ * than one assembler instruction can be used. The macro may use the register
+ * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
+ * immediately after an SOF pulse may be lost and must be retried by the host.
+ * What can you do with this hook? Since the SOF signal occurs exactly every
+ * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
+ * designs running on the internal RC oscillator.
+ * Please note that Start Of Frame detection works only if D- is wired to the
+ * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
+ */
+#define USB_CFG_CHECK_DATA_TOGGLING 0
+/* define this macro to 1 if you want to filter out duplicate data packets
+ * sent by the host. Duplicates occur only as a consequence of communication
+ * errors, when the host does not receive an ACK. Please note that you need to
+ * implement the filtering yourself in usbFunctionWriteOut() and
+ * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
+ * for each control- and out-endpoint to check for duplicate packets.
+ */
+#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
+/* define this macro to 1 if you want the function usbMeasureFrameLength()
+ * compiled in. This function can be used to calibrate the AVR's RC oscillator.
+ */
+#define USB_USE_FAST_CRC 0
+/* The assembler module has two implementations for the CRC algorithm. One is
+ * faster, the other is smaller. This CRC routine is only used for transmitted
+ * messages where timing is not critical. The faster routine needs 31 cycles
+ * per byte while the smaller one needs 61 to 69 cycles. The faster routine
+ * may be worth the 32 bytes bigger code size if you transmit lots of data and
+ * run the AVR close to its limit.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you may use one of obdev's free
+ * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you may use one of obdev's free shared VID/PID pairs. See the file
+ * USB-IDs-for-free.txt for details!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
+/* Version number of the device: Minor number first, then major number.
+ */
+#define USB_CFG_VENDOR_NAME 'd','m','9','r','e','c','o','r','d','s'
+#define USB_CFG_VENDOR_NAME_LEN 10
+/* These two values define the vendor name returned by the USB device. The name
+ * must be given as a list of characters under single quotes. The characters
+ * are interpreted as Unicode (UTF-16) entities.
+ * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
+ * details.
+ */
+#define USB_CFG_DEVICE_NAME 'T', 'a', 'r', 't', 'a', 'n'
+#define USB_CFG_DEVICE_NAME_LEN 6
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USB-IDs-for-free.txt before you assign a name if
+ * you use a shared VID/PID.
+ */
+#define USB_CFG_SERIAL_NUMBER 'd','m','9','r','e','c','o','r','d','s','.','c','o','m',':','t','1'
+#define USB_CFG_SERIAL_NUMBER_LEN 17
+/* Same as above for the serial number. If you don't want a serial number,
+ * undefine the macros.
+ * It may be useful to provide the serial number through other means than at
+ * compile time. See the section about descriptor properties below for how
+ * to fine tune control over USB descriptors such as the string descriptor
+ * for the serial number.
+ */
+#define USB_CFG_DEVICE_CLASS 0
+#define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ * Class 0xff is "vendor specific".
+ */
+#define USB_CFG_INTERFACE_CLASS 3 /* HID */
+#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
+#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
+/* See USB specification if you want to conform to an existing device class or
+ * protocol. The following classes must be set at interface level:
+ * HID class is 3, no subclass and protocol required (but may be useful!)
+ * CDC class is 2, use subclass 2 and protocol 1 for ACM
+ */
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * If you use this define, you must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* #define USB_PUBLIC static */
+/* Use the define above if you #include usbdrv.c instead of linking against it.
+ * This technique saves a couple of bytes in flash memory.
+ */
+
+/* ------------------- Fine Control over USB Descriptors ------------------- */
+/* If you don't want to use the driver's default USB descriptors, you can
+ * provide our own. These can be provided as (1) fixed length static data in
+ * flash memory, (2) fixed length static data in RAM or (3) dynamically at
+ * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
+ * information about this function.
+ * Descriptor handling is configured through the descriptor's properties. If
+ * no properties are defined or if they are 0, the default descriptor is used.
+ * Possible properties are:
+ * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
+ * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
+ * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
+ * you want RAM pointers.
+ * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
+ * in static memory is in RAM, not in flash memory.
+ * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
+ * the driver must know the descriptor's length. The descriptor itself is
+ * found at the address of a well known identifier (see below).
+ * List of static descriptor names (must be declared PROGMEM if in flash):
+ * char usbDescriptorDevice[];
+ * char usbDescriptorConfiguration[];
+ * char usbDescriptorHidReport[];
+ * char usbDescriptorString0[];
+ * int usbDescriptorStringVendor[];
+ * int usbDescriptorStringDevice[];
+ * int usbDescriptorStringSerialNumber[];
+ * Other descriptors can't be provided statically, they must be provided
+ * dynamically at runtime.
+ *
+ * Descriptor properties are or-ed or added together, e.g.:
+ * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
+ *
+ * The following descriptors are defined:
+ * USB_CFG_DESCR_PROPS_DEVICE
+ * USB_CFG_DESCR_PROPS_CONFIGURATION
+ * USB_CFG_DESCR_PROPS_STRINGS
+ * USB_CFG_DESCR_PROPS_STRING_0
+ * USB_CFG_DESCR_PROPS_STRING_VENDOR
+ * USB_CFG_DESCR_PROPS_STRING_PRODUCT
+ * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
+ * USB_CFG_DESCR_PROPS_HID
+ * USB_CFG_DESCR_PROPS_HID_REPORT
+ * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
+ *
+ * Note about string descriptors: String descriptors are not just strings, they
+ * are Unicode strings prefixed with a 2 byte header. Example:
+ * int serialNumberDescriptor[] = {
+ * USB_STRING_DESCRIPTOR_HEADER(6),
+ * 'S', 'e', 'r', 'i', 'a', 'l'
+ * };
+ */
+
+#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
+#define USB_CFG_DESCR_PROPS_STRINGS 0
+#define USB_CFG_DESCR_PROPS_STRING_0 0
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID 0
+#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
+#define USB_CFG_DESCR_PROPS_UNKNOWN 0
+
+#define usbMsgPtr_t unsigned short
+/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to
+ * a scalar type here because gcc generates slightly shorter code for scalar
+ * arithmetics than for pointer arithmetics. Remove this define for backward
+ * type compatibility or define it to an 8 bit type if you use data in RAM only
+ * and all RAM is below 256 bytes (tiny memory model in IAR CC).
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+/* #define USB_INTR_VECTOR INT0_vect */
+
+/* Set INT1 for D- falling edge to count SOF */
+/* #define USB_INTR_CFG EICRA */
+// #define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10))
+// /* #define USB_INTR_CFG_CLR 0 */
+// /* #define USB_INTR_ENABLE EIMSK */
+// #define USB_INTR_ENABLE_BIT INT1
+// /* #define USB_INTR_PENDING EIFR */
+// #define USB_INTR_PENDING_BIT INTF1
+// #define USB_INTR_VECTOR INT1_vect
diff --git a/keyboards/telophase/rules.mk b/keyboards/telophase/rules.mk
index 2c8df3295d..240a89e85b 100644
--- a/keyboards/telophase/rules.mk
+++ b/keyboards/telophase/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/tetris/rules.mk b/keyboards/tetris/rules.mk
index 15fcf5cf6d..ca5a113338 100755
--- a/keyboards/tetris/rules.mk
+++ b/keyboards/tetris/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = qmk-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/tgr/alice/alice.c b/keyboards/tgr/alice/alice.c
index 39aed2cf56..a4a5c787c6 100644
--- a/keyboards/tgr/alice/alice.c
+++ b/keyboards/tgr/alice/alice.c
@@ -16,3 +16,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "alice.h"
+
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D6);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
+ }
+ return true;
+}
diff --git a/keyboards/tgr/alice/config.h b/keyboards/tgr/alice/config.h
index 4c36896b70..1f1b32d4e3 100644
--- a/keyboards/tgr/alice/config.h
+++ b/keyboards/tgr/alice/config.h
@@ -33,6 +33,9 @@ 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 DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#define RGBLED_NUM 18
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/tgr/alice/rules.mk b/keyboards/tgr/alice/rules.mk
index 530e8ea329..a8fea7efa7 100644
--- a/keyboards/tgr/alice/rules.mk
+++ b/keyboards/tgr/alice/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/tgr/jane/config.h b/keyboards/tgr/jane/config.h
index dd119d3b04..5fb9a90560 100644
--- a/keyboards/tgr/jane/config.h
+++ b/keyboards/tgr/jane/config.h
@@ -36,4 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/tgr/jane/jane.c b/keyboards/tgr/jane/jane.c
index 4ab0b30073..fabdc0e90c 100644
--- a/keyboards/tgr/jane/jane.c
+++ b/keyboards/tgr/jane/jane.c
@@ -16,32 +16,20 @@
#include "jane.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/thevankeyboards/bananasplit/rules.mk b/keyboards/thevankeyboards/bananasplit/rules.mk
index 19f0e81f51..4530a87f6e 100644
--- a/keyboards/thevankeyboards/bananasplit/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/thevankeyboards/caravan/rules.mk b/keyboards/thevankeyboards/caravan/rules.mk
index f21c31f6fd..4bdaec4db8 100644
--- a/keyboards/thevankeyboards/caravan/rules.mk
+++ b/keyboards/thevankeyboards/caravan/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
diff --git a/keyboards/thevankeyboards/minivan/rules.mk b/keyboards/thevankeyboards/minivan/rules.mk
index 3a2b8ae584..d9a34f38b9 100644
--- a/keyboards/thevankeyboards/minivan/rules.mk
+++ b/keyboards/thevankeyboards/minivan/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
# 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/thevankeyboards/roadkit/rules.mk b/keyboards/thevankeyboards/roadkit/rules.mk
index 79cbec757f..e8ab28cb5a 100644
--- a/keyboards/thevankeyboards/roadkit/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
# 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/tkc1800/rules.mk b/keyboards/tkc1800/rules.mk
index 21e3697dc6..60140160c2 100644
--- a/keyboards/tkc1800/rules.mk
+++ b/keyboards/tkc1800/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/tmo50/config.h b/keyboards/tmo50/config.h
index ee7f0e34aa..cebd08bcea 100644
--- a/keyboards/tmo50/config.h
+++ b/keyboards/tmo50/config.h
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
+#define VENDOR_ID 0xFBFB
+#define PRODUCT_ID 0x0050
#define DEVICE_VER 0x0001
#define MANUFACTURER funderburker
#define PRODUCT TMO50
diff --git a/keyboards/tmo50/keymaps/via/keymap.c b/keyboards/tmo50/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a1d896b61b
--- /dev/null
+++ b/keyboards/tmo50/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2019 funderburker
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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] = {
+ // Default layer
+ [0] = LAYOUT_all(
+ 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_BSPC,
+ KC_TRNS, 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_TRNS, 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_TRNS, KC_LALT, KC_LGUI, LT1_SPC, LT1_SPC, KC_RALT, MO(3)
+ ),
+
+ // Fn1 layer
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ 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_GRV, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_ESC, 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_HOME, KC_END, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_DOWN, 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(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_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/via/readme.md b/keyboards/tmo50/keymaps/via/readme.md
new file mode 100644
index 0000000000..27cb965eba
--- /dev/null
+++ b/keyboards/tmo50/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA default layout
diff --git a/keyboards/tmo50/keymaps/via/rules.mk b/keyboards/tmo50/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/tmo50/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/tmo50/rules.mk b/keyboards/tmo50/rules.mk
index 84abd20e6e..954dd22460 100644
--- a/keyboards/tmo50/rules.mk
+++ b/keyboards/tmo50/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/toad/rules.mk b/keyboards/toad/rules.mk
index df45fa5df0..731b405c05 100644
--- a/keyboards/toad/rules.mk
+++ b/keyboards/toad/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/tokyo60/rules.mk b/keyboards/tokyo60/rules.mk
index 644e6a5412..87714ec6c6 100644
--- a/keyboards/tokyo60/rules.mk
+++ b/keyboards/tokyo60/rules.mk
@@ -14,9 +14,9 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
@@ -24,7 +24,7 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/touchpad/rules.mk b/keyboards/touchpad/rules.mk
index 21642c3d28..14aac23d49 100644
--- a/keyboards/touchpad/rules.mk
+++ b/keyboards/touchpad/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/treadstone32/config.h b/keyboards/treadstone32/config.h
index a7f9914536..b9cd94d4b6 100644
--- a/keyboards/treadstone32/config.h
+++ b/keyboards/treadstone32/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/treadstone32/rules.mk b/keyboards/treadstone32/rules.mk
index dbc46b403c..d779e70020 100644
--- a/keyboards/treadstone32/rules.mk
+++ b/keyboards/treadstone32/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/treadstone48/rev1/rules.mk b/keyboards/treadstone48/rev1/rules.mk
new file mode 100644
index 0000000000..fff00a1b51
--- /dev/null
+++ b/keyboards/treadstone48/rev1/rules.mk
@@ -0,0 +1,3 @@
+# Revision Specific Build Options
+# change yes to no to disable
+#
diff --git a/keyboards/treasure/type9/rules.mk b/keyboards/treasure/type9/rules.mk
index 370c683a54..d4b1f6f993 100644
--- a/keyboards/treasure/type9/rules.mk
+++ b/keyboards/treasure/type9/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/uk78/rules.mk b/keyboards/uk78/rules.mk
index ddd799c08e..40fc506aa0 100644
--- a/keyboards/uk78/rules.mk
+++ b/keyboards/uk78/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # 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
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/unikorn/config.h b/keyboards/unikorn/config.h
index 1c4f3431a0..e6bdbe7f2f 100644
--- a/keyboards/unikorn/config.h
+++ b/keyboards/unikorn/config.h
@@ -36,7 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+
#ifdef RGBLIGHT_ENABLE
#define RGBLED_NUM 17
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/unikorn/unikorn.c b/keyboards/unikorn/unikorn.c
index 70bc5a988f..c2c85eb984 100644
--- a/keyboards/unikorn/unikorn.c
+++ b/keyboards/unikorn/unikorn.c
@@ -16,32 +16,18 @@
#include "unikorn.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(D4);
- setPinOutput(D6);
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
+ return true;
}
diff --git a/keyboards/ut472/rules.mk b/keyboards/ut472/rules.mk
index 1dd477652b..ef114faa1f 100644
--- a/keyboards/ut472/rules.mk
+++ b/keyboards/ut472/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# 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 on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/uzu42/rev1/config.h b/keyboards/uzu42/rev1/config.h
index 8f86d22bf1..13b278970f 100644
--- a/keyboards/uzu42/rev1/config.h
+++ b/keyboards/uzu42/rev1/config.h
@@ -36,6 +36,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/uzu42/rules.mk b/keyboards/uzu42/rules.mk
index aea23f3cd0..600e0c94c8 100644
--- a/keyboards/uzu42/rules.mk
+++ b/keyboards/uzu42/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/v60_type_r/rules.mk b/keyboards/v60_type_r/rules.mk
index 37acd03d1a..94205df11f 100644
--- a/keyboards/v60_type_r/rules.mk
+++ b/keyboards/v60_type_r/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -26,7 +26,7 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable the RGB Underglow
RGBLIGHT_CUSTOM_DRIVER = yes
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/vinta/chconf.h b/keyboards/vinta/chconf.h
index b836a3b99c..e811705ba3 100644
--- a/keyboards/vinta/chconf.h
+++ b/keyboards/vinta/chconf.h
@@ -102,10 +102,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
@@ -518,4 +514,4 @@
#endif /* CHCONF_H */
-/** @} */ \ No newline at end of file
+/** @} */
diff --git a/keyboards/vinta/rules.mk b/keyboards/vinta/rules.mk
index 6d9fc0da1d..7365096890 100644
--- a/keyboards/vinta/rules.mk
+++ b/keyboards/vinta/rules.mk
@@ -13,4 +13,8 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
-LAYOUTS = 65_ansi_blocker \ No newline at end of file
+LAYOUTS = 65_ansi_blocker
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/vision_division/rules.mk b/keyboards/vision_division/rules.mk
index 960210046d..5d9d515f7a 100644
--- a/keyboards/vision_division/rules.mk
+++ b/keyboards/vision_division/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# 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/vitamins_included/rev1/config.h b/keyboards/vitamins_included/rev1/config.h
index c4881db01b..88b43ffc33 100644
--- a/keyboards/vitamins_included/rev1/config.h
+++ b/keyboards/vitamins_included/rev1/config.h
@@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F5, F6, C7, F7 }
#define MATRIX_COL_PINS { F1, F4, E2, B6, D7, D6}
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/vitamins_included/rev2/config.h b/keyboards/vitamins_included/rev2/config.h
index 0aa0e7063f..d0f9e64003 100644
--- a/keyboards/vitamins_included/rev2/config.h
+++ b/keyboards/vitamins_included/rev2/config.h
@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F5, F6, C7, F7 }
#define MATRIX_COL_PINS { F1, F4, E2, B6, D7, D6}
+#define DIODE_DIRECTION COL2ROW
+
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/vitamins_included/rules.mk b/keyboards/vitamins_included/rules.mk
index d81b4a9146..0d615b41f0 100644
--- a/keyboards/vitamins_included/rules.mk
+++ b/keyboards/vitamins_included/rules.mk
@@ -8,13 +8,13 @@ MCU = atmega32u4
AUDIO_ENABLE = yes # Audio output on port C6
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
COMMAND_ENABLE = no # Commands for debug and configuration
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug
DEBUG_ENABLE = no # Enable more debug info
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+EXTRAKEY_ENABLE = yes # Audio control and System control
MIDI_ENABLE = no # MIDI controls
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+MOUSEKEY_ENABLE = no # Mouse keys
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/vn66/rules.mk b/keyboards/vn66/rules.mk
index 37005c1276..6575b3fd6f 100644
--- a/keyboards/vn66/rules.mk
+++ b/keyboards/vn66/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,10 +25,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
ENCODER_ENABLE = yes
diff --git a/keyboards/waldo/rules.mk b/keyboards/waldo/rules.mk
index c174a9eb96..db9db239d3 100644
--- a/keyboards/waldo/rules.mk
+++ b/keyboards/waldo/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/westfoxtrot/aanzee/rules.mk b/keyboards/westfoxtrot/aanzee/rules.mk
index 5032b0d296..b1f66767d4 100644
--- a/keyboards/westfoxtrot/aanzee/rules.mk
+++ b/keyboards/westfoxtrot/aanzee/rules.mk
@@ -14,14 +14,14 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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 keyboard underlight functionality (+4870)
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/westfoxtrot/cyclops/rules.mk b/keyboards/westfoxtrot/cyclops/rules.mk
index 04b2bc82f6..03b28cbeff 100644
--- a/keyboards/westfoxtrot/cyclops/rules.mk
+++ b/keyboards/westfoxtrot/cyclops/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/westfoxtrot/cypher/cypher.c b/keyboards/westfoxtrot/cypher/cypher.c
deleted file mode 100644
index d2407525ea..0000000000
--- a/keyboards/westfoxtrot/cypher/cypher.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright 2019 westfoxtrot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "cypher.h"
-
-void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
-
- matrix_init_user();
-}
-
-void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
-
- matrix_scan_user();
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- // put your per-action keyboard code here
- // runs for every action, just before processing by the firmware
-
- return process_record_user(keycode, record);
-}
-
-void led_set_kb(uint8_t usb_led) {
- if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
- writePinHigh(F4);
- } else {
- writePinLow(F4);
- }
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinHigh(F1);
- } else {
- writePinLow(F1);
- }
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- writePinHigh(F5);
- } else {
- writePinLow(F5);
- }
- led_set_user(usb_led);
-}
diff --git a/keyboards/westfoxtrot/cypher/config.h b/keyboards/westfoxtrot/cypher/rev1/config.h
index 1378837037..33bdaa2042 100644
--- a/keyboards/westfoxtrot/cypher/config.h
+++ b/keyboards/westfoxtrot/cypher/rev1/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7, E6, F0 }
#define UNUSED_PINS
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B5
diff --git a/keyboards/westfoxtrot/cypher/info.json b/keyboards/westfoxtrot/cypher/rev1/info.json
index ddf4e9d5a8..ddf4e9d5a8 100644
--- a/keyboards/westfoxtrot/cypher/info.json
+++ b/keyboards/westfoxtrot/cypher/rev1/info.json
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default/keymap.c b/keyboards/westfoxtrot/cypher/rev1/keymaps/default/keymap.c
index 1906f93969..54eae8e38e 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default/keymap.c
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/default/keymap.c
@@ -21,29 +21,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,\
- KC_LSFT, KC_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_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_PEQL,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTRL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
[_F1] = LAYOUT_ansi( /* Function Layer */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,\
- _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,\
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,\
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,\
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,_______, _______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
};
-
-void matrix_init_user(void) {
- //user initialization
-}
-
-void matrix_scan_user(void) {
- //user matrix
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default/readme.md b/keyboards/westfoxtrot/cypher/rev1/keymaps/default/readme.md
index 05c3700266..05c3700266 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default/readme.md
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/default/readme.md
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default-iso/keymap.c b/keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/keymap.c
index 2a08ae853b..df93c53996 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default-iso/keymap.c
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/keymap.c
@@ -21,29 +21,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_iso( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,\
- KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTRL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
[_F1] = LAYOUT_iso( /* Function Layer */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,\
- _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______, _______, _______, _______,\
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,\
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,_______, _______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
};
-
-void matrix_init_user(void) {
- //user initialization
-}
-
-void matrix_scan_user(void) {
- //user matrix
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
diff --git a/keyboards/westfoxtrot/cypher/keymaps/default-iso/readme.md b/keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/readme.md
index 81a4a677fd..81a4a677fd 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/default-iso/readme.md
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/default_iso/readme.md
diff --git a/keyboards/westfoxtrot/cypher/keymaps/kwer/config.h b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/config.h
index 947e340c32..947e340c32 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/kwer/config.h
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/config.h
diff --git a/keyboards/westfoxtrot/cypher/keymaps/kwer/keymap.c b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c
index 2d7bf2a5e2..2d7bf2a5e2 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/kwer/keymap.c
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c
diff --git a/keyboards/westfoxtrot/cypher/keymaps/kwer/readme.md b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/readme.md
index c1a132e713..c1a132e713 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/kwer/readme.md
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/readme.md
diff --git a/keyboards/westfoxtrot/cypher/keymaps/kwer/rules.mk b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/rules.mk
index df87c59a23..df87c59a23 100644
--- a/keyboards/westfoxtrot/cypher/keymaps/kwer/rules.mk
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/rules.mk
diff --git a/keyboards/westfoxtrot/cypher/readme.md b/keyboards/westfoxtrot/cypher/rev1/readme.md
index 6db417fae8..5e57fd8a4e 100644
--- a/keyboards/westfoxtrot/cypher/readme.md
+++ b/keyboards/westfoxtrot/cypher/rev1/readme.md
@@ -1,15 +1,13 @@
# cypher
-![cypher](https://github.com/westfoxtrot/Cypher_PCB)
-
PCB for the cypher keyboard
-Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot)
-Hardware Supported: Cypher PCB
-Hardware Availability: with group buy + Files released here (https://github.com/westfoxtrot/Cypher_PCB)
+* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot)
+* Hardware Supported: Cypher PCB revisions 1-4 (Rev # is printed on PCB)
+* Hardware Availability: with group buy + [Files released here](https://github.com/westfoxtrot/Cypher_PCB)
Make example for this keyboard (after setting up your build environment):
- make westfoxtrot/cypher:default
+ make westfoxtrot/cypher/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/westfoxtrot/cypher/rev1/rev1.c b/keyboards/westfoxtrot/cypher/rev1/rev1.c
new file mode 100644
index 0000000000..78b4b6b46e
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev1/rev1.c
@@ -0,0 +1,31 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev1.h"
+
+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(F4, led_state.num_lock);
+ writePin(F1, led_state.caps_lock);
+ writePin(F5, led_state.scroll_lock);
+ }
+ return res;
+}
diff --git a/keyboards/westfoxtrot/cypher/cypher.h b/keyboards/westfoxtrot/cypher/rev1/rev1.h
index fdff12e9b1..fdff12e9b1 100644
--- a/keyboards/westfoxtrot/cypher/cypher.h
+++ b/keyboards/westfoxtrot/cypher/rev1/rev1.h
diff --git a/keyboards/westfoxtrot/cypher/rules.mk b/keyboards/westfoxtrot/cypher/rev1/rules.mk
index 4703282ff2..ccf5ec1ea0 100644
--- a/keyboards/westfoxtrot/cypher/rules.mk
+++ b/keyboards/westfoxtrot/cypher/rev1/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/westfoxtrot/cypher/rev5/config.h b/keyboards/westfoxtrot/cypher/rev5/config.h
new file mode 100644
index 0000000000..111771ae86
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/config.h
@@ -0,0 +1,81 @@
+/*
+Copyright 2019 westfoxtrot
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x21FF
+#define PRODUCT_ID 0xAA97
+#define DEVICE_VER 0x0002
+#define MANUFACTURER westfoxtrot
+#define PRODUCT cypher
+#define DESCRIPTION Cypher
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B0, F1, F5, F6, F7, D1, F4, D4, C6, C7 }
+#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, B7, B3, B2, B1, F0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 5
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* 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
+
+
+
+
+#define BACKLIGHT_PIN D0
+
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 10
+ #define RGBLIGHT_HUE_STEP 12
+ #define RGBLIGHT_SAT_STEP 25
+ #define RGBLIGHT_VAL_STEP 12
+ #define RGBLIGHT_LIMIT_VAL 255
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_ANIMATIONS
+#endif
diff --git a/keyboards/westfoxtrot/cypher/rev5/info.json b/keyboards/westfoxtrot/cypher/rev5/info.json
new file mode 100644
index 0000000000..50f51651cd
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/info.json
@@ -0,0 +1,110 @@
+{
+ "keyboard_name": "Cypher",
+ "width": 19.5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"~","x":0,"y":0},
+ {"label":"!","x":1,"y":0},
+ {"label":"@","x":2,"y":0},
+ {"label":"#","x":3,"y":0},
+ {"label":"$","x":4,"y":0},
+ {"label":"%","x":5,"y":0},
+ {"label":"^","x":6,"y":0},
+ {"label":"&","x":7,"y":0},
+ {"label":"*","x":8,"y":0},
+ {"label":"(","x":9,"y":0},
+ {"label":")","x":10,"y":0},
+ {"label":"_","x":11,"y":0},
+ {"label":"+","x":12,"y":0},
+ {"label":"Backspace","x":13,"y":0},
+ {"label":"~","x":14,"y":0},
+
+ {"label":"Num Lock","x":15.5,"y":0},
+ {"label":"/","x":16.5,"y":0},
+ {"label":"*","x":17.5,"y":0},
+ {"label":"-","x":18.5,"y":0},
+
+ {"label":"Tab","x":0,"y":1,"w":1.5},
+ {"label":"Q","x":1.5,"y":1},
+ {"label":"W","x":2.5,"y":1},
+ {"label":"E","x":3.5,"y":1},
+ {"label":"R","x":4.5,"y":1},
+ {"label":"T","x":5.5,"y":1},
+ {"label":"Y","x":6.5,"y":1},
+ {"label":"U","x":7.5,"y":1},
+ {"label":"I","x":8.5,"y":1},
+ {"label":"O","x":9.5,"y":1},
+ {"label":"P","x":10.5,"y":1},
+ {"label":"{","x":11.5,"y":1},
+ {"label":"}","x":12.5,"y":1},
+ {"label":"|","x":13.5,"y":1,"w":1.5},
+
+ {"label":"7","x":15.5,"y":1},
+ {"label":"8","x":16.5,"y":1},
+ {"label":"9","x":17.5,"y":1},
+ {"label":"+","x":18.5,"y":1},
+
+ {"label":"Caps Lock","x":0,"y":2,"w":1.75},
+ {"label":"A","x":1.75,"y":2},
+ {"label":"S","x":2.75,"y":2},
+ {"label":"D","x":3.75,"y":2},
+ {"label":"F","x":4.75,"y":2},
+ {"label":"G","x":5.75,"y":2},
+ {"label":"H","x":6.75,"y":2},
+ {"label":"J","x":7.75,"y":2},
+ {"label":"K","x":8.75,"y":2},
+ {"label":"L","x":9.75,"y":2},
+ {"label":":","x":10.75,"y":2},
+ {"label":"\"","x":11.75,"y":2},
+ {"label":"NUHS","x":12.75,"y":2},
+ {"label":"Enter","x":13.75,"y":2,"w":1.25},
+
+ {"label":"4","x":15.5,"y":2},
+ {"label":"5","x":16.5,"y":2},
+ {"label":"6","x":17.5,"y":2},
+ {"label":"=","x":18.5,"y":2},
+
+ {"label":"Shift","x":0,"y":3,"w":1.25},
+ {"label":"Shift","x":1.25,"y":3},
+ {"label":"Z","x":2.25,"y":3},
+ {"label":"X","x":3.25,"y":3},
+ {"label":"C","x":4.25,"y":3},
+ {"label":"V","x":5.25,"y":3},
+ {"label":"B","x":6.25,"y":3},
+ {"label":"N","x":7.25,"y":3},
+ {"label":"M","x":8.25,"y":3},
+ {"label":"<","x":9.25,"y":3},
+ {"label":">","x":10.25,"y":3},
+ {"label":"?","x":11.25,"y":3},
+ {"label":"Shift","x":12.25,"y":3,"w":1.75},
+
+ {"label":"Up","x":14.25,"y":3.25},
+
+ {"label":"1","x":15.5,"y":3},
+ {"label":"2","x":16.5,"y":3},
+ {"label":"3","x":17.5,"y":3},
+ {"label":"Enter","x":18.5,"y":3},
+
+ {"label":"Ctrl","x":0,"y":4,"w":1.25},
+ {"label":"Win","x":1.25,"y":4},
+ {"label":"Alt","x":2.25,"y":4,"w":1.25},
+ {"label":"Space","x":3.5,"y":4,"w":1.5},
+ {"label":"Space","x":5,"y":4,"w":3},
+ {"label":"Space","x":8,"y":4,"w":1.5},
+ {"label":"Alt","x":9.5,"y":4,"w":1.25},
+ {"label":"Win","x":10.75,"y":4},
+ {"label":"Ctrl","x":11.75,"y":4,"w":1.25},
+
+ {"label":"Left","x":13.25,"y":4.25},
+ {"label":"Down","x":14.25,"y":4.25},
+ {"label":"Right","x":15.25,"y":4.25},
+
+ {"label":"0","x":16.5,"y":4},
+ {"label":".","x":17.5,"y":4},
+ {"label":"Backspace","x":18.5,"y":4}
+ ]
+ }
+ }
+ }
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/default/keymap.c b/keyboards/westfoxtrot/cypher/rev5/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f9d6bc8e56
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define _MA 0
+#define _F1 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT_all( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_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_NO, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_NO ,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC,KC_SPC,KC_SPC, KC_RALT,KC_RALT,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
+
+[_F1] = LAYOUT_all( /* Function Layer */
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL , _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, _______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______, _______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
+
+};
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/default/readme.md b/keyboards/westfoxtrot/cypher/rev5/keymaps/default/readme.md
new file mode 100644
index 0000000000..05c3700266
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for cypher \ No newline at end of file
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/keymap.c b/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..e3bda0c005
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define _MA 0
+#define _F1 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT_all( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_NO, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTRL, KC_LGUI,KC_LALT, KC_NO,KC_SPC,KC_NO, KC_RALT,KC_RGUI,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
+
+[_F1] = LAYOUT_all( /* Function Layer */
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______,_______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______, _______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
+
+};
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/readme.md b/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/readme.md
new file mode 100644
index 0000000000..81a4a677fd
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/default_iso/readme.md
@@ -0,0 +1 @@
+# The default iso keymap for cypher
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c
new file mode 100644
index 0000000000..e23b83e142
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define _MA 0
+#define _F1 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT_all( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NO, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_BSLS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_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, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, _______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______, _______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
+
+};
+
+void matrix_init_user(void) {
+ //user initialization
+}
+
+void matrix_scan_user(void) {
+ //user matrix
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/max/readme.md b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/readme.md
new file mode 100644
index 0000000000..05c3700266
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/readme.md
@@ -0,0 +1 @@
+# The default keymap for cypher \ No newline at end of file
diff --git a/keyboards/westfoxtrot/cypher/rev5/readme.md b/keyboards/westfoxtrot/cypher/rev5/readme.md
new file mode 100644
index 0000000000..d7b78d5942
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/readme.md
@@ -0,0 +1,13 @@
+# cypher
+
+PCB for the cypher keyboard
+
+* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot)
+* Hardware Supported: Cypher PCB revisions 5 (Rev # is printed on PCB)
+* Hardware Availability: with group buy + [Files released here](https://github.com/westfoxtrot/Cypher_PCB)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make westfoxtrot/cypher/rev5: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/westfoxtrot/cypher/rev5/rev5.c b/keyboards/westfoxtrot/cypher/rev5/rev5.c
new file mode 100644
index 0000000000..b75fd650e0
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/rev5.c
@@ -0,0 +1,31 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev5.h"
+
+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(D3, led_state.num_lock);
+ writePin(D5, led_state.caps_lock);
+ writePin(D2, led_state.scroll_lock);
+ }
+ return res;
+}
diff --git a/keyboards/westfoxtrot/cypher/rev5/rev5.h b/keyboards/westfoxtrot/cypher/rev5/rev5.h
new file mode 100644
index 0000000000..d005ebc975
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/rev5.h
@@ -0,0 +1,48 @@
+/* Copyright 2019 westfoxtrot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define ___ KC_NO
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K51, K52, K53, K54, K55, K56, K57, K58,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K60, K61, K62, K63, K65, K66, K67, K68, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K70, K71, K72, K73, K75, K76, K77, K78, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K80, K81, K82, K83, K85, K86, K87, K88, \
+ K40, K41, K42, K44, K46, K47, K49, K90, K91, K92, K93, K95, K96, K97, K98 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39 }, \
+ { K40, K41, K42, ___, K44, ___, K46, K47, ___, K49 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \
+ { K60, K61, K62, K63, ___, K65, K66, K67, K68 }, \
+ { K70, K71, K72, K73, ___, K75, K76, K77, K78 }, \
+ { K80, K81, K82, K83, ___, K85, K86, K87, K88 }, \
+ { K90, K91, K92, K93, ___, K95, K96, K97, K98 } \
+}
diff --git a/keyboards/westfoxtrot/cypher/rev5/rules.mk b/keyboards/westfoxtrot/cypher/rev5/rules.mk
new file mode 100644
index 0000000000..a41c12af59
--- /dev/null
+++ b/keyboards/westfoxtrot/cypher/rev5/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/whitefox/chconf.h b/keyboards/whitefox/chconf.h
index d9114ec858..513ae821db 100644
--- a/keyboards/whitefox/chconf.h
+++ b/keyboards/whitefox/chconf.h
@@ -105,10 +105,6 @@
*/
#define CH_CFG_NO_IDLE_THREAD FALSE
-/* Use __WFI in the idle thread for waiting. Does lower the power
- * consumption. */
-#define CORTEX_ENABLE_WFI_IDLE TRUE
-
/** @} */
/*===========================================================================*/
diff --git a/keyboards/whitefox/info.json b/keyboards/whitefox/info.json
index 5efe2910fc..fc2ffea12f 100644
--- a/keyboards/whitefox/info.json
+++ b/keyboards/whitefox/info.json
@@ -14,6 +14,78 @@
"LAYOUT_aria": {
"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":"Win", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
- }
+ },
+ "LAYOUT_vanilla": {
+ "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},
+ {"label": "Win","x": 11,"y": 4,"w": 1},
+ {"label": "Ctrl","x": 12,"y": 4,"w": 1},
+ {"x": 13,"y": 4},
+ {"x": 14,"y": 4},
+ {"x": 15,"y": 4}
+ ]
+ }
}
}
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 59332d1d5a..27c3c31416 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -72,8 +72,13 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = yes # Custom matrix file
BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = custom
VISUALIZER_ENABLE = yes
LED_DRIVER = is31fl3731c
LED_WIDTH = 16
LED_HEIGHT = 5
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/whitefox/whitefox.h b/keyboards/whitefox/whitefox.h
index 7791dac67c..0c19e2daa4 100644
--- a/keyboards/whitefox/whitefox.h
+++ b/keyboards/whitefox/whitefox.h
@@ -134,4 +134,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K80, K81, K82, K83, K84, K85, K86, KC_NO } \
}
+/* Vanilla WhiteFox
+ * ,---------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backsp| `|
+ * |---------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|Del|
+ * |---------------------------------------------------------------|
+ * |CapsL | 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 |Alt|GUI|Ctl|Lef|Dow|Rig|
+ * `---------------------------------------------------------------'
+ */
+
+#define LAYOUT_vanilla( \
+ K00, K10, K20, K30, K40, K50, K60, K70, K80, K01, K11, K21, K31, K51, K61, \
+ K71, K81, K02, K12, K22, K32, K42, K52, K62, K72, K82, K03, K13, K23, K33, \
+ K43, K53, K63, K73, K83, K04, K14, K24, K34, K44, K54, K64, K84, K05, \
+ K15, K35, K45, K55, K65, K75, K85, K06, K16, K26, K36, K46, K56, K66, \
+ K76, K86, K07, K17, K27, K37, K47, K57, K67, K77 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K20, K21, K22, K23, K24, KC_NO, K26, K27 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, KC_NO, 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, KC_NO, K75, K76, K77 }, \
+ { K80, K81, K82, K83, K84, K85, K86, KC_NO } \
+}
+
#endif
diff --git a/keyboards/wilba_tech/rama_works_koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h
index 9cbbd6620b..7f945b4a4a 100644
--- a/keyboards/wilba_tech/rama_works_koyu/config.h
+++ b/keyboards/wilba_tech/rama_works_koyu/config.h
@@ -121,4 +121,7 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
-#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31 \ No newline at end of file
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/rama_works_koyu/info.json b/keyboards/wilba_tech/rama_works_koyu/info.json
index 430bc6fed8..377ee0333e 100644
--- a/keyboards/wilba_tech/rama_works_koyu/info.json
+++ b/keyboards/wilba_tech/rama_works_koyu/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "RAMA WORKS KOYU",
"url": "http://rama.works",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/rama_works_koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk
index 80a3b32b2b..809ab26d0e 100644
--- a/keyboards/wilba_tech/rama_works_koyu/rules.mk
+++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/wilba_tech/rama_works_m10_b/rules.mk b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
index e970f6c7a2..5ccb9456ad 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/rama_works_m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h
index 8381a4db00..849d1a4615 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m60_a/config.h
@@ -119,3 +119,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/rama_works_m60_a/info.json b/keyboards/wilba_tech/rama_works_m60_a/info.json
index e2061b73f6..cc8918556e 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m60_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "RAMA WORKS M60-A",
"url": "http://rama.works",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/rama_works_m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
index e4e934bdba..7e76a962a2 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/wilba_tech/rama_works_m6_a/config.h b/keyboards/wilba_tech/rama_works_m6_a/config.h
index 1a61604bb4..cbb75e289c 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_a/config.h
@@ -109,3 +109,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 43
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/rama_works_m6_a/rules.mk b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
index 26185cb38f..6a60c5423b 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
@@ -19,10 +19,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/wilba_tech/rama_works_m6_b/config.h b/keyboards/wilba_tech/rama_works_m6_b/config.h
index 3ebfd80dab..1af1cf694b 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_b/config.h
@@ -152,3 +152,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 43
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/rama_works_m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
index 05212a3be2..51d1a0c805 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
@@ -19,10 +19,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h
index 748b2cb291..2523b962e7 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/config.h
+++ b/keyboards/wilba_tech/rama_works_u80_a/config.h
@@ -235,3 +235,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/rama_works_u80_a/info.json b/keyboards/wilba_tech/rama_works_u80_a/info.json
index 7febde5c5b..3652b4e512 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/info.json
+++ b/keyboards/wilba_tech/rama_works_u80_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "RAMA WORKS U80-A",
"url": "http://rama.works",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 18.25,
"height": 6.5,
"layouts": {
diff --git a/keyboards/wilba_tech/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
index 443776d4a3..5bda0f51a4 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h
index 269afbcb8b..e07b911661 100644
--- a/keyboards/wilba_tech/wt60_a/config.h
+++ b/keyboards/wilba_tech/wt60_a/config.h
@@ -204,3 +204,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt60_a/info.json b/keyboards/wilba_tech/wt60_a/info.json
index 3b3614a8bf..09bdcaf05f 100644
--- a/keyboards/wilba_tech/wt60_a/info.json
+++ b/keyboards/wilba_tech/wt60_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT60-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt60_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt60_b/config.h b/keyboards/wilba_tech/wt60_b/config.h
new file mode 100644
index 0000000000..e80a6715de
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/config.h
@@ -0,0 +1,118 @@
+/* Copyright 2020 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#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
+#define DESCRIPTION wilba.tech WT60-B
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F0, F1, F4, 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
+
+/* 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
+
+
+// IS31FL3731 driver
+#define DRIVER_COUNT 2
+#define DRIVER_LED_TOTAL 72
+
+#define RGB_BACKLIGHT_ENABLED 1
+
+// This conditionally compiles the backlight code for wT60-B specifics
+#define RGB_BACKLIGHT_WT60_B
+
+// enable/disable LEDs based on layout
+// they aren't really used if RGB_BACKLIGHT_WT60_B defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 255
+
+// the default effect speed (0-3)
+#define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
+
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+
+// Backlight config starts after VIA's EEPROM usage,
+// dynamic keymaps start after this.
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt60_b/info.json b/keyboards/wilba_tech/wt60_b/info.json
new file mode 100644
index 0000000000..5d01aaa53a
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "wilba.tech WT60-B",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "width": 15,
+ "height": 5,
+ "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_b/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_b/keymaps/default/keymap.c
new file mode 100644
index 0000000000..710fa4da16
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-B
+#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_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
+ KC_NO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23, KC_NO),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ 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_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn2 Layer
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn3 Layer (zeal60 Configuration)
+[3] = LAYOUT_all(
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, 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, ES_DEC, ES_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),
+
+};
diff --git a/keyboards/wilba_tech/wt60_b/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_b/keymaps/via/keymap.c
new file mode 100644
index 0000000000..710fa4da16
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/keymaps/via/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-B
+#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_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
+ KC_NO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23, KC_NO),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ 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_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn2 Layer
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn3 Layer (zeal60 Configuration)
+[3] = LAYOUT_all(
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, 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, ES_DEC, ES_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),
+
+};
diff --git a/keyboards/wilba_tech/wt60_b/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_b/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wilba_tech/wt60_b/readme.md b/keyboards/wilba_tech/wt60_b/readme.md
new file mode 100644
index 0000000000..f365bf3258
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/readme.md
@@ -0,0 +1,18 @@
+# wilba.tech WT60-B
+
+WT60-B is a keyboard PCB supporting 60% layout. [More info at wilba.tech](https://wilba.tech/)
+
+First produced as WT60-B THERMAL for wilba.tech Thermal.
+
+WT60-B is the hotswap variant PCB.
+WT60-BX is the solderable variant PCB with split backspace and stepped Caps Lock support.
+
+* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
+* Hardware Supported: wilba.tech WT60-B
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt60_b: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/wilba_tech/wt60_b/rules.mk b/keyboards/wilba_tech/wt60_b/rules.mk
new file mode 100644
index 0000000000..50faab968c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/rules.mk
@@ -0,0 +1,46 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# 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 += -DNO_SUSPEND_POWER_DOWN
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+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 = no # Enable WS2812 RGB underlight.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+CIE1931_CURVE = yes
+
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ quantum/color.c \
+ drivers/issi/is31fl3731.c \
+ drivers/avr/i2c_master.c
diff --git a/keyboards/wilba_tech/wt60_b/wt60_b.c b/keyboards/wilba_tech/wt60_b/wt60_b.c
new file mode 100644
index 0000000000..051cbc6d43
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/wt60_b.c
@@ -0,0 +1 @@
+#include "wt60_b.h"
diff --git a/keyboards/wilba_tech/wt60_b/wt60_b.h b/keyboards/wilba_tech/wt60_b/wt60_b.h
new file mode 100644
index 0000000000..2b5fe7fe11
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_b/wt60_b.h
@@ -0,0 +1,37 @@
+/* Copyright 2020 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "via.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K407, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
+ { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
+ { K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, ____, K411, K412, K413 } \
+}
diff --git a/keyboards/wilba_tech/wt60_bx/config.h b/keyboards/wilba_tech/wt60_bx/config.h
new file mode 100644
index 0000000000..0fba586d8f
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/config.h
@@ -0,0 +1,118 @@
+/* Copyright 2020 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#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
+#define DESCRIPTION wilba.tech WT60-BX
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F0, F1, F4, 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
+
+/* 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
+
+
+// IS31FL3731 driver
+#define DRIVER_COUNT 2
+#define DRIVER_LED_TOTAL 72
+
+#define RGB_BACKLIGHT_ENABLED 1
+
+// This conditionally compiles the backlight code for wT60-BX specifics
+#define RGB_BACKLIGHT_WT60_BX
+
+// enable/disable LEDs based on layout
+// they aren't really used if RGB_BACKLIGHT_WT60_BX defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 255
+
+// the default effect speed (0-3)
+#define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
+
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+
+// Backlight config starts after VIA's EEPROM usage,
+// dynamic keymaps start after this.
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt60_bx/info.json b/keyboards/wilba_tech/wt60_bx/info.json
new file mode 100644
index 0000000000..3d85f0d57c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "wilba.tech WT60-BX",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "width": 15,
+ "height": 5,
+ "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_bx/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_bx/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3e08d4eda1
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-BX
+#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_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
+ KC_NO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23, KC_NO),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ 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_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn2 Layer
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn3 Layer (zeal60 Configuration)
+[3] = LAYOUT_all(
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, 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, ES_DEC, ES_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),
+
+};
diff --git a/keyboards/wilba_tech/wt60_bx/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_bx/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3e08d4eda1
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/keymaps/via/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-BX
+#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_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
+ KC_NO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23, KC_NO),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ 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_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn2 Layer
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// Fn3 Layer (zeal60 Configuration)
+[3] = LAYOUT_all(
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, 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, ES_DEC, ES_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),
+
+};
diff --git a/keyboards/wilba_tech/wt60_bx/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_bx/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wilba_tech/wt60_bx/readme.md b/keyboards/wilba_tech/wt60_bx/readme.md
new file mode 100644
index 0000000000..19a5a54bb6
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/readme.md
@@ -0,0 +1,18 @@
+# wilba.tech WT60-BX
+
+WT60-BX is a keyboard PCB supporting 60% layout. [More info at wilba.tech](https://wilba.tech/)
+
+First produced as WT60-BX THERMAL for wilba.tech Thermal.
+
+WT60-B is the hotswap variant PCB.
+WT60-BX is the solderable variant PCB with split backspace and stepped Caps Lock support.
+
+* Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
+* Hardware Supported: wilba.tech WT60-BX
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt60_bx: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/wilba_tech/wt60_bx/rules.mk b/keyboards/wilba_tech/wt60_bx/rules.mk
new file mode 100644
index 0000000000..50faab968c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/rules.mk
@@ -0,0 +1,46 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# 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 += -DNO_SUSPEND_POWER_DOWN
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+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 = no # Enable WS2812 RGB underlight.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+CIE1931_CURVE = yes
+
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ quantum/color.c \
+ drivers/issi/is31fl3731.c \
+ drivers/avr/i2c_master.c
diff --git a/keyboards/wilba_tech/wt60_bx/wt60_bx.c b/keyboards/wilba_tech/wt60_bx/wt60_bx.c
new file mode 100644
index 0000000000..2a52888ca0
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/wt60_bx.c
@@ -0,0 +1 @@
+#include "wt60_bx.h"
diff --git a/keyboards/wilba_tech/wt60_bx/wt60_bx.h b/keyboards/wilba_tech/wt60_bx/wt60_bx.h
new file mode 100644
index 0000000000..2b5fe7fe11
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_bx/wt60_bx.h
@@ -0,0 +1,37 @@
+/* Copyright 2020 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "via.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K407, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
+ { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
+ { K400, K401, K402, ____, ____, ____, ____, K407, ____, ____, ____, K411, K412, K413 } \
+}
diff --git a/keyboards/wilba_tech/wt60_d/info.json b/keyboards/wilba_tech/wt60_d/info.json
index adb19a15b7..bdd9c60a77 100644
--- a/keyboards/wilba_tech/wt60_d/info.json
+++ b/keyboards/wilba_tech/wt60_d/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT60-D",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt60_d/rules.mk b/keyboards/wilba_tech/wt60_d/rules.mk
index a5c98a1c60..6e5ad12f8d 100644
--- a/keyboards/wilba_tech/wt60_d/rules.mk
+++ b/keyboards/wilba_tech/wt60_d/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h
index ad4c120f4d..bf19fe38cc 100644
--- a/keyboards/wilba_tech/wt65_a/config.h
+++ b/keyboards/wilba_tech/wt65_a/config.h
@@ -201,3 +201,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt65_a/info.json b/keyboards/wilba_tech/wt65_a/info.json
index f2b18dadd1..dc474f9d4e 100644
--- a/keyboards/wilba_tech/wt65_a/info.json
+++ b/keyboards/wilba_tech/wt65_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT65-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt65_a/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h
index f98fa4e729..d74275a287 100644
--- a/keyboards/wilba_tech/wt65_b/config.h
+++ b/keyboards/wilba_tech/wt65_b/config.h
@@ -201,3 +201,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt65_b/info.json b/keyboards/wilba_tech/wt65_b/info.json
index dd6fe1af39..618210ad1c 100644
--- a/keyboards/wilba_tech/wt65_b/info.json
+++ b/keyboards/wilba_tech/wt65_b/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT65-B",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt65_b/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt69_a/info.json b/keyboards/wilba_tech/wt69_a/info.json
index df7af63c29..8bf5acfc24 100644
--- a/keyboards/wilba_tech/wt69_a/info.json
+++ b/keyboards/wilba_tech/wt69_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT69-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 18.25,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt69_a/rules.mk b/keyboards/wilba_tech/wt69_a/rules.mk
index 25f3ecbf19..a9ce761ca4 100644
--- a/keyboards/wilba_tech/wt69_a/rules.mk
+++ b/keyboards/wilba_tech/wt69_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h
index 0c0a2ff082..9b058eec41 100644
--- a/keyboards/wilba_tech/wt75_a/config.h
+++ b/keyboards/wilba_tech/wt75_a/config.h
@@ -204,3 +204,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt75_a/info.json b/keyboards/wilba_tech/wt75_a/info.json
index b52d96852a..a7386a8306 100644
--- a/keyboards/wilba_tech/wt75_a/info.json
+++ b/keyboards/wilba_tech/wt75_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT75-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 6,
"layouts": {
diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt75_a/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h
index 0c7b3dbfad..d22ac97e02 100644
--- a/keyboards/wilba_tech/wt75_b/config.h
+++ b/keyboards/wilba_tech/wt75_b/config.h
@@ -204,3 +204,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt75_b/info.json b/keyboards/wilba_tech/wt75_b/info.json
index e35518aa02..3aa604b341 100644
--- a/keyboards/wilba_tech/wt75_b/info.json
+++ b/keyboards/wilba_tech/wt75_b/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT75-B",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 6,
"layouts": {
diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt75_b/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h
index b84f2444d8..08b3c2ec49 100644
--- a/keyboards/wilba_tech/wt75_c/config.h
+++ b/keyboards/wilba_tech/wt75_c/config.h
@@ -204,3 +204,5 @@
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt75_c/rules.mk
+++ b/keyboards/wilba_tech/wt75_c/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h
index b706956ef9..5916970159 100644
--- a/keyboards/wilba_tech/wt80_a/config.h
+++ b/keyboards/wilba_tech/wt80_a/config.h
@@ -200,3 +200,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 7
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/wt80_a/info.json b/keyboards/wilba_tech/wt80_a/info.json
index a43acb2f5a..6c3ec9e313 100644
--- a/keyboards/wilba_tech/wt80_a/info.json
+++ b/keyboards/wilba_tech/wt80_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT80-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 18.25,
"height": 6.5,
"layouts": {
diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk
index c59e94e83c..53177bf165 100644
--- a/keyboards/wilba_tech/wt80_a/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt8_a/info.json b/keyboards/wilba_tech/wt8_a/info.json
index c40d44db72..d33663c715 100644
--- a/keyboards/wilba_tech/wt8_a/info.json
+++ b/keyboards/wilba_tech/wt8_a/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "wilba.tech WT8-A",
"url": "https://wilba.tech",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 4,
"height": 2,
"layouts": {
diff --git a/keyboards/wilba_tech/wt8_a/rules.mk b/keyboards/wilba_tech/wt8_a/rules.mk
index 25f3ecbf19..a9ce761ca4 100644
--- a/keyboards/wilba_tech/wt8_a/rules.mk
+++ b/keyboards/wilba_tech/wt8_a/rules.mk
@@ -14,17 +14,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c
index 1ad12ee4a5..32721b654e 100644
--- a/keyboards/wilba_tech/wt_main.c
+++ b/keyboards/wilba_tech/wt_main.c
@@ -123,17 +123,17 @@ void raw_hid_receive_kb(uint8_t *data, uint8_t length) {
switch ( *command_id )
{
#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
- case id_backlight_config_set_value:
+ case id_lighting_set_value:
{
backlight_config_set_value(command_data);
break;
}
- case id_backlight_config_get_value:
+ case id_lighting_get_value:
{
backlight_config_get_value(command_data);
break;
}
- case id_backlight_config_save:
+ case id_lighting_save:
{
backlight_config_save();
break;
diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c
index daf738da2e..fbc3102e8c 100644
--- a/keyboards/wilba_tech/wt_mono_backlight.c
+++ b/keyboards/wilba_tech/wt_mono_backlight.c
@@ -26,9 +26,13 @@
#include "quantum/color.h"
#include "tmk_core/common/eeprom.h"
-#include "via.h" // uses only the EEPROM address
+#include "via.h" // uses EEPROM address, lighting value IDs
#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR)
+#if VIA_EEPROM_CUSTOM_CONFIG_SIZE == 0
+#error VIA_EEPROM_CUSTOM_CONFIG_SIZE was not defined to store backlight_config struct
+#endif
+
#include "drivers/issi/is31fl3736.h"
#define ISSI_ADDR_DEFAULT 0x50
diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c
index babb844d26..9db4478efb 100644
--- a/keyboards/wilba_tech/wt_rgb_backlight.c
+++ b/keyboards/wilba_tech/wt_rgb_backlight.c
@@ -14,9 +14,20 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#if defined(RGB_BACKLIGHT_ZEAL60) || defined(RGB_BACKLIGHT_ZEAL65) || defined(RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_U80_A) || defined(RGB_BACKLIGHT_DAWN60)
+#if defined(RGB_BACKLIGHT_ZEAL60) || \
+ defined(RGB_BACKLIGHT_ZEAL65) || \
+ defined(RGB_BACKLIGHT_M60_A) || \
+ defined(RGB_BACKLIGHT_M6_B) || \
+ defined(RGB_BACKLIGHT_KOYU) || \
+ defined(RGB_BACKLIGHT_HS60) || \
+ defined(RGB_BACKLIGHT_NK65) || \
+ defined(RGB_BACKLIGHT_U80_A) || \
+ defined(RGB_BACKLIGHT_DAWN60) || \
+ defined(RGB_BACKLIGHT_WT60_B) || \
+ defined(RGB_BACKLIGHT_WT60_BX) || \
+ defined(RGB_BACKLIGHT_WT60_C)
#else
-#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU, RGB_BACKLIGHT_HS60, RGB_BACKLIGHT_NK65, RGB_BACKLIGHT_U80_A, RGB_BACKLIGHT_DAWN60
+#error wt_rgb_backlight.c compiled without setting configuration symbol
#endif
#ifndef MAX
@@ -50,9 +61,13 @@ LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL];
#include "quantum/color.h"
#include "tmk_core/common/eeprom.h"
-#include "via.h" // uses only the EEPROM address
+#include "via.h" // uses EEPROM address, lighting value IDs
#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR)
+#if VIA_EEPROM_CUSTOM_CONFIG_SIZE == 0
+#error VIA_EEPROM_CUSTOM_CONFIG_SIZE was not defined to store backlight_config struct
+#endif
+
#if defined(RGB_BACKLIGHT_M6_B)
#include "drivers/issi/is31fl3218.h"
#define BACKLIGHT_LED_COUNT 6
@@ -739,6 +754,35 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
{0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {255,233}, {228,201}, {235,255}, {237,255},
{195,128}, {206,136}, {215,152}, {222,175}, {205,234}, {209,255}, {214,255}, {219,255}, {223,255}
};
+#elif defined(RGB_BACKLIGHT_WT60_B) || defined(RGB_BACKLIGHT_WT60_BX) || defined(RGB_BACKLIGHT_WT60_C)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA0..LA17
+ {120,16}, {104,16}, {88,16}, {72,16}, {56,16}, {40,16}, {24,16}, {4,16}, {4,32},
+ {128,0}, {112,0}, {96,0}, {80,0}, {64,0}, {48,0}, {32,0}, {16,0}, {0,0},
+ // LB0..LB17
+ {144,0}, {160,0}, {176,0}, {192,0}, {208,0}, {224,0}, {216,0}, {255,255}, {255,255},
+ {136,16}, {152,16}, {168,16}, {184,16}, {200,16}, {220,16}, {255,255}, {255,255}, {255,255},
+ // LC0..LC17
+ {112,64}, {100,48}, {84,48}, {68,48}, {52,48}, {36,48}, {64,60}, {44,64}, {24,64},
+ {108,32}, {92,32}, {76,32}, {60,32}, {44,32}, {28,32}, {255,255}, {10,48}, {4,64},
+ // LD0..LD17
+ {124,32}, {140,32}, {156,32}, {172,32}, {188,32}, {214,32}, {180,48}, {202,48}, {224,48},
+ {116,48}, {132,48}, {148,48}, {164,48}, {255,255}, {160,60}, {180,64}, {200,64}, {220,64}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA0..LA17
+ {58,129}, {70,129}, {80,139}, {89,157}, {96,181}, {101,208}, {105,238}, {109,255}, {128,247},
+ {58,255}, {64,255}, {70,255}, {75,255}, {80,255}, {85,255}, {89,255}, {93,255}, {96,255},
+ // LB0..LB17
+ {53,255}, {48,255}, {43,255}, {39,255}, {35,255}, {32,255}, {34,255}, {255,255}, {255,255},
+ {48,139}, {39,157}, {32,181}, {27,208}, {23,238}, {19,255}, {255,255}, {255,255}, {255,255},
+ // LC0..LC17
+ {192,255}, {183,131}, {173,143}, {165,163}, {159,188}, {154,216}, {173,248}, {170,255}, {165,255},
+ {128,9}, {128,46}, {128,82}, {128,119}, {128,155}, {128,192}, {255,255}, {148,255}, {161,255},
+ // LD0..LD17
+ {0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {0,233}, {228,201}, {235,242}, {237,255},
+ {195,128}, {206,136}, {215,152}, {222,175}, {255,255}, {211,248}, {214,255}, {219,255}, {223,255}
+};
#elif defined(RGB_BACKLIGHT_U80_A)
const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
// Thse are scaled by 14.5 per U
@@ -1076,6 +1120,14 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 36+16, 36+15, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 },
{ 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 54+13, 54+14, 54+15, 54+16, 54+17 }
};
+#elif defined(RGB_BACKLIGHT_WT60_B) || defined(RGB_BACKLIGHT_WT60_BX) || defined(RGB_BACKLIGHT_WT60_C)
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 0+17, 0+16, 0+15, 0+14, 0+13, 0+12, 0+11, 0+10, 0+9, 18+0, 18+1, 18+2, 18+3, 18+4 },
+ { 0+7, 0+6, 0+5, 0+4, 0+3, 0+2, 0+1, 0+0, 18+9, 18+10, 18+11, 18+12, 18+13, 18+14 },
+ { 0+8, 36+14, 36+13, 36+12, 36+11, 36+10, 36+9, 54+0, 54+1, 54+2, 54+3, 54+4, 54+5, 18+5 },
+ { 36+16, 255, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 },
+ { 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 255, 54+14, 54+15, 54+16, 54+17 }
+};
#elif defined(RGB_BACKLIGHT_U80_A)
// Note: Left spacebar stab is at 5,3 (LC6)
// Right spacebar stab is at 5,10 (LD14)
@@ -2321,6 +2373,20 @@ void backlight_init_drivers(void)
( index == 54+17 ) || // LD17
( index == 36+15 ) || // LC15
( index == 54+13 ) ); // LD13
+#elif defined(RGB_BACKLIGHT_WT60_B) || defined(RGB_BACKLIGHT_WT60_BX) || defined(RGB_BACKLIGHT_WT60_C)
+ bool enabled = !(
+ // LB6 not present on WT60-B
+#if defined(RGB_BACKLIGHT_WT60_B)
+ ( index == 18+6 ) || // LB6
+#endif
+ // LB7 LB8 LB15 LB16 LB17 LC15 LD13 not present on WT60-B, WT60-BX, WT60-C
+ ( index == 18+7 ) || // LB7
+ ( index == 18+8 ) || // LB8
+ ( index == 18+15 ) || // LB15
+ ( index == 18+16 ) || // LB16
+ ( index == 18+17 ) || // LB17
+ ( index == 36+15 ) || // LC15
+ ( index == 54+13 ) ); // LD13
#elif defined(RGB_BACKLIGHT_ZEAL60)
// LB6 LB7 LB8 LB15 LB16 LB17 not present on Zeal60
bool enabled = !( ( index == 18+5 && !g_config.use_split_backspace ) || // LB5
diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h
index cb2f6a96bd..9e2badd2ad 100644
--- a/keyboards/wilba_tech/zeal60/config.h
+++ b/keyboards/wilba_tech/zeal60/config.h
@@ -117,4 +117,7 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
-#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31 \ No newline at end of file
+#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/wilba_tech/zeal60/info.json b/keyboards/wilba_tech/zeal60/info.json
index 802f1f0cba..dac59e64ff 100644
--- a/keyboards/wilba_tech/zeal60/info.json
+++ b/keyboards/wilba_tech/zeal60/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "Zeal60",
"url": "https://zealpc.net",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
index 3067be73d3..31c960c22e 100644
--- a/keyboards/wilba_tech/zeal60/rules.mk
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/wilba_tech/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h
index 01649d76fe..df32aff77c 100644
--- a/keyboards/wilba_tech/zeal65/config.h
+++ b/keyboards/wilba_tech/zeal65/config.h
@@ -118,3 +118,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE \ No newline at end of file
diff --git a/keyboards/wilba_tech/zeal65/info.json b/keyboards/wilba_tech/zeal65/info.json
index 709f7cefe1..7d037598f7 100644
--- a/keyboards/wilba_tech/zeal65/info.json
+++ b/keyboards/wilba_tech/zeal65/info.json
@@ -2,7 +2,6 @@
"keyboard_name": "Zeal65",
"url": "https://zealpc.net",
"maintainer": "Wilba",
- "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/wilba_tech/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk
index 94d487cbb7..fcf3d07637 100644
--- a/keyboards/wilba_tech/zeal65/rules.mk
+++ b/keyboards/wilba_tech/zeal65/rules.mk
@@ -20,10 +20,10 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# 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 = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
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
diff --git a/keyboards/winkeyless/bface/bface.c b/keyboards/winkeyless/bface/bface.c
index 8cb5b600cd..7d27096bad 100644
--- a/keyboards/winkeyless/bface/bface.c
+++ b/keyboards/winkeyless/bface/bface.c
@@ -16,32 +16,22 @@
#include "bface.h"
-void backlight_init_ports(void) {
- // initialize pins D0, D1, D4 and D6 as output
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
- setPinOutput(D4);
setPinOutput(D6);
-
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
}
-void backlight_set(uint8_t level) {
- if (level == 0) {
- // turn backlight LEDs off
- writePinLow(D0);
- writePinLow(D1);
- writePinLow(D4);
- writePinLow(D6);
- } else {
- // turn backlight LEDs on
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(D4);
- writePinHigh(D6);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
}
+ return true;
}
diff --git a/keyboards/winkeyless/bface/config.h b/keyboards/winkeyless/bface/config.h
index 95d44557a5..7ada9a49ac 100644
--- a/keyboards/winkeyless/bface/config.h
+++ b/keyboards/winkeyless/bface/config.h
@@ -42,10 +42,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_UART 1
-#ifdef BACKLIGHT_ENABLE
- // the backlight PWM does not work (yet). Therefore, we only have two backlight levels (on/off)
- #define BACKLIGHT_LEVELS 1
- #define LED_PIN PORTD
- #define BACKLIGHT_PORT_NUM (1 << 4)
-#endif
-
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk
index 506e37ac9c..84eace5ed6 100644
--- a/keyboards/winkeyless/bface/rules.mk
+++ b/keyboards/winkeyless/bface/rules.mk
@@ -18,8 +18,6 @@ EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
-BACKLIGHT_CUSTOM_DRIVER = yes
-BACKLIGHT_BREATHING = no
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/winkeyless/bmini/bmini.c b/keyboards/winkeyless/bmini/bmini.c
index f44fd36a8c..6529d44033 100644
--- a/keyboards/winkeyless/bmini/bmini.c
+++ b/keyboards/winkeyless/bmini/bmini.c
@@ -16,3 +16,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bmini.h"
+
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D6);
+}
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
+ }
+ return true;
+}
diff --git a/keyboards/winkeyless/bmini/config.h b/keyboards/winkeyless/bmini/config.h
index f8a26e4f00..95c44be9a4 100644
--- a/keyboards/winkeyless/bmini/config.h
+++ b/keyboards/winkeyless/bmini/config.h
@@ -15,8 +15,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/>.
*/
-#ifndef BMINI_CONFIG_H
-#define BMINI_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -37,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_ANIMATIONS
-#define NO_UART 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
-#endif
+#define NO_UART 1
diff --git a/keyboards/winkeyless/bmini/readme.md b/keyboards/winkeyless/bmini/readme.md
index b8cc854950..0512ed7bea 100644
--- a/keyboards/winkeyless/bmini/readme.md
+++ b/keyboards/winkeyless/bmini/readme.md
@@ -1,6 +1,8 @@
# B.mini
-A 75% keyboard with RGB
+A 75% keyboard with RGB underglow.
+
+QMK Firmware is not the official firmware for the B.mini.
* Keyboard Maintainer: QMK Community
* Hardware Supported: B.mini PCB
@@ -14,6 +16,8 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e
make winkeyless/bmini:default:flash
-**Reset Key**: Hold down the key located at *LOCATION*, commonly programmed as *KEY* while plugging in the keyboard.
+This firmware can be flashed onto the KBDFans KBD75 Round 1 and Round 2 Bootmapper Client boards sold during the 2017 and early 2018 timeframe.
+
+**Reset Key**: Hold down the bottom left most key located at `K00`, commonly programmed as Left Control 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/winkeyless/bmini/rules.mk b/keyboards/winkeyless/bmini/rules.mk
index 530e8ea329..a8fea7efa7 100644
--- a/keyboards/winkeyless/bmini/rules.mk
+++ b/keyboards/winkeyless/bmini/rules.mk
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
diff --git a/keyboards/winkeyless/bminiex/backlight.c b/keyboards/winkeyless/bminiex/backlight.c
deleted file mode 100644
index 94e8126d88..0000000000
--- a/keyboards/winkeyless/bminiex/backlight.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-#define NUMLOCK_PORT (1 << 0) // D0
-#define CAPSLOCK_PORT (1 << 1) // D1
-#define BACKLIGHT_PORT (1 << 4) // D4
-#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/winkeyless/bminiex/backlight_custom.h b/keyboards/winkeyless/bminiex/backlight_custom.h
deleted file mode 100644
index 51365fe3ba..0000000000
--- a/keyboards/winkeyless/bminiex/backlight_custom.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#pragma once
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
diff --git a/keyboards/winkeyless/bminiex/bminiex.c b/keyboards/winkeyless/bminiex/bminiex.c
index 11315b9210..676f88ebf5 100644
--- a/keyboards/winkeyless/bminiex/bminiex.c
+++ b/keyboards/winkeyless/bminiex/bminiex.c
@@ -17,20 +17,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "bminiex.h"
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-/// Overrides functions in `quantum.c`
-void backlight_init_ports(void) {
- b_led_init_ports();
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_task(void) {
- b_led_task();
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D6);
}
-void backlight_set(uint8_t level) {
- b_led_set(level);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ writePin(D6, led_state.scroll_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/winkeyless/bminiex/breathing_custom.h b/keyboards/winkeyless/bminiex/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/winkeyless/bminiex/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/winkeyless/bminiex/config.h b/keyboards/winkeyless/bminiex/config.h
index 037ca00284..8952796a81 100644
--- a/keyboards/winkeyless/bminiex/config.h
+++ b/keyboards/winkeyless/bminiex/config.h
@@ -36,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_ANIMATIONS
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 5
#define NO_UART 1
diff --git a/keyboards/winkeyless/bminiex/rules.mk b/keyboards/winkeyless/bminiex/rules.mk
index 2c999dcbf6..df7124400f 100644
--- a/keyboards/winkeyless/bminiex/rules.mk
+++ b/keyboards/winkeyless/bminiex/rules.mk
@@ -19,7 +19,6 @@ CONSOLE_ENABLE = no
DEBUG_ENABLE = no
COMMAND_ENABLE = no
BACKLIGHT_ENABLE = yes
-BACKLIGHT_CUSTOM_DRIVER = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
TAP_DANCE_ENABLE = no
@@ -28,5 +27,3 @@ TAP_DANCE_ENABLE = no
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OPT_DEFS = -DDEBUG_LEVEL=0
-
-SRC += backlight.c
diff --git a/keyboards/winkeyless/readme.md b/keyboards/winkeyless/readme.md
index e6cb45fc47..91719f6da0 100644
--- a/keyboards/winkeyless/readme.md
+++ b/keyboards/winkeyless/readme.md
@@ -1,7 +1,13 @@
# Winkeyless
-[Winkeyless](https://www.winkeyless.kr) is a Korean keyboard company popular for creating the Boot Mapper Client (BMC) firmware. Most Winkeyless boards were low profile and constructed out of acrylic showcasing their RGB underglow capabilities.
+[Winkeyless](https://www.winkeyless.kr) is a Korean keyboard company popular for creating the Boot Mapper Client (BMC) firmware.
-In late 2018, Winkeyless closed its doors due to the numerous unlicensed implementations of its hardware and software.
+Winkeyless used an atmega32a MCU, mini USB B, and utilized the same MCU pins across all their PCBs. Their reset button was always
+tied to pins `A0` and `B0` on the atmega32a MCU.
-This directory contains official Winkeyless boards that have had QMK ported to work with them.
+Most Winkeyless boards were low profile and constructed out of acrylic showcasing their RGB underglow capabilities.
+
+In late 2018, Winkeyless closed its doors. The numerous unlicensed implementations of its hardware and software were cited as one
+of many reasons for shutting down.
+
+This directory contains official Winkeyless boards that have had QMK firmware ported to work with them.
diff --git a/keyboards/wsk/jerkin/config.h b/keyboards/wsk/jerkin/config.h
new file mode 100644
index 0000000000..20adc99e0e
--- /dev/null
+++ b/keyboards/wsk/jerkin/config.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#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
+#define DESCRIPTION Alice style 30% board
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 13
+
+/* 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
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 0
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_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/wsk/jerkin/info.json b/keyboards/wsk/jerkin/info.json
new file mode 100644
index 0000000000..528fa0f0d9
--- /dev/null
+++ b/keyboards/wsk/jerkin/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Jerkin",
+ "url": "https://qmk.fm/keyboards",
+ "maintainer": "worldspawn00",
+ "width": 15.25,
+ "height": 3,
+ "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/jerkin/jerkin.c b/keyboards/wsk/jerkin/jerkin.c
new file mode 100644
index 0000000000..d2ed417097
--- /dev/null
+++ b/keyboards/wsk/jerkin/jerkin.c
@@ -0,0 +1 @@
+#include "jerkin.h"
diff --git a/keyboards/wsk/jerkin/jerkin.h b/keyboards/wsk/jerkin/jerkin.h
new file mode 100644
index 0000000000..201a9db13b
--- /dev/null
+++ b/keyboards/wsk/jerkin/jerkin.h
@@ -0,0 +1,13 @@
+ #pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 } \
+}
diff --git a/keyboards/wsk/jerkin/keymaps/default/keymap.c b/keyboards/wsk/jerkin/keymaps/default/keymap.c
new file mode 100644
index 0000000000..38c1195e91
--- /dev/null
+++ b/keyboards/wsk/jerkin/keymaps/default/keymap.c
@@ -0,0 +1,65 @@
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {KC_PASTA = SAFE_RANGE};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(2, KC_ENT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, LT(1, KC_SPC), KC_N, KC_M, KC_COMM, ALT_T(KC_DOT), GUI_T(KC_SLSH), SFT_T(KC_DEL)),
+
+ [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_RBRC, KC_BSLS,
+ KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN, KC_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),
+
+ [2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PASTA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ if (record->event.pressed) {
+ switch (keycode) {
+ case KC_PASTA:
+ if (record->event.pressed) {
+ SEND_STRING("https://i.imgur.com/dzBrlqc.png");
+ }
+ break;
+
+ }
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+ // set CapsLock LED to output and low
+ setPinOutput(B2);
+ writePinLow(B2);
+ // set NumLock LED to output and low
+ setPinOutput(B6);
+ writePinLow(B6);
+
+}
+
+layer_state_t layer_state_set_user(layer_state_t state)
+{
+ if (layer_state_cmp(state, 1)) {
+ writePinHigh(B2);
+ } else if (state & (1<<2)) {
+ writePinLow(B2);
+ writePinHigh(B6);
+ } else if (state & (1<<3)) {
+ writePinHigh(B2);
+ writePinHigh(B6);
+ } else {
+ writePinLow(B2);
+ writePinLow(B6);
+ }
+ return state;
+}
diff --git a/keyboards/wsk/jerkin/readme.md b/keyboards/wsk/jerkin/readme.md
new file mode 100644
index 0000000000..3dce6a1294
--- /dev/null
+++ b/keyboards/wsk/jerkin/readme.md
@@ -0,0 +1,15 @@
+# Jerkin
+
+![Jerkin](https://i.imgur.com/7wcPUfl.png)
+
+An Alice style 30% board.
+
+* Keyboard Maintainer: [Worldspawn00](https://github.com/Worldspawn00)
+* Hardware Supported: Jerkin PCB
+* Hardware Availability: https://www.etsy.com/shop/WorldspawnsKeebs
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wsk/jerkin: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/wsk/jerkin/rules.mk b/keyboards/wsk/jerkin/rules.mk
new file mode 100644
index 0000000000..7a4212cd73
--- /dev/null
+++ b/keyboards/wsk/jerkin/rules.mk
@@ -0,0 +1,29 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output on port C6
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/wsk/tkl30/config.h b/keyboards/wsk/tkl30/config.h
new file mode 100644
index 0000000000..d5595388f2
--- /dev/null
+++ b/keyboards/wsk/tkl30/config.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#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
+#define DESCRIPTION A 3-row TKL-style keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 15
+
+/* 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
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 1
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DI_PIN B1
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 1
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
diff --git a/keyboards/wsk/tkl30/info.json b/keyboards/wsk/tkl30/info.json
new file mode 100644
index 0000000000..e19c678c6b
--- /dev/null
+++ b/keyboards/wsk/tkl30/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "TKL30",
+ "url": "https://qmk.fm/keyboards",
+ "maintainer": "worldspawn00",
+ "width": 18.25,
+ "height": 3.25,
+ "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/wsk/tkl30/keymaps/default/keymap.c b/keyboards/wsk/tkl30/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7f10893049
--- /dev/null
+++ b/keyboards/wsk/tkl30/keymaps/default/keymap.c
@@ -0,0 +1,24 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_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_UP,
+ KC_LSFT, KC_LALT, KC_Z, KC_X, KC_C, KC_V, LT(1,KC_SPC), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, 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_PGUP,
+ KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [2] = LAYOUT(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
+
diff --git a/keyboards/wsk/tkl30/readme.md b/keyboards/wsk/tkl30/readme.md
new file mode 100644
index 0000000000..fb758b1d53
--- /dev/null
+++ b/keyboards/wsk/tkl30/readme.md
@@ -0,0 +1,16 @@
+# TKL30
+
+![TKL30](https://i.imgur.com/rnhOx87.png)
+
+The TKL30 is a three-row TKL-style board.
+
+* Keyboard Maintainer: [worldspawn00](https://github.com/worldspawn00/)
+* Hardware Supported: TKL30 PCB, Pro Micro
+* Hardware Availability: [PCB](https://github.com/worldspawn00/TKL30)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wsk/tkl30: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/wsk/tkl30/rules.mk b/keyboards/wsk/tkl30/rules.mk
new file mode 100644
index 0000000000..ad1dd34548
--- /dev/null
+++ b/keyboards/wsk/tkl30/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/wsk/tkl30/tkl30.c b/keyboards/wsk/tkl30/tkl30.c
new file mode 100644
index 0000000000..b25dc56a95
--- /dev/null
+++ b/keyboards/wsk/tkl30/tkl30.c
@@ -0,0 +1 @@
+#include "tkl30.h"
diff --git a/keyboards/wsk/tkl30/tkl30.h b/keyboards/wsk/tkl30/tkl30.h
new file mode 100644
index 0000000000..3beba7245d
--- /dev/null
+++ b/keyboards/wsk/tkl30/tkl30.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K114, K214 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 } \
+}
+
diff --git a/keyboards/xbows/woody/rules.mk b/keyboards/xbows/woody/rules.mk
index 2a9fcb7fc3..147acc58cc 100644
--- a/keyboards/xbows/woody/rules.mk
+++ b/keyboards/xbows/woody/rules.mk
@@ -3,7 +3,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
BACKLIGHT_ENABLE = no
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
diff --git a/keyboards/xd004/v1/rules.mk b/keyboards/xd004/v1/rules.mk
index e17ca648e1..18f7d8041c 100644
--- a/keyboards/xd004/v1/rules.mk
+++ b/keyboards/xd004/v1/rules.mk
@@ -13,9 +13,9 @@ BOOTLOADER = atmel-dfu
# Build Options
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/xd60/rev2/rules.mk b/keyboards/xd60/rev2/rules.mk
index b6a8c05d2f..1c96804e77 100644
--- a/keyboards/xd60/rev2/rules.mk
+++ b/keyboards/xd60/rev2/rules.mk
@@ -12,10 +12,10 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/xd60/rev3/rules.mk b/keyboards/xd60/rev3/rules.mk
index 7cff162c9f..3c7c967124 100644
--- a/keyboards/xd60/rev3/rules.mk
+++ b/keyboards/xd60/rev3/rules.mk
@@ -12,10 +12,10 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/xd75/keymaps/atomic_style_jp/keymap.c b/keyboards/xd75/keymaps/atomic_style_jp/keymap.c
new file mode 100644
index 0000000000..6084a1cbe6
--- /dev/null
+++ b/keyboards/xd75/keymaps/atomic_style_jp/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2017 Wunder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+ // 2019/03/04 takashiski
+ // NORTICE
+ // This layout is for Japanese Keyboard User.
+ // So there are logicalparing symbols and special keycode like a KC_RO, KC_HENK, KC_MHEN, KC_JYEN.
+ // 日本語キーボードとして認識させて使うことが前提なので、記号位置が英語キーボードとは異なります。
+ // また、日本語キーボードでないと認識されない特殊なキーコードが含まれています。
+
+#include QMK_KEYBOARD_H
+
+
+// Layer shorthand
+enum LAYER{
+ _QW,
+ _EASY_QW,
+ _CURSOR,
+ _RS,
+ _LW
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ //qwerty layer(almost use default)
+ [_QW] = 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,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, LT(_LW,KC_TAB), KC_SPC, LT(_CURSOR,KC_ENT), LT(_RS,KC_BSPC), KC_HENK, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ //4th row shifted 1u from regular ortholinear.
+ [_EASY_QW] = 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,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, 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_RO, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, LT(_LW,KC_TAB), KC_SPC, LT(_CURSOR,KC_ENT), LT(_RS,KC_BSPC), KC_HENK, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+//LOWER
+ [_LW] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS ,
+ KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, _______, _______,
+ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_SLCK,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+//RAISE
+ [_RS] = LAYOUT(
+ 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, _______, _______,
+ 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
+ ),
+ [_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,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_G, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, LT(_LW,KC_TAB), KC_SPC, KC_ENT, LT(_RS,KC_BSPC), KC_HENK, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+)
+
+};
diff --git a/keyboards/xd75/keymaps/atomic_style_jp/readme.md b/keyboards/xd75/keymaps/atomic_style_jp/readme.md
new file mode 100644
index 0000000000..7164f5c6b7
--- /dev/null
+++ b/keyboards/xd75/keymaps/atomic_style_jp/readme.md
@@ -0,0 +1,4 @@
+# atomic style jp
+
+This layout is based Standard Japanese Layout and atomic style layout.
+
diff --git a/keyboards/xd75/rules.mk b/keyboards/xd75/rules.mk
index 9052c8c123..e822f37eac 100644
--- a/keyboards/xd75/rules.mk
+++ b/keyboards/xd75/rules.mk
@@ -15,14 +15,14 @@ BOOTLOADER = atmel-dfu
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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 = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/xd84/rules.mk b/keyboards/xd84/rules.mk
index 13e1b4ba37..cf4e643612 100644
--- a/keyboards/xd84/rules.mk
+++ b/keyboards/xd84/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LINK_TIME_OPTIMIZATION_ENABLE = yes
# custom matrix setup
diff --git a/keyboards/xd87/rules.mk b/keyboards/xd87/rules.mk
index 3e8e4e1f51..5797e535a9 100644
--- a/keyboards/xd87/rules.mk
+++ b/keyboards/xd87/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
# Supported layouts
LAYOUTS = tkl_ansi tkl_iso
diff --git a/keyboards/xd96/rules.mk b/keyboards/xd96/rules.mk
index 9afd4eec4e..0c56a5ac00 100644
--- a/keyboards/xd96/rules.mk
+++ b/keyboards/xd96/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,12 +25,12 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
LINK_TIME_OPTIMIZATION_ENABLE = yes
# custom matrix setup
diff --git a/keyboards/xelus/dawn60/config.h b/keyboards/xelus/dawn60/config.h
index 7691bb301f..59eb828fa6 100644
--- a/keyboards/xelus/dawn60/config.h
+++ b/keyboards/xelus/dawn60/config.h
@@ -140,3 +140,6 @@
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/xelus/dawn60/dawn60.h b/keyboards/xelus/dawn60/dawn60.h
index b1de35a7eb..fe63de10fe 100644
--- a/keyboards/xelus/dawn60/dawn60.h
+++ b/keyboards/xelus/dawn60/dawn60.h
@@ -22,9 +22,9 @@
#define XXX KC_NO
#define LAYOUT_60_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ 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, K2D, \
+ 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, K4B, K4C, K4D \
) { \
diff --git a/keyboards/xelus/dawn60/info.json b/keyboards/xelus/dawn60/info.json
new file mode 100644
index 0000000000..e39165bd0f
--- /dev/null
+++ b/keyboards/xelus/dawn60/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "Dawn60",
+ "url": "",
+ "maintainer": "Xelus22",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_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":"Delete", "x":14, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"Backspace", "x":13.5, "y":1, "w":1.5},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3, "w":1.75},
+ {"label":"Up", "x":13, "y":3},
+ {"label":"Fn", "x":14, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "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/xelus/dawn60/keymaps/default/keymap.c b/keyboards/xelus/dawn60/keymaps/default/keymap.c
index 522997342c..431a596c22 100644
--- a/keyboards/xelus/dawn60/keymaps/default/keymap.c
+++ b/keyboards/xelus/dawn60/keymaps/default/keymap.c
@@ -13,33 +13,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer: Pressing caps-lock momentarily switches to Layer 1.
// This is the default layer. Pressing an empty keycode on another layer will take you here.
[0] = LAYOUT_60_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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_UP, MO(2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_60_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_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR,
KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_PGUP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT_60_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_60_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/xelus/dawn60/keymaps/via/keymap.c b/keyboards/xelus/dawn60/keymaps/via/keymap.c
index 522997342c..431a596c22 100644
--- a/keyboards/xelus/dawn60/keymaps/via/keymap.c
+++ b/keyboards/xelus/dawn60/keymaps/via/keymap.c
@@ -13,33 +13,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer: Pressing caps-lock momentarily switches to Layer 1.
// This is the default layer. Pressing an empty keycode on another layer will take you here.
[0] = LAYOUT_60_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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_UP, MO(2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_60_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_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR,
KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_PGUP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT_60_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_60_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/xmmx/rules.mk b/keyboards/xmmx/rules.mk
index df45fa5df0..731b405c05 100644
--- a/keyboards/xmmx/rules.mk
+++ b/keyboards/xmmx/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE ?= no # Mouse keys
+EXTRAKEY_ENABLE ?= yes # Audio control and System control
+CONSOLE_ENABLE ?= no # Console for debug
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/xw60/rules.mk b/keyboards/xw60/rules.mk
index 913ac3c024..b8629daeb8 100644
--- a/keyboards/xw60/rules.mk
+++ b/keyboards/xw60/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# 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 = full # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/yatara/drink_me/config.h b/keyboards/yatara/drink_me/config.h
new file mode 100644
index 0000000000..f2ab371f85
--- /dev/null
+++ b/keyboards/yatara/drink_me/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2020 Yatara
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x1470
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yatara
+#define PRODUCT Drink Me
+#define DESCRIPTION 4% Ergo Macropad
+
+/* Key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 4
+
+/* Pinout */
+#define DIRECT_PINS { \
+ {B4, B5, B6, B7} \
+}
+#define UNUSED_PINS
diff --git a/keyboards/yatara/drink_me/drink_me.c b/keyboards/yatara/drink_me/drink_me.c
new file mode 100644
index 0000000000..d5cac311ae
--- /dev/null
+++ b/keyboards/yatara/drink_me/drink_me.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Yatara
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "drink_me.h"
diff --git a/keyboards/yatara/drink_me/drink_me.h b/keyboards/yatara/drink_me/drink_me.h
new file mode 100644
index 0000000000..9ed6dbf2ea
--- /dev/null
+++ b/keyboards/yatara/drink_me/drink_me.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 Yatara
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03 \
+) { \
+ { K00, K01, K02, K03 } \
+}
diff --git a/keyboards/yatara/drink_me/info.json b/keyboards/yatara/drink_me/info.json
new file mode 100644
index 0000000000..0e021a7065
--- /dev/null
+++ b/keyboards/yatara/drink_me/info.json
@@ -0,0 +1,34 @@
+{
+ "keyboard_name": "Drink Me",
+ "url": "https://github.com/yatara-cc",
+ "maintainer": "yatara-cc",
+ "width": 4,
+ "height": 1,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 4,
+ "layout": [
+ {
+ "label": "K0",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "K1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "K2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "K3",
+ "x": 3,
+ "y": 0
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/yatara/drink_me/keymaps/caterpillar/keymap.c b/keyboards/yatara/drink_me/keymaps/caterpillar/keymap.c
new file mode 100644
index 0000000000..f7bfdf1df5
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/caterpillar/keymap.c
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ LSFT(KC_O),
+ LSFT(KC_R),
+ LSFT(KC_U),
+ LSFT(KC_SLSH)
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/caterpillar/readme.md b/keyboards/yatara/drink_me/keymaps/caterpillar/readme.md
new file mode 100644
index 0000000000..d04a30f238
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/caterpillar/readme.md
@@ -0,0 +1,9 @@
+# Drink Me - Caterpillar layout
+
+> ‘Who are you?’ said the Caterpillar.
+
+![Drink Me - Default layout](https://i.imgur.com/BHWNATB.png)
+
+```
+O, R, U, ?
+```
diff --git a/keyboards/yatara/drink_me/keymaps/cheshire_cat/keymap.c b/keyboards/yatara/drink_me/keymaps/cheshire_cat/keymap.c
new file mode 100644
index 0000000000..528c1e408e
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/cheshire_cat/keymap.c
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_LEFT,
+ KC_DOWN,
+ KC_UP,
+ KC_RIGHT
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/cheshire_cat/readme.md b/keyboards/yatara/drink_me/keymaps/cheshire_cat/readme.md
new file mode 100644
index 0000000000..1dd0d658a3
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/cheshire_cat/readme.md
@@ -0,0 +1,13 @@
+# Drink Me - Cheshire Cat layout
+
+> ‘Would you tell me, please, which way I ought to go from here?’
+>
+> ‘That depends a good deal on where you want to get to,’ said the Cat.
+
+Cursor keys in VI layout.
+
+![Drink Me - Default layout](https://i.imgur.com/E4cScrK.png)
+
+```
+Left, Down, Up, Right
+```
diff --git a/keyboards/yatara/drink_me/keymaps/default/keymap.c b/keyboards/yatara/drink_me/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7864fd0c1a
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/default/keymap.c
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ LCTL(KC_Z),
+ LCTL(KC_X),
+ LCTL(KC_C),
+ LCTL(KC_V)
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/default/readme.md b/keyboards/yatara/drink_me/keymaps/default/readme.md
new file mode 100644
index 0000000000..b4bf94831d
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/default/readme.md
@@ -0,0 +1,11 @@
+# Drink Me - Default layout
+
+> It was so long since she had been anything near the right size, that it felt quite strange at first; but she got used to it in a few minutes
+
+Common shortcut keys.
+
+![Drink Me - Default layout](https://i.imgur.com/JLEEhHk.png)
+
+```
+Undo, Cut, Copy, Paste
+```
diff --git a/keyboards/yatara/drink_me/keymaps/dormouse/keymap.c b/keyboards/yatara/drink_me/keymaps/dormouse/keymap.c
new file mode 100644
index 0000000000..e2d29a026a
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/dormouse/keymap.c
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_SLEP,
+ KC_MUTE,
+ KC_VOLD,
+ KC_VOLU
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/dormouse/readme.md b/keyboards/yatara/drink_me/keymaps/dormouse/readme.md
new file mode 100644
index 0000000000..1a8c854d44
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/dormouse/readme.md
@@ -0,0 +1,11 @@
+# Drink Me - Dormouse layout
+
+> The Dormouse slowly opened his eyes. ‘I wasn’t asleep,’ he said in a hoarse, feeble voice: ‘I heard every word you fellows were saying.’
+
+Sleep and volume control.
+
+![Drink Me - Default layout](https://i.imgur.com/VQXH512.png)
+
+```
+Sleep, Mute, Volume down, Volume up
+```
diff --git a/keyboards/yatara/drink_me/keymaps/dormouse/rules.mk b/keyboards/yatara/drink_me/keymaps/dormouse/rules.mk
new file mode 100644
index 0000000000..fcfd2225bc
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/dormouse/rules.mk
@@ -0,0 +1 @@
+EXTRAKEY_ENABLE = yes
diff --git a/keyboards/yatara/drink_me/keymaps/queen/config.h b/keyboards/yatara/drink_me/keymaps/queen/config.h
new file mode 100644
index 0000000000..037c4737f6
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/queen/config.h
@@ -0,0 +1 @@
+#define UNICODE_SELECTED_MODES UC_LNX, UC_OSX, UC_WIN, UC_WINC
diff --git a/keyboards/yatara/drink_me/keymaps/queen/keymap.c b/keyboards/yatara/drink_me/keymaps/queen/keymap.c
new file mode 100644
index 0000000000..ee1804d64a
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/queen/keymap.c
@@ -0,0 +1,67 @@
+#include QMK_KEYBOARD_H
+
+
+enum td_keys {
+ TD_K0,
+ TD_K1,
+ TD_K2,
+ TD_K3
+};
+
+
+void td_spade_lnx (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("2660");
+ } else {
+ set_unicode_input_mode(UC_LNX);
+ }
+ reset_tap_dance(state);
+}
+
+
+void td_diamond_osx (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("2666");
+ } else {
+ set_unicode_input_mode(UC_OSX);
+ }
+ reset_tap_dance(state);
+}
+
+
+void td_club_win (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("2663");
+ } else {
+ set_unicode_input_mode(UC_WIN);
+ }
+ reset_tap_dance(state);
+}
+
+
+void td_heart_winc (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("2665");
+ } else {
+ set_unicode_input_mode(UC_WINC);
+ }
+ reset_tap_dance(state);
+}
+
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_K0] = ACTION_TAP_DANCE_FN(td_spade_lnx),
+ [TD_K1] = ACTION_TAP_DANCE_FN(td_diamond_osx),
+ [TD_K2] = ACTION_TAP_DANCE_FN(td_club_win),
+ [TD_K3] = ACTION_TAP_DANCE_FN(td_heart_winc)
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ TD(TD_K0),
+ TD(TD_K1),
+ TD(TD_K2),
+ TD(TD_K3)
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/queen/readme.md b/keyboards/yatara/drink_me/keymaps/queen/readme.md
new file mode 100644
index 0000000000..cd89b7b0cb
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/queen/readme.md
@@ -0,0 +1,20 @@
+# Drink Me - Queen layout
+
+> ‘Off with her head!’ the Queen shouted at the top of her voice. Nobody moved.
+>
+> ‘Who cares for you?’ said Alice, (she had grown to her full size by this time.) ‘You’re nothing but a pack of cards!’
+
+Single tap for unicode symbols for playing card suits:
+
+![Drink Me - Queen layout single tap](https://i.imgur.com/xwHicLJ.png)
+
+```
+Spade, Diamond, Club, Heart
+```
+
+Double tap to change operating system unicode input method:
+
+![Drink Me - Queen layout double tap](https://i.imgur.com/fBbzq55.png)
+```
+Linux, OSX, Windows, Wincompose
+```
diff --git a/keyboards/yatara/drink_me/keymaps/queen/rules.mk b/keyboards/yatara/drink_me/keymaps/queen/rules.mk
new file mode 100644
index 0000000000..705db8e333
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/queen/rules.mk
@@ -0,0 +1,2 @@
+UNICODE_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/yatara/drink_me/keymaps/via/keymap.c b/keyboards/yatara/drink_me/keymaps/via/keymap.c
new file mode 100644
index 0000000000..441103222c
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/via/keymap.c
@@ -0,0 +1,28 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_0,
+ KC_1,
+ KC_2,
+ KC_3
+ ),
+ [1] = LAYOUT(
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS
+ ),
+ [2] = LAYOUT(
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS
+ ),
+ [3] = LAYOUT(
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,
+ KC_TRNS
+ )
+};
diff --git a/keyboards/yatara/drink_me/keymaps/via/readme.md b/keyboards/yatara/drink_me/keymaps/via/readme.md
new file mode 100644
index 0000000000..b77355f9fc
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/via/readme.md
@@ -0,0 +1,7 @@
+# Drink Me - VIA layout
+
+> ‘But what am I to do?’ said Alice.
+>
+> ‘Anything you like,’ said the Footman, and began whistling.
+
+Flash with this layout to use [VIA](https://caniusevia.com/) for customising layout.
diff --git a/keyboards/yatara/drink_me/keymaps/via/rules.mk b/keyboards/yatara/drink_me/keymaps/via/rules.mk
new file mode 100644
index 0000000000..830d3be902
--- /dev/null
+++ b/keyboards/yatara/drink_me/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+EXTRAKEY_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/yatara/drink_me/readme.md b/keyboards/yatara/drink_me/readme.md
new file mode 100644
index 0000000000..215f812f10
--- /dev/null
+++ b/keyboards/yatara/drink_me/readme.md
@@ -0,0 +1,17 @@
+# Drink Me
+
+![Drink Me](https://i.imgur.com/iz56Er0.jpg)
+
+A 4% ergo macropad.
+
+* Keyboard Maintainer: [Yatara](https://github.com/yatara-cc)
+* Hardware Supported: Drink Me PCB (ATmega32U2)
+* Hardware Availability: [Interest Check on Reddit](https://www.reddit.com/r/MechanicalKeyboards/comments/evu429/ic_drink_me_4_ergo_interest_check_giveaway/)
+
+Make example for this keyboard (after setting up your build environment):
+
+```
+make yatara/drink_me: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/yatara/drink_me/rules.mk b/keyboards/yatara/drink_me/rules.mk
new file mode 100644
index 0000000000..f0edf97b88
--- /dev/null
+++ b/keyboards/yatara/drink_me/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/yd60mq/rules.mk b/keyboards/yd60mq/rules.mk
index 1e6d4bb7cd..c1f1f22ba3 100644
--- a/keyboards/yd60mq/rules.mk
+++ b/keyboards/yd60mq/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/yd60mq/yd60mq.c b/keyboards/yd60mq/yd60mq.c
index 96306d6a66..6e391046e5 100644
--- a/keyboards/yd60mq/yd60mq.c
+++ b/keyboards/yd60mq/yd60mq.c
@@ -6,7 +6,6 @@ void led_set_kb(uint8_t usb_led) {
writePinLow(F4);
} else {
setPinInput(F4);
- writePinLow(F4);
}
led_set_user(usb_led);
diff --git a/keyboards/yd68/rules.mk b/keyboards/yd68/rules.mk
index 420ab38bf5..48283f1199 100644
--- a/keyboards/yd68/rules.mk
+++ b/keyboards/yd68/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # 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
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -25,9 +25,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/ymd75/backlight.c b/keyboards/ymd75/backlight.c
deleted file mode 100644
index cb0a979234..0000000000
--- a/keyboards/ymd75/backlight.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- Modified by Wayne K Jones (github.com/WarmCatUK) 2018
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-//#define NUMLOCK_PORT (1 << 2) // 2nd pin of Port D (digital)
-#define CAPSLOCK_PORT (1 << 1) // 1st pin
-#define BACKLIGHT_PORT (1 << 4) // D4
-//#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- /*
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
- */
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
- /*
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }
- */
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-
- // TODO call user defined function
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymd75/backlight_custom.h b/keyboards/ymd75/backlight_custom.h
deleted file mode 100644
index 7210be840e..0000000000
--- a/keyboards/ymd75/backlight_custom.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifndef BACKLIGHT_CUSTOM_H
-#define BACKLIGHT_CUSTOM_H
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
-#endif // BACKLIGHT_CUSTOM_H
diff --git a/keyboards/ymd75/breathing_custom.h b/keyboards/ymd75/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/ymd75/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymd75/config.h b/keyboards/ymd75/config.h
index 00f6bd292c..88916be62f 100644
--- a/keyboards/ymd75/config.h
+++ b/keyboards/ymd75/config.h
@@ -17,8 +17,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -39,6 +38,7 @@ 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 DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
#define RGB_DI_PIN E2
@@ -49,5 +49,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_VAL_STEP 18
#define NO_UART 1
-
-#endif
diff --git a/keyboards/ymd75/rules.mk b/keyboards/ymd75/rules.mk
index eb41e19cf3..9d584b2b41 100644
--- a/keyboards/ymd75/rules.mk
+++ b/keyboards/ymd75/rules.mk
@@ -23,14 +23,8 @@ WS2812_DRIVER = i2c
NKRO_ENABLE = no
# Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-
DISABLE_WS2812 = no
KEY_LOCK_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-
-#OPT_DEFS = -DDEBUG_LEVEL=0
-
-SRC = backlight.c
diff --git a/keyboards/ymd75/ymd75.c b/keyboards/ymd75/ymd75.c
index e32a745bfd..0870a6cc02 100644
--- a/keyboards/ymd75/ymd75.c
+++ b/keyboards/ymd75/ymd75.c
@@ -17,20 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "ymd75.h"
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-/// Overrides functions in `quantum.c`
-void backlight_init_ports(void) {
- b_led_init_ports();
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_task(void) {
- b_led_task();
+void led_init_ports(void) {
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- b_led_set(level);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/ymd96/backlight.c b/keyboards/ymd96/backlight.c
deleted file mode 100644
index f3f2b7a05b..0000000000
--- a/keyboards/ymd96/backlight.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-#define NUMLOCK_PORT (1 << 0) // 0th pin of Port D (digital)
-#define CAPSLOCK_PORT (1 << 1) // 1st pin
-#define BACKLIGHT_PORT (1 << 4) // D4
-//#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
-
- /* YMD96 does not have scroll lock led
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }*/
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-
- // TODO call user defined function
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymd96/backlight_custom.h b/keyboards/ymd96/backlight_custom.h
deleted file mode 100644
index 7210be840e..0000000000
--- a/keyboards/ymd96/backlight_custom.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifndef BACKLIGHT_CUSTOM_H
-#define BACKLIGHT_CUSTOM_H
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
-#endif // BACKLIGHT_CUSTOM_H
diff --git a/keyboards/ymd96/breathing_custom.h b/keyboards/ymd96/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/ymd96/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymd96/config.h b/keyboards/ymd96/config.h
index 1232f90c28..d761e60379 100644
--- a/keyboards/ymd96/config.h
+++ b/keyboards/ymd96/config.h
@@ -18,8 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
@@ -38,8 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
-// #define BACKLIGHT_BREATHING // works, but BL_TOGG might not work
+#define BACKLIGHT_BREATHING
#define TAPPING_TOGGLE 3
@@ -55,5 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/*#define RGBLIGHT_VAL_STEP 20
#define NO_UART 1*/
-
-#endif
diff --git a/keyboards/ymd96/rules.mk b/keyboards/ymd96/rules.mk
index 3c892daabb..b7571649bd 100644
--- a/keyboards/ymd96/rules.mk
+++ b/keyboards/ymd96/rules.mk
@@ -19,7 +19,6 @@ CONSOLE_ENABLE = no
COMMAND_ENABLE = no
BACKLIGHT_ENABLE = yes
-BACKLIGHT_CUSTOM_DRIVER = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
@@ -30,5 +29,3 @@ KEY_LOCK_ENABLE = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OPT_DEFS = -DDEBUG_LEVEL=0
-
-SRC = backlight.c
diff --git a/keyboards/ymd96/ymd96.c b/keyboards/ymd96/ymd96.c
index eae84ade19..5841decdab 100644
--- a/keyboards/ymd96/ymd96.c
+++ b/keyboards/ymd96/ymd96.c
@@ -18,20 +18,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "ymd96.h"
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-/// Overrides functions in `quantum.c`
-void backlight_init_ports(void) {
- b_led_init_ports();
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_task(void) {
- b_led_task();
+void led_init_ports(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
}
-void backlight_set(uint8_t level) {
- b_led_set(level);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ writePin(D1, led_state.caps_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/ymdk/bface/bface.c b/keyboards/ymdk/bface/bface.c
index 8622fd5238..b35b333763 100644
--- a/keyboards/ymdk/bface/bface.c
+++ b/keyboards/ymdk/bface/bface.c
@@ -16,26 +16,18 @@
*/
#include "quantum.h"
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
-void keyboard_pre_init_kb(void){
- //init the CAPS LOCK LED pin as an output
+void led_init_ports(void) {
setPinOutput(D1);
- //init the Backlight Pin as an output
- setPinOutput(D4);
- //call any user initialization code
- keyboard_pre_init_user();
}
-void led_set_kb(uint8_t usb_led){
- //control the caps lock LED
- if(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)){
- //set led pin to high
- writePinHigh(D1);
- } else {
- //set to low
- writePinLow(D1);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D1, led_state.caps_lock);
}
- //call any user LED functions
- led_set_user(usb_led);
+ return true;
}
-
diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h
index 2273b7e84e..a8c8a21493 100644
--- a/keyboards/ymdk/bface/config.h
+++ b/keyboards/ymdk/bface/config.h
@@ -40,5 +40,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 6
-
-
diff --git a/keyboards/ymdk/bface/rules.mk b/keyboards/ymdk/bface/rules.mk
index f6f026cf30..6320071ab8 100644
--- a/keyboards/ymdk/bface/rules.mk
+++ b/keyboards/ymdk/bface/rules.mk
@@ -18,9 +18,6 @@ EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
-BACKLIGHT_CUSTOM_DRIVER = no
-BACKLIGHT_BREATHING = no
RGBLIGHT_ENABLE = no
-RGBLIGHT_CUSTOM_DRIVER = no
OPT_DEFS = -DDEBUG_LEVEL=0
diff --git a/keyboards/ymdk_np21/backlight.c b/keyboards/ymdk_np21/backlight.c
deleted file mode 100644
index fbd241fa9d..0000000000
--- a/keyboards/ymdk_np21/backlight.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#include "backlight.h"
-#include "quantum.h"
-
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#include "backlight_custom.h"
-#include "breathing_custom.h"
-
-// DEBUG
-#include <stdlib.h>
-#include <stdio.h>
-
-// Port D: digital pins of the AVR chipset
-#define NUMLOCK_PORT (1 << 0) // D0
-#define CAPSLOCK_PORT (1 << 1) // D1
-#define BACKLIGHT_PORT (1 << 4) // D4
-#define SCROLLLOCK_PORT (1 << 6) // D6
-
-#define TIMER_CLK_DIV64 0x03 ///< Timer clocked at F_CPU/64
-#define TIMER1PRESCALE TIMER_CLK_DIV64 ///< timer 1 prescaler default
-
-#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
-
-#define PWM_MAX 0xFF
-#define TIMER_TOP 255 // 8 bit PWM
-
-extern backlight_config_t backlight_config;
-
-/**
- * References
- * Port Registers: https://www.arduino.cc/en/Reference/PortManipulation
- * TCCR1A: https://electronics.stackexchange.com/questions/92350/what-is-the-difference-between-tccr1a-and-tccr1b
- * Timers: http://www.avrbeginners.net/architecture/timers/timers.html
- * 16-bit timer setup: http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
- * PS2AVRGB firmware: https://github.com/showjean/ps2avrU/tree/master/firmware
- */
-
-// @Override
-// turn LEDs on and off depending on USB caps/num/scroll lock states.
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- if (usb_led & (1 << USB_LED_NUM_LOCK)) {
- // turn on
- DDRD |= NUMLOCK_PORT;
- PORTD |= NUMLOCK_PORT;
- } else {
- // turn off
- DDRD &= ~NUMLOCK_PORT;
- PORTD &= ~NUMLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
- DDRD |= CAPSLOCK_PORT;
- PORTD |= CAPSLOCK_PORT;
- } else {
- DDRD &= ~CAPSLOCK_PORT;
- PORTD &= ~CAPSLOCK_PORT;
- }
-
- if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
- DDRD |= SCROLLLOCK_PORT;
- PORTD |= SCROLLLOCK_PORT;
- } else {
- DDRD &= ~SCROLLLOCK_PORT;
- PORTD &= ~SCROLLLOCK_PORT;
- }
-}
-
-#ifdef BACKLIGHT_ENABLE
-
-// sets up Timer 1 for 8-bit PWM
-void timer1PWMSetup(void) { // NOTE ONLY CALL THIS ONCE
- // default 8 bit mode
- TCCR1A &= ~(1 << 1); // cbi(TCCR1A,PWM11); <- set PWM11 bit to HIGH
- TCCR1A |= (1 << 0); // sbi(TCCR1A,PWM10); <- set PWM10 bit to LOW
-
- // clear output compare value A
- // outb(OCR1AH, 0);
- // outb(OCR1AL, 0);
-
- // clear output comparator registers for B
- OCR1BH = 0; // outb(OCR1BH, 0);
- OCR1BL = 0; // outb(OCR1BL, 0);
-}
-
-bool is_init = false;
-void timer1Init(void) {
- // timer1SetPrescaler(TIMER1PRESCALE)
- // set to DIV/64
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE;
-
- // reset TCNT1
- TCNT1H = 0; // outb(TCNT1H, 0);
- TCNT1L = 0; // outb(TCNT1L, 0);
-
- // TOIE1: Timer Overflow Interrupt Enable (Timer 1);
- TIMSK |= _BV(TOIE1); // sbi(TIMSK, TOIE1);
-
- is_init = true;
-}
-
-void timer1UnInit(void) {
- // set prescaler back to NONE
- (TCCR1B) = ((TCCR1B) & ~TIMER_PRESCALE_MASK) | 0x00; // TIMERRTC_CLK_STOP
-
- // disable timer overflow interrupt
- TIMSK &= ~_BV(TOIE1); // overflow bit?
-
- setPWM(0);
-
- is_init = false;
-}
-
-
-// handle TCNT1 overflow
-//! Interrupt handler for tcnt1 overflow interrupt
-ISR(TIMER1_OVF_vect, ISR_NOBLOCK)
-{
- // sei();
- // handle breathing here
- #ifdef BACKLIGHT_BREATHING
- if (is_breathing()) {
- custom_breathing_handler();
- }
- #endif
-
- // TODO call user defined function
-}
-
-// enable timer 1 PWM
-// timer1PWMBOn()
-void timer1PWMBEnable(void) {
- // turn on channel B (OC1B) PWM output
- // set OC1B as non-inverted PWM
- TCCR1A |= _BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-// disable timer 1 PWM
-// timer1PWMBOff()
-void timer1PWMBDisable(void) {
- TCCR1A &= ~_BV(COM1B1);
- TCCR1A &= ~_BV(COM1B0);
-}
-
-void enableBacklight(void) {
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
-}
-
-void disableBacklight(void) {
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
-}
-
-void startPWM(void) {
- timer1Init();
- timer1PWMBEnable();
- enableBacklight();
-}
-
-void stopPWM(void) {
- timer1UnInit();
- disableBacklight();
- timer1PWMBDisable();
-}
-
-void b_led_init_ports(void) {
- /* turn backlight on/off depending on user preference */
- #if BACKLIGHT_ON_STATE == 0
- // DDRx register: sets the direction of Port D
- // DDRD &= ~BACKLIGHT_PORT; // set digital pin 4 as input
- PORTD &= ~BACKLIGHT_PORT; // set digital pin 4 to low
- #else
- DDRD |= BACKLIGHT_PORT; // set digital pin 4 as output
- PORTD |= BACKLIGHT_PORT; // set digital pin 4 to high
- #endif
-
- timer1PWMSetup();
- startPWM();
-
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
-}
-
-void b_led_set(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) {
- level = BACKLIGHT_LEVELS;
- }
-
- setPWM((int)(TIMER_TOP * (float) level / BACKLIGHT_LEVELS));
-}
-
-// called every matrix scan
-void b_led_task(void) {
- // do nothing for now
-}
-
-void setPWM(uint16_t xValue) {
- if (xValue > TIMER_TOP) {
- xValue = TIMER_TOP;
- }
- OCR1B = xValue; // timer1PWMBSet(xValue);
-}
-
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymdk_np21/backlight_custom.h b/keyboards/ymdk_np21/backlight_custom.h
deleted file mode 100644
index 7210be840e..0000000000
--- a/keyboards/ymdk_np21/backlight_custom.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Backlighting code for PS2AVRGB boards (ATMEGA32A)
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifndef BACKLIGHT_CUSTOM_H
-#define BACKLIGHT_CUSTOM_H
-
-#include <avr/pgmspace.h>
-void b_led_init_ports(void);
-void b_led_set(uint8_t level);
-void b_led_task(void);
-void setPWM(uint16_t xValue);
-
-#endif // BACKLIGHT_CUSTOM_H
diff --git a/keyboards/ymdk_np21/breathing_custom.h b/keyboards/ymdk_np21/breathing_custom.h
deleted file mode 100644
index 71416b1b45..0000000000
--- a/keyboards/ymdk_np21/breathing_custom.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Breathing effect code for PS2AVRGB boards (ATMEGA32A)
- * Works in conjunction with `backlight.c`.
- *
- * Code adapted from `quantum.c` to register with the existing TIMER1 overflow
- * handler in `backlight.c` instead of setting up its own timer.
- * Kenneth A. (github.com/krusli | krusli.me)
- */
-
-#ifdef BACKLIGHT_ENABLE
-#ifdef BACKLIGHT_BREATHING
-
-#include "backlight_custom.h"
-
-#ifndef BREATHING_PERIOD
-#define BREATHING_PERIOD 6
-#endif
-
-#define breathing_min() do {breathing_counter = 0;} while (0)
-#define breathing_max() do {breathing_counter = breathing_period * 244 / 2;} while (0)
-
-// TODO make this share code with quantum.c
-
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-#define BREATHING_STEPS 128
-
-static uint8_t breathing_period = BREATHING_PERIOD;
-static uint8_t breathing_halt = BREATHING_NO_HALT;
-static uint16_t breathing_counter = 0;
-
-static bool breathing = false;
-
-bool is_breathing(void) {
- return breathing;
-}
-
-// See http://jared.geek.nz/2013/feb/linear-led-pwm
-static uint16_t cie_lightness(uint16_t v) {
- if (v <= 5243) // if below 8% of max
- return v / 9; // same as dividing by 900%
- else {
- uint32_t y = (((uint32_t) v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare
- // to get a useful result with integer division, we shift left in the expression above
- // and revert what we've done again after squaring.
- y = y * y * y >> 8;
- if (y > 0xFFFFUL) // prevent overflow
- return 0xFFFFU;
- else
- return (uint16_t) y;
- }
-}
-
-void breathing_enable(void) {
- breathing = true;
- breathing_counter = 0;
- breathing_halt = BREATHING_NO_HALT;
- // interrupt already registered
-}
-
-void breathing_pulse(void) {
- if (get_backlight_level() == 0)
- breathing_min();
- else
- breathing_max();
- breathing_halt = BREATHING_HALT_ON;
- // breathing_interrupt_enable();
- breathing = true;
-}
-
-void breathing_disable(void) {
- breathing = false;
- // backlight_set(get_backlight_level());
- b_led_set(get_backlight_level()); // custom implementation of backlight_set()
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- breathing_halt = BREATHING_HALT_OFF;
- else
- breathing_halt = BREATHING_HALT_ON;
-}
-
-void breathing_toggle(void) {
- if (is_breathing())
- breathing_disable();
- else
- breathing_enable();
-}
-
-void breathing_period_set(uint8_t value)
-{
- if (!value)
- value = 1;
- breathing_period = value;
-}
-
-void breathing_period_default(void) {
- breathing_period_set(BREATHING_PERIOD);
-}
-
-void breathing_period_inc(void)
-{
- breathing_period_set(breathing_period+1);
-}
-
-void breathing_period_dec(void)
-{
- breathing_period_set(breathing_period-1);
-}
-
-/* To generate breathing curve in python:
- * from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
- */
-static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-// Use this before the cie_lightness function.
-static inline uint16_t scale_backlight(uint16_t v) {
- return v / BACKLIGHT_LEVELS * get_backlight_level();
-}
-
-void custom_breathing_handler(void) {
- uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;
- // resetting after one period to prevent ugly reset at overflow.
- breathing_counter = (breathing_counter + 1) % (breathing_period * 244);
- uint8_t index = breathing_counter / interval % BREATHING_STEPS;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) ||
- ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1)))
- {
- // breathing_interrupt_disable();
- }
-
- setPWM(cie_lightness(scale_backlight((uint16_t) pgm_read_byte(&breathing_table[index]) * 0x0101U)));
-}
-
-#endif // BACKLIGHT_BREATHING
-#endif // BACKLIGHT_ENABLE
diff --git a/keyboards/ymdk_np21/config.h b/keyboards/ymdk_np21/config.h
index 60c5277761..91478d9035 100644
--- a/keyboards/ymdk_np21/config.h
+++ b/keyboards/ymdk_np21/config.h
@@ -15,10 +15,9 @@ You 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"
+#pragma once
-#ifndef CONFIG_H
-#define CONFIG_H
+#include "config_common.h"
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
@@ -37,8 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
+#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 12
-// #define BACKLIGHT_BREATHING // works, but BL_TOGG might not work
+#define BACKLIGHT_BREATHING
#define TAPPING_TOGGLE 3
@@ -52,5 +52,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 5
#define RGB_DI_PIN E2 // NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0.
#define RGBLIGHT_ANIMATIONS
-
-#endif
diff --git a/keyboards/ymdk_np21/rules.mk b/keyboards/ymdk_np21/rules.mk
index 772bee9285..237386bcea 100644
--- a/keyboards/ymdk_np21/rules.mk
+++ b/keyboards/ymdk_np21/rules.mk
@@ -19,7 +19,6 @@ CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
-BACKLIGHT_CUSTOM_DRIVER = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
@@ -30,5 +29,3 @@ KEY_LOCK_ENABLE = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OPT_DEFS = -DDEBUG_LEVEL=0
-
-SRC = backlight.c
diff --git a/keyboards/ymdk_np21/ymdk_np21.c b/keyboards/ymdk_np21/ymdk_np21.c
index f2b3d46dab..63812c9360 100644
--- a/keyboards/ymdk_np21/ymdk_np21.c
+++ b/keyboards/ymdk_np21/ymdk_np21.c
@@ -18,20 +18,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "ymdk_np21.h"
-#include "backlight.h"
-#include "backlight_custom.h"
-
-#ifdef BACKLIGHT_ENABLE
-/// Overrides functions in `quantum.c`
-void backlight_init_ports(void) {
- b_led_init_ports();
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
}
-void backlight_task(void) {
- b_led_task();
+void led_init_ports(void) {
+ setPinOutput(D0);
}
-void backlight_set(uint8_t level) {
- b_led_set(level);
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ writePin(D0, led_state.num_lock);
+ }
+ return true;
}
-#endif
diff --git a/keyboards/yosino58/rules.mk b/keyboards/yosino58/rules.mk
index 5d3885fb2f..57e06ed5f6 100644
--- a/keyboards/yosino58/rules.mk
+++ b/keyboards/yosino58/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/z150_blackheart/rules.mk b/keyboards/z150_blackheart/rules.mk
index 150af8dabc..739bea3932 100644
--- a/keyboards/z150_blackheart/rules.mk
+++ b/keyboards/z150_blackheart/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/zinc/keymaps/default/rules.mk b/keyboards/zinc/keymaps/default/rules.mk
index d2bc96e3af..c980f7d00b 100644
--- a/keyboards/zinc/keymaps/default/rules.mk
+++ b/keyboards/zinc/keymaps/default/rules.mk
@@ -2,10 +2,10 @@
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/zinc/rules.mk b/keyboards/zinc/rules.mk
index d9d840c2d0..63a8cc8fc3 100644
--- a/keyboards/zinc/rules.mk
+++ b/keyboards/zinc/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = caterina
# 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 # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/zj68/rules.mk b/keyboards/zj68/rules.mk
index 648553cc41..b4ed641be5 100644
--- a/keyboards/zj68/rules.mk
+++ b/keyboards/zj68/rules.mk
@@ -15,10 +15,10 @@ BOOTLOADER = atmel-dfu
# comment out to disable the options.
#
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
diff --git a/keyboards/zlant/rules.mk b/keyboards/zlant/rules.mk
index 82bc13c60e..5221b4e33e 100755
--- a/keyboards/zlant/rules.mk
+++ b/keyboards/zlant/rules.mk
@@ -14,10 +14,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+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
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work