aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards
diff options
context:
space:
mode:
authorWilliam Chang <william@factual.com>2019-05-09 21:16:06 -0700
committerWilliam Chang <william@factual.com>2019-05-09 21:16:06 -0700
commit4b2d3288d013b1a71ea25402224c4a8225a099e9 (patch)
treeb7f5dded777a950e63c4dd967260744336bfaa6b /keyboards
parent57a6ea11df685d84a1ea07953e88f224ce2b24f7 (diff)
parentbce391a663d2848bff8ffffca0e4bad771bd3890 (diff)
downloadfirmware-4b2d3288d013b1a71ea25402224c4a8225a099e9.tar.gz
firmware-4b2d3288d013b1a71ea25402224c4a8225a099e9.tar.bz2
firmware-4b2d3288d013b1a71ea25402224c4a8225a099e9.zip
resolved conflicts
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/adkb96/adkb96.c19
-rw-r--r--keyboards/adkb96/adkb96.h28
-rw-r--r--keyboards/adkb96/config.h22
-rw-r--r--keyboards/adkb96/info.json494
-rw-r--r--keyboards/adkb96/keymaps/default/config.h34
-rw-r--r--keyboards/adkb96/keymaps/default/keymap.c15
-rw-r--r--keyboards/adkb96/readme.md17
-rw-r--r--keyboards/adkb96/rev1/config.h (renamed from keyboards/ergodash/rev2/config.h)45
-rw-r--r--keyboards/adkb96/rev1/rev1.c15
-rw-r--r--keyboards/adkb96/rev1/rev1.h44
-rw-r--r--keyboards/adkb96/rules.mk (renamed from keyboards/preonic/rules.mk)50
-rw-r--r--keyboards/atreus/readme.md21
-rw-r--r--keyboards/atreus/rules.mk77
-rw-r--r--keyboards/baguette/info.json2
-rw-r--r--keyboards/baguette/readme.md2
-rwxr-xr-xkeyboards/bm16s/bm16s.h15
-rwxr-xr-xkeyboards/bm16s/config.h46
-rw-r--r--keyboards/bm16s/info.json30
-rwxr-xr-xkeyboards/bm16s/keymaps/default/keymap.c16
-rwxr-xr-xkeyboards/bm16s/keymaps/media/keymap.c20
-rw-r--r--keyboards/bm16s/readme.md13
-rwxr-xr-xkeyboards/bm16s/rules.mk72
-rw-r--r--keyboards/boardwalk/keymaps/brendanwr/config.h16
-rw-r--r--keyboards/boardwalk/keymaps/brendanwr/keymap.c95
-rw-r--r--keyboards/boston_meetup/2019/2019.c215
-rw-r--r--keyboards/boston_meetup/2019/2019.h19
-rw-r--r--keyboards/boston_meetup/2019/config.h196
-rw-r--r--keyboards/boston_meetup/2019/info.json12
-rw-r--r--keyboards/boston_meetup/2019/keymaps/default/keymap.c166
-rw-r--r--keyboards/boston_meetup/2019/keymaps/default/readme.md51
-rw-r--r--keyboards/boston_meetup/2019/keymaps/readme.md22
-rw-r--r--keyboards/boston_meetup/2019/readme.md13
-rw-r--r--keyboards/boston_meetup/2019/rules.mk24
-rw-r--r--keyboards/boston_meetup/boston_meetup.c2
-rw-r--r--keyboards/boston_meetup/boston_meetup.h19
-rw-r--r--keyboards/boston_meetup/config.h60
-rw-r--r--keyboards/boston_meetup/readme.md14
-rw-r--r--keyboards/boston_meetup/rules.mk2
-rw-r--r--keyboards/butterstick/butterstick.c56
-rw-r--r--keyboards/butterstick/butterstick.h11
-rw-r--r--keyboards/butterstick/config.h26
-rw-r--r--keyboards/butterstick/keymaps/default/keymap.c183
-rw-r--r--keyboards/butterstick/keymaps/default/rules.mk (renamed from keyboards/ergodash/rev2/keymaps/default/rules.mk)0
-rw-r--r--keyboards/butterstick/readme.md14
-rw-r--r--keyboards/butterstick/rules.mk19
-rw-r--r--keyboards/butterstick/sten.c367
-rw-r--r--keyboards/butterstick/sten.h77
-rw-r--r--keyboards/candybar/rules.mk1
-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/bootloader_defs.h (renamed from keyboards/dztech/dz40rgb/bootloader_defs.h)7
-rw-r--r--keyboards/cannonkeys/practice65/chconf.h (renamed from keyboards/dztech/dz40rgb/chconf.h)20
-rw-r--r--keyboards/cannonkeys/practice65/config.h78
-rw-r--r--keyboards/cannonkeys/practice65/halconf.h (renamed from keyboards/dztech/dz60rgb/halconf.h)57
-rw-r--r--keyboards/cannonkeys/practice65/keymaps/default/keymap.c48
-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/mcuconf.h (renamed from keyboards/dztech/dz40rgb/mcuconf.h)116
-rw-r--r--keyboards/cannonkeys/practice65/practice65.c2
-rw-r--r--keyboards/cannonkeys/practice65/practice65.h19
-rw-r--r--keyboards/cannonkeys/practice65/readme.md12
-rw-r--r--keyboards/cannonkeys/practice65/rules.mk53
-rw-r--r--keyboards/cannonkeys/satisfaction75/config.h2
-rw-r--r--keyboards/cannonkeys/satisfaction75/i2c_master.c12
-rw-r--r--keyboards/cannonkeys/satisfaction75/keymaps/jae/keymap.c37
-rw-r--r--keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c22
-rw-r--r--keyboards/clueboard/60/rules.mk1
-rw-r--r--keyboards/clueboard/66/rev4/rules.mk1
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/rules.mk1
-rw-r--r--keyboards/cospad/config.h50
-rw-r--r--keyboards/cospad/cospad.c56
-rw-r--r--keyboards/cospad/cospad.h126
-rw-r--r--keyboards/cospad/info.json76
-rw-r--r--keyboards/cospad/keymaps/default/keymap.c120
-rw-r--r--keyboards/cospad/rules.mk43
-rw-r--r--keyboards/crkbd/keymaps/drashna/config.h51
-rw-r--r--keyboards/crkbd/keymaps/drashna/glcdfont.c240
-rw-r--r--keyboards/crkbd/keymaps/drashna/keymap.c269
-rw-r--r--keyboards/crkbd/keymaps/drashna/rules.mk42
-rw-r--r--keyboards/crkbd/keymaps/like_jis/keymap.c6
-rw-r--r--keyboards/crkbd/keymaps/rs/config.h (renamed from keyboards/ergodash/rev2/keymaps/default/config.h)16
-rw-r--r--keyboards/crkbd/keymaps/rs/keymap.c39
-rw-r--r--keyboards/crkbd/keymaps/rs/oled.c104
-rw-r--r--keyboards/crkbd/keymaps/rs/readme.md19
-rw-r--r--keyboards/crkbd/keymaps/rs/rules.mk32
-rw-r--r--keyboards/crkbd/rev1/rev1.c125
-rw-r--r--keyboards/doro67/multi/keymaps/default/readme.md7
-rw-r--r--keyboards/doro67/multi/keymaps/default_iso/readme.md7
-rw-r--r--keyboards/doro67/multi/keymaps/default_multi/readme.md7
-rw-r--r--keyboards/doro67/multi/readme.md12
-rw-r--r--keyboards/doro67/readme.md12
-rw-r--r--keyboards/doro67/regular/config.h4
-rw-r--r--keyboards/doro67/regular/keymaps/default/readme.md4
-rw-r--r--keyboards/doro67/regular/readme.md10
-rw-r--r--keyboards/doro67/rgb/config.h71
-rw-r--r--keyboards/doro67/rgb/info.json82
-rw-r--r--keyboards/doro67/rgb/keymaps/default/config.h19
-rw-r--r--keyboards/doro67/rgb/keymaps/default/keymap.c62
-rw-r--r--keyboards/doro67/rgb/keymaps/default/readme.md7
-rw-r--r--keyboards/doro67/rgb/readme.md23
-rw-r--r--keyboards/doro67/rgb/rgb.c84
-rw-r--r--keyboards/doro67/rgb/rgb.h41
-rw-r--r--keyboards/doro67/rgb/rules.mk83
-rw-r--r--keyboards/duck/eagle_viper/readme.md6
-rw-r--r--keyboards/duck/eagle_viper/v2/matrix.c60
-rw-r--r--keyboards/duck/eagle_viper/v2/readme.md2
-rw-r--r--keyboards/dz60/dz60.h27
-rw-r--r--keyboards/dz60/info.json4
-rw-r--r--keyboards/dz60/keymaps/billiams/readme.md1
-rw-r--r--keyboards/dz60/keymaps/macos_64/config.h9
-rw-r--r--keyboards/dz60/keymaps/macos_64/keymap.c42
-rw-r--r--keyboards/dz60/keymaps/macos_64/readme.md45
-rw-r--r--keyboards/dz60/keymaps/macos_64/rules.mk (renamed from keyboards/ergodash/rev2/rules.mk)2
-rw-r--r--keyboards/dz60/keymaps/macos_arrow/keymap.c41
-rw-r--r--keyboards/dz60/keymaps/macos_arrow/rules.mk4
-rw-r--r--keyboards/dz60/keymaps/olligranlund_iso/keymap.c38
-rw-r--r--keyboards/dz60/keymaps/olligranlund_iso/readme.md6
-rw-r--r--keyboards/dz60/keymaps/zepol_layout/keymap.c25
-rw-r--r--keyboards/dztech/boards/GENERIC_STM32_F303XC/board.h1187
-rw-r--r--keyboards/dztech/boards/GENERIC_STM32_F303XC/board.mk5
-rw-r--r--keyboards/dztech/dz40rgb/config.h2
-rw-r--r--keyboards/dztech/dz40rgb/dz40rgb.c172
-rw-r--r--keyboards/dztech/dz40rgb/keymaps/default/keymap.c10
-rw-r--r--keyboards/dztech/dz40rgb/keymaps/split_space/keymap.c10
-rw-r--r--keyboards/dztech/dz40rgb/rules.mk47
-rw-r--r--keyboards/dztech/dz60rgb/config.h8
-rw-r--r--keyboards/dztech/dz60rgb/dz60rgb.c507
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/ansi/config.h4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/ansi/keymap.c9
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/default/keymap.c58
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/hhkb/config.h4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/hhkb/keymap.c9
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/hhkb_iso/config.h4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/hhkb_iso/keymap.c9
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/iso/config.h4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/iso/keymap.c9
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h60
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c333
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/rules.mk7
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c32
-rw-r--r--keyboards/dztech/dz60rgb/mcuconf.h257
-rw-r--r--keyboards/dztech/dz60rgb/rules.mk47
-rw-r--r--keyboards/dztech/dz65rgb/config.h29
-rw-r--r--keyboards/dztech/dz65rgb/dz65rgb.c116
-rw-r--r--keyboards/dztech/dz65rgb/dz65rgb.h16
-rw-r--r--keyboards/dztech/dz65rgb/info.json12
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/default/keymap.c41
-rw-r--r--keyboards/dztech/dz65rgb/readme.md14
-rw-r--r--keyboards/dztech/dz65rgb/rules.mk14
-rw-r--r--keyboards/emptystring/NQG/info.json50
-rw-r--r--keyboards/emptystring/NQG/readme.md2
-rw-r--r--keyboards/ergodash/ergodash.h22
-rw-r--r--keyboards/ergodash/i2c.c162
-rw-r--r--keyboards/ergodash/i2c.h49
-rw-r--r--keyboards/ergodash/matrix.c490
-rw-r--r--keyboards/ergodash/mini/config.h39
-rw-r--r--keyboards/ergodash/mini/keymaps/default/config.h8
-rw-r--r--keyboards/ergodash/mini/keymaps/default/rules.mk3
-rw-r--r--keyboards/ergodash/mini/rules.mk1
-rw-r--r--keyboards/ergodash/readme.md11
-rw-r--r--keyboards/ergodash/rev1/config.h55
-rw-r--r--keyboards/ergodash/rev1/info.json8
-rw-r--r--keyboards/ergodash/rev1/keymaps/default/config.h8
-rw-r--r--keyboards/ergodash/rev1/keymaps/default/keymap.c130
-rw-r--r--keyboards/ergodash/rev1/keymaps/default/rules.mk3
-rw-r--r--keyboards/ergodash/rev1/keymaps/greenshadowmaker/config.h (renamed from keyboards/ergodash/rev2/keymaps/greenshadowmaker/config.h)8
-rw-r--r--keyboards/ergodash/rev1/keymaps/greenshadowmaker/keyboard-layout-editor.json (renamed from keyboards/ergodash/rev2/keymaps/greenshadowmaker/keyboard-layout-editor.json)0
-rw-r--r--keyboards/ergodash/rev1/keymaps/greenshadowmaker/keymap.c (renamed from keyboards/ergodash/rev2/keymaps/greenshadowmaker/keymap.c)0
-rw-r--r--keyboards/ergodash/rev1/keymaps/greenshadowmaker/rules.mk (renamed from keyboards/ergodash/rev2/keymaps/greenshadowmaker/rules.mk)0
-rw-r--r--keyboards/ergodash/rev1/rev1.h44
-rw-r--r--keyboards/ergodash/rev1/rules.mk2
-rw-r--r--keyboards/ergodash/rev2/info.json13
-rw-r--r--keyboards/ergodash/rev2/keymaps/default/keymap.c154
-rw-r--r--keyboards/ergodash/rev2/rev2.c39
-rw-r--r--keyboards/ergodash/rev2/rev2.h66
-rw-r--r--keyboards/ergodash/rules.mk41
-rw-r--r--keyboards/ergodash/serial.c228
-rw-r--r--keyboards/ergodash/serial.h26
-rw-r--r--keyboards/ergodash/split_util.c86
-rw-r--r--keyboards/ergodash/split_util.h20
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.c99
-rw-r--r--keyboards/ergodox_infinity/rules.mk1
-rw-r--r--keyboards/ergotravel/keymaps/rs/keymap.c45
-rw-r--r--keyboards/ergotravel/keymaps/rs/readme.md14
-rw-r--r--keyboards/exclusive/e6_rgb/e6_rgb.c130
-rw-r--r--keyboards/exclusive/e6v2/bmc/bmc.h2
-rw-r--r--keyboards/gergo/gergo.c16
-rw-r--r--keyboards/gergo/gergo.h18
-rw-r--r--keyboards/gergo/i2cmaster.h178
-rw-r--r--keyboards/gergo/info.json42
-rw-r--r--keyboards/gergo/keymaps/colemak/keymap.c174
-rw-r--r--keyboards/gergo/keymaps/colemak/readme.md16
-rw-r--r--keyboards/gergo/keymaps/colemak/rules.mk36
-rw-r--r--keyboards/gergo/keymaps/default/config.h3
-rw-r--r--keyboards/gergo/keymaps/default/keymap.c75
-rw-r--r--keyboards/gergo/keymaps/default/rules.mk3
-rw-r--r--keyboards/gergo/keymaps/drashna/keymap.c113
-rw-r--r--keyboards/gergo/keymaps/drashna/rules.mk2
-rw-r--r--keyboards/gergo/keymaps/germ/config.h3
-rw-r--r--keyboards/gergo/keymaps/germ/keymap.c75
-rw-r--r--keyboards/gergo/keymaps/germ/rules.mk1
-rw-r--r--keyboards/gergo/matrix.c241
-rw-r--r--keyboards/gergo/rules.mk3
-rw-r--r--keyboards/h87a/h87a.h47
-rw-r--r--keyboards/h87a/info.json12
-rw-r--r--keyboards/hadron/ver3/ver3.c45
-rw-r--r--keyboards/handwired/frenchdev/config.h5
-rw-r--r--keyboards/handwired/frenchdev/frenchdev.c54
-rw-r--r--keyboards/handwired/frenchdev/frenchdev.h8
-rw-r--r--keyboards/handwired/frenchdev/i2cmaster.h178
-rw-r--r--keyboards/handwired/frenchdev/keymaps/default/keymap.c152
-rw-r--r--keyboards/handwired/frenchdev/matrix.c29
-rw-r--r--keyboards/handwired/frenchdev/rules.mk6
-rw-r--r--keyboards/handwired/frenchdev/twimaster.c208
-rw-r--r--keyboards/handwired/promethium/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c4
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/README.md25
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/keymap.c95
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/rules.mk10
-rw-r--r--keyboards/hineybush/h87a/config.h (renamed from keyboards/h87a/config.h)1
-rw-r--r--keyboards/hineybush/h87a/h87a.c (renamed from keyboards/h87a/h87a.c)0
-rw-r--r--keyboards/hineybush/h87a/h87a.h90
-rw-r--r--keyboards/hineybush/h87a/info.json20
-rw-r--r--keyboards/hineybush/h87a/keymaps/default/config.h21
-rw-r--r--keyboards/hineybush/h87a/keymaps/default/keymap.c (renamed from keyboards/h87a/keymaps/default/keymap.c)2
-rw-r--r--keyboards/hineybush/h87a/keymaps/default/readme.md1
-rw-r--r--keyboards/hineybush/h87a/keymaps/gam3cat/config.h (renamed from keyboards/h87a/keymaps/gam3cat/config.h)0
-rw-r--r--keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c (renamed from keyboards/h87a/keymaps/gam3cat/keymap.c)0
-rw-r--r--keyboards/hineybush/h87a/keymaps/gam3cat/readme.md (renamed from keyboards/h87a/keymaps/gam3cat/readme.md)0
-rw-r--r--keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk (renamed from keyboards/h87a/keymaps/gam3cat/rules.mk)0
-rw-r--r--keyboards/hineybush/h87a/keymaps/wkl/config.h21
-rw-r--r--keyboards/hineybush/h87a/keymaps/wkl/keymap.c73
-rw-r--r--keyboards/hineybush/h87a/keymaps/wkl/readme.md1
-rw-r--r--keyboards/hineybush/h87a/readme.md (renamed from keyboards/h87a/readme.md)17
-rw-r--r--keyboards/hineybush/h87a/rules.mk (renamed from keyboards/h87a/rules.mk)0
-rw-r--r--keyboards/hineybush/hineyg80/config.h47
-rw-r--r--keyboards/hineybush/hineyg80/hineyg80.c63
-rw-r--r--keyboards/hineybush/hineyg80/hineyg80.h89
-rw-r--r--keyboards/hineybush/hineyg80/info.json19
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/default/config.h19
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/default/keymap.c58
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/default/readme.md1
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/wkl/config.h19
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c60
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/wkl/readme.md1
-rw-r--r--keyboards/hineybush/hineyg80/readme.md16
-rw-r--r--keyboards/hineybush/hineyg80/rules.mk81
-rw-r--r--keyboards/hs60/v1/v1.c218
-rw-r--r--keyboards/hs60/v2/keymaps/ansi_via/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/default_via/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/goatmaster/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/hhkb_via/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/iso_andys8/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/stanrc85/rules.mk1
-rw-r--r--keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk1
-rw-r--r--keyboards/hs60/v2/rules.mk1
-rw-r--r--keyboards/infinity60/rules.mk1
-rw-r--r--keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c2
-rw-r--r--keyboards/k_type/rules.mk1
-rw-r--r--keyboards/kagamidget/config.h222
-rw-r--r--keyboards/kagamidget/info.json18
-rw-r--r--keyboards/kagamidget/kagamidget.c43
-rw-r--r--keyboards/kagamidget/kagamidget.h39
-rw-r--r--keyboards/kagamidget/keymaps/default/config.h19
-rw-r--r--keyboards/kagamidget/keymaps/default/keymap.c118
-rw-r--r--keyboards/kagamidget/keymaps/default/readme.md49
-rw-r--r--keyboards/kagamidget/readme.md14
-rw-r--r--keyboards/kagamidget/rules.mk83
-rw-r--r--keyboards/kbdfans/kbd4x/kbd4x.h21
-rw-r--r--keyboards/kbdfans/kbd4x/rules.mk4
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c29
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md13
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/default/readme.md32
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/keymap.c99
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/readme.md33
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c154
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk8
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c82
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk3
-rw-r--r--keyboards/keebio/bdn9/keymaps/default/keymap.c23
-rw-r--r--keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c57
-rw-r--r--keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c172
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/config.h37
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/keymap.c17
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/rules.mk6
-rw-r--r--keyboards/keebio/iris/keymaps/drashna_lp/config.h48
-rw-r--r--keyboards/keebio/iris/keymaps/drashna_lp/keymap.c1
-rw-r--r--keyboards/keebio/iris/keymaps/drashna_lp/rules.mk7
-rw-r--r--keyboards/keebio/iris/keymaps/drashna_old/config.h10
-rw-r--r--keyboards/keebio/iris/keymaps/rs/config.h2
-rw-r--r--keyboards/keebio/iris/keymaps/rs/karabiner.json154
-rw-r--r--keyboards/keebio/iris/keymaps/rs/keymap.c51
-rw-r--r--keyboards/keebio/iris/keymaps/rs/readme.md14
-rw-r--r--keyboards/keebio/iris/keymaps/rs/rules.mk1
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/config.h24
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/keymap.c42
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/readme.md17
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/rules.mk1
-rw-r--r--keyboards/keebio/quefrency/keymaps/georgepetri/config.h24
-rw-r--r--keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c44
-rw-r--r--keyboards/keebio/quefrency/keymaps/georgepetri/readme.md48
-rw-r--r--keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk0
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna/config.h30
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna_old/config.h4
-rw-r--r--keyboards/massdrop/alt/config.h1
-rw-r--r--keyboards/massdrop/alt/config_led.c143
-rw-r--r--keyboards/massdrop/alt/keymaps/abishalom/keymap.c26
-rw-r--r--keyboards/massdrop/alt/keymaps/default/keymap.c26
-rw-r--r--keyboards/massdrop/alt/keymaps/mac/keymap.c26
-rw-r--r--keyboards/massdrop/ctrl/config.h1
-rw-r--r--keyboards/massdrop/ctrl/config_led.c180
-rw-r--r--keyboards/massdrop/ctrl/keymaps/default/keymap.c26
-rw-r--r--keyboards/massdrop/ctrl/keymaps/mac/keymap.c26
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h52
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/keymap.c405
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk2
-rw-r--r--keyboards/melody96/keymaps/konstantin/keymap.c124
-rw-r--r--keyboards/miniaxe/keymaps/wanleg/config.h11
-rw-r--r--keyboards/miniaxe/keymaps/wanleg/keymap.c49
-rw-r--r--keyboards/miniaxe/keymaps/wanleg/rules.mk18
-rw-r--r--keyboards/mint60/config.h2
-rw-r--r--keyboards/mint60/keymaps/default/config.h2
-rw-r--r--keyboards/mint60/keymaps/eucalyn/config.h2
-rw-r--r--keyboards/model01/leds.c95
-rw-r--r--keyboards/nomu30/config.h49
-rw-r--r--keyboards/nomu30/info.json172
-rw-r--r--keyboards/nomu30/keymaps/default/config.h (renamed from keyboards/handwired/woodpad/keymaps/drashna/config.h)31
-rw-r--r--keyboards/nomu30/keymaps/default/keymap.c44
-rw-r--r--keyboards/nomu30/keymaps/default/readme.md1
-rw-r--r--keyboards/nomu30/nomu30.c16
-rw-r--r--keyboards/nomu30/nomu30.h48
-rw-r--r--keyboards/nomu30/readme.md15
-rw-r--r--keyboards/nomu30/rules.mk81
-rw-r--r--keyboards/noxary/220/220.c62
-rw-r--r--keyboards/noxary/220/220.h42
-rw-r--r--keyboards/noxary/220/config.h251
-rw-r--r--keyboards/noxary/220/info.json12
-rw-r--r--keyboards/noxary/220/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/220/keymaps/default/keymap.c76
-rw-r--r--keyboards/noxary/220/keymaps/default/readme.md1
-rw-r--r--keyboards/noxary/220/readme.md13
-rw-r--r--keyboards/noxary/220/rules.mk83
-rw-r--r--keyboards/noxary/260/260.c61
-rw-r--r--keyboards/noxary/260/260.h40
-rw-r--r--keyboards/noxary/260/config.h251
-rw-r--r--keyboards/noxary/260/info.json12
-rw-r--r--keyboards/noxary/260/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/260/keymaps/default/keymap.c87
-rw-r--r--keyboards/noxary/260/keymaps/default/readme.md1
-rw-r--r--keyboards/noxary/260/readme.md15
-rw-r--r--keyboards/noxary/260/rules.mk81
-rw-r--r--keyboards/noxary/280/280.c70
-rw-r--r--keyboards/noxary/280/280.h49
-rw-r--r--keyboards/noxary/280/config.h251
-rw-r--r--keyboards/noxary/280/info.json12
-rw-r--r--keyboards/noxary/280/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/280/keymaps/default/keymap.c102
-rw-r--r--keyboards/noxary/280/keymaps/default/readme.md1
-rw-r--r--keyboards/noxary/280/readme.md13
-rw-r--r--keyboards/noxary/280/rules.mk81
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h38
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c8
-rw-r--r--keyboards/orthodox/keymaps/drashna/rules.mk5
-rw-r--r--keyboards/plaid/plaid.h2
-rw-r--r--keyboards/plaid/rules.mk2
-rw-r--r--keyboards/planck/ez/ez.c186
-rw-r--r--keyboards/planck/ez/rules.mk38
-rw-r--r--keyboards/planck/keymaps/callum/config.h8
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c262
-rw-r--r--keyboards/planck/keymaps/callum/rules.mk1
-rw-r--r--keyboards/planck/keymaps/motform/config.h39
-rw-r--r--keyboards/planck/keymaps/motform/keymap.c211
-rw-r--r--keyboards/planck/keymaps/motform/readme.md11
-rw-r--r--keyboards/planck/keymaps/motform/rules.mk1
-rw-r--r--keyboards/planck/keymaps/priyadi/config.h22
-rw-r--r--keyboards/planck/keymaps/priyadi/rules.mk11
-rw-r--r--keyboards/planck/keymaps/roguepullrequest/keymap.c8
-rw-r--r--keyboards/planck/keymaps/roguepullrequest/readme.md13
-rw-r--r--keyboards/planck/keymaps/tom/keymap.c11
-rw-r--r--keyboards/planck/light/light.c87
-rw-r--r--keyboards/planck/light/rules.mk35
-rw-r--r--keyboards/planck/readme.md7
-rw-r--r--keyboards/planck/rev1/rules.mk30
-rw-r--r--keyboards/planck/rev2/rules.mk30
-rw-r--r--keyboards/planck/rev3/rules.mk36
-rw-r--r--keyboards/planck/rev4/rules.mk34
-rw-r--r--keyboards/planck/rev5/rules.mk34
-rw-r--r--keyboards/planck/rev6/rules.mk35
-rw-r--r--keyboards/planck/rules.mk46
-rw-r--r--keyboards/preonic/keymaps/mikethetiger/config.h38
-rw-r--r--keyboards/preonic/keymaps/mikethetiger/keymap.c289
-rw-r--r--keyboards/preonic/keymaps/mikethetiger/readme.md1
-rw-r--r--keyboards/preonic/keymaps/mikethetiger/rules.mk1
-rw-r--r--keyboards/preonic/readme.md11
-rw-r--r--keyboards/preonic/rev1/rules.mk67
-rw-r--r--keyboards/preonic/rev2/rules.mk67
-rw-r--r--keyboards/preonic/rev3/rules.mk34
-rw-r--r--keyboards/projectkb/alice/alice.c27
-rw-r--r--keyboards/projectkb/alice/alice.h19
-rw-r--r--keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.c (renamed from keyboards/dztech/boards/GENERIC_STM32_F303XC/board.c)27
-rw-r--r--keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.h922
-rw-r--r--keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.mk5
-rw-r--r--keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg703
-rw-r--r--keyboards/projectkb/alice/bootloader_defs.h (renamed from keyboards/dztech/dz60rgb/bootloader_defs.h)4
-rw-r--r--keyboards/projectkb/alice/chconf.h (renamed from keyboards/dztech/dz60rgb/chconf.h)26
-rw-r--r--keyboards/projectkb/alice/config.h92
-rw-r--r--keyboards/projectkb/alice/halconf.h (renamed from keyboards/dztech/dz40rgb/halconf.h)53
-rw-r--r--keyboards/projectkb/alice/keymaps/default/keymap.c45
-rw-r--r--keyboards/projectkb/alice/mcuconf.h176
-rw-r--r--keyboards/projectkb/alice/readme.md12
-rw-r--r--keyboards/projectkb/alice/rules.mk56
-rw-r--r--keyboards/satan/keymaps/no_caps_lock/keymap.c55
-rw-r--r--keyboards/satan/keymaps/no_caps_lock/readme.md1
-rw-r--r--keyboards/satan/keymaps/olligranlund_iso/keymap.c3
-rw-r--r--keyboards/satan/keymaps/olligranlund_iso/rules.mk2
-rw-r--r--keyboards/sentraq/s60_x/default/config.h35
-rw-r--r--keyboards/sentraq/s60_x/default/default.h23
-rw-r--r--keyboards/sentraq/s60_x/default/rules.mk73
-rw-r--r--keyboards/sentraq/s60_x/info.json (renamed from keyboards/sentraq/s60_x/default/info.json)3
-rw-r--r--keyboards/sentraq/s60_x/keymaps/ansi_qwertz/config.h6
-rw-r--r--keyboards/sentraq/s60_x/readme.md8
-rw-r--r--keyboards/sentraq/s60_x/rgb/config.h28
-rw-r--r--keyboards/sentraq/s60_x/rgb/info.json21
-rw-r--r--keyboards/sentraq/s60_x/rgb/rgb.h18
-rw-r--r--keyboards/sentraq/s60_x/rgb/rules.mk70
-rw-r--r--keyboards/sentraq/s60_x/s60_x.c1
-rw-r--r--keyboards/sentraq/s60_x/s60_x.h13
-rw-r--r--keyboards/signum/3_0/elitec/info.json110
-rwxr-xr-xkeyboards/signum/3_0/elitec/keymaps/default/generate_km.py156
-rw-r--r--keyboards/signum/3_0/elitec/keymaps/default/keymap.c83
-rw-r--r--keyboards/signum/3_0/elitec/keymaps/default/layout.py77
-rw-r--r--keyboards/signum/3_0/elitec/keymaps/default/readme.md7
-rw-r--r--keyboards/singa/singa.c25
-rw-r--r--keyboards/sol/common/knob_v2.c71
-rw-r--r--keyboards/sol/common/knob_v2.h28
-rw-r--r--keyboards/sol/config.h70
-rwxr-xr-xkeyboards/sol/keymaps/brianweyer/keymap.c36
-rwxr-xr-xkeyboards/sol/keymaps/brianweyer/rules.mk6
-rw-r--r--keyboards/sol/keymaps/danielhklein/keymap.c28
-rw-r--r--keyboards/sol/keymaps/danielhklein/rules.mk6
-rw-r--r--keyboards/sol/keymaps/default/keymap.c28
-rw-r--r--keyboards/sol/keymaps/default/rules.mk8
-rw-r--r--keyboards/sol/keymaps/kageurufu/keymap.c26
-rw-r--r--keyboards/sol/keymaps/kageurufu/rules.mk6
-rw-r--r--keyboards/sol/keymaps/xulkal/keymap.c32
-rw-r--r--keyboards/sol/keymaps/xulkal/rules.mk7
-rw-r--r--keyboards/sol/rev1/config.h111
-rw-r--r--keyboards/sol/rev1/matrix.c304
-rw-r--r--keyboards/sol/rev1/rev1.c121
-rw-r--r--keyboards/sol/rev1/rev1.h71
-rw-r--r--keyboards/sol/rev1/rules.mk2
-rw-r--r--keyboards/sol/rev1/split_util.c54
-rw-r--r--keyboards/sol/rev1/split_util.h15
-rw-r--r--keyboards/sol/rules.mk7
-rw-r--r--keyboards/sol/serial.c288
-rw-r--r--keyboards/sol/serial.h26
-rw-r--r--keyboards/sol/sol.h54
-rw-r--r--keyboards/tada68/keymaps/mattgemmell/keymap.c12
-rw-r--r--keyboards/tada68/keymaps/mattgemmell/readme.md7
-rw-r--r--keyboards/ut472/config.h (renamed from keyboards/sentraq/s60_x/config.h)52
-rw-r--r--keyboards/ut472/info.json13
-rw-r--r--keyboards/ut472/keymaps/default/config.h21
-rw-r--r--keyboards/ut472/keymaps/default/keymap.c100
-rw-r--r--keyboards/ut472/keymaps/default/readme.md5
-rw-r--r--keyboards/ut472/readme.md20
-rw-r--r--keyboards/ut472/rules.mk (renamed from keyboards/sentraq/s60_x/rules.mk)32
-rw-r--r--keyboards/ut472/ut472.c13
-rw-r--r--keyboards/ut472/ut472.h34
-rw-r--r--keyboards/vinta/rules.mk1
-rw-r--r--keyboards/westfoxtrot/aanzee/aanzee.h16
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c4
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c4
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c4
-rw-r--r--keyboards/westfoxtrot/cyclops/cyclops.h4
-rw-r--r--keyboards/whitefox/keymaps/konstantin/keymap.c120
-rw-r--r--keyboards/whitefox/rules.mk1
-rw-r--r--keyboards/wilba_tech/wt60_a/readme.md2
-rw-r--r--keyboards/wilba_tech/wt65_a/readme.md4
-rw-r--r--keyboards/wilba_tech/wt69_a/config.h203
-rw-r--r--keyboards/wilba_tech/wt69_a/info.json13
-rw-r--r--keyboards/wilba_tech/wt69_a/keymaps/default/keymap.c36
-rw-r--r--keyboards/wilba_tech/wt69_a/keymaps/via/keymap.c36
-rw-r--r--keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk68
-rw-r--r--keyboards/wilba_tech/wt69_a/readme.md15
-rw-r--r--keyboards/wilba_tech/wt69_a/rules.mk65
-rw-r--r--keyboards/wilba_tech/wt69_a/wt69_a.c17
-rw-r--r--keyboards/wilba_tech/wt69_a/wt69_a.h36
-rw-r--r--keyboards/ymd96/info.json19
-rw-r--r--keyboards/ymd96/keymaps/default/keymap.c2
-rw-r--r--keyboards/ymd96/keymaps/epx/keymap.c2
-rw-r--r--keyboards/ymd96/keymaps/hgoel89/keymap.c6
-rw-r--r--keyboards/ymd96/ymd96.h10
-rw-r--r--keyboards/zen/rev1/rules.mk1
-rw-r--r--keyboards/zen/rev2/config.h1
-rw-r--r--keyboards/zen/rev2/rev2.c6
498 files changed, 17461 insertions, 8898 deletions
diff --git a/keyboards/adkb96/adkb96.c b/keyboards/adkb96/adkb96.c
new file mode 100644
index 000000000..9a1c85a2c
--- /dev/null
+++ b/keyboards/adkb96/adkb96.c
@@ -0,0 +1,19 @@
+#include "adkb96.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}},
+ {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}},
+ {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}, {7, 8}},
+ {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}, {7, 9}},
+ {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}, {6,10}, {7,10}},
+ {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}, {6,11}, {7,11}},
+ {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}},
+ {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}},
+ {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}},
+ {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}},
+ {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}},
+ {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}}
+};
+#endif
diff --git a/keyboards/adkb96/adkb96.h b/keyboards/adkb96/adkb96.h
new file mode 100644
index 000000000..4b2877500
--- /dev/null
+++ b/keyboards/adkb96/adkb96.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_adkb96_rev1
+ #include "rev1.h"
+#endif
+
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc_ortho_6x16( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \
+ L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \
+ L30, L31, L32, L33, L34, L35, L36, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47, \
+ L50, L51, L52, L53, L54, L55, L56, L57, R50, R51, R52, R53, R54, R55, R56, R57 \
+ ) \
+ LAYOUT( \
+ KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##L07, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, KC_##R07, \
+ KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##L17, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, KC_##R17, \
+ KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##L27, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, KC_##R27, \
+ KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##L37, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, KC_##R37, \
+ KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##L47, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, KC_##R46, KC_##R47, \
+ KC_##L50, KC_##L51, KC_##L52, KC_##L53, KC_##L54, KC_##L55, KC_##L56, KC_##L57, KC_##R50, KC_##R51, KC_##R52, KC_##R53, KC_##R54, KC_##R55, KC_##R56 ,KC_##R57 \
+ )
+
+#define LAYOUT_kc LAYOUT_kc_ortho_6x16
diff --git a/keyboards/adkb96/config.h b/keyboards/adkb96/config.h
new file mode 100644
index 000000000..93fd2261b
--- /dev/null
+++ b/keyboards/adkb96/config.h
@@ -0,0 +1,22 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
diff --git a/keyboards/adkb96/info.json b/keyboards/adkb96/info.json
new file mode 100644
index 000000000..3b914d56b
--- /dev/null
+++ b/keyboards/adkb96/info.json
@@ -0,0 +1,494 @@
+{
+ "keyboard_name": "adkb96",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 16,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_ortho_6x16": {
+ "key_count": 96,
+ "layout": [
+ {
+ "label": "L00",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "L01",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "L02",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "L03",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "L04",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "L05",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "L06",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "L07",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "R00",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "R01",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": "R02",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "R03",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "R04",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "R05",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "R06",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "R07",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "L10",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "L11",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "L12",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "L13",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "L14",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "L15",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "L16",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "L17",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "R10",
+ "x": 8,
+ "y": 1
+ },
+ {
+ "label": "R11",
+ "x": 9,
+ "y": 1
+ },
+ {
+ "label": "R12",
+ "x": 10,
+ "y": 1
+ },
+ {
+ "label": "R13",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "R14",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "R15",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "R16",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "R17",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "L20",
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "L21",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "L22",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "L23",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "L24",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "L25",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "L26",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "L27",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "R20",
+ "x": 8,
+ "y": 2
+ },
+ {
+ "label": "R21",
+ "x": 9,
+ "y": 2
+ },
+ {
+ "label": "R22",
+ "x": 10,
+ "y": 2
+ },
+ {
+ "label": "R23",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "R24",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "R25",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "R26",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "R27",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "L30",
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "L31",
+ "x": 1,
+ "y": 3
+ },
+ {
+ "label": "L32",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "L33",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "L34",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "L35",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "L36",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "L37",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "R30",
+ "x": 8,
+ "y": 3
+ },
+ {
+ "label": "R31",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "R32",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": "R33",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": "R34",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "R35",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "R36",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "R37",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "L40",
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "L41",
+ "x": 1,
+ "y": 4
+ },
+ {
+ "label": "L42",
+ "x": 2,
+ "y": 4
+ },
+ {
+ "label": "L43",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "L44",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "L45",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "L46",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "L47",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "R40",
+ "x": 8,
+ "y": 4
+ },
+ {
+ "label": "R41",
+ "x": 9,
+ "y": 4
+ },
+ {
+ "label": "R42",
+ "x": 10,
+ "y": 4
+ },
+ {
+ "label": "R43",
+ "x": 11,
+ "y": 4
+ },
+ {
+ "label": "R44",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "R45",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "R46",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "R47",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "L50",
+ "x": 0,
+ "y": 5
+ },
+ {
+ "label": "L51",
+ "x": 1,
+ "y": 5
+ },
+ {
+ "label": "L52",
+ "x": 2,
+ "y": 5
+ },
+ {
+ "label": "L53",
+ "x": 3,
+ "y": 5
+ },
+ {
+ "label": "L54",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "L55",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "L56",
+ "x": 6,
+ "y": 5
+ },
+ {
+ "label": "L57",
+ "x": 7,
+ "y": 5
+ },
+ {
+ "label": "R50",
+ "x": 8,
+ "y": 5
+ },
+ {
+ "label": "R51",
+ "x": 9,
+ "y": 5
+ },
+ {
+ "label": "R52",
+ "x": 10,
+ "y": 5
+ },
+ {
+ "label": "R53",
+ "x": 11,
+ "y": 5
+ },
+ {
+ "label": "R54",
+ "x": 12,
+ "y": 5
+ },
+ {
+ "label": "R55",
+ "x": 13,
+ "y": 5
+ },
+ {
+ "label": "R56",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "R57",
+ "x": 15,
+ "y": 5
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/adkb96/keymaps/default/config.h b/keyboards/adkb96/keymaps/default/config.h
new file mode 100644
index 000000000..bef279a6d
--- /dev/null
+++ b/keyboards/adkb96/keymaps/default/config.h
@@ -0,0 +1,34 @@
+/*
+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
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+//#define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define FORCE_NKRO
diff --git a/keyboards/adkb96/keymaps/default/keymap.c b/keyboards/adkb96/keymaps/default/keymap.c
new file mode 100644
index 000000000..c8198ab33
--- /dev/null
+++ b/keyboards/adkb96/keymaps/default/keymap.c
@@ -0,0 +1,15 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, XXXXXXX,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DELT,
+ KC_ZKHK,KC_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_BSPC,
+ KC_TAB, KC_TAB, KC_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_ENT,
+ KC_CAPS,KC_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_RSFT,
+ KC_LCTL,KC_LALT,KC_LGUI,KC_MHEN,KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_HENK,KC_KANA,KC_RALT,KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT,XXXXXXX
+ )
+};
diff --git a/keyboards/adkb96/readme.md b/keyboards/adkb96/readme.md
new file mode 100644
index 000000000..fa5187966
--- /dev/null
+++ b/keyboards/adkb96/readme.md
@@ -0,0 +1,17 @@
+# ADKB96
+
+![ADKB96](http://btoshop.jp/wp-content/uploads/sites/3/2019/04/ADKB96_ALL.png)
+
+A 16x6 ortholinear keyboard kit made and sold by Bit Trade One Ltd. [More info on Web](http://bit-trade-one.co.jp/selfmadekb/adkb96/)
+
+Keyboard Maintainer: [Bit Trade One Ltd.](http://bit-trade-one.co.jp/)
+Hardware Supported: ADKB96 PCB, Pro Micro
+Hardware Availability: [PCB & case Data](https://github.com/bit-trade-one/ADKB96-hardware), [BTOS Shop](http://btoshop.jp/2019/04/11/4562469772424/)
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+ make adkb96/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/ergodash/rev2/config.h b/keyboards/adkb96/rev1/config.h
index 09657250b..8bdacb4cb 100644
--- a/keyboards/ergodash/rev2/config.h
+++ b/keyboards/adkb96/rev1/config.h
@@ -16,44 +16,33 @@ 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 REV2_CONFIG_H
-#define REV2_CONFIG_H
-
-#include "config_common.h"
-
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Omkbd
-#define PRODUCT ErgoDash
-#define DESCRIPTION Power
+#define VENDOR_ID 0x00a5
+#define PRODUCT_ID 0xad96
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Bit Trade One
+#define PRODUCT ADKB96
+#define DESCRIPTION
/* key matrix size */
// Rows are doubled-up
-#define MATRIX_ROWS 10
-#define MATRIX_COLS 7
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 8
// wiring of each half
-#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
-#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 MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
+
+#define SOFT_SERIAL_PIN D0
/* define tapping term */
-#define TAPPING_TERM 120
+#define TAPPING_TERM 100
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
-#define C6_AUDIO
-
/* number of backlight levels */
-#ifdef BACKLIGHT_ENABLE
- #define BACKLIGHT_PIN B6
- #define BACKLIGHT_LEVELS 7
-// #define BACKLIGHT_BREATHING
-// #define BREATHING_PERIOD 4
-#endif
+// #define BACKLIGHT_LEVELS 3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
@@ -64,10 +53,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
/* ws2812 RGB LED */
+/*
#define RGB_DI_PIN D3
-#define RGBLED_NUM 24 // Number of LEDs
-
+#define RGBLED_NUM 12 // Number of LEDs
+*/
/*
* Feature disable options
* These options are also useful to firmware size reduction.
@@ -86,4 +76,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-#endif
diff --git a/keyboards/adkb96/rev1/rev1.c b/keyboards/adkb96/rev1/rev1.c
new file mode 100644
index 000000000..872a7e08f
--- /dev/null
+++ b/keyboards/adkb96/rev1/rev1.c
@@ -0,0 +1,15 @@
+#include "adkb96.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();
+};
+
diff --git a/keyboards/adkb96/rev1/rev1.h b/keyboards/adkb96/rev1/rev1.h
new file mode 100644
index 000000000..0ec70c5d5
--- /dev/null
+++ b/keyboards/adkb96/rev1/rev1.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "adkb96.h"
+
+//void promicro_bootloader_jmp(bool program);
+
+#ifdef USE_I2C
+#include <stddef.h>
+#ifdef __AVR__
+ #include <avr/io.h>
+ #include <avr/interrupt.h>
+#endif
+#endif
+
+//void promicro_bootloader_jmp(bool program);
+
+
+// Keymap with right side flipped
+// (TRRS jack on both halves are to the right)
+#define LAYOUT_ortho_6x16( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \
+ L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \
+ L30, L31, L32, L33, L34, L35, L36, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47, \
+ L50, L51, L52, L53, L54, L55, L56, L57, R50, R51, R52, R53, R54, R55, R56, R57 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07 }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17 }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27 }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37 }, \
+ { L40, L41, L42, L43, L44, L45, L46, L47 }, \
+ { L50, L51, L52, L53, L54, L55, L56, L57 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 }, \
+ { R50, R51, R52, R53, R54, R55, R56, R57 } \
+ }
+
+#define LAYOUT LAYOUT_ortho_6x16
+
diff --git a/keyboards/preonic/rules.mk b/keyboards/adkb96/rules.mk
index e646f2493..04986eb67 100644
--- a/keyboards/preonic/rules.mk
+++ b/keyboards/adkb96/rules.mk
@@ -1,5 +1,3 @@
-
-
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@@ -36,39 +34,45 @@ ARCH = AVR8
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
-ifeq ($(strip $(KEYBOARD)), preonic/rev1)
- BOOTLOADER = atmel-dfu
-endif
-ifeq ($(strip $(KEYBOARD)), preonic/rev2)
- BOOTLOADER = qmk-dfu
-endif
-
# Interrupt driven control endpoint task(+60)
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
+BOOTLOADER = caterina
+
+# Boot Section Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
+# 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)
-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
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = yes # Audio output on port C6
+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.
-API_SYSEX_ENABLE = no
-
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-LAYOUTS = ortho_5x12
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = adkb96/rev1
diff --git a/keyboards/atreus/readme.md b/keyboards/atreus/readme.md
index 50901ee32..5cd797da9 100644
--- a/keyboards/atreus/readme.md
+++ b/keyboards/atreus/readme.md
@@ -1,21 +1,24 @@
Atreus
-===
+======
A small mechanical keyboard that is based around the shape of the human hand.
-These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2, (usually hand-wired) one powered by an A-Star. (usually using a PCB) This repository currently assumes that you have an A-Star powered Atreus. If you are using a Teensy2, specify that by adding `TEENSY2=yes` to your `make` commands.
-
Keyboard Maintainer: [Phil Hagelberg](https://github.com/technomancy)
Hardware Supported: Atreus, PCB-based or hand-wired
Hardware Availability: https://atreus.technomancy.us
-Make example for this keyboard (after setting up your build environment):
+These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2 (usually hand-wired), one powered by an A-Star (usually using a PCB). You will need to use different `make` commands depending on the variant you have; see examples below.
+
+A-Star:\
+`make atreus:default:avrdude`
- make atreus:default:avrdude
+Teensy:\
+`make TEENSY2=yes atreus:default:teensy`
+
+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.
-Unlike the TMK firmware, this command should be run from the root of
-the repository, not the directory containing this readme.
+`make PCBDOWN=yes atreus:default:avrdude`
-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.
+*Unlike the TMK firmware, these commands should be run from the root of the repository, not the directory containing this readme.*
-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 [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools), then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk
index 2488fd5e8..eda77404a 100644
--- a/keyboards/atreus/rules.mk
+++ b/keyboards/atreus/rules.mk
@@ -1,19 +1,4 @@
-
-
-ifdef TEENSY2
- OPT_DEFS += -DATREUS_TEENSY2
- ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex
-else
- OPT_DEFS += -DATREUS_ASTAR
-ifdef PCBDOWN
- OPT_DEFS += -DPCBDOWN
-endif
- ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
- avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
-endif
-
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
@@ -48,34 +33,56 @@ ARCH = AVR8
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Interrupt driven control endpoint task(+60)
+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
ifdef TEENSY2
BOOTLOADER = halfkay
+ OPT_DEFS += -DATREUS_TEENSY2
else
BOOTLOADER = caterina
+ OPT_DEFS += -DATREUS_ASTAR
+ ifdef PCBDOWN
+ OPT_DEFS += -DPCBDOWN
+ endif
endif
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
-# comment out to disable the 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)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
-# 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
-
-USB = /dev/cu.usbmodem1411
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/baguette/info.json b/keyboards/baguette/info.json
index f3c9b308f..2e845cdda 100644
--- a/keyboards/baguette/info.json
+++ b/keyboards/baguette/info.json
@@ -123,7 +123,7 @@
{"label":";", "x":10.75, "y":2},
{"label":"'", "x":11.75, "y":2},
{"label":"ISO #", "x":12.75, "y":2},
- {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
{"label":"Shift", "x":0, "y":3, "w":1.25},
{"label":"ISO \\", "x":1.25, "y":3},
{"label":"Z", "x":2.25, "y":3},
diff --git a/keyboards/baguette/readme.md b/keyboards/baguette/readme.md
index d211af16a..e6188cc99 100644
--- a/keyboards/baguette/readme.md
+++ b/keyboards/baguette/readme.md
@@ -6,7 +6,7 @@ Baguette
This is a custom keyboard with backlight inspired by France.
Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [github](https://github.com/yiancar)
-Hardware Supported: ATMEGA 32u4 MCU with backlight support.
+Hardware Supported: ATMEGA 32u4 MCU with backlight support.
Hardware Availability: Closed group-buy please contact the runners (Tesletron and Enjoy)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/bm16s/bm16s.h b/keyboards/bm16s/bm16s.h
new file mode 100755
index 000000000..9aca8c0e3
--- /dev/null
+++ b/keyboards/bm16s/bm16s.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_4x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 } \
+}
diff --git a/keyboards/bm16s/config.h b/keyboards/bm16s/config.h
new file mode 100755
index 000000000..568e80b39
--- /dev/null
+++ b/keyboards/bm16s/config.h
@@ -0,0 +1,46 @@
+#pragma once
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KPrepublic
+#define PRODUCT bm16s
+#define DESCRIPTION KPrepublic bm16s
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D1, D0, D3, D2 }
+#define MATRIX_COL_PINS { F7, F6, D4, D6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+ #define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 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 E2
+#ifdef RGB_DI_PIN
+ #define RGBLIGHT_ANIMATIONS
+ #define RGBLED_NUM 16
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/bm16s/info.json b/keyboards/bm16s/info.json
new file mode 100644
index 000000000..706453561
--- /dev/null
+++ b/keyboards/bm16s/info.json
@@ -0,0 +1,30 @@
+{
+ "keyboard_name": "bm16s",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_ortho_4x4": {
+ "key_count": 16,
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3}
+ ]
+ }
+ }
+ } \ No newline at end of file
diff --git a/keyboards/bm16s/keymaps/default/keymap.c b/keyboards/bm16s/keymaps/default/keymap.c
new file mode 100755
index 000000000..9dd697a0d
--- /dev/null
+++ b/keyboards/bm16s/keymaps/default/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4(
+ KC_KP_7, KC_KP_8, KC_KP_9, MO(1), \
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_PMNS, \
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, \
+ KC_KP_0, KC_PDOT, KC_PCMM, KC_PENT \
+ ),
+ [1] = LAYOUT_ortho_4x4(
+ RESET, BL_STEP, _______, KC_VOLU, \
+ BL_TOGG, BL_DEC, BL_INC, KC_VOLD, \
+ RGB_TOG, RGB_MOD, RGB_HUI, KC_MUTE, \
+ RGB_SAI, RGB_SAD, RGB_HUD, _______ \
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/bm16s/keymaps/media/keymap.c b/keyboards/bm16s/keymaps/media/keymap.c
new file mode 100755
index 000000000..082879320
--- /dev/null
+++ b/keyboards/bm16s/keymaps/media/keymap.c
@@ -0,0 +1,20 @@
+#include QMK_KEYBOARD_H
+
+#define RGB_BRU RGB_VAI
+#define RGB_BRD RGB_VAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ortho_4x4(
+ KC_BRIU, _______, _______, KC_VOLU, \
+ KC_BRID, _______, _______, KC_VOLD, \
+ _______, _______, _______, KC_MUTE, \
+ KC_MPRV, KC_MPLY, KC_MNXT, MO(1) \
+ ),
+ [1] = LAYOUT_ortho_4x4(
+ RESET, _______, _______, _______, \
+ RGB_SPD, RGB_BRU, RGB_SPI, _______, \
+ RGB_RMOD, RGB_BRD, RGB_MOD, _______, \
+ RGB_TOG, _______, _______, _______ \
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/bm16s/readme.md b/keyboards/bm16s/readme.md
new file mode 100644
index 000000000..097a38008
--- /dev/null
+++ b/keyboards/bm16s/readme.md
@@ -0,0 +1,13 @@
+# bm16s
+
+A 16-key macropad, with USB C and per-key RGB backlighting. This is a variant of the BM16A, but with low profile Choc switches.
+
+Keyboard Maintainer: QMK Community
+Hardware Supported: The PCBs, controllers supported
+Hardware Availability: [KPrepublic](https://kprepublic.com/collections/pcb/products/bm16s-16-keys-custom-mechanical-keyboard-pcb-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch-leds-choc-switch); [AliExpress](https://www.aliexpress.com/item/bm16s-16-keys-Custom-Mechanical-Keyboard-PCB-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch/32999247908.html); [Massdrop](https://www.massdrop.com/buy/78169)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make bm16s: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/bm16s/rules.mk b/keyboards/bm16s/rules.mk
new file mode 100755
index 000000000..f4f1dfd63
--- /dev/null
+++ b/keyboards/bm16s/rules.mk
@@ -0,0 +1,72 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+# Build Options
+# comment out to disable the options.
+#
+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 = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = yes
+
+LAYOUTS = ortho_4x4 \ No newline at end of file
diff --git a/keyboards/boardwalk/keymaps/brendanwr/config.h b/keyboards/boardwalk/keymaps/brendanwr/config.h
new file mode 100644
index 000000000..a2530241f
--- /dev/null
+++ b/keyboards/boardwalk/keymaps/brendanwr/config.h
@@ -0,0 +1,16 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
diff --git a/keyboards/boardwalk/keymaps/brendanwr/keymap.c b/keyboards/boardwalk/keymaps/brendanwr/keymap.c
new file mode 100644
index 000000000..b428651e7
--- /dev/null
+++ b/keyboards/boardwalk/keymaps/brendanwr/keymap.c
@@ -0,0 +1,95 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer {
+ _BASE,
+ _FN,
+ _BACKLIT
+};
+
+
+#define FN MO(_FN)
+#define BACKLIT MO(_BACKLIT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE
+ * .-----------------------------------------------------------------------------------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | \ |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | LCTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | HOME |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | FN | END |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
+ * | | LALT | LGUI | SPACE | RGUI | RALT | |
+ * '-----------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_BASE] = LAYOUT_ortho_7u(
+ KC_ESC, KC_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_TAB, KC_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_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, FN, KC_END,
+ KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT
+ ),
+
+/* FUNCTION
+ * .-----------------------------------------------------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ` |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | | | | | | | | | | | UP | | | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | | VOLD | VOLU | MUTE | | | | | | | LEFT | RIGHT | | PG_UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | | | | | | | | | | | DOWN | | | PG_DN |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
+ * | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_FN] = LAYOUT_ortho_7u(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_GRV,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, KC_DEL,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, KC_PGUP,
+ BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, KC_PGDN,
+ _______, _______, _______, _______, _______
+ ),
+
+/* BACKLIT
+ * .-----------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | | RGBTOG | RGBMOD | RGBHUI | RGBHUD | RGBSAI | RGBSAD | RGBVAI | RGBVAD | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
+ * | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_BACKLIT] = LAYOUT_ortho_7u(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c
new file mode 100644
index 000000000..933c14dee
--- /dev/null
+++ b/keyboards/boston_meetup/2019/2019.c
@@ -0,0 +1,215 @@
+/* Copyright 2019 ishtob
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "2019.h"
+#include "qwiic.h"
+#include "action_layer.h"
+#include "haptic.h"
+
+#ifdef RGB_MATRIX_ENABLE
+#include "rgb_matrix.h"
+
+led_config_t g_led_config = { {
+ { 5, NO_LED, NO_LED, 0 },
+ { NO_LED, NO_LED, NO_LED, NO_LED },
+ { 4, NO_LED, NO_LED, 1 },
+ { 3, NO_LED, NO_LED, 2 }
+}, {
+ { 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 }
+}, {
+ 4, 4, 4, 4, 4, 4
+} };
+#endif
+
+uint8_t *o_fb;
+
+uint16_t counterst = 0;
+
+
+
+#ifdef QWIIC_MICRO_OLED_ENABLE
+
+/* screen off after this many milliseconds */
+#include "timer.h"
+#define ScreenOffInterval 60000 /* milliseconds */
+static uint16_t last_flush;
+
+volatile uint8_t led_numlock = false;
+volatile uint8_t led_capslock = false;
+volatile uint8_t led_scrolllock = false;
+
+static uint8_t layer;
+static bool queue_for_send = false;
+static uint8_t encoder_value = 32;
+
+__attribute__ ((weak))
+void draw_ui(void) {
+ clear_buffer();
+ last_flush = timer_read();
+ send_command(DISPLAYON);
+
+/* Boston MK title is 55 x 10 pixels */
+#define NAME_X 0
+#define NAME_Y 0
+
+ draw_string(NAME_X + 1, NAME_Y + 2, "BOSTON MK", PIXEL_ON, NORM, 0);
+
+/* Layer indicator is 41 x 10 pixels */
+#define LAYER_INDICATOR_X 60
+#define LAYER_INDICATOR_Y 0
+
+ draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
+ draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM);
+ draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+
+/* Matrix display is 12 x 12 pixels */
+#define MATRIX_DISPLAY_X 8
+#define MATRIX_DISPLAY_Y 16
+
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+ draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+ draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+ draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+
+ }
+ }
+ draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 12, 12, PIXEL_ON, NORM);
+ /* hadron oled location on thumbnail */
+ draw_rect_filled_soft(MATRIX_DISPLAY_X + 5, MATRIX_DISPLAY_Y + 2, 6, 2, PIXEL_ON, NORM);
+/*
+ draw_rect_soft(0, 13, 64, 6, PIXEL_ON, NORM);
+ draw_line_vert(encoder_value, 13, 6, PIXEL_ON, NORM);
+
+*/
+
+/* Mod display is 41 x 16 pixels */
+#define MOD_DISPLAY_X 60
+#define MOD_DISPLAY_Y 20
+
+ uint8_t mods = get_mods();
+ if (mods & MOD_LSFT) {
+ draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
+ draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
+ } else {
+ draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
+ }
+ if (mods & MOD_LCTL) {
+ draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
+ draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
+ } else {
+ draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
+ }
+ if (mods & MOD_LALT) {
+ draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
+ draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
+ } else {
+ draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
+ }
+ if (mods & MOD_LGUI) {
+ draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
+ draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
+ } else {
+ draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
+ }
+
+/* Lock display is 23 x 32 */
+#define LOCK_DISPLAY_X 104
+#define LOCK_DISPLAY_Y 0
+
+ if (led_numlock == true) {
+ draw_rect_filled_soft(LOCK_DISPLAY_X, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_OFF, NORM, 0);
+ } else if (led_numlock == false) {
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_ON, NORM, 0);
+ }
+ if (led_capslock == true) {
+ draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_OFF, NORM, 0);
+ } else if (led_capslock == false) {
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_ON, NORM, 0);
+ }
+
+ if (led_scrolllock == true) {
+ draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 22, 5 + (3 * 6), 9, PIXEL_ON, NORM);
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_OFF, NORM, 0);
+ } else if (led_scrolllock == false) {
+ draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_ON, NORM, 0);
+ }
+ send_buffer();
+}
+
+void led_set_user(uint8_t usb_led) {
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ if (led_numlock == false){led_numlock = true;}
+ } else {
+ if (led_numlock == true){led_numlock = false;}
+ }
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ if (led_capslock == false){led_capslock = true;}
+ } else {
+ if (led_capslock == true){led_capslock = false;}
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ if (led_scrolllock == false){led_scrolllock = true;}
+ } else {
+ if (led_scrolllock == true){led_scrolllock = false;}
+ }
+}
+
+uint32_t layer_state_set_kb(uint32_t state) {
+ state = layer_state_set_user(state);
+ layer = biton32(state);
+ queue_for_send = true;
+ return state;
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ queue_for_send = true;
+ return process_record_user(keycode, record);
+}
+
+void encoder_update_kb(uint8_t index, bool clockwise) {
+ encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
+ queue_for_send = true;
+}
+
+#endif
+
+void matrix_init_kb(void) {
+ queue_for_send = true;
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+if (queue_for_send) {
+#ifdef QWIIC_MICRO_OLED_ENABLE
+ draw_ui();
+#endif
+ queue_for_send = false;
+ }
+#ifdef QWIIC_MICRO_OLED_ENABLE
+ if (timer_elapsed(last_flush) > ScreenOffInterval) {
+ send_command(DISPLAYOFF); /* 0xAE */
+ }
+#endif
+ if (counterst == 0) {
+ //testPatternFB(o_fb);
+ }
+ counterst = (counterst + 1) % 1024;
+ //rgblight_task();
+ matrix_scan_user();
+}
diff --git a/keyboards/boston_meetup/2019/2019.h b/keyboards/boston_meetup/2019/2019.h
new file mode 100644
index 000000000..fbba5c315
--- /dev/null
+++ b/keyboards/boston_meetup/2019/2019.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 ishtob
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "boston_meetup.h"
+
diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h
new file mode 100644
index 000000000..565281644
--- /dev/null
+++ b/keyboards/boston_meetup/2019/config.h
@@ -0,0 +1,196 @@
+#pragma once
+
+/* USB Device descriptor parameter */
+#define DEVICE_VER 0x07E3
+
+#undef MATRIX_ROWS
+#undef MATRIX_COLS
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+#undef MATRIX_ROW_PINS
+#undef MATRIX_COL_PINS
+
+#define MATRIX_ROW_PINS { A3, B8, B9, B1 }
+#define MATRIX_COL_PINS { A7, A8, B2, B10 }
+
+#define NUMBER_OF_ENCODERS 1
+#define ENCODERS_PAD_A { B13 }
+#define ENCODERS_PAD_B { B14 }
+
+//Audio
+#undef AUDIO_VOICES
+#undef C6_AUDIO
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(ONE_UP_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+#define AUDIO_CLICKY
+ /* to enable clicky on startup */
+ //#define AUDIO_CLICKY_ON
+#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
+#endif
+
+//configure qwiic micro_oled driver for the 128x32 oled
+#ifdef QWIIC_MICRO_OLED_ENABLE
+
+#undef I2C_ADDRESS_SA0_1
+#define I2C_ADDRESS_SA0_1 0b0111100
+#define LCDWIDTH 128
+#define LCDHEIGHT 32
+#define micro_oled_rotate_180
+
+#endif
+/*
+ * 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)
+ *
+*/
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 6
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+/*
+ * 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
+
+/* Haptic Driver initialization settings
+ * Feedback Control Settings */
+#define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/
+#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
+#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
+
+/* default 3V ERM vibration motor voltage and library*/
+#if FB_ERM_LRA == 0
+#define RATED_VOLTAGE 3
+#define V_RMS 2.3
+#define V_PEAK 3.30
+/* Library Selection */
+#define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
+
+/* default 2V LRA voltage and library */
+#elif FB_ERM_LRA == 1
+#define RATED_VOLTAGE 2
+#define V_RMS 2.0
+#define V_PEAK 2.85
+#define F_LRA 200
+/* Library Selection */
+#define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
+
+#endif
+
+/* Control 1 register settings */
+#define DRIVE_TIME 25
+#define AC_COUPLE 0
+#define STARTUP_BOOST 1
+
+/* Control 2 Settings */
+#define BIDIR_INPUT 1
+#define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */
+#define SAMPLE_TIME 3
+#define BLANKING_TIME 1
+#define IDISS_TIME 1
+
+/* Control 3 settings */
+#define NG_THRESH 2
+#define ERM_OPEN_LOOP 1
+#define SUPPLY_COMP_DIS 0
+#define DATA_FORMAT_RTO 0
+#define LRA_DRIVE_MODE 0
+#define N_PWM_ANALOG 0
+#define LRA_OPEN_LOOP 0
+/* Control 4 settings */
+#define ZC_DET_TIME 0
+#define AUTO_CAL_TIME 3
+
+#define RGBLIGHT_ANIMATIONS
+
+#define RGBLED_NUM 10
+#define RGB_DI_PIN B5
+#define DRIVER_LED_TOTAL RGBLED_NUM
+
+#define RGB_MATRIX_KEYPRESSES
+
+#define SOLENOID_PIN A14
+
diff --git a/keyboards/boston_meetup/2019/info.json b/keyboards/boston_meetup/2019/info.json
new file mode 100644
index 000000000..15ab72935
--- /dev/null
+++ b/keyboards/boston_meetup/2019/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Boston Meetup 2019",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 13,
+ "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":3, "y":1}, {"label":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "y":2}, {"label":"K30", "x":0, "y":3}, {"label":"K31", "x":1, "y":3}, {"label":"K32", "x":2, "y":3}, {"label":"K33", "x":3, "y":3}] }
+ }
+}
diff --git a/keyboards/boston_meetup/2019/keymaps/default/keymap.c b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
new file mode 100644
index 000000000..52d67273e
--- /dev/null
+++ b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
@@ -0,0 +1,166 @@
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum custom_layers {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum custom_keycodes {
+ BASE = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ KC_DEMOMACRO
+};
+
+// Custom macros
+#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
+#define CTL_TTAB CTL_T(KC_TAB) // Tap for Esc, hold for Ctrl
+#define CTL_ENT CTL_T(KC_ENT) // Tap for Enter, hold for Ctrl
+#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
+// Requires KC_TRNS/_______ for the trigger key in the destination layer
+#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor
+#define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise
+#define DEMOMACRO KC_DEMOMACRO // Sample for macros
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Base
+ * ,------.
+ * | Esc |
+ * |------+------+-------------.
+ * | : | 7 | 8 | 9 |
+ * |------+------+------+------|
+ * | RAISE| 4 | 5 | 6 |
+ * |------+------+------+------|
+ * | LOWER| 1 | 2 | 3 |
+ * `---------------------------'
+ */
+[_BASE] = LAYOUT(
+ KC_ESC,
+ KC_COLN, KC_P7, KC_P8, KC_P9,
+ RAISE, KC_P4, KC_P5, KC_P6,
+ LOWER, KC_P1, KC_P2, KC_P3
+),
+
+/* Lower
+ * ,------.
+ * | Nmlk |
+ * |------+------+-------------.
+ * | : | / | * | - |
+ * |------+------+------+------|
+ * | | | = | + |
+ * |------+------+------+------|
+ * | | 0 | . | ENT |
+ * `---------------------------'
+ */
+[_LOWER] = LAYOUT(
+ KC_NLCK,
+ KC_COLN, KC_PSLS, KC_PAST, KC_PMNS,
+ _______, XXXXXXX, KC_EQL, KC_PPLS,
+ _______, KC_P0, KC_PDOT, KC_PENT
+),
+
+/* Raise
+ * ,------.
+ * | Esc |
+ * |------+------+-------------.
+ * |RGB TG|RGB M+|RGB M-| |
+ * |------+------+------+------|
+ * | |RGB H+|RGB S+|RGB V+|
+ * |------+------+------+------|
+ * | ` |RGB H-|RGB S-|RGB V-|
+ * `---------------------------'
+ */
+[_RAISE] = LAYOUT(
+ KC_NLCK,
+ RGB_TOG, RGB_MOD, RGB_RMOD, XXXXXXX,
+ _______, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, RGB_HUD, RGB_SAD, RGB_VAD
+
+),
+
+/* Adjust
+ * ,------.
+ * | DFU |
+ * |------+------+-------------.
+ * |HPT TG|HPT FB|HPT RS| BKSP |
+ * |------+------+------+------|
+ * | |HPT M+| | |
+ * |------+------+------+------|
+ * | |HPT M-|Clk TG| Del |
+ * `---------------------------'
+ */
+[_ADJUST] = LAYOUT(
+ RESET,
+ HPT_TOG, HPT_FBK, HPT_RST, KC_BSPC,
+ _______, HPT_MODI, XXXXXXX, XXXXXXX,
+ _______, HPT_MODD, CK_TOGG, KC_DEL
+),
+
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_DEMOMACRO:
+ if (record->event.pressed) {
+ // when keycode KC_DEMOMACRO is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode KC_DEMOMACRO is released
+ }
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ //not sure how to have keyboard check mode and set it to a variable, so my work around
+ //uses another variable that would be set to true after the first time a reactive key is pressed.
+ layer_on(_LOWER);
+ } else {
+ layer_off(_LOWER);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ //not sure how to have keyboard check mode and set it to a variable, so my work around
+ //uses another variable that would be set to true after the first time a reactive key is pressed.
+ layer_on(_RAISE);
+ } else {
+ layer_off(_RAISE);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
+
+void matrix_init_user(void) {
+}
+
+
+void matrix_scan_user(void) {
+}
+
diff --git a/keyboards/boston_meetup/2019/keymaps/default/readme.md b/keyboards/boston_meetup/2019/keymaps/default/readme.md
new file mode 100644
index 000000000..75f80b519
--- /dev/null
+++ b/keyboards/boston_meetup/2019/keymaps/default/readme.md
@@ -0,0 +1,51 @@
+# The Default Boston Meetup 2019 board Layout
+
+Keymap:
+```
+Base
+,------.
+| Esc |
+|------+------+-------------.
+| : | 7 | 8 | 9 |
+|------+------+------+------|
+| RAISE| 4 | 5 | 6 |
+|------+------+------+------|
+| LOWER| 1 | 2 | 3 |
+`---------------------------'
+
+Lower
+,------.
+| Nmlk |
+|------+------+-------------.
+| : | / | * | - |
+|------+------+------+------|
+| | | = | + |
+|------+------+------+------|
+| | 0 | . | ENT |
+`---------------------------'
+
+Raise
+,------.
+| Esc |
+|------+------+-------------.
+|RGB TG|RGB M+|RGB M-| |
+|------+------+------+------|
+| |RGB H+|RGB S+|RGB V+|
+|------+------+------+------|
+| |RGB H-|RGB S-|RGB V-|
+`---------------------------'
+
+Adjust:
+,------.
+| DFU |
+|------+------+-------------.
+|HPT TG|HPT FB|HPT RS| BKSP |
+|------+------+------+------|
+| |HPT M+| | |
+|------+------+------+------|
+| |HPT M-|Clk TG| Del |
+`---------------------------'
+
+```
+
+RGB still work in progress \ No newline at end of file
diff --git a/keyboards/boston_meetup/2019/keymaps/readme.md b/keyboards/boston_meetup/2019/keymaps/readme.md
new file mode 100644
index 000000000..c10a49f7d
--- /dev/null
+++ b/keyboards/boston_meetup/2019/keymaps/readme.md
@@ -0,0 +1,22 @@
+# How to add your own keymap
+
+Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
+
+ _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
+
+\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
+
+and contain the following files:
+
+* `keymap.c`
+* `readme.md` *recommended*
+* `config.h` *optional*, found automatically when compiling
+* `Makefile` *optional*, found automatically when compling
+
+When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
+
+ * **folder_name** description
+
+# List of 2019 keymaps
+
+* **default** default 2019 macropad layout \ No newline at end of file
diff --git a/keyboards/boston_meetup/2019/readme.md b/keyboards/boston_meetup/2019/readme.md
new file mode 100644
index 000000000..2bdac9dcd
--- /dev/null
+++ b/keyboards/boston_meetup/2019/readme.md
@@ -0,0 +1,13 @@
+# Boston Meetup 2019 Macropad
+
+![Boston Meetup 2019](https://i.imgur.com/6LgBc4g.jpg)
+
+Limited-run board designed for Boston MK community meetup 2019.
+
+Keyboard Maintainer: [ishtob](https://github.com/ishtob), [QMK](https://github.com/qmk)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make boston_meetup/2019: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/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk
new file mode 100644
index 000000000..7c03a025e
--- /dev/null
+++ b/keyboards/boston_meetup/2019/rules.mk
@@ -0,0 +1,24 @@
+# project specific files
+
+# Cortex version
+MCU = STM32F303
+
+# Build Options
+# comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover
+CUSTOM_MATRIX = no # Custom matrix file
+AUDIO_ENABLE = yes
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = no #WS2812
+HAPTIC_ENABLE += DRV2605L
+QWIIC_ENABLE += MICRO_OLED
+# SERIAL_LINK_ENABLE = yes
diff --git a/keyboards/boston_meetup/boston_meetup.c b/keyboards/boston_meetup/boston_meetup.c
new file mode 100644
index 000000000..a9201ac85
--- /dev/null
+++ b/keyboards/boston_meetup/boston_meetup.c
@@ -0,0 +1,2 @@
+#include "boston_meetup.h"
+
diff --git a/keyboards/boston_meetup/boston_meetup.h b/keyboards/boston_meetup/boston_meetup.h
new file mode 100644
index 000000000..e1d9d9206
--- /dev/null
+++ b/keyboards/boston_meetup/boston_meetup.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#ifdef KEYBOARD_boston_meetup_2019
+ #include "2019.h"
+#define LAYOUT( \
+ K00, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33 \
+ ) \
+{ \
+ { K00, KC_NO, KC_NO, KC_NO }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 } \
+}
+#endif
+
+#include "quantum.h" \ No newline at end of file
diff --git a/keyboards/boston_meetup/config.h b/keyboards/boston_meetup/config.h
new file mode 100644
index 000000000..b025e18df
--- /dev/null
+++ b/keyboards/boston_meetup/config.h
@@ -0,0 +1,60 @@
+/*
+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 0xFB30
+#define PRODUCT_ID 0x26BE
+#define MANUFACTURER ishtob
+#define PRODUCT Boston Meetup Board
+#define DESCRIPTION A limited-run community meetup board
+
+//#define AUDIO_VOICES
+
+//#define BACKLIGHT_PIN B7
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#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/boston_meetup/readme.md b/keyboards/boston_meetup/readme.md
new file mode 100644
index 000000000..2fa1ec958
--- /dev/null
+++ b/keyboards/boston_meetup/readme.md
@@ -0,0 +1,14 @@
+# Boston Meetup Macropads
+
+![Boston Meetup Macropads](https://i.imgur.com/yQcBF8g.jpg)
+
+Limited-run boards designed for Boston MK community meetups.
+
+Keyboard Maintainer: [ishtob](https://github.com/ishtob), [QMK](https://github.com/qmk)
+Hardware Supported: Boston Meetup PCB 2018, 2019
+
+Make example for this keyboard (after setting up your build environment):
+
+ make boston_meetup/YYYY: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/boston_meetup/rules.mk b/keyboards/boston_meetup/rules.mk
new file mode 100644
index 000000000..6dd899edc
--- /dev/null
+++ b/keyboards/boston_meetup/rules.mk
@@ -0,0 +1,2 @@
+
+DEFAULT_FOLDER = boston_meetup/2019
diff --git a/keyboards/butterstick/butterstick.c b/keyboards/butterstick/butterstick.c
new file mode 100644
index 000000000..6c00bbe5d
--- /dev/null
+++ b/keyboards/butterstick/butterstick.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 Jeremy Bernhardt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "butterstick.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.
+
+/*
+
+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) {
+#ifdef DEBUG_MATRIX
+ for (uint8_t c = 0; c < MATRIX_COLS; c++)
+ for (uint8_t r = 0; r < MATRIX_ROWS; r++)
+ if (matrix_is_on(r, c)) xprintf("r:%d c:%d \n", r, c);
+#endif
+
+ 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/butterstick/butterstick.h b/keyboards/butterstick/butterstick.h
new file mode 100644
index 000000000..f97488c3f
--- /dev/null
+++ b/keyboards/butterstick/butterstick.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_butter( \
+ k09, k08, k07, k06, k05, k04, k03, k02, k01, k00, \
+ k19, k18, k17, k16, k15, k14, k13, k12, k11, k10 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19}, \
+}
diff --git a/keyboards/butterstick/config.h b/keyboards/butterstick/config.h
new file mode 100644
index 000000000..4c104deb2
--- /dev/null
+++ b/keyboards/butterstick/config.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x1337
+#define DEVICE_VER 0x0001
+#define MANUFACTURER g Heavy Industries
+#define PRODUCT Butter Stick
+#define DESCRIPTION Its a stick of butter
+#define VERSION "Paula Deen"
+
+#define DEBOUNCING_DELAY 5
+#define FORCE_NKRO
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 10
+#define MATRIX_ROW_PINS { F4, F5 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
diff --git a/keyboards/butterstick/keymaps/default/keymap.c b/keyboards/butterstick/keymaps/default/keymap.c
new file mode 100644
index 000000000..faabbef79
--- /dev/null
+++ b/keyboards/butterstick/keymaps/default/keymap.c
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+
+#include "sten.h"
+/*
+ * Key names are inherited from steno machines
+ * .-----------------------------------------------------.
+ * | LSU | LFT | LP | LH | ST1 | RF | RP | RL | RT | RD |
+ * |-----------------------------------------------------|
+ * | LSD | LK | LW | LR | ST2 | RR | RB | RG | RS | RZ |
+ * '-----------------------------------------------------'
+ */
+
+// Function prefixes
+#define MEDIA (LSD | LK | LW | LR)
+#define FUNCT (LSD | LK | LP | LH)
+#define MOVE (LSU | LFT | LP | LH)
+#define SYMB (RD | RZ)
+#define NUMA (LW | LR)
+#define NUMB (RR | RB)
+
+// QMK Layer Numbers
+ #define BASE 0
+ #define GAME 1
+
+// Do not change QMK Layer 0! This is your main keyboard.
+// Make your QMK modifications to the later layers, to add
+// keys/customize on the first layer modify processQwerty():
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_butter(
+ STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
+ STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR
+ ),
+ // I don't game don't roast me thanks
+ [GAME] = LAYOUT_butter(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_ENT,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TO(BASE)
+ )
+};
+
+// Note: You can only use basic keycodes here!
+// P() is just a wrapper to make your life easier, any C code can be executed.
+// Only the longest matched chord is run!
+//
+// http://docs.gboards.ca
+uint32_t processQwerty(bool lookup) {
+ // SECRET AGENT CHORDS
+ P( LSU | LK | RS | RD, SEND_STRING(VERSION); SEND_STRING(__DATE__));
+ P( LSD | RZ, SEND(KC_SPC));
+
+ // Dual chords
+ P( LP | LH, CLICK_MOUSE(KC_MS_BTN2));
+ P( ST1 | RF, CLICK_MOUSE(KC_MS_BTN1));
+ P( LSU | LFT, SEND(KC_ESC));
+ P( LSD | LK, SEND(KC_LSFT));
+ P( RZ | RS, SEND(KC_LSFT));
+ P( ST2 | RR, SEND(KC_SPC));
+ P( RP | RL, SEND(KC_LGUI));
+ P( RT | RD, SEND(KC_LCTL));
+ P( RL | RT, SEND(KC_LALT));
+ P( LSU | LSD | LFT | LK, SEND(KC_LCTL));
+ P( RS | RT | RD | RZ, SEND(KC_ENT));
+
+ // Function Layer
+ P( FUNCT | RF, SEND(KC_F1));
+ P( FUNCT | RP, SEND(KC_F2));
+ P( FUNCT | RL, SEND(KC_F3));
+ P( FUNCT | RT, SEND(KC_F4));
+ P( FUNCT | RF | RR, SEND(KC_F5));
+ P( FUNCT | RP | RB, SEND(KC_F6));
+ P( FUNCT | RL | RG, SEND(KC_F7));
+ P( FUNCT | RT | RS, SEND(KC_F8));
+ P( FUNCT | RR, SEND(KC_F9));
+ P( FUNCT | RB, SEND(KC_F10));
+ P( FUNCT | RG, SEND(KC_F11));
+ P( FUNCT | RS, SEND(KC_F12));
+
+ // Movement Layer
+ P( MOVE | RF, SEND(KC_LEFT));
+ P( MOVE | RP, SEND(KC_DOWN));
+ P( MOVE | RL, SEND(KC_UP));
+ P( MOVE | RT, SEND(KC_RIGHT));
+ P( MOVE | ST1, SEND(KC_PGUP));
+ P( MOVE | ST2, SEND(KC_PGDN));
+
+ // Media Layer
+ P( MEDIA | RF, SEND(KC_MPRV));
+ P( MEDIA | RP, SEND(KC_MPLY));
+ P( MEDIA | RL, SEND(KC_MPLY));
+ P( MEDIA | RT, SEND(KC_MNXT));
+ P( MEDIA | RG, SEND(KC_VOLU));
+ P( MEDIA | RB, SEND(KC_VOLD));
+ P( MEDIA | RS, SEND(KC_MUTE));
+
+ // Number Row, Right
+ P( NUMB | LSU, SEND(KC_1));
+ P( NUMB | LFT, SEND(KC_2));
+ P( NUMB | LP, SEND(KC_3));
+ P( NUMB | LH, SEND(KC_4));
+ P( NUMB | ST1, SEND(KC_5));
+ P( NUMB | RF, SEND(KC_6));
+ P( NUMB | RP, SEND(KC_7));
+ P( NUMB | RL, SEND(KC_8));
+ P( NUMB | RT, SEND(KC_9));
+ P( NUMB | RD, SEND(KC_0));
+
+ // Number Row, Left
+ P( NUMA | LSU, SEND(KC_1));
+ P( NUMA | LFT, SEND(KC_2));
+ P( NUMA | LP, SEND(KC_3));
+ P( NUMA | LH, SEND(KC_4));
+ P( NUMA | ST1, SEND(KC_5));
+ P( NUMA | RF, SEND(KC_6));
+ P( NUMA | RP, SEND(KC_7));
+ P( NUMA | RL, SEND(KC_8));
+ P( NUMA | RT, SEND(KC_9));
+ P( NUMA | RD, SEND(KC_0));
+
+
+ // Symbols and Numbers
+ P( SYMB | LP | LW, SEND(KC_LSFT); SEND(KC_9)); // (
+ P( SYMB | LH | LR, SEND(KC_LSFT); SEND(KC_0)); // )
+ P( SYMB | ST1 | ST2, SEND(KC_GRV)); // `
+ P( SYMB | RR | RF, SEND(KC_LSFT); SEND(KC_3)); // #
+ P( SYMB | LFT | LK, SEND(KC_LSFT); SEND(KC_4)); // $
+ P( SYMB | LSU, SEND(KC_LSFT); SEND(KC_1)); // !
+ P( SYMB | LSD, SEND(KC_LSFT); SEND(KC_5)); // %
+ P( SYMB | LFT, SEND(KC_LSFT); SEND(KC_2)); // @
+ P( SYMB | LK, SEND(KC_LSFT); SEND(KC_6)); // ^
+ P( SYMB | LP, SEND(KC_LSFT); SEND(KC_LBRC)); // {
+ P( SYMB | LW, SEND(KC_LBRC));
+ P( SYMB | LH, SEND(KC_LSFT); SEND(KC_RBRC)); // }
+ P( SYMB | LR, SEND(KC_RBRC));
+ P( SYMB | ST1, SEND(KC_LSFT); SEND(KC_BSLS)); // |
+ P( SYMB | ST2, SEND(KC_LSFT); SEND(KC_GRV)); // ~
+ P( SYMB | RP | RB, SEND(KC_QUOT));
+ P( SYMB | RP | RG, SEND(KC_LSFT); SEND(KC_QUOT)); // "
+ P( SYMB | RF, SEND(KC_KP_PLUS));
+ P( SYMB | RR, SEND(KC_LSFT); SEND(KC_7)); // &
+ P( SYMB | RP, SEND(KC_MINS));
+ P( SYMB | RB, SEND(KC_EQL));
+ P( SYMB | RL, SEND(KC_SLSH));
+ P( SYMB | RG, SEND(KC_COMM));
+ P( SYMB | RT, SEND(KC_PAST));
+ P( SYMB | RS, SEND(KC_DOT));
+
+ // Letters
+ P( LSU | LSD, SEND(KC_A));
+ P( LFT | LK, SEND(KC_S));
+ P( LP | LW, SEND(KC_D));
+ P( LH | LR, SEND(KC_F));
+ P( ST1 | ST2, SEND(KC_G));
+ P( RF | RR, SEND(KC_H));
+ P( RT | RS, SEND(KC_L));
+ P( RD | RZ, SEND(KC_SCLN));
+ P( RG | RL, SEND(KC_K));
+ P( RP | RB, SEND(KC_J));
+ P( LSU, SEND(KC_Q));
+ P( LSD, SEND(KC_Z));
+ P( LFT, SEND(KC_W));
+ P( LK, SEND(KC_X));
+ P( LP, SEND(KC_E));
+ P( LW, SEND(KC_C));
+ P( LH, SEND(KC_R));
+ P( LR, SEND(KC_V));
+ P( ST1, SEND(KC_T));
+ P( ST2, SEND(KC_B));
+ P( RF, SEND(KC_Y));
+ P( RR, SEND(KC_N));
+ P( RP, SEND(KC_U));
+ P( RB, SEND(KC_M));
+ P( RL, SEND(KC_I));
+ P( RG, SEND(KC_COMM));
+ P( RT, SEND(KC_O));
+ P( RS, SEND(KC_DOT));
+ P( RD, SEND(KC_P));
+ P( RZ, SEND(KC_SLSH));
+
+ return 0;
+}
+
+
+// Don't fuck with this, thanks.
+size_t keymapsCount = sizeof(keymaps)/sizeof(keymaps[0]);
diff --git a/keyboards/ergodash/rev2/keymaps/default/rules.mk b/keyboards/butterstick/keymaps/default/rules.mk
index e69de29bb..e69de29bb 100644
--- a/keyboards/ergodash/rev2/keymaps/default/rules.mk
+++ b/keyboards/butterstick/keymaps/default/rules.mk
diff --git a/keyboards/butterstick/readme.md b/keyboards/butterstick/readme.md
new file mode 100644
index 000000000..8bae8ba5a
--- /dev/null
+++ b/keyboards/butterstick/readme.md
@@ -0,0 +1,14 @@
+# Butter Stick
+
+![Butter Stick](https://i.redd.it/mvteaomko7s21.jpg)
+
+A chorded 20% keyboard packing full sized useage into your pocket. More info on [gboards.ca](http://docs.gboards.ca/Meet-Butter-Stick)!
+
+Keyboard Maintainer: [Germ](https://github.com/germ)
+Hardware Availability: [g Heavy Industries](https://www.gboards.ca/product/butter-stick-limited-edition)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make butterstick: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/butterstick/rules.mk b/keyboards/butterstick/rules.mk
new file mode 100644
index 000000000..68b117bf5
--- /dev/null
+++ b/keyboards/butterstick/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+F_CPU = 16000000
+ARCH = AVR8
+F_USB = $(F_CPU)
+
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -DONLYQWERTY -DDEBUG_MATRIX
+SRC += sten.c
+EXTRAFLAGS += -flto
+
+
+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)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover
+STENO_ENABLE = yes # Needed for chording
+
diff --git a/keyboards/butterstick/sten.c b/keyboards/butterstick/sten.c
new file mode 100644
index 000000000..a239e3884
--- /dev/null
+++ b/keyboards/butterstick/sten.c
@@ -0,0 +1,367 @@
+#include "sten.h"
+
+// Chord state
+uint32_t cChord = 0; // Current Chord
+int chordIndex = 0; // Keys in previousachord
+int32_t chordState[32]; // Full Chord history
+#define QWERBUF 24 // Size of chords to buffer for output
+
+bool repeatFlag = false; // Should we repeat?
+uint32_t pChord = 0; // Previous Chord
+int pChordIndex = 0; // Keys in previousachord
+uint32_t pChordState[32]; // Previous chord sate
+uint32_t stickyBits = 0; // Or'd with every incoming press
+
+// Mode state
+enum MODE { STENO = 0, QWERTY, COMMAND };
+enum MODE pMode;
+bool QWERSTENO = false;
+#ifdef ONLYQWERTY
+enum MODE cMode = QWERTY;
+#else
+enum MODE cMode = STENO;
+#endif
+
+// Command State
+#define MAX_CMD_BUF 20
+uint8_t CMDLEN = 0;
+uint8_t CMDBUF[MAX_CMD_BUF];
+
+// Key Repeat state
+bool inChord = false;
+bool repEngaged = false;
+uint16_t repTimer = 0;
+#define REP_INIT_DELAY 750
+#define REP_DELAY 25
+
+// Mousekeys state
+bool inMouse = false;
+int8_t mousePress;
+
+// All processing done at chordUp goes through here
+// Note, this is a gutted version of the Georgi sten.h
+bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
+ // Check for mousekeys, this is release
+#ifdef MOUSEKEY_ENABLE
+ if (inMouse) {
+ inMouse = false;
+ mousekey_off(mousePress);
+ mousekey_send();
+ }
+#endif
+
+ // handle command mode
+ if (cChord == (LSU | LSD | RD | RZ)) {
+ if (cMode != COMMAND) { // Entering Command Mode
+ CMDLEN = 0;
+ pMode = cMode;
+ cMode = COMMAND;
+ } else { // Exiting Command Mode
+ cMode = pMode;
+
+ // Press all and release all
+ for (int i = 0; i < CMDLEN; i++) {
+ register_code(CMDBUF[i]);
+ }
+ clear_keyboard();
+ }
+
+ goto out;
+ }
+
+ // Handle Gaming Toggle,
+ if (cChord == (LSU | LSD | LFT | LK | RT | RS | RD | RZ) && keymapsCount > 1) {
+#ifndef NO_DEBUG
+ uprintf("Switching to QMK\n");
+#endif
+ layer_on(1);
+ goto out;
+ }
+
+ // Do QWERTY and Momentary QWERTY
+ if (cMode == QWERTY || (cMode == COMMAND)) {
+ processChord(false);
+ goto out;
+ }
+
+out:
+ cChord = 0;
+ inChord = false;
+ chordIndex = 0;
+ clear_keyboard();
+ repEngaged = false;
+ for (int i = 0; i < 32; i++)
+ chordState[i] = 0xFFFF;
+
+ return false;
+}
+
+// Update Chord State
+bool process_steno_user(uint16_t keycode, keyrecord_t *record) {
+ // Everything happens in here when steno keys come in.
+ // Bail on keyup
+ if (!record->event.pressed) return true;
+
+ // Update key repeat timers
+ repTimer = timer_read();
+ inChord = true;
+
+ // Switch on the press adding to chord
+ bool pr = record->event.pressed;
+ switch (keycode) {
+ // Mods and stuff
+ case STN_ST1: pr ? (cChord |= (ST1)): (cChord &= ~(ST1)); break;
+ case STN_ST2: pr ? (cChord |= (ST2)): (cChord &= ~(ST2)); break;
+ case STN_ST3: pr ? (cChord |= (ST3)): (cChord &= ~(ST3)); break;
+ case STN_ST4: pr ? (cChord |= (ST4)): (cChord &= ~(ST4)); break;
+ case STN_FN: pr ? (cChord |= (FN)) : (cChord &= ~(FN)); break;
+ case STN_PWR: pr ? (cChord |= (PWR)): (cChord &= ~(PWR)); break;
+ case STN_N1...STN_N6: pr ? (cChord |= (LNO)): (cChord &= ~(LNO)); break;
+ case STN_N7...STN_NC: pr ? (cChord |= (RNO)): (cChord &= ~(RNO)); break;
+
+ // All the letter keys
+ case STN_S1: pr ? (cChord |= (LSU)) : (cChord &= ~(LSU)); break;
+ case STN_S2: pr ? (cChord |= (LSD)) : (cChord &= ~(LSD)); break;
+ case STN_TL: pr ? (cChord |= (LFT)) : (cChord &= ~(LFT)); break;
+ case STN_KL: pr ? (cChord |= (LK)) : (cChord &= ~(LK)); break;
+ case STN_PL: pr ? (cChord |= (LP)) : (cChord &= ~(LP)); break;
+ case STN_WL: pr ? (cChord |= (LW)) : (cChord &= ~(LW)); break;
+ case STN_HL: pr ? (cChord |= (LH)) : (cChord &= ~(LH)); break;
+ case STN_RL: pr ? (cChord |= (LR)) : (cChord &= ~(LR)); break;
+ case STN_A: pr ? (cChord |= (LA)) : (cChord &= ~(LA)); break;
+ case STN_O: pr ? (cChord |= (LO)) : (cChord &= ~(LO)); break;
+ case STN_E: pr ? (cChord |= (RE)) : (cChord &= ~(RE)); break;
+ case STN_U: pr ? (cChord |= (RU)) : (cChord &= ~(RU)); break;
+ case STN_FR: pr ? (cChord |= (RF)) : (cChord &= ~(RF)); break;
+ case STN_RR: pr ? (cChord |= (RR)) : (cChord &= ~(RR)); break;
+ case STN_PR: pr ? (cChord |= (RP)) : (cChord &= ~(RP)); break;
+ case STN_BR: pr ? (cChord |= (RB)) : (cChord &= ~(RB)); break;
+ case STN_LR: pr ? (cChord |= (RL)) : (cChord &= ~(RL)); break;
+ case STN_GR: pr ? (cChord |= (RG)) : (cChord &= ~(RG)); break;
+ case STN_TR: pr ? (cChord |= (RT)) : (cChord &= ~(RT)); break;
+ case STN_SR: pr ? (cChord |= (RS)) : (cChord &= ~(RS)); break;
+ case STN_DR: pr ? (cChord |= (RD)) : (cChord &= ~(RD)); break;
+ case STN_ZR: pr ? (cChord |= (RZ)) : (cChord &= ~(RZ)); break;
+ }
+
+ // Store previous state for fastQWER
+ if (pr) {
+ chordState[chordIndex] = cChord;
+ chordIndex++;
+ }
+
+ return true;
+}
+void matrix_scan_user(void) {
+ // We abuse this for early sending of key
+ // Key repeat only on QWER/SYMB layers
+ if (cMode != QWERTY || !inChord) return;
+
+ // Check timers
+#ifndef NO_REPEAT
+ if (repEngaged && timer_elapsed(repTimer) > REP_DELAY) {
+ // Process Key for report
+ processChord(false);
+
+ // Send report to host
+ send_keyboard_report();
+ clear_keyboard();
+ repTimer = timer_read();
+ }
+
+ if (!repEngaged && timer_elapsed(repTimer) > REP_INIT_DELAY) {
+ repEngaged = true;
+ }
+#endif
+};
+
+// For Plover NKRO
+uint32_t processFakeSteno(bool lookup) {
+ P( LSU, SEND(KC_Q););
+ P( LSD, SEND(KC_A););
+ P( LFT, SEND(KC_W););
+ P( LP, SEND(KC_E););
+ P( LH, SEND(KC_R););
+ P( LK, SEND(KC_S););
+ P( LW, SEND(KC_D););
+ P( LR, SEND(KC_F););
+ P( ST1, SEND(KC_T););
+ P( ST2, SEND(KC_G););
+ P( LA, SEND(KC_C););
+ P( LO, SEND(KC_V););
+ P( RE, SEND(KC_N););
+ P( RU, SEND(KC_M););
+ P( ST3, SEND(KC_Y););
+ P( ST4, SEND(KC_H););
+ P( RF, SEND(KC_U););
+ P( RP, SEND(KC_I););
+ P( RL, SEND(KC_O););
+ P( RT, SEND(KC_P););
+ P( RD, SEND(KC_LBRC););
+ P( RR, SEND(KC_J););
+ P( RB, SEND(KC_K););
+ P( RG, SEND(KC_L););
+ P( RS, SEND(KC_SCLN););
+ P( RZ, SEND(KC_COMM););
+ P( LNO, SEND(KC_1););
+ P( RNO, SEND(KC_1););
+
+ return 0;
+}
+
+// Traverse the chord history to a given point
+// Returns the mask to use
+void processChord(bool useFakeSteno) {
+ // Save the clean chord state
+ uint32_t savedChord = cChord;
+
+ // Apply Stick Bits if needed
+ if (stickyBits != 0) {
+ cChord |= stickyBits;
+ for (int i = 0; i <= chordIndex; i++)
+ chordState[i] |= stickyBits;
+ }
+
+ // Strip FN
+ if (cChord & FN) cChord ^= FN;
+
+ // First we test if a whole chord was passsed
+ // If so we just run it handling repeat logic
+ if (useFakeSteno && processFakeSteno(true) == cChord) {
+ processFakeSteno(false);
+ return;
+ } else if (processQwerty(true) == cChord) {
+ processQwerty(false);
+ // Repeat logic
+ if (repeatFlag) {
+ restoreState();
+ repeatFlag = false;
+ processChord(false);
+ } else {
+ saveState(cChord);
+ }
+ return;
+ }
+
+ // Iterate through chord picking out the individual
+ // and longest chords
+ uint32_t bufChords[QWERBUF];
+ int bufLen = 0;
+ uint32_t mask = 0;
+
+ // We iterate over it multiple times to catch the longest
+ // chord. Then that gets addded to the mask and re run.
+ while (savedChord != mask) {
+ uint32_t test = 0;
+ uint32_t longestChord = 0;
+
+ for (int i = 0; i <= chordIndex; i++) {
+ cChord = chordState[i] & ~mask;
+ if (cChord == 0)
+ continue;
+
+ // Assume mid parse Sym is new chord
+ if (i != 0 && test != 0 && (cChord ^ test) == PWR) {
+ longestChord = test;
+ break;
+ }
+
+ // Lock SYM layer in once detected
+ if (mask & PWR)
+ cChord |= PWR;
+
+
+ // Testing for keycodes
+ if (useFakeSteno) {
+ test = processFakeSteno(true);
+ } else {
+ test = processQwerty(true);
+ }
+
+ if (test != 0) {
+ longestChord = test;
+ }
+ }
+
+ mask |= longestChord;
+ bufChords[bufLen] = longestChord;
+ bufLen++;
+
+ // That's a loop of sorts, halt processing
+ if (bufLen >= QWERBUF) {
+ return;
+ }
+ }
+
+ // Now that the buffer is populated, we run it
+ for (int i = 0; i < bufLen ; i++) {
+ cChord = bufChords[i];
+ if (useFakeSteno) {
+ processFakeSteno(false);
+ } else {
+ processQwerty(false);
+ }
+ }
+
+ // Save state in case of repeat
+ if (!repeatFlag) {
+ saveState(savedChord);
+ }
+
+ // Restore cChord for held repeat
+ cChord = savedChord;
+
+ return;
+}
+void saveState(uint32_t cleanChord) {
+ pChord = cleanChord;
+ pChordIndex = chordIndex;
+ for (int i = 0; i < 32; i++)
+ pChordState[i] = chordState[i];
+}
+void restoreState() {
+ cChord = pChord;
+ chordIndex = pChordIndex;
+ for (int i = 0; i < 32; i++)
+ chordState[i] = pChordState[i];
+}
+
+// Macros for calling from keymap.c
+void SEND(uint8_t kc) {
+ // Send Keycode, Does not work for Quantum Codes
+ if (cMode == COMMAND && CMDLEN < MAX_CMD_BUF) {
+#ifndef NO_DEBUG
+ uprintf("CMD LEN: %d BUF: %d\n", CMDLEN, MAX_CMD_BUF);
+#endif
+ CMDBUF[CMDLEN] = kc;
+ CMDLEN++;
+ }
+
+ if (cMode != COMMAND) register_code(kc);
+ return;
+}
+void REPEAT(void) {
+ if (cMode != QWERTY)
+ return;
+
+ repeatFlag = true;
+ return;
+}
+void SET_STICKY(uint32_t stick) {
+ stickyBits = stick;
+ return;
+}
+void SWITCH_LAYER(int layer) {
+ if (keymapsCount >= layer)
+ layer_on(layer);
+}
+void CLICK_MOUSE(uint8_t kc) {
+#ifdef MOUSEKEY_ENABLE
+ mousekey_on(kc);
+ mousekey_send();
+
+ // Store state for later use
+ inMouse = true;
+ mousePress = kc;
+#endif
+}
diff --git a/keyboards/butterstick/sten.h b/keyboards/butterstick/sten.h
new file mode 100644
index 000000000..5a9771d9a
--- /dev/null
+++ b/keyboards/butterstick/sten.h
@@ -0,0 +1,77 @@
+// 2019, g Heavy Industries
+// Blessed mother of Christ, please keep this readable
+// and protect us from segfaults. For thine is the clock,
+// the slave and the master. Until we return from main.
+//
+// Amen.
+
+#include QMK_KEYBOARD_H
+#include "mousekey.h"
+#include "keymap.h"
+#include "keymap_steno.h"
+#include "wait.h"
+
+extern size_t keymapsCount; // Total keymaps
+extern uint32_t cChord; // Current Chord
+
+// Function defs
+void processChord(bool useFakeSteno);
+uint32_t processQwerty(bool lookup);
+uint32_t processFakeSteno(bool lookup);
+void saveState(uint32_t cChord);
+void restoreState(void);
+
+// Macros for use in keymap.c
+void SEND(uint8_t kc);
+void REPEAT(void);
+void SET_STICKY(uint32_t);
+void SWITCH_LAYER(int);
+void CLICK_MOUSE(uint8_t);
+
+// Keymap helper
+#define P(chord, act) if (cChord == (chord)) { if (!lookup) {act;} return chord;}
+
+// Shift to internal representation
+// i.e) S(teno)R(ight)F
+#define STN(n) (1L<<n)
+enum ORDER {
+ SFN = 0, SPWR, SST1, SST2, SST3, SST4, SNUML, SNUMR,
+ SLSU, SLSD, SLT, SLK, SLP, SLW, SLH, SLR, SLA, SLO,
+ SRE, SRU, SRF, SRR, SRP, SRB, SRL, SRG, SRT, SRS, SRD, SRZ, SRES1, SRES2
+};
+
+// Break it all out
+#define FN STN(SFN)
+#define PWR STN(SPWR)
+#define ST1 STN(SST1)
+#define ST2 STN(SST2)
+#define ST3 STN(SST3)
+#define ST4 STN(SST4)
+#define LNO STN(SNUML) // STN1-6
+#define RNO STN(SNUMR) // STN7-C
+#define RES1 STN(SRES1) // Use reserved for sticky state
+#define RES2 STN(SRES2)
+
+#define LSU STN(SLSU)
+#define LSD STN(SLSD)
+#define LFT STN(SLT) // (L)e(F)t (T), preprocessor conflict
+#define LK STN(SLK)
+#define LP STN(SLP)
+#define LW STN(SLW)
+#define LH STN(SLH)
+#define LR STN(SLR)
+#define LA STN(SLA)
+#define LO STN(SLO)
+
+#define RE STN(SRE)
+#define RU STN(SRU)
+#define RF STN(SRF)
+#define RR STN(SRR)
+#define RP STN(SRP)
+#define RB STN(SRB)
+#define RL STN(SRL)
+#define RG STN(SRG)
+#define RT STN(SRT)
+#define RS STN(SRS)
+#define RD STN(SRD)
+#define RZ STN(SRZ)
diff --git a/keyboards/candybar/rules.mk b/keyboards/candybar/rules.mk
index 6f39ee0e7..0bc9a5b3e 100644
--- a/keyboards/candybar/rules.mk
+++ b/keyboards/candybar/rules.mk
@@ -31,6 +31,7 @@ OPT_DEFS =
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c
new file mode 100644
index 000000000..8c5a87f35
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.c
@@ -0,0 +1,56 @@
+/*
+ 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
new file mode 100644
index 000000000..9427adabf
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.h
@@ -0,0 +1,166 @@
+/*
+ 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
new file mode 100644
index 000000000..6b8b312fd
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/boards/GENERIC_STM32_F103/board.mk
@@ -0,0 +1,5 @@
+# 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/dztech/dz40rgb/bootloader_defs.h b/keyboards/cannonkeys/practice65/bootloader_defs.h
index 3b0e9d20a..6b8fa9f72 100644
--- a/keyboards/dztech/dz40rgb/bootloader_defs.h
+++ b/keyboards/cannonkeys/practice65/bootloader_defs.h
@@ -1,7 +1,10 @@
/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
+/* It is chip dependent, the correct number can be looked up here (page 175):
* 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
*/
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
+
+// STM32F103* does NOT have an USB bootloader in ROM (only serial),
+// so setting anything here does not make much sense
+#define STM32_BOOTLOADER_ADDRESS 0x80000000
diff --git a/keyboards/dztech/dz40rgb/chconf.h b/keyboards/cannonkeys/practice65/chconf.h
index 1d9f12ff1..bbd9b2da6 100644
--- a/keyboards/dztech/dz40rgb/chconf.h
+++ b/keyboards/cannonkeys/practice65/chconf.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ 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.
@@ -58,7 +58,7 @@
* The value one is not valid, timeouts are rounded up to
* this value.
*/
-#define CH_CFG_ST_TIMEDELTA 2
+#define CH_CFG_ST_TIMEDELTA 0
/** @} */
@@ -105,6 +105,10 @@
*/
#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
+
/** @} */
/*===========================================================================*/
@@ -140,7 +144,7 @@
*
* @note The default is @p TRUE.
*/
-#define CH_CFG_USE_TM TRUE
+#define CH_CFG_USE_TM FALSE
/**
* @brief Threads registry APIs.
@@ -214,7 +218,7 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_CONDVARS.
*/
-#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
/**
* @brief Events Flags APIs.
@@ -252,7 +256,7 @@
* requirements.
* @note Requires @p CH_CFG_USE_MESSAGES.
*/
-#define CH_CFG_USE_MESSAGES_PRIORITY TRUE
+#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
/**
* @brief Mailboxes APIs.
@@ -292,7 +296,7 @@
*
* @note The default is @p TRUE.
*/
-#define CH_CFG_USE_MEMPOOLS TRUE
+#define CH_CFG_USE_MEMPOOLS FALSE
/**
* @brief Dynamic Threads APIs.
@@ -303,7 +307,7 @@
* @note Requires @p CH_CFG_USE_WAITEXIT.
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
*/
-#define CH_CFG_USE_DYNAMIC TRUE
+#define CH_CFG_USE_DYNAMIC FALSE
/** @} */
@@ -374,7 +378,7 @@
* @note The default failure mode is to halt the system with the global
* @p panic_msg variable set to @p NULL.
*/
-#define CH_DBG_ENABLE_STACK_CHECK TRUE
+#define CH_DBG_ENABLE_STACK_CHECK FALSE
/**
* @brief Debug option, stacks initialization.
diff --git a/keyboards/cannonkeys/practice65/config.h b/keyboards/cannonkeys/practice65/config.h
new file mode 100644
index 000000000..d09b521bf
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/config.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2015 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xCA04
+#define PRODUCT_ID 0x6565
+#define DEVICE_VER 0x0001
+/* in python2: list(u"whatever".encode('utf-16-le')) */
+/* at most 32 characters or the ugly hack in usb_main.c borks */
+#define MANUFACTURER CannonKeys
+#define PRODUCT Practice 65
+#define DESCRIPTION Practice 65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+#define MATRIX_COL_PINS { B8, B0, A0, B5, B10, B9, A6, B12, A7, A5, A4, A3, A2, A1, B13, B14 }
+#define MATRIX_ROW_PINS { B4, B11, B1, B7, B6 }
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 6
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGBLIGHT_ANIMATIONS
+
+#define WS2812_LED_N 20
+#define RGBLED_NUM WS2812_LED_N
+#define PORT_WS2812 GPIOB
+#define PIN_WS2812 15
+#define WS2812_SPI SPID2
+
+
+/*
+ * 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/dztech/dz60rgb/halconf.h b/keyboards/cannonkeys/practice65/halconf.h
index eda293c49..72879a575 100644
--- a/keyboards/dztech/dz60rgb/halconf.h
+++ b/keyboards/cannonkeys/practice65/halconf.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ 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.
@@ -25,8 +25,8 @@
* @{
*/
-#ifndef HALCONF_H
-#define HALCONF_H
+#ifndef _HALCONF_H_
+#define _HALCONF_H_
#include "mcuconf.h"
@@ -55,7 +55,7 @@
* @brief Enables the DAC subsystem.
*/
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
-#define HAL_USE_DAC TRUE
+#define HAL_USE_DAC FALSE
#endif
/**
@@ -69,14 +69,14 @@
* @brief Enables the GPT subsystem.
*/
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
-#define HAL_USE_GPT TRUE
+#define HAL_USE_GPT FALSE
#endif
/**
* @brief Enables the I2C subsystem.
*/
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C TRUE
+#define HAL_USE_I2C FALSE
#endif
/**
@@ -111,14 +111,7 @@
* @brief Enables the PWM subsystem.
*/
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
-#define HAL_USE_PWM FALSE
-#endif
-
-/**
- * @brief Enables the QSPI subsystem.
- */
-#if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
-#define HAL_USE_QSPI FALSE
+#define HAL_USE_PWM TRUE
#endif
/**
@@ -153,7 +146,7 @@
* @brief Enables the SPI subsystem.
*/
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
-#define HAL_USE_SPI FALSE
+#define HAL_USE_SPI TRUE
#endif
/**
@@ -301,7 +294,7 @@
* @brief Serial buffers size.
* @details Configuration parameter, you can change the depth of the queue
* buffers depending on the requirements of your application.
- * @note The default is 16 bytes for both the transmission and receive
+ * @note The default is 64 bytes for both the transmission and receive
* buffers.
*/
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
@@ -316,21 +309,13 @@
* @brief Serial over USB buffers size.
* @details Configuration parameter, the buffer size must be a multiple of
* the USB data endpoint maximum packet size.
- * @note The default is 256 bytes for both the transmission and receive
+ * @note The default is 64 bytes for both the transmission and receive
* buffers.
*/
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
#define SERIAL_USB_BUFFERS_SIZE 1
#endif
-/**
- * @brief Serial over USB number of buffers.
- * @note The default is 2 buffers.
- */
-#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
-#define SERIAL_USB_BUFFERS_NUMBER 2
-#endif
-
/*===========================================================================*/
/* SPI driver related settings. */
/*===========================================================================*/
@@ -352,26 +337,6 @@
#endif
/*===========================================================================*/
-/* UART driver related settings. */
-/*===========================================================================*/
-
-/**
- * @brief Enables synchronous APIs.
- * @note Disabling this option saves both code and data space.
- */
-#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
-#define UART_USE_WAIT FALSE
-#endif
-
-/**
- * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
- * @note Disabling this option saves both code and data space.
- */
-#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define UART_USE_MUTUAL_EXCLUSION FALSE
-#endif
-
-/*===========================================================================*/
/* USB driver related settings. */
/*===========================================================================*/
@@ -383,6 +348,6 @@
#define USB_USE_WAIT TRUE
#endif
-#endif /* HALCONF_H */
+#endif /* _HALCONF_H_ */
/** @} */
diff --git a/keyboards/cannonkeys/practice65/keymaps/default/keymap.c b/keyboards/cannonkeys/practice65/keymaps/default/keymap.c
new file mode 100644
index 000000000..fdc06e398
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BASE 0
+#define _FN1 1
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \
+ ),
+
+ [_FN1] = LAYOUT_default(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______,\
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
+ BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ )
+};
diff --git a/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld b/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld
new file mode 100644
index 000000000..c4ca8b874
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/ld/MKL26Z64.ld
@@ -0,0 +1,105 @@
+/*
+ * 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
new file mode 100644
index 000000000..d0688ef60
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/ld/STM32F103x8_stm32duino_bootloader.ld
@@ -0,0 +1,88 @@
+/*
+ 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/dztech/dz40rgb/mcuconf.h b/keyboards/cannonkeys/practice65/mcuconf.h
index 226da48d5..fced27289 100644
--- a/keyboards/dztech/dz40rgb/mcuconf.h
+++ b/keyboards/cannonkeys/practice65/mcuconf.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ 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.
@@ -14,11 +14,13 @@
limitations under the License.
*/
-#ifndef MCUCONF_H
-#define MCUCONF_H
+#ifndef _MCUCONF_H_
+#define _MCUCONF_H_
+
+#define STM32F103_MCUCONF
/*
- * STM32F3xx drivers configuration.
+ * STM32F103 drivers configuration.
* The following settings override the default settings present in
* the various device driver implementation headers.
* Note that the settings for each driver only have effect if the whole
@@ -31,71 +33,35 @@
* 0...3 Lowest...Highest.
*/
-#define STM32F3xx_MCUCONF
-
/*
* HAL driver system settings.
*/
#define STM32_NO_INIT FALSE
-#define STM32_PVD_ENABLE FALSE
-#define STM32_PLS STM32_PLS_LEV0
#define STM32_HSI_ENABLED TRUE
-#define STM32_LSI_ENABLED TRUE
+#define STM32_LSI_ENABLED FALSE
#define STM32_HSE_ENABLED TRUE
#define STM32_LSE_ENABLED FALSE
#define STM32_SW STM32_SW_PLL
#define STM32_PLLSRC STM32_PLLSRC_HSE
-#define STM32_PREDIV_VALUE 1
+#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1
#define STM32_PLLMUL_VALUE 9
#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE1 STM32_PPRE1_DIV2
#define STM32_PPRE2 STM32_PPRE2_DIV2
-#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
-#define STM32_ADC12PRES STM32_ADC12PRES_DIV1
-#define STM32_ADC34PRES STM32_ADC34PRES_DIV1
-#define STM32_USART1SW STM32_USART1SW_PCLK
-#define STM32_USART2SW STM32_USART2SW_PCLK
-#define STM32_USART3SW STM32_USART3SW_PCLK
-#define STM32_UART4SW STM32_UART4SW_PCLK
-#define STM32_UART5SW STM32_UART5SW_PCLK
-#define STM32_I2C1SW STM32_I2C1SW_SYSCLK
-#define STM32_I2C2SW STM32_I2C2SW_SYSCLK
-#define STM32_TIM1SW STM32_TIM1SW_PCLK2
-#define STM32_TIM8SW STM32_TIM8SW_PCLK2
-#define STM32_RTCSEL STM32_RTCSEL_LSI
+#define STM32_ADCPRE STM32_ADCPRE_DIV4
#define STM32_USB_CLOCK_REQUIRED TRUE
#define STM32_USBPRE STM32_USBPRE_DIV1P5
-
-#undef STM32_HSE_BYPASS
-// #error "oh no"
-// #endif
+#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
+#define STM32_RTCSEL STM32_RTCSEL_HSEDIV
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
/*
* ADC driver system settings.
*/
-#define STM32_ADC_DUAL_MODE FALSE
-#define STM32_ADC_COMPACT_SAMPLES FALSE
#define STM32_ADC_USE_ADC1 FALSE
-#define STM32_ADC_USE_ADC2 FALSE
-#define STM32_ADC_USE_ADC3 FALSE
-#define STM32_ADC_USE_ADC4 FALSE
-#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
-#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
-#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
-#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
#define STM32_ADC_ADC1_DMA_PRIORITY 2
-#define STM32_ADC_ADC2_DMA_PRIORITY 2
-#define STM32_ADC_ADC3_DMA_PRIORITY 2
-#define STM32_ADC_ADC4_DMA_PRIORITY 2
-#define STM32_ADC_ADC12_IRQ_PRIORITY 5
-#define STM32_ADC_ADC3_IRQ_PRIORITY 5
-#define STM32_ADC_ADC4_IRQ_PRIORITY 5
-#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC4_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
-#define STM32_ADC_ADC34_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
+#define STM32_ADC_ADC1_IRQ_PRIORITY 6
/*
* CAN driver system settings.
@@ -104,17 +70,6 @@
#define STM32_CAN_CAN1_IRQ_PRIORITY 11
/*
- * DAC driver system settings.
- */
-#define STM32_DAC_DUAL_MODE FALSE
-#define STM32_DAC_USE_DAC1_CH1 TRUE
-#define STM32_DAC_USE_DAC1_CH2 TRUE
-#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10
-#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10
-#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2
-#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2
-
-/*
* EXT driver system settings.
*/
#define STM32_EXT_EXTI0_IRQ_PRIORITY 6
@@ -128,10 +83,6 @@
#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI20_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI21_22_29_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI30_32_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI33_IRQ_PRIORITY 6
/*
* GPT driver system settings.
@@ -140,28 +91,25 @@
#define STM32_GPT_USE_TIM2 FALSE
#define STM32_GPT_USE_TIM3 FALSE
#define STM32_GPT_USE_TIM4 FALSE
-#define STM32_GPT_USE_TIM6 TRUE
-#define STM32_GPT_USE_TIM7 TRUE
-#define STM32_GPT_USE_TIM8 TRUE
+#define STM32_GPT_USE_TIM5 FALSE
+#define STM32_GPT_USE_TIM8 FALSE
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
-#define STM32_GPT_TIM6_IRQ_PRIORITY 7
-#define STM32_GPT_TIM7_IRQ_PRIORITY 7
+#define STM32_GPT_TIM5_IRQ_PRIORITY 7
#define STM32_GPT_TIM8_IRQ_PRIORITY 7
/*
* I2C driver system settings.
*/
-#define STM32_I2C_USE_I2C1 TRUE
+#define STM32_I2C_USE_I2C1 FALSE
#define STM32_I2C_USE_I2C2 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50
-#define STM32_I2C_I2C1_IRQ_PRIORITY 10
-#define STM32_I2C_I2C2_IRQ_PRIORITY 10
-#define STM32_I2C_USE_DMA TRUE
-#define STM32_I2C_I2C1_DMA_PRIORITY 1
-#define STM32_I2C_I2C2_DMA_PRIORITY 1
+#define STM32_I2C_I2C1_IRQ_PRIORITY 5
+#define STM32_I2C_I2C2_IRQ_PRIORITY 5
+#define STM32_I2C_I2C1_DMA_PRIORITY 3
+#define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
/*
@@ -171,29 +119,38 @@
#define STM32_ICU_USE_TIM2 FALSE
#define STM32_ICU_USE_TIM3 FALSE
#define STM32_ICU_USE_TIM4 FALSE
+#define STM32_ICU_USE_TIM5 FALSE
#define STM32_ICU_USE_TIM8 FALSE
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
+#define STM32_ICU_TIM5_IRQ_PRIORITY 7
#define STM32_ICU_TIM8_IRQ_PRIORITY 7
/*
* PWM driver system settings.
*/
#define STM32_PWM_USE_ADVANCED FALSE
-#define STM32_PWM_USE_TIM1 FALSE
+#define STM32_PWM_USE_TIM1 TRUE
#define STM32_PWM_USE_TIM2 FALSE
#define STM32_PWM_USE_TIM3 FALSE
#define STM32_PWM_USE_TIM4 FALSE
+#define STM32_PWM_USE_TIM5 FALSE
#define STM32_PWM_USE_TIM8 FALSE
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
+#define STM32_PWM_TIM5_IRQ_PRIORITY 7
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
/*
+ * RTC driver system settings.
+ */
+#define STM32_RTC_IRQ_PRIORITY 15
+
+/*
* SERIAL driver system settings.
*/
#define STM32_SERIAL_USE_USART1 FALSE
@@ -211,7 +168,7 @@
* SPI driver system settings.
*/
#define STM32_SPI_USE_SPI1 FALSE
-#define STM32_SPI_USE_SPI2 FALSE
+#define STM32_SPI_USE_SPI2 TRUE
#define STM32_SPI_USE_SPI3 FALSE
#define STM32_SPI_SPI1_DMA_PRIORITY 1
#define STM32_SPI_SPI2_DMA_PRIORITY 1
@@ -249,9 +206,4 @@
#define STM32_USB_USB1_HP_IRQ_PRIORITY 13
#define STM32_USB_USB1_LP_IRQ_PRIORITY 14
-/*
- * WDG driver system settings.
- */
-#define STM32_WDG_USE_IWDG FALSE
-
-#endif /* MCUCONF_H */
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/cannonkeys/practice65/practice65.c b/keyboards/cannonkeys/practice65/practice65.c
new file mode 100644
index 000000000..10f60460f
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/practice65.c
@@ -0,0 +1,2 @@
+
+#include "practice65.h"
diff --git a/keyboards/cannonkeys/practice65/practice65.h b/keyboards/cannonkeys/practice65/practice65.h
new file mode 100644
index 000000000..dec02af93
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/practice65.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "quantum.h"
+
+#define KNO KC_NO
+
+#define LAYOUT_default( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO , K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \
+ { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F }, \
+ { K40, K41, K42, KNO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D, KC_NO, K4F } \
+}
diff --git a/keyboards/cannonkeys/practice65/readme.md b/keyboards/cannonkeys/practice65/readme.md
new file mode 100644
index 000000000..515d1ab59
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/readme.md
@@ -0,0 +1,12 @@
+# Practice 65
+
+A Blue Pill STM32F103C8T6-based 65% ANSI board.
+
+Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan1)
+Hardware Supported: Blue Pill STM32F103C8T6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/practice65:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk
new file mode 100644
index 000000000..8bbc910aa
--- /dev/null
+++ b/keyboards/cannonkeys/practice65/rules.mk
@@ -0,0 +1,53 @@
+# project specific files
+VPATH += keyboards/cannonkeys/bluepill
+SRC = led.c \
+ keyboard.c
+
+# GENERIC STM32F103C8T6 board - stm32duino bootloader
+OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
+MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
+BOARD = GENERIC_STM32_F103
+
+# OPT_DEFS =
+# MCU_LDSCRIPT = STM32F103x8
+# BOARD = GENERIC_STM32_F103
+
+## chip/board settings
+# the next two should match the directories in
+# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F1xx
+# linker script to use
+# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+# or <this_dir>/ld/
+# startup code to use
+# is should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f1xx
+# it should exist either in <chibios>/os/hal/boards/
+# or <this_dir>/boards
+# Cortex version
+# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
+MCU = cortex-m3
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+# If you want to be able to jump to bootloader from firmware on STM32 MCUs,
+# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in
+# ./bootloader_defs.h or in ./boards/<FOO>/bootloader_defs.h (if you have
+# a custom board definition that you plan to reuse).
+# If you're not setting it here, leave it commented out.
+# It is chip dependent, the correct number can be looked up here (page 175):
+# 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
+
+
+#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
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h
index e3d44990e..092b37257 100644
--- a/keyboards/cannonkeys/satisfaction75/config.h
+++ b/keyboards/cannonkeys/satisfaction75/config.h
@@ -76,7 +76,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
// and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x0F
+#define EEPROM_VERSION 0x01
#define EEPROM_VERSION_ADDR 34
// Dynamic keymap starts after EEPROM version
diff --git a/keyboards/cannonkeys/satisfaction75/i2c_master.c b/keyboards/cannonkeys/satisfaction75/i2c_master.c
index ce0e0a7ba..56e810d32 100644
--- a/keyboards/cannonkeys/satisfaction75/i2c_master.c
+++ b/keyboards/cannonkeys/satisfaction75/i2c_master.c
@@ -42,8 +42,8 @@ static const I2CConfig i2cconfig = {
0
};
-static i2c_status_t chibios_to_qmk(const msg_t* status) {
- switch (*status) {
+static i2c_status_t chibios_to_qmk(const msg_t status) {
+ switch (status) {
case I2C_NO_ERROR:
return I2C_STATUS_SUCCESS;
case I2C_TIMEOUT:
@@ -83,7 +83,7 @@ i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length,
i2cAcquireBus(&I2C_DRIVER);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, MS2ST(timeout));
i2cReleaseBus(&I2C_DRIVER);
- return chibios_to_qmk(&status);
+ return chibios_to_qmk(status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)
@@ -91,7 +91,7 @@ i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, MS2ST(timeout));
- return chibios_to_qmk(&status);
+ return chibios_to_qmk(status);
}
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout)
@@ -107,7 +107,7 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
complete_packet[0] = regaddr;
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, MS2ST(timeout));
- return chibios_to_qmk(&status);
+ return chibios_to_qmk(status);
}
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t* regaddr, uint8_t* data, uint16_t length, uint16_t timeout)
@@ -115,7 +115,7 @@ i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t* regaddr, uint8_t* data, uint1
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), regaddr, 1, data, length, MS2ST(timeout));
- return chibios_to_qmk(&status);
+ return chibios_to_qmk(status);
}
void i2c_stop(void)
diff --git a/keyboards/cannonkeys/satisfaction75/keymaps/jae/keymap.c b/keyboards/cannonkeys/satisfaction75/keymaps/jae/keymap.c
new file mode 100644
index 000000000..733ba8cd6
--- /dev/null
+++ b/keyboards/cannonkeys/satisfaction75/keymaps/jae/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_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, ENC_PRESS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, OLED_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLOCK_SET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c b/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c
index e76c79a71..296fd7da6 100644
--- a/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c
+++ b/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c
@@ -17,25 +17,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
+
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_default(
+ [0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, ENC_PRESS,
+ KC_GRV, KC_1, KC_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, ENC_PRESS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_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_ENTER, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_default(
+ [1] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, OLED_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, OLED_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLOCK_SET,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+
void matrix_init_user(void) {
//user initialization
}
diff --git a/keyboards/clueboard/60/rules.mk b/keyboards/clueboard/60/rules.mk
index aada07352..a0927025b 100644
--- a/keyboards/clueboard/60/rules.mk
+++ b/keyboards/clueboard/60/rules.mk
@@ -35,6 +35,7 @@ OPT_DEFS =
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/clueboard/66/rev4/rules.mk b/keyboards/clueboard/66/rev4/rules.mk
index 846b1eee0..4d20ff2e9 100644
--- a/keyboards/clueboard/66/rev4/rules.mk
+++ b/keyboards/clueboard/66/rev4/rules.mk
@@ -13,6 +13,7 @@ OPT_DEFS =
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/clueboard/66_hotswap/gen1/rules.mk b/keyboards/clueboard/66_hotswap/gen1/rules.mk
index 6b1ee92c1..326912a34 100644
--- a/keyboards/clueboard/66_hotswap/gen1/rules.mk
+++ b/keyboards/clueboard/66_hotswap/gen1/rules.mk
@@ -37,6 +37,7 @@ OPT_DEFS =
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# LED Configuration
LED_MATRIX_ENABLE = IS31FL3731
diff --git a/keyboards/cospad/config.h b/keyboards/cospad/config.h
index 1f7c174e6..b7e7ec384 100644
--- a/keyboards/cospad/config.h
+++ b/keyboards/cospad/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"
@@ -32,42 +31,43 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
-// ROWS: Top to bottom, COLS: Left to right
-
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7 }
#define UNUSED_PINS
-#define BACKLIGHT_PIN F7
-
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
+/* Backlight configuration */
+#define BACKLIGHT_PIN F7
+#define BACKLIGHT_LEVELS 1
+
+/* Underlight configuration */
+#define RGB_DI_PIN F6
+#define RGBLED_NUM 4
+#define RGBLIGHT_ANIMATIONS
-/* Set 0 if debouncing isn't needed */
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 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
-/* Backlight configuration
- */
-#define BACKLIGHT_LEVELS 4
-
-/* Underlight configuration
- */
-
-#define RGB_DI_PIN F6
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 4 // Number of LEDs
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
@@ -86,4 +86,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#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/cospad/cospad.c b/keyboards/cospad/cospad.c
index 48d752a84..e7ef71f87 100644
--- a/keyboards/cospad/cospad.c
+++ b/keyboards/cospad/cospad.c
@@ -1,37 +1,33 @@
+
+/* 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/>.
+ */
#include "cospad.h"
-#include "led.h"
-extern inline void cospad_bl_led_on(void);
-extern inline void cospad_bl_led_off(void);
-extern inline void cospad_bl_led_togg(void);
+#ifdef BACKLIGHT_ENABLE
-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 backlight_init_ports(void) {
+ setPinOutput(F7);
+}
-void led_init_ports(void) {
- // * Set our LED pins as output
- DDRB |= (1<<2);
- DDRF |= (1<<7);
- // * Setting BL LEDs to init as off
- PORTF |= (1<<7);
+void backlight_set(uint8_t level) {
+ writePin(F7, !!level);
}
-void led_set_kb(uint8_t usb_led) {
- if (usb_led & (1<<USB_LED_NUM_LOCK)) {
- // Turn numlock on
- PORTB &= ~(1<<2);
- } else {
- // Turn numlock off
- PORTB |= (1<<2);
- }
+void backlight_task(void) {
+ // do nothing - as default implementation of software PWM does not work
}
+
+#endif //BACKLIGHT_ENABLE
diff --git a/keyboards/cospad/cospad.h b/keyboards/cospad/cospad.h
index df42b0df1..ad3ca0d6b 100644
--- a/keyboards/cospad/cospad.h
+++ b/keyboards/cospad/cospad.h
@@ -1,10 +1,32 @@
-#ifndef COSPAD_H
-#define COSPAD_H
+
+/* 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 "quantum.h"
+#define ___ KC_NO
-// readability
-#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.
+ */
/* COSPAD ortho matrix layout
* ,-------------------.
@@ -21,40 +43,6 @@
* | 50 | 51 | 52 | 53 |
* `-------------------'
*/
-
-/* 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 |
- * `-------------------'
- */
-
-/* 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 | |
- * `-------------------'
- */
-// The first section contains all of the arguments
-// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_6x4( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
@@ -72,6 +60,21 @@
{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 |
+ * `-------------------'
+ */
#define LAYOUT_gamepad_6x4( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
@@ -84,11 +87,26 @@
{k00, k01, k02, k03}, \
{k10, k11, k12, k13}, \
{k20, k21, k22, k23}, \
- {k30, k31, k32, KC_NO}, \
+ {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 | |
+ * `-------------------'
+ */
#define LAYOUT_numpad_6x4( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
@@ -98,25 +116,15 @@
k50, k52, k43 \
) \
{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, KC_NO}, \
- {k40, k41, k42, k43}, \
- {k50, KC_NO, k52, KC_NO} \
+ {k00, k01, k02, k03}, \
+ {k10, k11, k12, k13}, \
+ {k20, k21, k22, k23}, \
+ {k30, k31, k32, ___}, \
+ {k40, k41, k42, k43}, \
+ {k50, ___, k52, ___} \
}
-void matrix_init_user(void);
-void matrix_scan_user(void);
-inline void cospad_bl_led_on(void) { PORTF &= ~(1<<7); }
-inline void cospad_bl_led_off(void) { PORTF |= (1<<7); }
-
-inline void cospad_bl_led_togg(void) {
- uint8_t bl_mask = PORTF&(1<<7);
- if (bl_mask) {
- PORTF &= ~(1<<7);
- } else {
- PORTF |= (1<<7);
- }
-}
-#endif
+// Add backwards compatibility for existing keymaps
+#define cospad_bl_led_on backlight_enable
+#define cospad_bl_led_off backlight_disable
+#define cospad_bl_led_togg backlight_toggle
diff --git a/keyboards/cospad/info.json b/keyboards/cospad/info.json
index b34013a47..c17f44f52 100644
--- a/keyboards/cospad/info.json
+++ b/keyboards/cospad/info.json
@@ -7,6 +7,7 @@
"height": 6,
"layouts": {
"LAYOUT_numpad_6x4": {
+ "key_count": 21,
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"Tab", "x":1, "y":0},
@@ -33,35 +34,62 @@
},
"LAYOUT_gamepad_6x4": {
+ "key_count": 23,
"layout": [
- {"label":"k00", "x":5, "y":0},
- {"label":"k01", "x":5, "y":1},
- {"label":"k02", "x":5, "y":2},
- {"label":"k03", "x":5, "y":3},
- {"label":"k10", "x":4, "y":0},
- {"label":"k11", "x":4, "y":1},
- {"label":"k12", "x":4, "y":2},
- {"label":"k13", "x":4, "y":3},
- {"label":"k20", "x":3, "y":0},
- {"label":"k21", "x":3, "y":1},
- {"label":"k22", "x":3, "y":2},
- {"label":"k30", "x":2, "y":0},
- {"label":"k31", "x":2, "y":1},
- {"label":"k32", "x":2, "y":2},
- {"label":"k23", "x":2, "y":3, "w":2},
- {"label":"k40", "x":1, "y":0},
- {"label":"k41", "x":1, "y":1},
- {"label":"k42", "x":1, "y":2},
- {"label":"k43", "x":1, "y":3},
- {"label":"k50", "x":0, "y":0},
- {"label":"k51", "x":0, "y":1},
- {"label":"k52", "x":0, "y":2},
- {"label":"k53", "x":0, "y":3}
+ {"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}
]
},
"LAYOUT_ortho_6x4": {
- "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":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
+ "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}
+ ]
}
}
}
diff --git a/keyboards/cospad/keymaps/default/keymap.c b/keyboards/cospad/keymaps/default/keymap.c
index 345e96996..adcca112d 100644
--- a/keyboards/cospad/keymaps/default/keymap.c
+++ b/keyboards/cospad/keymaps/default/keymap.c
@@ -1,80 +1,60 @@
#include QMK_KEYBOARD_H
-#include "led.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 _FL 1
+enum layers {
+ _BL = 0,
+ _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|TAB | FN | BS |
- * |----|----|----|----|
- * |RGBM|RGBP|BTOG| - |
- * |----|----|----|----|
- * |HUD |HUI |BON | |
- * |----|----|----| + |
- * |SAD |SAI |BOFF| |
- * |----|----|----|----|
- * |VAD |VAS | 3 | |
- * |----|----|----| En |
- * | 0 |RST | |
- * `-------------------'
- */
-[_FL] = LAYOUT_numpad_6x4(
- RGB_TOG, KC_TAB, KC_TRNS, KC_BSPC, \
- RGB_MOD, RGB_M_P, BL_TOGG, KC_PMNS, \
- RGB_HUD, RGB_HUI, BL_ON, \
- RGB_SAD, RGB_SAI, BL_OFF, KC_PPLS, \
- RGB_VAD, RGB_VAI, KC_P3, \
- KC_P0, RESET, 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, _______
+ ),
};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case BL_TOGG:
- if (record->event.pressed) {
- cospad_bl_led_togg();
- }
- return false;
- case BL_ON:
- if (record->event.pressed) {
- cospad_bl_led_on();
- }
- return false;
- case BL_OFF:
- if(record->event.pressed) {
- cospad_bl_led_off();
- }
- return false;
- default:
- return true;
- }
-}
diff --git a/keyboards/cospad/rules.mk b/keyboards/cospad/rules.mk
index 3c5913d0d..61c7a5182 100644
--- a/keyboards/cospad/rules.mk
+++ b/keyboards/cospad/rules.mk
@@ -1,6 +1,5 @@
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
@@ -40,27 +39,43 @@ 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
+BOOTLOADER = atmel-dfu
+
+
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
# 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)
-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)
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+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)
+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
+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
+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)
+
+
+LAYOUTS = numpad_6x4 ortho_6x4
diff --git a/keyboards/crkbd/keymaps/drashna/config.h b/keyboards/crkbd/keymaps/drashna/config.h
index cbc3feeb6..0b035ba3c 100644
--- a/keyboards/crkbd/keymaps/drashna/config.h
+++ b/keyboards/crkbd/keymaps/drashna/config.h
@@ -27,7 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
#define EE_HANDS
-#define SSD1306OLED
+#undef USE_I2C
+#undef SSD1306OLED
#define USE_SERIAL_PD2
@@ -35,16 +36,50 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define TAPPING_TERM 100
#ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 27
+# undef RGBLED_NUM
+# define RGBLED_NUM 27
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_LIMIT_VAL 100
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 100
#endif
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+
+# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define DISABLE_RGB_MATRIX_CYCLE_ALL
+# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# 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_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_SOLID_SPLASH
+# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
#ifdef AUDIO_ENABLE
-#define B6_AUDIO
+# define B6_AUDIO
// #define NO_MUSIC_MODE
#endif
+
+#undef PRODUCT
+#define PRODUCT Drashna Hacked Corne Keyboard
+
+#define OLED_FONT_H "keyboards/crkbd/keymaps/drashna/glcdfont.c"
+// #define OLED_FONT_WIDTH 5
+// #define OLED_FONT_HEIGHT 7
+
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/crkbd/keymaps/drashna/glcdfont.c b/keyboards/crkbd/keymaps/drashna/glcdfont.c
new file mode 100644
index 000000000..28521b428
--- /dev/null
+++ b/keyboards/crkbd/keymaps/drashna/glcdfont.c
@@ -0,0 +1,240 @@
+#pragma once
+
+#ifdef __AVR__
+ #include <avr/io.h>
+ #include <avr/pgmspace.h>
+#elif defined(ESP8266)
+ #include <pgmspace.h>
+#else
+ #define PROGMEM
+#endif
+
+// Helidox 8x6 font with QMK Firmware Logo
+// Online editor: http://teripom.x0.com/
+
+const unsigned char font[] PROGMEM = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
+0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
+0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
+0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
+0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
+0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
+0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
+0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
+0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
+0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
+0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
+0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
+0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
+0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
+0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
+0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
+0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
+0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
+0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
+0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
+0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
+0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
+0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
+0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
+0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
+0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
+0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
index 91f0ebfa2..3eea7af9f 100644
--- a/keyboards/crkbd/keymaps/drashna/keymap.c
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -1,12 +1,5 @@
#include QMK_KEYBOARD_H
#include "drashna.h"
-#ifdef PROTOCOL_LUFA
- #include "lufa.h"
- #include "split_util.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
extern keymap_config_t keymap_config;
extern uint8_t is_master;
@@ -17,7 +10,7 @@ extern rgblight_config_t rgblight_config;
#endif
enum crkbd_keycodes {
- RGBRST = NEW_SAFE_RANGE
+ RGBRST = NEW_SAFE_RANGE
};
#define LAYOUT_crkbd_base( \
@@ -28,7 +21,7 @@ enum crkbd_keycodes {
LAYOUT_wrapper( \
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
KC_TAB, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RGUI_T(KC_QUOT), \
- OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
+ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
)
#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
@@ -112,35 +105,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_init_keymap(void) {
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
-
- #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
setPinOutput(D5);
writePinHigh(D5);
setPinOutput(B0);
writePinHigh(B0);
- #endif
+#endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
-// When add source files to SRC in rules.mk, you can use functions.
-const char *read_logo(void);
-char layer_state_str[24];
-char modifier_state_str[24];
-char host_led_state_str[24];
-char keylog_str[24] = {};
-char keylogs_str[21] = {};
-int keylogs_str_idx = 0;
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_master) {
+ return OLED_ROTATION_270;
+ } else {
+ return rotation;
+ }
+}
+
+void render_crkbd_logo(void) {
+ static const char PROGMEM crkbd_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ oled_write_P(crkbd_logo, false);
+}
-// const char *read_mode_icon(bool swap);
-// void set_timelog(void);
-// const char *read_timelog(void);
+#define KEYLOG_LEN (int)(32 / OLED_FONT_WIDTH)
+char keylog_str[KEYLOG_LEN] = {};
+uint8_t keylogs_str_idx = 0;
+uint16_t log_timer = 0;
const char code_to_name[60] = {
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
@@ -150,141 +146,124 @@ const char code_to_name[60] = {
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
-void set_keylog(uint16_t keycode, keyrecord_t *record) {
- char name = ' ';
- if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
- if (keycode < 60) {
- name = code_to_name[keycode];
- }
- // update keylog
- snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
- record->event.key.row, record->event.key.col,
- keycode, name);
-
- // update keylogs
- if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
- keylogs_str_idx = 0;
- for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
- keylogs_str[i] = ' ';
- }
- }
-
- keylogs_str[keylogs_str_idx] = name;
- keylogs_str_idx++;
-}
+void add_keylog(uint16_t keycode) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
-const char *read_keylog(void) {
- return keylog_str;
-}
-
-const char *read_keylogs(void) {
- return keylogs_str;
+ for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
+ keylog_str[i] = keylog_str[i - 1];
+ }
+ if (keycode < 60) {
+ keylog_str[0] = code_to_name[keycode];
+ }
+ log_timer = timer_read();
}
-
-const char* read_modifier_state(void) {
- uint8_t modifiers = get_mods();
- uint8_t one_shot = get_oneshot_mods();
-
- snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
- (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL) ? "CTL" : " ",
- (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI) ? "GUI" : " ",
- (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT) ? "ALT" : " ",
- (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? "SFT" : " "
- );
-
- return modifier_state_str;
+void update_log(void) {
+ if (timer_elapsed(log_timer) > 750) {
+ add_keylog(0);
+ }
}
-const char *read_host_led_state(void) {
- uint8_t leds = host_keyboard_leds();
-
- snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
- (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
- (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
- (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
- );
- return host_led_state_str;
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) { add_keylog(keycode); }
+ return true;
}
-const char* read_layer_state(void) {
- switch (biton32(layer_state)) {
- case _RAISE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise ");
- break;
- case _LOWER:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower ");
- break;
- case _ADJUST:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
- break;
- default:
- switch (biton32(default_layer_state)) {
+void render_status(void) {
+
+ oled_write_P(PSTR("Layer"), false);
+ switch (biton32(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("Base "), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjst"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Unkn "), false);
+ break;
+ }
+ oled_write_P(PSTR("Lyout"), false);
+ switch (biton32(default_layer_state)) {
case _QWERTY:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
- break;
+ oled_write_P(PSTR("QWRTY"), false);
+ break;
case _COLEMAK:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
- break;
+ oled_write_P(PSTR("COLMK"), false);
+ break;
case _DVORAK:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
- break;
+ oled_write_P(PSTR("DVRAK"), false);
+ break;
case _WORKMAN:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
- break;
- }
- break;
- }
+ oled_write_P(PSTR("WRKMN"), false);
+ break;
+ case _NORMAN:
+ oled_write_P(PSTR("NORMN"), false);
+ break;
+ case _MALTRON:
+ oled_write_P(PSTR("MLTRN"), false);
+ break;
+ case _EUCALYN:
+ oled_write_P(PSTR("ECLYN"), false);
+ break;
+ case _CARPLAX:
+ oled_write_P(PSTR("CRPLX"), false);
+ break;
+ }
- return layer_state_str;
-}
+ uint8_t modifiers = get_mods();
+ uint8_t one_shot = get_oneshot_mods();
-void matrix_scan_keymap(void) {
- iota_gfx_task();
-}
+ oled_write_P(PSTR("Mods:"), false);
+ oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
+ oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false);
+ oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false);
+ oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
- //If you want to change the display of OLED, you need to change here
- matrix_write_ln(matrix, read_layer_state());
- matrix_write_ln(matrix, read_modifier_state());
- // matrix_write_ln(matrix, read_keylog());
- matrix_write_ln(matrix, read_keylogs());
- // matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- // matrix_write(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
- } else {
- matrix_write(matrix, read_logo());
- }
-}
-void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
- if (memcmp(dest->display, source->display, sizeof(dest->display))) {
- memcpy(dest->display, source->display, sizeof(dest->display));
- dest->dirty = true;
- }
-}
+ oled_write_P(PSTR("BTMGK"), false);
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
+ if (keymap_config.swap_lalt_lgui) {
+ oled_write_P(PSTR(" Mac "), false);
+ } else {
+ oled_write_P(PSTR(" Win "), false);
+ }
+
+ uint8_t led_usb_state = host_keyboard_leds();
+ oled_write_P(PSTR("Lock:"), false);
+ oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR(" NUM ") : PSTR(" "), false);
+ oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false);
+ oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR(" "), false);
+
+ oled_write(keylog_str, false);
}
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_A ... KC_SLASH:
- case KC_F1 ... KC_F12:
- case KC_INSERT ... KC_UP:
- case KC_KP_SLASH ... KC_KP_DOT:
- case KC_F13 ... KC_F24:
- if (record->event.pressed) { set_keylog(keycode, record); }
- break;
- // set_timelog();
- }
- return true;
+
+void oled_task_user(void) {
+ if (is_master) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_crkbd_logo();
+ oled_scroll_left(); // Turns on scrolling
+ }
}
+void matrix_scan_keymap(void) { update_log(); }
#endif
+
+uint16_t get_tapping_term(uint16_t keycode) {
+ switch (keycode) {
+ case ALT_T(KC_A):
+ return TAPPING_TERM + 100;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/crkbd/keymaps/drashna/rules.mk b/keyboards/crkbd/keymaps/drashna/rules.mk
index 540534978..39b48f944 100644
--- a/keyboards/crkbd/keymaps/drashna/rules.mk
+++ b/keyboards/crkbd/keymaps/drashna/rules.mk
@@ -3,31 +3,29 @@
# 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 = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+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 = 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.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+RGBLIGHT_STARTUP_ANIMATION = yes
+RGB_MATRIX_ENABLE = WS2812
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BOOTLOADER = qmk-dfu
-# If you want to change the display of OLED, you need to change here
-SRC += ./lib/glcdfont.c \
- ./lib/logo_reader.c \
- # ./lib/rgb_state_reader.c \
- # ./lib/keylogger.c \
- # ./lib/host_led_state_reader.c \
- # ./lib/mode_icon_reader.c \
- # ./lib/layer_state_reader.c \
- # ./lib/timelogger.c \
+OLED_DRIVER_ENABLE = yes
+
+ifneq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ RGB_MATRIX_SPLIT_RIGHT=yes
+endif
diff --git a/keyboards/crkbd/keymaps/like_jis/keymap.c b/keyboards/crkbd/keymaps/like_jis/keymap.c
index b1b6c64b1..41df6330f 100644
--- a/keyboards/crkbd/keymaps/like_jis/keymap.c
+++ b/keyboards/crkbd/keymaps/like_jis/keymap.c
@@ -11,11 +11,6 @@
extern keymap_config_t keymap_config;
-#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
-
extern uint8_t is_master;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
@@ -241,6 +236,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void matrix_init_user(void) {
#ifdef RGBLIGHT_ENABLE
RGB_current_mode = rgblight_config.mode;
+ UPDATE_KEYMAP_STATUS();
#endif
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
diff --git a/keyboards/ergodash/rev2/keymaps/default/config.h b/keyboards/crkbd/keymaps/rs/config.h
index 90a364811..9701c2b3f 100644
--- a/keyboards/ergodash/rev2/keymaps/default/config.h
+++ b/keyboards/crkbd/keymaps/rs/config.h
@@ -20,12 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-// place overrides here
-
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
+//#define USE_MATRIX_I2C
/* Select hand configuration */
@@ -33,10 +28,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 300
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 24
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/crkbd/keymaps/rs/keymap.c b/keyboards/crkbd/keymaps/rs/keymap.c
new file mode 100644
index 000000000..135ccb076
--- /dev/null
+++ b/keyboards/crkbd/keymaps/rs/keymap.c
@@ -0,0 +1,39 @@
+#include QMK_KEYBOARD_H
+#include "rs.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,EQL ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ESCC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----+ |----+----+----+----+----+----|
+ LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENTS,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ LALT,LGUI,SPC , BSPC,CODE,FN
+ // `----+----+----' `+---+----+----'c
+ ),
+ [_CODE] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ GRV ,EXLM, AT ,HASH, DLR,PERC, CIRC,LPLT,ASTR,RPGT,NEQL, ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , 1 , 2 , 3 , 4 , 5 , MINS,LBRC, UP ,RBRC, ,BSLS,
+ //|----+----+----+----+----+----+ |----+----+----+----+----+----|
+ , 6 , 7 , 8 , 9 , 0 , AMPR,LEFT,DOWN,RGHT, ,PIPE,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ , ,DOT , , ,
+ // `----+----+----' `----+----+----'
+ ),
+ [_FN] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, F11,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ LTOG,LHUI,LSAI,LVAI,LRST,BRMU, VOLU, ,PGUP, , , ,
+ //|----+----+----+----+----+----+ |----+----+----+----+----+----|
+ LMOD,LHUD,LSAD,LVAD,RST ,BRMD, VOLD,CTRA,PGDN,CTRE, , ,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ , , , MUTE, ,
+ // `----+----+----' `----+----+----'
+ ),
+};
+
diff --git a/keyboards/crkbd/keymaps/rs/oled.c b/keyboards/crkbd/keymaps/rs/oled.c
new file mode 100644
index 000000000..c94dff9ed
--- /dev/null
+++ b/keyboards/crkbd/keymaps/rs/oled.c
@@ -0,0 +1,104 @@
+#ifdef SSD1306OLED
+#include QMK_KEYBOARD_H
+#include "ssd1306.h"
+#ifdef PROTOCOL_LUFA
+#include "lufa.h"
+#include "split_util.h"
+#endif
+
+extern uint8_t is_master;
+
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_logo(void);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+
+void matrix_scan_user(void) { iota_gfx_task(); }
+
+typedef struct {
+ uint8_t state;
+ char name[8];
+} LAYER_DISPLAY_NAME;
+
+#define LAYER_DISPLAY_MAX 5
+const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
+ {0, "Base"},
+ {2, "Code"},
+ {4, "Fn"},
+ {6, "Fn+Code"},
+ {__UINT8_MAX__, "?"},
+};
+static uint8_t layer_name_idx;
+static char layer_status_buf[24] = "Layer: Base\n";
+
+#ifdef RGBLIGHT_ENABLE
+// Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+void update_keymap_status(void) {
+ snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "Layer:%s RGB: %d\n",
+ layer_display_name[layer_name_idx].name, rgblight_config.mode);
+}
+#else
+void update_keymap_status(void) {
+ snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "Layer:%s\n",
+ layer_display_name[layer_name_idx].name);
+}
+#endif
+
+void matrix_init_user(void) {
+ iota_gfx_init(!has_usb()); // turns on the display
+ update_keymap_status();
+}
+
+// declared in users/rs/rs.c
+void rgb_mod_changed_keymap(void) {
+ update_keymap_status();
+}
+
+// declared in users/rs/rs.c
+void keylog_set_keymap(uint16_t keycode, keyrecord_t *record) {
+ set_keylog(keycode, record);
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+ for (layer_name_idx = 0; layer_name_idx < LAYER_DISPLAY_MAX; ++layer_name_idx) {
+ if (state == 0 && layer_display_name[layer_name_idx].state == default_layer_state) {
+ break;
+ } else if (state != 0 && layer_display_name[layer_name_idx].state == state) {
+ break;
+ }
+ }
+ update_keymap_status();
+ return state;
+}
+
+static inline void render_keymap_status(struct CharacterMatrix *matrix) {
+ matrix_write(matrix, layer_status_buf);
+}
+
+void matrix_render_user(struct CharacterMatrix *matrix) {
+ if (is_master) {
+ render_keymap_status(matrix);
+ matrix_write_ln(matrix, read_keylog());
+ matrix_write_ln(matrix, read_keylogs());
+ } else {
+ matrix_write(matrix, read_logo());
+ }
+}
+
+void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
+ if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+ memcpy(dest->display, source->display, sizeof(dest->display));
+ dest->dirty = true;
+ }
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+ matrix_clear(&matrix);
+ matrix_render_user(&matrix);
+ matrix_update(&display, &matrix);
+}
+
+#endif
diff --git a/keyboards/crkbd/keymaps/rs/readme.md b/keyboards/crkbd/keymaps/rs/readme.md
new file mode 100644
index 000000000..d7f7bb645
--- /dev/null
+++ b/keyboards/crkbd/keymaps/rs/readme.md
@@ -0,0 +1,19 @@
+# RS40: Code Friendly 40% Keymap
+
+This keymap is an evolution of my previous keymap optimized for coding with a 60% keyboards like the Iris. I tried to keep the simplicity of my previous keymap with all the keys necessary for coding on a single layer in addition to the base one.
+
+Because I sometime have to use my internal keyboard I my macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the code layer / backspace on right command key etc.
+
+See [rs readme](../../../../users/rs/readme.md) for a list of other keyboards supported by this keymap.
+
+## Base Layer
+
+[![](http://poitr.us/moooMf+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=E&_x:8%3B&=I%3B&@_y:-0.87&x:2%3B&=W&_x:1%3B&=R&_x:6%3B&=U&_x:1%3B&=O%3B&@_y:-0.8799999999999999&x:5%3B&=T&_x:4%3B&=Y%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=Tab&_c=%236750f2&t=%2344b8b8%3B&=Q&_x:12%3B&=P&_c=%233a1ee6&t=%23b84465&a:5%3B&=+%0A%2F=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=D&_x:8%3B&=K%3B&@_y:-0.8700000000000001&x:2%3B&=S&_x:1%3B&=F&_x:6%3B&=J&_x:1%3B&=L%3B&@_y:-0.8799999999999999&x:5%3B&=G&_x:4%3B&=H%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465&a:5%3B&=Esc%0ACtrl&_c=%236750f2&t=%2344b8b8&a:7%3B&=A&_x:12&a:5%3B&=%2F:%0A%2F%3B&_c=%233a1ee6&t=%23b84465%3B&=%22%0A'%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=C&_x:8&a:5%3B&=%3C%0A,%3B&@_y:-0.8700000000000001&x:2&a:7%3B&=X&_x:1%3B&=V&_x:6%3B&=M&_x:1&a:5%3B&=%3E%0A.%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=B&_x:4%3B&=N%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Shift&_c=%236750f2&t=%2344b8b8%3B&=Z&_x:12&a:5%3B&=%3F%0A%2F%2F&_c=%233a1ee6&t=%23b84465&a:7%3B&=Enter%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=Alt%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=Cmd%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=Space%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Back%20Space%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code)
+
+## Code Layer
+
+[![](http://poitr.us/GvljvC+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=%23&_x:8%3B&=*%3B&@_y:-0.87&x:2%3B&=%2F@&_x:1%3B&=$&_x:6&a:5%3B&=%3C%0A(&_x:1%3B&=%3E%0A)%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=%25&_x:4%3B&=%5E%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=Tab&_c=%236750f2&t=%2344b8b8%3B&=!&_x:12%3B&=!%2F=&_c=%233a1ee6&t=%23b84465&a:5%3B&=+%0A%2F=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=3&_x:8%3B&=↑%3B&@_y:-0.8700000000000001&x:2%3B&=2&_x:1%3B&=4&_x:6&a:5%3B&=%7B%0A%5B&_x:1%3B&=%7D%0A%5D%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=5&_x:4&a:5%3B&=%2F_%0A-%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Esc%0ACtrl&_c=%236750f2&t=%2344b8b8&a:7%3B&=1&_x:12&a:5%3B&=%2F:%0A%2F%3B&_c=%233a1ee6&t=%23b84465%3B&=%7C%0A%5C%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=8&_x:8%3B&=↓%3B&@_y:-0.8700000000000001&x:2%3B&=7&_x:1%3B&=9&_x:6%3B&=←&_x:1%3B&=→%3B&@_y:-0.8799999999999999&x:5%3B&=0&_x:4%3B&=%2F&%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Shift&_c=%236750f2&t=%2344b8b8%3B&=6&_x:12&a:5%3B&=%3F%0A%2F%2F&_c=%233a1ee6&t=%23b84465&a:7%3B&=Enter%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=Alt%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=Cmd%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=.%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Back%20Space%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code)
+
+## Fn Layer
+
+[![](http://poitr.us/OXwmBK+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=F3&_x:8%3B&=F8%3B&@_y:-0.87&x:2%3B&=F2&_x:1%3B&=F4&_x:6%3B&=F7&_x:1%3B&=F9%3B&@_y:-0.8799999999999999&x:5%3B&=F5&_x:4%3B&=F6%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=&_c=%236750f2&t=%2344b8b8%3B&=F1&_x:12%3B&=F10&_c=%233a1ee6&t=%23b84465%3B&=F11%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8%3B&=RGB%20Value+&_x:8%3B&=Page%20Up%3B&@_y:-0.8700000000000001&x:2%3B&=RGB%20Sat+&_x:1%3B&=RGB%20Reset&_x:6%3B&=&_x:1%3B&=%3B&@_y:-0.8799999999999999&x:5%3B&=Bright+&_x:4%3B&=Vol+%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=RGB%20Toggle&_c=%236750f2&t=%2344b8b8%3B&=RGB%20Hue+&_x:12%3B&=&_c=%233a1ee6&t=%23b84465%3B&=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8%3B&=RGB%20Value-&_x:8%3B&=Page%20Down%3B&@_y:-0.8700000000000001&x:2%3B&=RGB%20Sat-&_x:1%3B&=Reset&_x:6%3B&=Ctrl+A&_x:1%3B&=Ctrl+E%3B&@_y:-0.8799999999999999&x:5%3B&=Bright-&_x:4%3B&=Vol-%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=RGB%20Mode&_c=%236750f2&t=%2344b8b8%3B&=RGB%20Hue-&_x:12%3B&=&_c=%233a1ee6&t=%23b84465%3B&=%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Mute%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code) \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/rs/rules.mk b/keyboards/crkbd/keymaps/rs/rules.mk
new file mode 100644
index 000000000..683b4b70d
--- /dev/null
+++ b/keyboards/crkbd/keymaps/rs/rules.mk
@@ -0,0 +1,32 @@
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # 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.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+TAP_DANCE_ENABLE = no
+
+BOOTLOADER = atmel-dfu
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+# If you want to change the display of OLED, you need to change here
+SRC += oled.c \
+ ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
diff --git a/keyboards/crkbd/rev1/rev1.c b/keyboards/crkbd/rev1/rev1.c
index 0104adf15..38ab92788 100644
--- a/keyboards/crkbd/rev1/rev1.c
+++ b/keyboards/crkbd/rev1/rev1.c
@@ -51,78 +51,65 @@ void led_set_kb(uint8_t usb_led) {
// 05 06 06 05
// 15 14 07 07 14 15 3
-/* {row | col << 4} logical layout rows/cols
- * | {x=0..224, y=0..64} physical layout
- * | | | modifier
- * | | | */
-#define RGB_MATRIX_LEFT_LEDS \
- { { 0xFF }, { 85, 16 }, 0 }, /* 1 */ \
- { { 0xFF }, { 50, 13 }, 0 }, /* 2 */ \
- { { 0xFF }, { 16, 20 }, 0 }, /* 3 */ \
- { { 0xFF }, { 16, 38 }, 0 }, /* 4 */ \
- { { 0xFF }, { 50, 48 }, 0 }, /* 5 */ \
- { { 0xFF }, { 85, 52 }, 0 }, /* 6 */ \
- { { 3 | ( 5 << 4 ) }, { 95, 63 }, 1 }, /* 7 */ \
- { { 2 | ( 5 << 4 ) }, { 85, 39 }, 0 }, /* 8 */ \
- { { 1 | ( 5 << 4 ) }, { 85, 21 }, 0 }, /* 9 */ \
- { { 0 | ( 5 << 4 ) }, { 85, 4 }, 0 }, /* 10 */ \
- { { 0 | ( 4 << 4 ) }, { 68, 02 }, 0 }, /* 11 */ \
- { { 1 | ( 4 << 4 ) }, { 68, 19 }, 0 }, /* 12 */ \
- { { 2 | ( 4 << 4 ) }, { 68, 37 }, 0 }, /* 13 */ \
- { { 3 | ( 4 << 4 ) }, { 80, 58 }, 1 }, /* 14 */ \
- { { 3 | ( 3 << 4 ) }, { 60, 55 }, 1 }, /* 15 */ \
- { { 2 | ( 3 << 4 ) }, { 50, 35 }, 0 }, /* 16 */ \
- { { 1 | ( 3 << 4 ) }, { 50, 13 }, 0 }, /* 17 */ \
- { { 0 | ( 3 << 4 ) }, { 50, 0 }, 0 }, /* 18 */ \
- { { 0 | ( 2 << 4 ) }, { 33, 3 }, 0 }, /* 19 */ \
- { { 1 | ( 2 << 4 ) }, { 33, 20 }, 0 }, /* 20 */ \
- { { 2 | ( 2 << 4 ) }, { 33, 37 }, 0 }, /* 21 */ \
- { { 2 | ( 1 << 4 ) }, { 16, 42 }, 0 }, /* 22 */ \
- { { 1 | ( 1 << 4 ) }, { 16, 24 }, 0 }, /* 23 */ \
- { { 0 | ( 1 << 4 ) }, { 16, 7 }, 0 }, /* 24 */ \
- { { 0 | ( 0 << 4 ) }, { 0, 7 }, 1 }, /* 25 */ \
- { { 1 | ( 0 << 4 ) }, { 0, 24 }, 1 }, /* 26 */ \
- { { 2 | ( 0 << 4 ) }, { 0, 41 }, 1 }, /* 27 */
-
-#define RGB_MATRIX_RIGHT_LEDS \
- { { 0xFF }, { 139, 16 }, 0 }, /* 1 */ \
- { { 0xFF }, { 174, 13 }, 0 }, /* 2 */ \
- { { 0xFF }, { 208, 20 }, 0 }, /* 3 */ \
- { { 0xFF }, { 208, 38 }, 0 }, /* 4 */ \
- { { 0xFF }, { 174, 48 }, 0 }, /* 5 */ \
- { { 0xFF }, { 139, 52 }, 0 }, /* 6 */ \
- { { 7 | ( 5 << 4 ) }, { 129, 63 }, 1 }, /* 7 */ \
- { { 6 | ( 5 << 4 ) }, { 139, 39 }, 0 }, /* 8 */ \
- { { 5 | ( 5 << 4 ) }, { 139, 21 }, 0 }, /* 9 */ \
- { { 4 | ( 5 << 4 ) }, { 139, 4 }, 0 }, /* 10 */ \
- { { 4 | ( 4 << 4 ) }, { 156, 02 }, 0 }, /* 11 */ \
- { { 5 | ( 4 << 4 ) }, { 156, 19 }, 0 }, /* 12 */ \
- { { 6 | ( 4 << 4 ) }, { 156, 37 }, 0 }, /* 13 */ \
- { { 7 | ( 4 << 4 ) }, { 144, 58 }, 1 }, /* 14 */ \
- { { 7 | ( 3 << 4 ) }, { 164, 55 }, 1 }, /* 15 */ \
- { { 6 | ( 3 << 4 ) }, { 174, 35 }, 0 }, /* 16 */ \
- { { 5 | ( 3 << 4 ) }, { 174, 13 }, 0 }, /* 17 */ \
- { { 4 | ( 3 << 4 ) }, { 174, 0 }, 0 }, /* 18 */ \
- { { 4 | ( 2 << 4 ) }, { 191, 3 }, 0 }, /* 19 */ \
- { { 5 | ( 2 << 4 ) }, { 191, 20 }, 0 }, /* 20 */ \
- { { 6 | ( 2 << 4 ) }, { 191, 37 }, 0 }, /* 21 */ \
- { { 6 | ( 1 << 4 ) }, { 208, 42 }, 0 }, /* 22 */ \
- { { 5 | ( 1 << 4 ) }, { 208, 24 }, 0 }, /* 23 */ \
- { { 4 | ( 1 << 4 ) }, { 208, 7 }, 0 }, /* 24 */ \
- { { 4 | ( 0 << 4 ) }, { 224, 7 }, 1 }, /* 25 */ \
- { { 5 | ( 0 << 4 ) }, { 224, 24 }, 1 }, /* 26 */ \
- { { 6 | ( 0 << 4 ) }, { 224, 41 }, 1 }, /* 27 */
#ifdef RGB_MATRIX_SPLIT_RIGHT
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- RGB_MATRIX_RIGHT_LEDS
- RGB_MATRIX_LEFT_LEDS
- };
+led_config_t g_led_config = { {
+ { 51, 50, 45, 44, 37, 36, NO_LED },
+ { 52, 49, 46, 43, 38, 35, NO_LED },
+ { 53, 48, 47, 42, 39, 34, NO_LED },
+ { NO_LED, NO_LED, NO_LED, 41, 40, 33, NO_LED },
+ { 24, 23, 18, 17, 10, 9, NO_LED },
+ { 25, 22, 19, 16, 11, 8, NO_LED },
+ { 26, 21, 20, 15, 12, 7, NO_LED },
+ { NO_LED, NO_LED, NO_LED, 14, 13, 6, NO_LED }
+}, {
+ { 139, 16 }, { 174, 13 }, { 208, 20 }, { 208, 38 }, { 174, 48 }, { 139, 52 }, { 129, 63 },
+ { 139, 39 }, { 139, 21 }, { 139, 4 }, { 156, 2 }, { 156, 19 }, { 156, 37 }, { 144, 58 },
+ { 164, 55 }, { 174, 35 }, { 174, 13 }, { 174, 0 }, { 191, 3 }, { 191, 20 }, { 191, 37 },
+ { 208, 42 }, { 208, 24 }, { 208, 7 }, { 224, 7 }, { 224, 24 }, { 224, 41 }, { 85, 16 },
+ { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 }, { 95, 63 }, { 85, 39 },
+ { 85, 21 }, { 85, 4 }, { 68, 2 }, { 68, 19 }, { 68, 37 }, { 80, 58 }, { 60, 55 },
+ { 50, 35 }, { 50, 13 }, { 50, 0 }, { 33, 3 }, { 33, 20 }, { 33, 37 }, { 16, 42 },
+ { 16, 24 }, { 16, 7 }, { 0, 7 }, { 0, 24 }, { 0, 41 }
+}, {
+ 2, 2, 2, 2, 2, 2, 1,
+ 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 1, 4,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1
+} };
#else
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- RGB_MATRIX_LEFT_LEDS
- RGB_MATRIX_RIGHT_LEDS
- };
+led_config_t g_led_config = { {
+ { 24, 23, 18, 17, 10, 9, NO_LED },
+ { 25, 22, 19, 16, 11, 8, NO_LED },
+ { 26, 21, 20, 15, 12, 7, NO_LED },
+ { NO_LED, NO_LED, NO_LED, 14, 13, 6, NO_LED },
+ { 51, 50, 45, 44, 37, 36, NO_LED },
+ { 52, 49, 46, 43, 38, 35, NO_LED },
+ { 53, 48, 47, 42, 39, 34, NO_LED },
+ { NO_LED, NO_LED, NO_LED, 41, 40, 33, NO_LED }
+}, {
+ { 85, 16 }, { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 }, { 95, 63 },
+ { 85, 39 }, { 85, 21 }, { 85, 4 }, { 68, 2 }, { 68, 19 }, { 68, 37 }, { 80, 58 },
+ { 60, 55 }, { 50, 35 }, { 50, 13 }, { 50, 0 }, { 33, 3 }, { 33, 20 }, { 33, 37 },
+ { 16, 42 }, { 16, 24 }, { 16, 7 }, { 0, 7 }, { 0, 24 }, { 0, 41 }, { 139, 16 },
+ { 174, 13 }, { 208, 20 }, { 208, 38 }, { 174, 48 }, { 139, 52 }, { 129, 63 }, { 139, 39 },
+ { 139, 21 }, { 139, 4 }, { 156, 2 }, { 156, 19 }, { 156, 37 }, { 144, 58 }, { 164, 55 },
+ { 174, 35 }, { 174, 13 }, { 174, 0 }, { 191, 3 }, { 191, 20 }, { 191, 37 }, { 208, 42 },
+ { 208, 24 }, { 208, 7 }, { 224, 7 }, { 224, 24 }, { 224, 41 }
+}, {
+ 2, 2, 2, 2, 2, 2, 1,
+ 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 1, 4,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1
+} };
#endif
#endif
diff --git a/keyboards/doro67/multi/keymaps/default/readme.md b/keyboards/doro67/multi/keymaps/default/readme.md
index 6e63cde3a..9b9136b34 100644
--- a/keyboards/doro67/multi/keymaps/default/readme.md
+++ b/keyboards/doro67/multi/keymaps/default/readme.md
@@ -1,5 +1,12 @@
# Default Doro67 ANSI layout.
+**THIS IS THE DEFAULT ANSI KEYMAP (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "multi" directory includes keymaps for the multi-layout PCB, which supports ANSI, ISO, and multi (split backspace & non-blocker).
+The keymap you choose from the "multi" directory must correspond to the integrated plate option you chose.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased an RGB PCB, please see the 'rgb' directory.
+
This is the default ANSI layout that comes flashed on the Doro67 multi PCB with
the exception of adding backtick as it was not mapped.
diff --git a/keyboards/doro67/multi/keymaps/default_iso/readme.md b/keyboards/doro67/multi/keymaps/default_iso/readme.md
index d375f0cc5..4b3d2ba4a 100644
--- a/keyboards/doro67/multi/keymaps/default_iso/readme.md
+++ b/keyboards/doro67/multi/keymaps/default_iso/readme.md
@@ -1,5 +1,12 @@
# Default Doro67 ISO layout.
+**THIS IS THE DEFAULT ISO KEYMAP (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "multi" directory includes keymaps for the multi-layout PCB, which supports ANSI, ISO, and multi (split backspace & non-blocker).
+The keymap you choose from the "multi" directory must correspond to the integrated plate option you chose.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased an RGB PCB, please see the 'rgb' directory.
+
This is the default ISO layout that comes flashed on the Doro67 multi PCB with
the exception of adding backtick and UK ISO specific keycodes as they were not mapped.
diff --git a/keyboards/doro67/multi/keymaps/default_multi/readme.md b/keyboards/doro67/multi/keymaps/default_multi/readme.md
index e32f820c2..5761c006b 100644
--- a/keyboards/doro67/multi/keymaps/default_multi/readme.md
+++ b/keyboards/doro67/multi/keymaps/default_multi/readme.md
@@ -1,5 +1,12 @@
# Default Doro67 Multi layout.
+**THIS IS THE DEFAULT MULTI-LAYOUT (SPLIT BACKSPACE) KEYMAP (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "multi" directory includes keymaps for the multi-layout PCB, which supports ANSI, ISO, and multi (split backspace & non-blocker).
+The keymap you choose from the "multi" directory must correspond to the integrated plate option you chose.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased an RGB PCB, please see the 'rgb' directory.
+
This is the default Multi layout that comes flashed on the Doro67 multi PCB with
the exception of adding backtick as it was not mapped.
diff --git a/keyboards/doro67/multi/readme.md b/keyboards/doro67/multi/readme.md
index ac1484cd7..80465c3ac 100644
--- a/keyboards/doro67/multi/readme.md
+++ b/keyboards/doro67/multi/readme.md
@@ -1,9 +1,13 @@
-Doro67 Multi PCB
-===
+# Doro67 Multi PCB
-A custom 65% keyboard with multiple layout support.
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios with multiple layout support. Despite the layout options available, layout is dictated by the selected integrated plate.
-Do not flash RGB firmware for this board.
+**MULTI-LAYOUT PCB (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "multi" directory includes keymaps for the multi-layout PCB, which supports ANSI, ISO, and multi (split backspace & non-blocker).
+The keymap you choose from the "multi" directory must correspond to the integrated plate option you chose.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased an RGB PCB, please see the 'rgb' directory.
Keyboard Maintainer: [ShadeDream](https://github.com/shadedream)
Hardware Supported: Doro67 Multi PCB
diff --git a/keyboards/doro67/readme.md b/keyboards/doro67/readme.md
index e69de29bb..1648fbde5 100644
--- a/keyboards/doro67/readme.md
+++ b/keyboards/doro67/readme.md
@@ -0,0 +1,12 @@
+# Doro67
+
+The Doro67 is a 65% USB C, integrated plate keyboard with blocker based on the M65-a by Keyclack/Rama.
+
+The [Group Buy](https://geekhack.org/index.php?topic=97265.0) was run by 80ultraman in coordination with Alf for machining and Backprop Studios for PCB design.
+
+There were 3 different PCBs available for this group buy.
+## **Please be aware of which PCB you own and flash the correct firmware on it.**
+
+**Regular:** PCB made for the China GB which only had 1 layout.
+**Multi:** PCB made for the international GB comprising of multiple layouts. While several layouts were possible, layout was determined by the integrated plate layout chosen by the customer.
+**RGB:** PCB made for the international GB which had an identical switch matrix and layout to the regular PCB, with the addition of per key RGB LEDs. \ No newline at end of file
diff --git a/keyboards/doro67/regular/config.h b/keyboards/doro67/regular/config.h
index 9ba591cdd..8c5c670da 100644
--- a/keyboards/doro67/regular/config.h
+++ b/keyboards/doro67/regular/config.h
@@ -6,8 +6,8 @@
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER 80ultraman
-#define PRODUCT doro67
+#define MANUFACTURER Backprop Studio
+#define PRODUCT Doro67 Regular PCB
#define DESCRIPTION 65% custom keyboard
/* key matrix size */
diff --git a/keyboards/doro67/regular/keymaps/default/readme.md b/keyboards/doro67/regular/keymaps/default/readme.md
index 7443a357f..0af057d78 100644
--- a/keyboards/doro67/regular/keymaps/default/readme.md
+++ b/keyboards/doro67/regular/keymaps/default/readme.md
@@ -1 +1,5 @@
# The default keymap for doro67
+
+**THIS IS THE DEFAULT KEYMAP DIRECTORY (AVAILABILITY: CHINA GB ONLY)**
+If you are a non-china buyer, you probably have the multi PCB or rgb PCB.
+Please look at the "multi" and "rgb" readme files. \ No newline at end of file
diff --git a/keyboards/doro67/regular/readme.md b/keyboards/doro67/regular/readme.md
index 71d27ceb5..e2ef7bc64 100644
--- a/keyboards/doro67/regular/readme.md
+++ b/keyboards/doro67/regular/readme.md
@@ -1,8 +1,12 @@
-# Regular PCB for the Doro67
+# Doro67 Regular PCB
-Regular PCB for the Doro67 having ONLY one layout. This is not the PCB with RGB support.
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios available during the China Group Buy.
-Do not flash RGB firmware for this board.
+This is not the PCB with RGB support. Do not flash RGB firmware for this board.
+
+**REGULAR PCB (AVAILABILITY: CHINA GB ONLY)*
+If you are a non-china buyer, you probably have the multi PCB or rgb PCB.
+Please look at the "multi" and "rgb" readme files.
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
Hardware Supported: Doro67 Regular PCB
diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h
new file mode 100644
index 000000000..87a30e084
--- /dev/null
+++ b/keyboards/doro67/rgb/config.h
@@ -0,0 +1,71 @@
+/*
+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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Backprop Studio
+#define PRODUCT Doro67 RGB PCB
+#define DESCRIPTION 65% custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, D4, D6, D7, B4, B5, B6, C6, C7, F5, F6, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN B7
+// The number of LEDs connected
+#define DRIVER_LED_TOTAL 67
+
+#define RGB_MATRIX_KEYPRESSES
+
+/*
+ * 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 RGBLED_NUM 67
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json
new file mode 100644
index 000000000..2d9b79a23
--- /dev/null
+++ b/keyboards/doro67/rgb/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Doro 67 RGB",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 67,
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":1, "y":0},
+ {"label":"K02", "x":2, "y":0},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0},
+ {"label":"K05", "x":5, "y":0},
+ {"label":"K06", "x":6, "y":0},
+ {"label":"K07", "x":7, "y":0},
+ {"label":"K08", "x":8, "y":0},
+ {"label":"K09", "x":9, "y":0},
+ {"label":"K0A", "x":10, "y":0},
+ {"label":"K0B", "x":11, "y":0},
+ {"label":"K0C", "x":12, "y":0},
+ {"label":"K0D", "x":13, "y":0, "w":2},
+ {"label":"K0E", "x":15, "y":0},
+ {"label":"K10", "x":0, "y":1, "w":1.5},
+ {"label":"K11", "x":1.5, "y":1},
+ {"label":"K12", "x":2.5, "y":1},
+ {"label":"K13", "x":3.5, "y":1},
+ {"label":"K14", "x":4.5, "y":1},
+ {"label":"K15", "x":5.5, "y":1},
+ {"label":"K16", "x":6.5, "y":1},
+ {"label":"K17", "x":7.5, "y":1},
+ {"label":"K18", "x":8.5, "y":1},
+ {"label":"K19", "x":9.5, "y":1},
+ {"label":"K1A", "x":10.5, "y":1},
+ {"label":"K1B", "x":11.5, "y":1},
+ {"label":"K1C", "x":12.5, "y":1},
+ {"label":"K1D", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E", "x":15, "y":1},
+ {"label":"K20", "x":0, "y":2, "w":1.75},
+ {"label":"K21", "x":1.75, "y":2},
+ {"label":"K22", "x":2.75, "y":2},
+ {"label":"K23", "x":3.75, "y":2},
+ {"label":"K24", "x":4.75, "y":2},
+ {"label":"K25", "x":5.75, "y":2},
+ {"label":"K26", "x":6.75, "y":2},
+ {"label":"K27", "x":7.75, "y":2},
+ {"label":"K28", "x":8.75, "y":2},
+ {"label":"K29", "x":9.75, "y":2},
+ {"label":"K2A", "x":10.75, "y":2},
+ {"label":"K2B", "x":11.75, "y":2},
+ {"label":"K2D", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2E", "x":15, "y":2},
+ {"label":"K30", "x":0, "y":3, "w":2.25},
+ {"label":"K32", "x":2.25, "y":3},
+ {"label":"K33", "x":3.25, "y":3},
+ {"label":"K34", "x":4.25, "y":3},
+ {"label":"K35", "x":5.25, "y":3},
+ {"label":"K36", "x":6.25, "y":3},
+ {"label":"K37", "x":7.25, "y":3},
+ {"label":"K38", "x":8.25, "y":3},
+ {"label":"K39", "x":9.25, "y":3},
+ {"label":"K3A", "x":10.25, "y":3},
+ {"label":"K3B", "x":11.25, "y":3},
+ {"label":"K3C", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3D", "x":14, "y":3},
+ {"label":"K3E", "x":15, "y":3},
+ {"label":"K40", "x":0, "y":4, "w":1.25},
+ {"label":"K41", "x":1.25, "y":4, "w":1.25},
+ {"label":"K42", "x":2.5, "y":4, "w":1.25},
+ {"label":"K43", "x":3.75, "y":4, "w":6.25},
+ {"label":"K49", "x":10, "y":4, "w":1.25},
+ {"label":"K4A", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4C", "x":13, "y":4},
+ {"label":"K4D", "x":14, "y":4},
+ {"label":"K4E", "x":15, "y":4}
+ ]
+ }
+ }
+ }
+ \ No newline at end of file
diff --git a/keyboards/doro67/rgb/keymaps/default/config.h b/keyboards/doro67/rgb/keymaps/default/config.h
new file mode 100644
index 000000000..26c6d6ade
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/doro67/rgb/keymaps/default/keymap.c b/keyboards/doro67/rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000..d02665ae7
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/keymap.c
@@ -0,0 +1,62 @@
+/* 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
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(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_TRNS, KC_TRNS, \
+ QMKBEST, QMKURL, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/doro67/rgb/keymaps/default/readme.md b/keyboards/doro67/rgb/keymaps/default/readme.md
new file mode 100644
index 000000000..eb5c49419
--- /dev/null
+++ b/keyboards/doro67/rgb/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for rgb
+
+**RGB PCB (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "rgb" directory includes the keymap for the RGB PCB.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased a non-rgb PCB, please see the 'multi' directory. \ No newline at end of file
diff --git a/keyboards/doro67/rgb/readme.md b/keyboards/doro67/rgb/readme.md
new file mode 100644
index 000000000..61c82d0d1
--- /dev/null
+++ b/keyboards/doro67/rgb/readme.md
@@ -0,0 +1,23 @@
+# Doro67 RGB PCB
+
+65% custom keyboard made by 80ultraman/Alf/Backprop Studios with in switch RGB featuring the same switch matrix and layout as the regular PCB.
+
+Flashing the regular PCB firmware on this board will work, but will disable RGB lighting.
+
+**THIS IS THE RGB PCB DIRECTORY (AVAILABILITY: CHINA + INTERNATIONAL GB)**
+The "rgb" directory includes the keymap for the RGB PCB.
+
+The multi-layout PCB and RGB pcb were the only two options available to NON-china buyers.
+If you purchased a non-rgb PCB, please see the 'multi' directory.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: Doro 67 RGB PCB
+Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=97265.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make doro67/rgb:default
+
+**RGB Note:** The WS2812 string of LEDs starts from the `K00` key connected to pin `B7` and is connected from left to right, top to bottom, following the physical layout of the board.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/doro67/rgb/rgb.c b/keyboards/doro67/rgb/rgb.c
new file mode 100644
index 000000000..e8c9ac632
--- /dev/null
+++ b/keyboards/doro67/rgb/rgb.c
@@ -0,0 +1,84 @@
+/* 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 "rgb.h"
+#include "rgb_matrix_types.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.
+
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ setPinOutput(E6);
+ 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
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ writePinLow(E6);
+ } else {
+ writePinHigh(E6);
+ }
+ led_set_user(usb_led);
+}
+
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 },
+ { 44, NO_LED, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
+ { 58, 59, 60, 61, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 62, 63, NO_LED, 64, 65, 66 }
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Ins
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, { 225, 0 },
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , Del
+ { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, { 225, 16 },
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Pgup
+ { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, { 225, 32 },
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Pgdn
+ { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 }, { 225, 48 },
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Ins
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , Del
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Pgup
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Pgdn
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
+} };
diff --git a/keyboards/doro67/rgb/rgb.h b/keyboards/doro67/rgb/rgb.h
new file mode 100644
index 000000000..aafba11d0
--- /dev/null
+++ b/keyboards/doro67/rgb/rgb.h
@@ -0,0 +1,41 @@
+/* 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
+
+#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( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k49, k4A, k4C, k4D, k4E \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, k2E }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4A, KC_NO, k4C, k4D, k4E }, \
+}
diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk
new file mode 100644
index 000000000..6438868dc
--- /dev/null
+++ b/keyboards/doro67/rgb/rules.mk
@@ -0,0 +1,83 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+RGB_MATRIX_ENABLE = WS2812
+
+
+# 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)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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 (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/duck/eagle_viper/readme.md b/keyboards/duck/eagle_viper/readme.md
index 3fec11bc0..63623940b 100644
--- a/keyboards/duck/eagle_viper/readme.md
+++ b/keyboards/duck/eagle_viper/readme.md
@@ -2,10 +2,6 @@
Non official firmware for custom Korean keyboard with 60% key layout made by Duck.
-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.
-
Newest version is the [Eagle/Viper V2](http://duck0113.tistory.com/127)
-Make example for this keyboard (after setting up your build environment):
-
- make duck/eagle_viper/v2:default
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/duck/eagle_viper/v2/matrix.c b/keyboards/duck/eagle_viper/v2/matrix.c
index a6bc56342..b705ae49f 100644
--- a/keyboards/duck/eagle_viper/v2/matrix.c
+++ b/keyboards/duck/eagle_viper/v2/matrix.c
@@ -123,31 +123,27 @@ void matrix_print(void) {
}
}
-/* Row pin configuration
- * row: 0 1 2 3 4 5
- * pin: PB7 PD0 PD1 PD2 PD3 PD5
+/* Row pin configuration - diode connected
+ * row: 0 1 2 3 4
+ * pin: PD0 PD1 PD2 PD3 PD5
*
- * Esc uses its own pin PE2
+ * Caps Lock uses its own pin PE2 on the column pin, row pin is grounded
*/
static void init_rows(void) {
DDRD &= ~0b00101111;
PORTD &= ~0b00101111;
- DDRB &= ~0b10000000;
- PORTB &= ~0b10000000;
-
DDRE &= ~0b00000100;
PORTE |= 0b00000100;
}
static uint8_t read_rows(uint8_t col) {
- return (PIND&(1<<0) ? (1<<0) : 0) |
+ return (PIND&(1<<0) ? (1<<0) : 0) |
(PIND&(1<<1) ? (1<<1) : 0) |
(PIND&(1<<2) ? (1<<2) : 0) |
(PIND&(1<<3) ? (1<<3) : 0) |
(PIND&(1<<5) ? (1<<4) : 0) |
- (PINB&(1<<7) ? (1<<5) : 0) |
(col==0 ? ((PINE&(1<<2) ? 0 : (1<<2))) : 0);
}
@@ -158,24 +154,31 @@ uint8_t read_fwkey(void)
}
/* Columns 0 - 15
+ *
+ * atmega32u4 decoder pin
+ * PC6 U1 E3
+ * PB6 U2 E3
+ * PF0 U1, U2 A0
+ * PF1 U1, U2 A1
+ * PC7 U1, U2 A2
+ *
* These columns uses two 74HC237D 3 to 8 bit demultiplexers.
- * col / pin: PC6 PB6 PF0 PF1 PC7
- * 0: 1 0 0 0 0
- * 1: 1 0 1 0 0
- * 2: 1 0 0 1 0
- * 3: 1 0 1 1 0
- * 4: 1 0 0 0 1
- * 5: 1 0 1 0 1
- * 6: 1 0 0 1 1
- * 7: 1 0 1 1 1
- * 8: 0 1 0 0 0
- * 9: 0 1 1 0 0
- * 10: 0 1 0 1 0
- * 11: 0 1 1 1 0
- * 12: 0 1 0 0 1
- * 13: 0 1 1 0 1
- * 14: 0 1 0 1 1
- * 15: 0 1 1 1 1
+ * col / pin: PC6 PB6 PF0 PF1 PC7 Decoder Pin
+ * 0: 1 0 0 0 0 U1 Y0
+ * 1: 1 0 1 0 0 U1 Y1
+ * 2: 1 0 0 1 0 U1 Y2
+ * 3: 1 0 1 1 0 U1 Y3
+ * 4: 1 0 0 0 1 U1 Y4
+ * 5: 1 0 1 0 1 U1 Y5
+ * 6: 1 0 0 1 1 U1 Y6
+ * 7: 1 0 1 1 1 U1 Y7
+ * 8: 0 1 0 0 0 U2 Y0
+ * 9: 0 1 1 0 0 U2 Y1
+ * 10: 0 1 0 1 0 U2 Y2
+ * 11: 0 1 1 1 0 U2 Y3
+ * 12: 0 1 0 0 1 U2 Y4
+ * 13: 0 1 1 0 1 U2 Y5
+ * 14: 0 1 0 1 1 U2 Y6
*
*/
static void unselect_cols(void) {
@@ -251,10 +254,5 @@ static void select_col(uint8_t col) {
PORTF |= 0b00000010;
PORTC |= 0b10000000;
break;
- case 15:
- PORTB |= 0b01000000;
- PORTF |= 0b00000011;
- PORTC |= 0b10000000;
- break;
}
}
diff --git a/keyboards/duck/eagle_viper/v2/readme.md b/keyboards/duck/eagle_viper/v2/readme.md
index 31f70b93b..2dca0b5b7 100644
--- a/keyboards/duck/eagle_viper/v2/readme.md
+++ b/keyboards/duck/eagle_viper/v2/readme.md
@@ -13,7 +13,7 @@ Make example for this keyboard (after setting up your build environment):
**Reset Key:** To put the Eagle/Viper V2 into reset, hold caps lock key (`K2A`) while plugging in.
-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).
## Hardware Notes
diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h
index 202bd1db4..e6045be43 100644
--- a/keyboards/dz60/dz60.h
+++ b/keyboards/dz60/dz60.h
@@ -386,4 +386,31 @@
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4b, KC_NO, k4d, k4e } \
}
+/* LAYOUT_60_iso_split_space_bs_rshift
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐2d │
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │1e │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
+ * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ * │40 │41 │43 │44 │46 │48 │4a │4b │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘
+*/
+#define LAYOUT_60_iso_split_space_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
+ k40, k41, k43, k44, k46, k48, k4a, k4b, k4c, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
+ { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO,k3d, k3e }, \
+ { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \
+}
+
#endif
diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json
index 6a3023496..1eb2d6c8c 100644
--- a/keyboards/dz60/info.json
+++ b/keyboards/dz60/info.json
@@ -60,6 +60,10 @@
"LAYOUT_60_tsangan_hhkb": {
"key_count": 62,
"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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Win", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
+ },
+ "LAYOUT_60_iso_split_space_bs_rshift": {
+ "key_count": 66,
+ "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":"Del", "x":13, "y":0, "w":1}, {"label":"Backspace", "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":"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}, {"label":"Print screen", "x":14, "y":3, "w":1}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"label":"FN", "x":6.00, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"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/dz60/keymaps/billiams/readme.md b/keyboards/dz60/keymaps/billiams/readme.md
index a5ecb71f5..32d39be68 100644
--- a/keyboards/dz60/keymaps/billiams/readme.md
+++ b/keyboards/dz60/keymaps/billiams/readme.md
@@ -12,7 +12,6 @@ Settings:
* RESET is available as `Fn`+ ` ESC`
* Underglow toggle and mode selection are available as `Fn` + `Q` and `Fn` + `S`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus!
-
### 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.
diff --git a/keyboards/dz60/keymaps/macos_64/config.h b/keyboards/dz60/keymaps/macos_64/config.h
new file mode 100644
index 000000000..235ae1b2d
--- /dev/null
+++ b/keyboards/dz60/keymaps/macos_64/config.h
@@ -0,0 +1,9 @@
+#ifndef CONFIG_KEYMAP_H
+#define CONFIG_KEYMAP_H
+
+#include "../../config.h"
+
+// Fix KC_GESC conflict with Cmd+Alt+Esc on macos
+#define GRAVE_ESC_GUI_OVERRIDE
+
+#endif \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/macos_64/keymap.c b/keyboards/dz60/keymaps/macos_64/keymap.c
new file mode 100644
index 000000000..fd19bfe14
--- /dev/null
+++ b/keyboards/dz60/keymaps/macos_64/keymap.c
@@ -0,0 +1,42 @@
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* ,-----------------------------------------------------------------------------------------.
+ * | 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| Up |Delete|
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Cmd | Space | Fn | Alt | Left| Down|Right|
+ * `-----------------------------------------------------------------------------------------'
+ */
+ LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_UP, KC_DELETE,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_NO, MO(1), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ /* ,-----------------------------------------------------------------------------------------.
+ * | ` ~ | BR- | BR+ | | | | |PREV |PLAY |NEXT |MUTE | V- | V+ | Delete |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | Up | | | | | 0 | 1 | 2 | 3 | | RESET |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | Left| Down|Right| | | | | 4 | 5 | 6 | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | | | 7 | 8 | 9 | | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ LAYOUT_all(
+ KC_GRV , KC_SCROLLLOCK, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_NO, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/dz60/keymaps/macos_64/readme.md b/keyboards/dz60/keymaps/macos_64/readme.md
new file mode 100644
index 000000000..c559c2b38
--- /dev/null
+++ b/keyboards/dz60/keymaps/macos_64/readme.md
@@ -0,0 +1,45 @@
+# MacOS 64 keymap
+
+This is a keymap of DZ60 configured with 64 keys for MacOS. It refers the keymap of [macos_arrow](../macos_arrow/readme.md).
+
+## How to use
+
+1. Follow the [introduction](https://docs.qmk.fm/#/) to compile the keymap
+2. Download QMK Toolbox from [here](https://github.com/qmk/qmk_toolbox/releases)
+3. Insert the dz60 keyboard while pressing ```Space+b``` (default)
+4. Flash the firmware
+
+More details about flashing firmware please check the [documentation](https://docs.qmk.fm/#/) of QMK.
+
+## Base Layer
+
+```
+,-----------------------------------------------------------------------------------------.
+| 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| Up |Delete|
+|-----------------------------------------------------------------------------------------+
+| Ctrl | Alt | Cmd | Space | Fn | Alt | Left| Down|Right|
+`-----------------------------------------------------------------------------------------'
+```
+
+## Fn Layer
+
+```
+,-----------------------------------------------------------------------------------------.
+| ` ~ | BR- | BR+ | | | | |PREV |PLAY |NEXT |MUTE | V- | V+ | Delete |
+|-----------------------------------------------------------------------------------------+
+| | | | Up | | | | | 0 | 1 | 2 | 3 | | RESET |
+|-----------------------------------------------------------------------------------------+
+| | | Left| Down|Right| | | | | 4 | 5 | 6 | |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | | | | 7 | 8 | 9 | | |
+|-----------------------------------------------------------------------------------------+
+| | | | | | | | | |
+`-----------------------------------------------------------------------------------------'
+
+```
diff --git a/keyboards/ergodash/rev2/rules.mk b/keyboards/dz60/keymaps/macos_64/rules.mk
index b6c9a2580..e1cfb3e50 100644
--- a/keyboards/ergodash/rev2/rules.mk
+++ b/keyboards/dz60/keymaps/macos_64/rules.mk
@@ -1,2 +1,2 @@
BACKLIGHT_ENABLE = no
-RGBLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/macos_arrow/keymap.c b/keyboards/dz60/keymaps/macos_arrow/keymap.c
index 81d61a59a..0675a7954 100644
--- a/keyboards/dz60/keymaps/macos_arrow/keymap.c
+++ b/keyboards/dz60/keymaps/macos_arrow/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | | Up |Shift|
* |-----------------------------------------------------------------------------------------+
- * | Ctrl | Alt | Gui | Space / _NL |Gui/_ML| Alt | Left| Down|Right|
+ * | Ctrl | Alt | Gui | Space |Gui/_ML| Alt | Left| Down|Right|
* `-----------------------------------------------------------------------------------------'
*/
[_BL] = LAYOUT_all(
@@ -30,25 +30,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
LT(_FL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_A, KC_UP, KC_RSFT,
- KC_LCTL, KC_LALT, KC_LGUI, KC_NO, LT(_NL, KC_SPC), KC_NO, LM(_ML, MOD_RGUI), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_NO, LM(_ML, MOD_RGUI), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
/* ,-----------------------------------------------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | |PgUp | | | | | | |
+ * | | | | PgUp| | | | | Up | | | | | |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | Left| Down| Up |Right| | | |
+ * | | |Home |PgDwn| End | | | Left| Down|Right| | | |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | |PgDwn| | | | | | |
+ * | | | | | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
* | | | | | | | | | |
* `-----------------------------------------------------------------------------------------'
*/
[_FL] = LAYOUT_all(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_DEL,
- _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
- _______, KC_NO, _______, _______, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______,
+ _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
/* ,-----------------------------------------------------------------------------------------.
@@ -64,30 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------'
*/
[_ML] = LAYOUT_all(
- KC_MEDIA_EJECT, BR_DOWN, BR_UP, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_NO, _______,
+ KC_MEDIA_EJECT, BR_DOWN, BR_UP, BL_TOGG, RGB_TOG, _______, _______, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_NO, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- /* ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | % | ( | ) | < | > | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | * | 0 | 1 | 2 | 3 | | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | . | - | 4 | 5 | 6 | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | , | = | 7 | 8 | 9 | | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | | |
- * `-----------------------------------------------------------------------------------------'
- */
- [_NL] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, KC_PERCENT, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LEFT_ANGLE_BRACKET, KC_RIGHT_ANGLE_BRACKET, KC_NO, _______,
- _______, _______, _______, _______, _______, _______, _______, KC_ASTERISK, KC_0, KC_1, KC_2, KC_3, _______, RESET,
- _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_MINS, KC_4, KC_5, KC_6, _______,
- _______, KC_NO, _______, _______, _______, _______, _______, _______, KC_COMMA, KC_EQL, KC_7, KC_8, KC_9, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, BL_INC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_MODE_REVERSE, BL_DEC, RGB_MODE_FORWARD),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/dz60/keymaps/macos_arrow/rules.mk b/keyboards/dz60/keymaps/macos_arrow/rules.mk
index e1cfb3e50..1572f18c7 100644
--- a/keyboards/dz60/keymaps/macos_arrow/rules.mk
+++ b/keyboards/dz60/keymaps/macos_arrow/rules.mk
@@ -1,2 +1,2 @@
-BACKLIGHT_ENABLE = no
-RGBLIGHT_ENABLE = no \ No newline at end of file
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/olligranlund_iso/keymap.c b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c
new file mode 100644
index 000000000..5b8047013
--- /dev/null
+++ b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c
@@ -0,0 +1,38 @@
+#include QMK_KEYBOARD_H
+
+/* ISO 60 layout by olligranlund
+*
+* This layout starts from a standard ISO 60% layout, and adds one function layer.
+* If you wish to only have one wide spacebar, you can easily do that by dismissing the "side" spacebar switches.
+*
+* Default Layer
+* ,-----------------------------------------------------------------------------------------.
+* | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Del | BSPC|
+* |-----------------------------------------------------------------------------------------|
+* | Tab | Q | W | E | R | T | Y | U | I | O | P | Ä | + * | Enter |
+* |---------------------------------------------------------------------------------- |
+* | FN | A | S | D | F | G | H | J | K | L | Ö | Ü | # ' | |
+* |-----------------------------------------------------------------------------------------|
+* | Shift | < > | Z | X | C | V | B | N | M | , ; | . : | - _ | Shift |Shift|
+* |-----------------------------------------------------------------------------------------|
+* | LCtl | LGUI | LAlt | Space | Space | Space | RAlt | FN | App | RCtl |
+* `-----------------------------------------------------------------------------------------'
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT_60_iso_split_space_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ 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_BSLS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_PSCR,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL),
+
+ LAYOUT_60_iso_split_space_bs_rshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
+ KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGDOWN,KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL),
+
+};
diff --git a/keyboards/dz60/keymaps/olligranlund_iso/readme.md b/keyboards/dz60/keymaps/olligranlund_iso/readme.md
new file mode 100644
index 000000000..6aa4007d3
--- /dev/null
+++ b/keyboards/dz60/keymaps/olligranlund_iso/readme.md
@@ -0,0 +1,6 @@
+# DZ60 with splitted parts
+### by Oliver Granlund
+
+![Finished product](https://i.imgur.com/HlEo5Yg.jpg)
+
+This is still under progress, but currently works on Windows as a daily driver. \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/zepol_layout/keymap.c b/keyboards/dz60/keymaps/zepol_layout/keymap.c
new file mode 100644
index 000000000..4caf83b67
--- /dev/null
+++ b/keyboards/dz60/keymaps/zepol_layout/keymap.c
@@ -0,0 +1,25 @@
+#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_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_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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), 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, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_SCROLLLOCK, KC_PAUSE, KC_HOME, KC_END, KC_INSERT, 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),
+
+ LAYOUT(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.h b/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.h
deleted file mode 100644
index 988e6af34..000000000
--- a/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.h
+++ /dev/null
@@ -1,1187 +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.
-*/
-
-#ifndef _BOARD_H_
-#define _BOARD_H_
-
-/*
- * Setup for Clueboard 60% Keyboard
- */
-
-/*
- * Board identifier.
- */
-#define BOARD_GENERIC_STM32_F303XC
-#define BOARD_NAME "DZ60RGB PCB"
-
-/*
- * Board oscillators-related settings.
- * NOTE: LSE not fitted.
- */
-#if !defined(STM32_LSECLK)
-#define STM32_LSECLK 0U
-#endif
-
-#define STM32_LSEDRV (3U << 3U)
-
-#if !defined(STM32_HSECLK)
-#define STM32_HSECLK 8000000U
-#endif
-
-// #define STM32_HSE_BYPASS
-
-/*
- * MCU type as defined in the ST header.
- */
-#define STM32F303xC
-
-/*
- * IO pins assignments.
- */
-#define GPIOA_PIN0 0U
-#define GPIOA_PIN1 1U
-#define GPIOA_PIN2 2U
-#define GPIOA_PIN3 3U
-#define GPIOA_PIN4 4U
-#define GPIOA_PIN5 5U
-#define GPIOA_PIN6 6U
-#define GPIOA_PIN7 7U
-#define GPIOA_PIN8 8U
-#define GPIOA_PIN9 9U
-#define GPIOA_PIN10 10U
-#define GPIOA_USB_DM 11U
-#define GPIOA_USB_DP 12U
-#define GPIOA_SWDIO 13U
-#define GPIOA_SWCLK 14U
-#define GPIOA_PIN15 15U
-
-#define GPIOB_PIN0 0U
-#define GPIOB_PIN1 1U
-#define GPIOB_PIN2 2U
-#define GPIOB_PIN3 3U
-#define GPIOB_PIN4 4U
-#define GPIOB_PIN5 5U
-#define GPIOB_PIN6 6U
-#define GPIOB_PIN7 7U
-#define GPIOB_PIN8 8U
-#define GPIOB_PIN9 9U
-#define GPIOB_PIN10 10U
-#define GPIOB_PIN11 11U
-#define GPIOB_PIN12 12U
-#define GPIOB_PIN13 13U
-#define GPIOB_PIN14 14U
-#define GPIOB_PIN15 15U
-
-#define GPIOC_PIN0 0U
-#define GPIOC_PIN1 1U
-#define GPIOC_PIN2 2U
-#define GPIOC_PIN3 3U
-#define GPIOC_PIN4 4U
-#define GPIOC_PIN5 5U
-#define GPIOC_PIN6 6U
-#define GPIOC_PIN7 7U
-#define GPIOC_PIN8 8U
-#define GPIOC_PIN9 9U
-#define GPIOC_PIN10 10U
-#define GPIOC_PIN11 11U
-#define GPIOC_PIN12 12U
-#define GPIOC_PIN13 13U
-#define GPIOC_PIN14 14U
-#define GPIOC_PIN15 15U
-
-#define GPIOD_PIN0 0U
-#define GPIOD_PIN1 1U
-#define GPIOD_PIN2 2U
-#define GPIOD_PIN3 3U
-#define GPIOD_PIN4 4U
-#define GPIOD_PIN5 5U
-#define GPIOD_PIN6 6U
-#define GPIOD_PIN7 7U
-#define GPIOD_PIN8 8U
-#define GPIOD_PIN9 9U
-#define GPIOD_PIN10 10U
-#define GPIOD_PIN11 11U
-#define GPIOD_PIN12 12U
-#define GPIOD_PIN13 13U
-#define GPIOD_PIN14 14U
-#define GPIOD_PIN15 15U
-
-#define GPIOE_PIN0 0U
-#define GPIOE_PIN1 1U
-#define GPIOE_PIN2 2U
-#define GPIOE_PIN3 3U
-#define GPIOE_PIN4 4U
-#define GPIOE_PIN5 5U
-#define GPIOE_PIN6 6U
-#define GPIOE_PIN7 7U
-#define GPIOE_PIN8 8U
-#define GPIOE_PIN9 9U
-#define GPIOE_PIN10 10U
-#define GPIOE_PIN11 11U
-#define GPIOE_PIN12 12U
-#define GPIOE_PIN13 13U
-#define GPIOE_PIN14 14U
-#define GPIOE_PIN15 15U
-
-#define GPIOF_I2C2_SDA 0U
-#define GPIOF_I2C2_SCL 1U
-#define GPIOF_PIN2 2U
-#define GPIOF_PIN3 3U
-#define GPIOF_PIN4 4U
-#define GPIOF_PIN5 5U
-#define GPIOF_PIN6 6U
-#define GPIOF_PIN7 7U
-#define GPIOF_PIN8 8U
-#define GPIOF_PIN9 9U
-#define GPIOF_PIN10 10U
-#define GPIOF_PIN11 11U
-#define GPIOF_PIN12 12U
-#define GPIOF_PIN13 13U
-#define GPIOF_PIN14 14U
-#define GPIOF_PIN15 15U
-
-#define GPIOG_PIN0 0U
-#define GPIOG_PIN1 1U
-#define GPIOG_PIN2 2U
-#define GPIOG_PIN3 3U
-#define GPIOG_PIN4 4U
-#define GPIOG_PIN5 5U
-#define GPIOG_PIN6 6U
-#define GPIOG_PIN7 7U
-#define GPIOG_PIN8 8U
-#define GPIOG_PIN9 9U
-#define GPIOG_PIN10 10U
-#define GPIOG_PIN11 11U
-#define GPIOG_PIN12 12U
-#define GPIOG_PIN13 13U
-#define GPIOG_PIN14 14U
-#define GPIOG_PIN15 15U
-
-#define GPIOH_PIN0 0U
-#define GPIOH_PIN1 1U
-#define GPIOH_PIN2 2U
-#define GPIOH_PIN3 3U
-#define GPIOH_PIN4 4U
-#define GPIOH_PIN5 5U
-#define GPIOH_PIN6 6U
-#define GPIOH_PIN7 7U
-#define GPIOH_PIN8 8U
-#define GPIOH_PIN9 9U
-#define GPIOH_PIN10 10U
-#define GPIOH_PIN11 11U
-#define GPIOH_PIN12 12U
-#define GPIOH_PIN13 13U
-#define GPIOH_PIN14 14U
-#define GPIOH_PIN15 15U
-
-/*
- * IO lines assignments.
- */
-#define LINE_L3GD20_SDI PAL_LINE(GPIOA, 7U)
-#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
-#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
-#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
-#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
-
-#define LINE_PIN6 PAL_LINE(GPIOF, 0U)
-#define LINE_PIN7 PAL_LINE(GPIOF, 1U)
-
-#define LINE_CAPS_LOCK PAL_LINE(GPIOB, 7U)
-
-
-/*
- * I/O ports initial setup, this configuration is established soon after reset
- * in the initialization code.
- * Please refer to the STM32 Reference Manual for details.
- */
-#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
-#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
-#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
-#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
-#define PIN_ODR_LOW(n) (0U << (n))
-#define PIN_ODR_HIGH(n) (1U << (n))
-#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
-#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
-#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
-#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
-#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
-#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
-#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
-#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
-#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
-#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
-
-/*
- * GPIOA setup:
- *
- * PA0 - NC
- * PA1 - NC
- * PA2 - COL1
- * PA3 - COL2
- * PA4 - SPEAKER1
- * PA5 - SPEAKER2
- * PA6 - COL3
- * PA7 - COL8
- * PA8 - COL6
- * PA9 - COL7
- * PA10 - ROW5
- * PA11 - USB_DM (alternate 14).
- * PA12 - USB_DP (alternate 14).
- * PA13 - SWDIO (alternate 0).
- * PA14 - SWCLK (alternate 0).
- * PA15 - ROW4
- */
-#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_PIN0) | \
- PIN_MODE_ALTERNATE(GPIOA_PIN1) | \
- PIN_MODE_INPUT(GPIOA_PIN2) | \
- PIN_MODE_INPUT(GPIOA_PIN3) | \
- PIN_MODE_INPUT(GPIOA_PIN4) | \
- PIN_MODE_INPUT(GPIOA_PIN5) | \
- PIN_MODE_INPUT(GPIOA_PIN6) | \
- PIN_MODE_INPUT(GPIOA_PIN7) | \
- PIN_MODE_INPUT(GPIOA_PIN8) | \
- PIN_MODE_INPUT(GPIOA_PIN9) | \
- PIN_MODE_INPUT(GPIOA_PIN10) | \
- PIN_MODE_ALTERNATE(GPIOA_USB_DM) | \
- PIN_MODE_ALTERNATE(GPIOA_USB_DP) | \
- PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
- PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
- PIN_MODE_INPUT(GPIOA_PIN15))
-#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
- PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
- PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
- PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
-#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_PIN0) | \
- PIN_OSPEED_HIGH(GPIOA_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
- PIN_OSPEED_HIGH(GPIOA_USB_DM) | \
- PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \
- PIN_OSPEED_HIGH(GPIOA_SWDIO) | \
- PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
- PIN_OSPEED_VERYLOW(GPIOA_PIN15))
-#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_PIN0) | \
- PIN_PUPDR_FLOATING(GPIOA_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
- PIN_PUPDR_FLOATING(GPIOA_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
- PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
- PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
- PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
- PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
- PIN_PUPDR_PULLUP(GPIOA_PIN15))
-#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_PIN0) | \
- PIN_ODR_HIGH(GPIOA_PIN1) | \
- PIN_ODR_HIGH(GPIOA_PIN2) | \
- PIN_ODR_HIGH(GPIOA_PIN3) | \
- PIN_ODR_HIGH(GPIOA_PIN4) | \
- PIN_ODR_HIGH(GPIOA_PIN5) | \
- PIN_ODR_HIGH(GPIOA_PIN6) | \
- PIN_ODR_HIGH(GPIOA_PIN7) | \
- PIN_ODR_HIGH(GPIOA_PIN8) | \
- PIN_ODR_HIGH(GPIOA_PIN9) | \
- PIN_ODR_HIGH(GPIOA_PIN10) | \
- PIN_ODR_HIGH(GPIOA_USB_DM) | \
- PIN_ODR_HIGH(GPIOA_USB_DP) | \
- PIN_ODR_HIGH(GPIOA_SWDIO) | \
- PIN_ODR_HIGH(GPIOA_SWCLK) | \
- PIN_ODR_HIGH(GPIOA_PIN15))
-#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_PIN0, 0) | \
- PIN_AFIO_AF(GPIOA_PIN1, 1) | \
- PIN_AFIO_AF(GPIOA_PIN2, 0) | \
- PIN_AFIO_AF(GPIOA_PIN3, 0) | \
- PIN_AFIO_AF(GPIOA_PIN4, 0) | \
- PIN_AFIO_AF(GPIOA_PIN5, 5) | \
- PIN_AFIO_AF(GPIOA_PIN6, 5) | \
- PIN_AFIO_AF(GPIOA_PIN7, 5))
-#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0) | \
- PIN_AFIO_AF(GPIOA_PIN9, 0) | \
- PIN_AFIO_AF(GPIOA_PIN10, 0) | \
- PIN_AFIO_AF(GPIOA_USB_DM, 14) | \
- PIN_AFIO_AF(GPIOA_USB_DP, 14) | \
- PIN_AFIO_AF(GPIOA_SWDIO, 0) | \
- PIN_AFIO_AF(GPIOA_SWCLK, 0) | \
- PIN_AFIO_AF(GPIOA_PIN15, 0))
-
-/*
- * GPIOB setup:
- *
- * PB0 - PIN0 (input pullup).
- * PB1 - PIN1 (input pullup).
- * PB2 - PIN2 (input pullup).
- * PB3 - PIN3 (alternate 0).
- * PB4 - PIN4 (input pullup).
- * PB5 - PIN5 (input pullup).
- * PB6 - PIN6 LSM303DLHC_SCL (alternate 4).
- * PB7 - PIN7 LSM303DLHC_SDA (alternate 4).
- * PB8 - PIN8 (input pullup).
- * PB9 - PIN9 (input pullup).
- * PB10 - PIN10 (input pullup).
- * PB11 - PIN11 (input pullup).
- * PB12 - PIN12 (input pullup).
- * PB13 - PIN13 (input pullup).
- * PB14 - PIN14 (input pullup).
- * PB15 - PIN15 (input pullup).
- */
-#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
- PIN_MODE_INPUT(GPIOB_PIN1) | \
- PIN_MODE_INPUT(GPIOB_PIN2) | \
- PIN_MODE_ALTERNATE(GPIOB_PIN3) | \
- PIN_MODE_INPUT(GPIOB_PIN4) | \
- PIN_MODE_INPUT(GPIOB_PIN5) | \
- PIN_MODE_ALTERNATE(GPIOB_PIN6) | \
- PIN_MODE_OUTPUT(GPIOB_PIN7) | \
- PIN_MODE_INPUT(GPIOB_PIN8) | \
- PIN_MODE_INPUT(GPIOB_PIN9) | \
- PIN_MODE_INPUT(GPIOB_PIN10) | \
- PIN_MODE_INPUT(GPIOB_PIN11) | \
- PIN_MODE_INPUT(GPIOB_PIN12) | \
- PIN_MODE_INPUT(GPIOB_PIN13) | \
- PIN_MODE_INPUT(GPIOB_PIN14) | \
- PIN_MODE_INPUT(GPIOB_PIN15))
-#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
- PIN_OTYPE_OPENDRAIN(GPIOB_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOB_PIN15))
-#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN2) | \
- PIN_OSPEED_HIGH(GPIOB_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
- PIN_OSPEED_HIGH(GPIOB_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN13) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN14) | \
- PIN_OSPEED_VERYLOW(GPIOB_PIN15))
-#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
- PIN_PUPDR_FLOATING(GPIOB_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
- PIN_PUPDR_FLOATING(GPIOB_PIN6) | \
- PIN_PUPDR_PULLDOWN(GPIOB_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN13) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN14) | \
- PIN_PUPDR_PULLUP(GPIOB_PIN15))
-#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
- PIN_ODR_HIGH(GPIOB_PIN1) | \
- PIN_ODR_HIGH(GPIOB_PIN2) | \
- PIN_ODR_HIGH(GPIOB_PIN3) | \
- PIN_ODR_HIGH(GPIOB_PIN4) | \
- PIN_ODR_HIGH(GPIOB_PIN5) | \
- PIN_ODR_HIGH(GPIOB_PIN6) | \
- PIN_ODR_LOW(GPIOB_PIN7) | \
- PIN_ODR_HIGH(GPIOB_PIN8) | \
- PIN_ODR_HIGH(GPIOB_PIN9) | \
- PIN_ODR_HIGH(GPIOB_PIN10) | \
- PIN_ODR_HIGH(GPIOB_PIN11) | \
- PIN_ODR_HIGH(GPIOB_PIN12) | \
- PIN_ODR_HIGH(GPIOB_PIN13) | \
- PIN_ODR_HIGH(GPIOB_PIN14) | \
- PIN_ODR_HIGH(GPIOB_PIN15))
-#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0) | \
- PIN_AFIO_AF(GPIOB_PIN1, 0) | \
- PIN_AFIO_AF(GPIOB_PIN2, 0) | \
- PIN_AFIO_AF(GPIOB_PIN3, 0) | \
- PIN_AFIO_AF(GPIOB_PIN4, 0) | \
- PIN_AFIO_AF(GPIOB_PIN5, 0) | \
- PIN_AFIO_AF(GPIOB_PIN6, 4) | \
- PIN_AFIO_AF(GPIOB_PIN7, 0))
-#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0) | \
- PIN_AFIO_AF(GPIOB_PIN9, 0) | \
- PIN_AFIO_AF(GPIOB_PIN10, 0) | \
- PIN_AFIO_AF(GPIOB_PIN11, 0) | \
- PIN_AFIO_AF(GPIOB_PIN12, 0) | \
- PIN_AFIO_AF(GPIOB_PIN13, 0) | \
- PIN_AFIO_AF(GPIOB_PIN14, 0) | \
- PIN_AFIO_AF(GPIOB_PIN15, 0))
-
-/*
- * GPIOC setup:
- *
- * PC0 - PIN0 (input pullup).
- * PC1 - PIN1 (input pullup).
- * PC2 - PIN2 (input pullup).
- * PC3 - PIN3 (input pullup).
- * PC4 - PIN4 (input pullup).
- * PC5 - PIN5 (input pullup).
- * PC6 - PIN6 (input pullup).
- * PC7 - PIN7 (input pullup).
- * PC8 - PIN8 (input pullup).
- * PC9 - PIN9 (input pullup).
- * PC10 - PIN10 (input pullup).
- * PC11 - PIN11 (input pullup).
- * PC12 - PIN12 (input pullup).
- * PC13 - PIN13 (input pullup).
- * PC14 - PIN14 (input floating).
- * PC15 - PIN15 (input floating).
- */
-#define VAL_GPIOC_MODER (PIN_MODE_INPUT(GPIOC_PIN0) | \
- PIN_MODE_INPUT(GPIOC_PIN1) | \
- PIN_MODE_INPUT(GPIOC_PIN2) | \
- PIN_MODE_INPUT(GPIOC_PIN3) | \
- PIN_MODE_INPUT(GPIOC_PIN4) | \
- PIN_MODE_INPUT(GPIOC_PIN5) | \
- PIN_MODE_INPUT(GPIOC_PIN6) | \
- PIN_MODE_INPUT(GPIOC_PIN7) | \
- PIN_MODE_INPUT(GPIOC_PIN8) | \
- PIN_MODE_INPUT(GPIOC_PIN9) | \
- PIN_MODE_INPUT(GPIOC_PIN10) | \
- PIN_MODE_INPUT(GPIOC_PIN11) | \
- PIN_MODE_INPUT(GPIOC_PIN12) | \
- PIN_MODE_INPUT(GPIOC_PIN13) | \
- PIN_MODE_INPUT(GPIOC_PIN14) | \
- PIN_MODE_INPUT(GPIOC_PIN15))
-#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN15))
-#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOC_PIN0) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
- PIN_OSPEED_HIGH(GPIOC_PIN14) | \
- PIN_OSPEED_HIGH(GPIOC_PIN15))
-#define VAL_GPIOC_PUPDR (PIN_PUPDR_PULLUP(GPIOC_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
- PIN_PUPDR_FLOATING(GPIOC_PIN14) | \
- PIN_PUPDR_FLOATING(GPIOC_PIN15))
-#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_PIN0) | \
- PIN_ODR_HIGH(GPIOC_PIN1) | \
- PIN_ODR_HIGH(GPIOC_PIN2) | \
- PIN_ODR_HIGH(GPIOC_PIN3) | \
- PIN_ODR_HIGH(GPIOC_PIN4) | \
- PIN_ODR_HIGH(GPIOC_PIN5) | \
- PIN_ODR_HIGH(GPIOC_PIN6) | \
- PIN_ODR_HIGH(GPIOC_PIN7) | \
- PIN_ODR_HIGH(GPIOC_PIN8) | \
- PIN_ODR_HIGH(GPIOC_PIN9) | \
- PIN_ODR_HIGH(GPIOC_PIN10) | \
- PIN_ODR_HIGH(GPIOC_PIN11) | \
- PIN_ODR_HIGH(GPIOC_PIN12) | \
- PIN_ODR_HIGH(GPIOC_PIN13) | \
- PIN_ODR_HIGH(GPIOC_PIN14) | \
- PIN_ODR_HIGH(GPIOC_PIN15))
-#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_PIN0, 0) | \
- PIN_AFIO_AF(GPIOC_PIN1, 0) | \
- PIN_AFIO_AF(GPIOC_PIN2, 0) | \
- PIN_AFIO_AF(GPIOC_PIN3, 0) | \
- PIN_AFIO_AF(GPIOC_PIN4, 0) | \
- PIN_AFIO_AF(GPIOC_PIN5, 0) | \
- PIN_AFIO_AF(GPIOC_PIN6, 0) | \
- PIN_AFIO_AF(GPIOC_PIN7, 0))
-#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_PIN8, 0) | \
- PIN_AFIO_AF(GPIOC_PIN9, 0) | \
- PIN_AFIO_AF(GPIOC_PIN10, 0) | \
- PIN_AFIO_AF(GPIOC_PIN11, 0) | \
- PIN_AFIO_AF(GPIOC_PIN12, 0) | \
- PIN_AFIO_AF(GPIOC_PIN13, 0) | \
- PIN_AFIO_AF(GPIOC_PIN14, 0) | \
- PIN_AFIO_AF(GPIOC_PIN15, 0))
-
-/*
- * GPIOD setup:
- *
- * PD0 - PIN0 (input pullup).
- * PD1 - PIN1 (input pullup).
- * PD2 - PIN2 (input pullup).
- * PD3 - PIN3 (input pullup).
- * PD4 - PIN4 (input pullup).
- * PD5 - PIN5 (input pullup).
- * PD6 - PIN6 (input pullup).
- * PD7 - PIN7 (input pullup).
- * PD8 - PIN8 (input pullup).
- * PD9 - PIN9 (input pullup).
- * PD11 - PIN10 (input pullup).
- * PD11 - PIN11 (input pullup).
- * PD12 - PIN12 (input pullup).
- * PD13 - PIN13 (input pullup).
- * PD14 - PIN14 (input pullup).
- * PD15 - PIN15 (input pullup).
- */
-#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
- PIN_MODE_INPUT(GPIOD_PIN1) | \
- PIN_MODE_INPUT(GPIOD_PIN2) | \
- PIN_MODE_INPUT(GPIOD_PIN3) | \
- PIN_MODE_INPUT(GPIOD_PIN4) | \
- PIN_MODE_INPUT(GPIOD_PIN5) | \
- PIN_MODE_INPUT(GPIOD_PIN6) | \
- PIN_MODE_INPUT(GPIOD_PIN7) | \
- PIN_MODE_INPUT(GPIOD_PIN8) | \
- PIN_MODE_INPUT(GPIOD_PIN9) | \
- PIN_MODE_INPUT(GPIOD_PIN10) | \
- PIN_MODE_INPUT(GPIOD_PIN11) | \
- PIN_MODE_INPUT(GPIOD_PIN12) | \
- PIN_MODE_INPUT(GPIOD_PIN13) | \
- PIN_MODE_INPUT(GPIOD_PIN14) | \
- PIN_MODE_INPUT(GPIOD_PIN15))
-#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
-#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
- PIN_OSPEED_VERYLOW(GPIOD_PIN15))
-#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN15))
-#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
- PIN_ODR_HIGH(GPIOD_PIN1) | \
- PIN_ODR_HIGH(GPIOD_PIN2) | \
- PIN_ODR_HIGH(GPIOD_PIN3) | \
- PIN_ODR_HIGH(GPIOD_PIN4) | \
- PIN_ODR_HIGH(GPIOD_PIN5) | \
- PIN_ODR_HIGH(GPIOD_PIN6) | \
- PIN_ODR_HIGH(GPIOD_PIN7) | \
- PIN_ODR_HIGH(GPIOD_PIN8) | \
- PIN_ODR_HIGH(GPIOD_PIN9) | \
- PIN_ODR_HIGH(GPIOD_PIN10) | \
- PIN_ODR_HIGH(GPIOD_PIN11) | \
- PIN_ODR_HIGH(GPIOD_PIN12) | \
- PIN_ODR_HIGH(GPIOD_PIN13) | \
- PIN_ODR_HIGH(GPIOD_PIN14) | \
- PIN_ODR_HIGH(GPIOD_PIN15))
-#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0) | \
- PIN_AFIO_AF(GPIOD_PIN1, 0) | \
- PIN_AFIO_AF(GPIOD_PIN2, 0) | \
- PIN_AFIO_AF(GPIOD_PIN3, 0) | \
- PIN_AFIO_AF(GPIOD_PIN4, 0) | \
- PIN_AFIO_AF(GPIOD_PIN5, 0) | \
- PIN_AFIO_AF(GPIOD_PIN6, 0) | \
- PIN_AFIO_AF(GPIOD_PIN7, 0))
-#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0) | \
- PIN_AFIO_AF(GPIOD_PIN9, 0) | \
- PIN_AFIO_AF(GPIOD_PIN10, 0) | \
- PIN_AFIO_AF(GPIOD_PIN11, 0) | \
- PIN_AFIO_AF(GPIOD_PIN12, 0) | \
- PIN_AFIO_AF(GPIOD_PIN13, 0) | \
- PIN_AFIO_AF(GPIOD_PIN14, 0) | \
- PIN_AFIO_AF(GPIOD_PIN15, 0))
-
-/*
- * GPIOE setup:
- *
- * PE0 - PIN0 (input pullup).
- * PE1 - PIN1 (input pullup).
- * PE2 - PIN2 (input pullup).
- * PE3 - PIN3 L3GD20_CS (output pushpull maximum).
- * PE4 - PIN4 (input pullup).
- * PE5 - PIN5 (input pullup).
- * PE6 - PIN6 (input pullup).
- * PE7 - PIN7 (input pullup).
- * PE8 - PIN8 (output pushpull maximum).
- * PE9 - PIN9 (output pushpull maximum).
- * PE10 - PIN10 (output pushpull maximum).
- * PE11 - PIN11 (output pushpull maximum).
- * PE12 - PIN12 (output pushpull maximum).
- * PE13 - PIN13 (output pushpull maximum).
- * PE14 - PIN14 (output pushpull maximum).
- * PE15 - PIN15 (output pushpull maximum).
- */
-#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \
- PIN_MODE_INPUT(GPIOE_PIN1) | \
- PIN_MODE_INPUT(GPIOE_PIN2) |\
- PIN_MODE_OUTPUT(GPIOE_PIN3) | \
- PIN_MODE_INPUT(GPIOE_PIN4) |\
- PIN_MODE_INPUT(GPIOE_PIN5) |\
- PIN_MODE_INPUT(GPIOE_PIN6) | \
- PIN_MODE_INPUT(GPIOE_PIN7) | \
- PIN_MODE_OUTPUT(GPIOE_PIN8) | \
- PIN_MODE_OUTPUT(GPIOE_PIN9) | \
- PIN_MODE_OUTPUT(GPIOE_PIN10) | \
- PIN_MODE_OUTPUT(GPIOE_PIN11) | \
- PIN_MODE_OUTPUT(GPIOE_PIN12) | \
- PIN_MODE_OUTPUT(GPIOE_PIN13) | \
- PIN_MODE_OUTPUT(GPIOE_PIN14) | \
- PIN_MODE_OUTPUT(GPIOE_PIN15))
-#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN1) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN2) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN4) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN5) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN10) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOE_PIN14) |\
- PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
-#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) |\
- PIN_OSPEED_VERYLOW(GPIOE_PIN1) |\
- PIN_OSPEED_VERYLOW(GPIOE_PIN2) |\
- PIN_OSPEED_HIGH(GPIOE_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOE_PIN4) |\
- PIN_OSPEED_VERYLOW(GPIOE_PIN5) |\
- PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \
- PIN_OSPEED_HIGH(GPIOE_PIN8) | \
- PIN_OSPEED_HIGH(GPIOE_PIN9) | \
- PIN_OSPEED_HIGH(GPIOE_PIN10) | \
- PIN_OSPEED_HIGH(GPIOE_PIN11) | \
- PIN_OSPEED_HIGH(GPIOE_PIN12) | \
- PIN_OSPEED_HIGH(GPIOE_PIN13) | \
- PIN_OSPEED_HIGH(GPIOE_PIN14) | \
- PIN_OSPEED_HIGH(GPIOE_PIN15))
-#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN2) |\
- PIN_PUPDR_FLOATING(GPIOE_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN4) |\
- PIN_PUPDR_PULLUP(GPIOE_PIN5) |\
- PIN_PUPDR_PULLUP(GPIOE_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN10) | \
- PIN_PUPDR_FLOATING(GPIOE_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOE_PIN12) | \
- PIN_PUPDR_FLOATING(GPIOE_PIN13) | \
- PIN_PUPDR_FLOATING(GPIOE_PIN14) |\
- PIN_PUPDR_FLOATING(GPIOE_PIN15))
-#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \
- PIN_ODR_HIGH(GPIOE_PIN1) | \
- PIN_ODR_HIGH(GPIOE_PIN2) | \
- PIN_ODR_HIGH(GPIOE_PIN3) | \
- PIN_ODR_HIGH(GPIOE_PIN4) | \
- PIN_ODR_HIGH(GPIOE_PIN5) | \
- PIN_ODR_HIGH(GPIOE_PIN6) | \
- PIN_ODR_HIGH(GPIOE_PIN7) | \
- PIN_ODR_LOW(GPIOE_PIN8) | \
- PIN_ODR_LOW(GPIOE_PIN9) | \
- PIN_ODR_LOW(GPIOE_PIN10) | \
- PIN_ODR_LOW(GPIOE_PIN11) | \
- PIN_ODR_LOW(GPIOE_PIN12) | \
- PIN_ODR_LOW(GPIOE_PIN13) | \
- PIN_ODR_LOW(GPIOE_PIN14) | \
- PIN_ODR_LOW(GPIOE_PIN15))
-#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0) | \
- PIN_AFIO_AF(GPIOE_PIN1, 0) | \
- PIN_AFIO_AF(GPIOE_PIN2, 0) |\
- PIN_AFIO_AF(GPIOE_PIN3, 0) | \
- PIN_AFIO_AF(GPIOE_PIN4, 0) |\
- PIN_AFIO_AF(GPIOE_PIN5, 0) |\
- PIN_AFIO_AF(GPIOE_PIN6, 0) | \
- PIN_AFIO_AF(GPIOE_PIN7, 0))
-#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0) | \
- PIN_AFIO_AF(GPIOE_PIN9, 0) | \
- PIN_AFIO_AF(GPIOE_PIN10, 0) | \
- PIN_AFIO_AF(GPIOE_PIN11, 0) | \
- PIN_AFIO_AF(GPIOE_PIN12, 0) | \
- PIN_AFIO_AF(GPIOE_PIN13, 0) | \
- PIN_AFIO_AF(GPIOE_PIN14, 0) | \
- PIN_AFIO_AF(GPIOE_PIN15, 0))
-
-/*
- * GPIOF setup:
- *
- * PF0 - I2C2_SDA (input floating).
- * PF1 - I2C2_SCL (input floating).
- * PF2 - PIN2 (input pullup).
- * PF3 - PIN3 (input pullup).
- * PF4 - PIN4 (input pullup).
- * PF5 - PIN5 (input pullup).
- * PF6 - PIN6 (input pullup).
- * PF7 - PIN7 (input pullup).
- * PF8 - PIN8 (input pullup).
- * PF9 - PIN9 (input pullup).
- * PF10 - PIN10 (input pullup).
- * PF11 - PIN11 (input pullup).
- * PF12 - PIN12 (input pullup).
- * PF13 - PIN13 (input pullup).
- * PF14 - PIN14 (input pullup).
- * PF15 - PIN15 (input pullup).
- */
-#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_I2C2_SDA) | \
- PIN_MODE_INPUT(GPIOF_I2C2_SCL) | \
- PIN_MODE_INPUT(GPIOF_PIN2) | \
- PIN_MODE_INPUT(GPIOF_PIN3) | \
- PIN_MODE_INPUT(GPIOF_PIN4) | \
- PIN_MODE_INPUT(GPIOF_PIN5) | \
- PIN_MODE_INPUT(GPIOF_PIN6) | \
- PIN_MODE_INPUT(GPIOF_PIN7) | \
- PIN_MODE_INPUT(GPIOF_PIN8) | \
- PIN_MODE_INPUT(GPIOF_PIN9) | \
- PIN_MODE_INPUT(GPIOF_PIN10) | \
- PIN_MODE_INPUT(GPIOF_PIN11) | \
- PIN_MODE_INPUT(GPIOF_PIN12) | \
- PIN_MODE_INPUT(GPIOF_PIN13) | \
- PIN_MODE_INPUT(GPIOF_PIN14) | \
- PIN_MODE_INPUT(GPIOF_PIN15))
-#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_I2C2_SDA) | \
- PIN_OTYPE_PUSHPULL(GPIOF_I2C2_SCL) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
-#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_HIGH(GPIOF_I2C2_SDA) | \
- PIN_OSPEED_HIGH(GPIOF_I2C2_SCL) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
- PIN_OSPEED_VERYLOW(GPIOF_PIN15))
-#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_I2C2_SDA) | \
- PIN_PUPDR_FLOATING(GPIOF_I2C2_SCL) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
- PIN_PUPDR_PULLUP(GPIOF_PIN15))
-#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_I2C2_SDA) | \
- PIN_ODR_HIGH(GPIOF_I2C2_SCL) | \
- PIN_ODR_HIGH(GPIOF_PIN2) | \
- PIN_ODR_HIGH(GPIOF_PIN3) | \
- PIN_ODR_HIGH(GPIOF_PIN4) | \
- PIN_ODR_HIGH(GPIOF_PIN5) | \
- PIN_ODR_HIGH(GPIOF_PIN6) | \
- PIN_ODR_HIGH(GPIOF_PIN7) | \
- PIN_ODR_HIGH(GPIOF_PIN8) | \
- PIN_ODR_HIGH(GPIOF_PIN9) | \
- PIN_ODR_HIGH(GPIOF_PIN10) | \
- PIN_ODR_HIGH(GPIOF_PIN11) | \
- PIN_ODR_HIGH(GPIOF_PIN12) | \
- PIN_ODR_HIGH(GPIOF_PIN13) | \
- PIN_ODR_HIGH(GPIOF_PIN14) | \
- PIN_ODR_HIGH(GPIOF_PIN15))
-#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_I2C2_SDA, 0) | \
- PIN_AFIO_AF(GPIOF_I2C2_SCL, 0) | \
- PIN_AFIO_AF(GPIOF_PIN2, 0) | \
- PIN_AFIO_AF(GPIOF_PIN3, 0) | \
- PIN_AFIO_AF(GPIOF_PIN4, 0) | \
- PIN_AFIO_AF(GPIOF_PIN5, 0) | \
- PIN_AFIO_AF(GPIOF_PIN6, 0) | \
- PIN_AFIO_AF(GPIOF_PIN7, 0))
-#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0) | \
- PIN_AFIO_AF(GPIOF_PIN9, 0) | \
- PIN_AFIO_AF(GPIOF_PIN10, 0) | \
- PIN_AFIO_AF(GPIOF_PIN11, 0) | \
- PIN_AFIO_AF(GPIOF_PIN12, 0) | \
- PIN_AFIO_AF(GPIOF_PIN13, 0) | \
- PIN_AFIO_AF(GPIOF_PIN14, 0) | \
- PIN_AFIO_AF(GPIOF_PIN15, 0))
-
-/*
- * GPIOG setup:
- *
- * PG0 - PIN0 (input pullup).
- * PG1 - PIN1 (input pullup).
- * PG2 - PIN2 (input pullup).
- * PG3 - PIN3 (input pullup).
- * PG4 - PIN4 (input pullup).
- * PG5 - PIN5 (input pullup).
- * PG6 - PIN6 (input pullup).
- * PG7 - PIN7 (input pullup).
- * PG8 - PIN8 (input pullup).
- * PG9 - PIN9 (input pullup).
- * PG10 - PIN10 (input pullup).
- * PG11 - PIN11 (input pullup).
- * PG12 - PIN12 (input pullup).
- * PG13 - PIN13 (input pullup).
- * PG14 - PIN14 (input pullup).
- * PG15 - PIN15 (input pullup).
- */
-#define VAL_GPIOG_MODER (PIN_MODE_INPUT(GPIOG_PIN0) | \
- PIN_MODE_INPUT(GPIOG_PIN1) | \
- PIN_MODE_INPUT(GPIOG_PIN2) | \
- PIN_MODE_INPUT(GPIOG_PIN3) | \
- PIN_MODE_INPUT(GPIOG_PIN4) | \
- PIN_MODE_INPUT(GPIOG_PIN5) | \
- PIN_MODE_INPUT(GPIOG_PIN6) | \
- PIN_MODE_INPUT(GPIOG_PIN7) | \
- PIN_MODE_INPUT(GPIOG_PIN8) | \
- PIN_MODE_INPUT(GPIOG_PIN9) | \
- PIN_MODE_INPUT(GPIOG_PIN10) | \
- PIN_MODE_INPUT(GPIOG_PIN11) | \
- PIN_MODE_INPUT(GPIOG_PIN12) | \
- PIN_MODE_INPUT(GPIOG_PIN13) | \
- PIN_MODE_INPUT(GPIOG_PIN14) | \
- PIN_MODE_INPUT(GPIOG_PIN15))
-#define VAL_GPIOG_OTYPER (PIN_OTYPE_PUSHPULL(GPIOG_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOG_PIN15))
-#define VAL_GPIOG_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOG_PIN0) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN13) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN14) | \
- PIN_OSPEED_VERYLOW(GPIOG_PIN15))
-#define VAL_GPIOG_PUPDR (PIN_PUPDR_PULLUP(GPIOG_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN13) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN14) | \
- PIN_PUPDR_PULLUP(GPIOG_PIN15))
-#define VAL_GPIOG_ODR (PIN_ODR_HIGH(GPIOG_PIN0) | \
- PIN_ODR_HIGH(GPIOG_PIN1) | \
- PIN_ODR_HIGH(GPIOG_PIN2) | \
- PIN_ODR_HIGH(GPIOG_PIN3) | \
- PIN_ODR_HIGH(GPIOG_PIN4) | \
- PIN_ODR_HIGH(GPIOG_PIN5) | \
- PIN_ODR_HIGH(GPIOG_PIN6) | \
- PIN_ODR_HIGH(GPIOG_PIN7) | \
- PIN_ODR_HIGH(GPIOG_PIN8) | \
- PIN_ODR_HIGH(GPIOG_PIN9) | \
- PIN_ODR_HIGH(GPIOG_PIN10) | \
- PIN_ODR_HIGH(GPIOG_PIN11) | \
- PIN_ODR_HIGH(GPIOG_PIN12) | \
- PIN_ODR_HIGH(GPIOG_PIN13) | \
- PIN_ODR_HIGH(GPIOG_PIN14) | \
- PIN_ODR_HIGH(GPIOG_PIN15))
-#define VAL_GPIOG_AFRL (PIN_AFIO_AF(GPIOG_PIN0, 0) | \
- PIN_AFIO_AF(GPIOG_PIN1, 0) | \
- PIN_AFIO_AF(GPIOG_PIN2, 0) | \
- PIN_AFIO_AF(GPIOG_PIN3, 0) | \
- PIN_AFIO_AF(GPIOG_PIN4, 0) | \
- PIN_AFIO_AF(GPIOG_PIN5, 0) | \
- PIN_AFIO_AF(GPIOG_PIN6, 0) | \
- PIN_AFIO_AF(GPIOG_PIN7, 0))
-#define VAL_GPIOG_AFRH (PIN_AFIO_AF(GPIOG_PIN8, 0) | \
- PIN_AFIO_AF(GPIOG_PIN9, 0) | \
- PIN_AFIO_AF(GPIOG_PIN10, 0) | \
- PIN_AFIO_AF(GPIOG_PIN11, 0) | \
- PIN_AFIO_AF(GPIOG_PIN12, 0) | \
- PIN_AFIO_AF(GPIOG_PIN13, 0) | \
- PIN_AFIO_AF(GPIOG_PIN14, 0) | \
- PIN_AFIO_AF(GPIOG_PIN15, 0))
-
-/*
- * GPIOH setup:
- *
- * PH0 - PIN0 (input pullup).
- * PH1 - PIN1 (input pullup).
- * PH2 - PIN2 (input pullup).
- * PH3 - PIN3 (input pullup).
- * PH4 - PIN4 (input pullup).
- * PH5 - PIN5 (input pullup).
- * PH6 - PIN6 (input pullup).
- * PH7 - PIN7 (input pullup).
- * PH8 - PIN8 (input pullup).
- * PH9 - PIN9 (input pullup).
- * PH10 - PIN10 (input pullup).
- * PH11 - PIN11 (input pullup).
- * PH12 - PIN12 (input pullup).
- * PH13 - PIN13 (input pullup).
- * PH14 - PIN14 (input pullup).
- * PH15 - PIN15 (input pullup).
- */
-#define VAL_GPIOH_MODER (PIN_MODE_INPUT(GPIOH_PIN0) | \
- PIN_MODE_INPUT(GPIOH_PIN1) | \
- PIN_MODE_INPUT(GPIOH_PIN2) | \
- PIN_MODE_INPUT(GPIOH_PIN3) | \
- PIN_MODE_INPUT(GPIOH_PIN4) | \
- PIN_MODE_INPUT(GPIOH_PIN5) | \
- PIN_MODE_INPUT(GPIOH_PIN6) | \
- PIN_MODE_INPUT(GPIOH_PIN7) | \
- PIN_MODE_INPUT(GPIOH_PIN8) | \
- PIN_MODE_INPUT(GPIOH_PIN9) | \
- PIN_MODE_INPUT(GPIOH_PIN10) | \
- PIN_MODE_INPUT(GPIOH_PIN11) | \
- PIN_MODE_INPUT(GPIOH_PIN12) | \
- PIN_MODE_INPUT(GPIOH_PIN13) | \
- PIN_MODE_INPUT(GPIOH_PIN14) | \
- PIN_MODE_INPUT(GPIOH_PIN15))
-#define VAL_GPIOH_OTYPER (PIN_OTYPE_PUSHPULL(GPIOH_PIN0) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN2) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN3) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN4) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN5) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN6) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN12) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN13) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOH_PIN15))
-#define VAL_GPIOH_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOH_PIN0) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN1) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN2) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN3) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN4) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN5) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN6) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN7) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN8) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN9) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN10) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN11) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN12) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN13) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN14) | \
- PIN_OSPEED_VERYLOW(GPIOH_PIN15))
-#define VAL_GPIOH_PUPDR (PIN_PUPDR_PULLUP(GPIOH_PIN0) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN2) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN3) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN4) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN5) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN6) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN12) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN13) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN14) | \
- PIN_PUPDR_PULLUP(GPIOH_PIN15))
-#define VAL_GPIOH_ODR (PIN_ODR_HIGH(GPIOH_PIN0) | \
- PIN_ODR_HIGH(GPIOH_PIN1) | \
- PIN_ODR_HIGH(GPIOH_PIN2) | \
- PIN_ODR_HIGH(GPIOH_PIN3) | \
- PIN_ODR_HIGH(GPIOH_PIN4) | \
- PIN_ODR_HIGH(GPIOH_PIN5) | \
- PIN_ODR_HIGH(GPIOH_PIN6) | \
- PIN_ODR_HIGH(GPIOH_PIN7) | \
- PIN_ODR_HIGH(GPIOH_PIN8) | \
- PIN_ODR_HIGH(GPIOH_PIN9) | \
- PIN_ODR_HIGH(GPIOH_PIN10) | \
- PIN_ODR_HIGH(GPIOH_PIN11) | \
- PIN_ODR_HIGH(GPIOH_PIN12) | \
- PIN_ODR_HIGH(GPIOH_PIN13) | \
- PIN_ODR_HIGH(GPIOH_PIN14) | \
- PIN_ODR_HIGH(GPIOH_PIN15))
-#define VAL_GPIOH_AFRL (PIN_AFIO_AF(GPIOH_PIN0, 0) | \
- PIN_AFIO_AF(GPIOH_PIN1, 0) | \
- PIN_AFIO_AF(GPIOH_PIN2, 0) | \
- PIN_AFIO_AF(GPIOH_PIN3, 0) | \
- PIN_AFIO_AF(GPIOH_PIN4, 0) | \
- PIN_AFIO_AF(GPIOH_PIN5, 0) | \
- PIN_AFIO_AF(GPIOH_PIN6, 0) | \
- PIN_AFIO_AF(GPIOH_PIN7, 0))
-#define VAL_GPIOH_AFRH (PIN_AFIO_AF(GPIOH_PIN8, 0) | \
- PIN_AFIO_AF(GPIOH_PIN9, 0) | \
- PIN_AFIO_AF(GPIOH_PIN10, 0) | \
- PIN_AFIO_AF(GPIOH_PIN11, 0) | \
- PIN_AFIO_AF(GPIOH_PIN12, 0) | \
- PIN_AFIO_AF(GPIOH_PIN13, 0) | \
- PIN_AFIO_AF(GPIOH_PIN14, 0) | \
- PIN_AFIO_AF(GPIOH_PIN15, 0))
-
-
-/*
- * USB bus activation macro, required by the USB driver.
- */
-// #define usb_lld_connect_bus(usbp)
-#define usb_lld_connect_bus(usbp) (palSetPadMode(GPIOA, GPIOA_USB_DP, PAL_MODE_ALTERNATE(14)))
-// #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)
-#define usb_lld_disconnect_bus(usbp) (palSetPadMode(GPIOA, GPIOA_USB_DP, PAL_MODE_OUTPUT_PUSHPULL)); palClearPad(GPIOA, GPIOA_USB_DP)
-// #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/dztech/boards/GENERIC_STM32_F303XC/board.mk b/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.mk
deleted file mode 100644
index 43377629a..000000000
--- a/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# List of all the board related files.
-BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F303XC/board.c
-
-# Required include directories
-BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F303XC
diff --git a/keyboards/dztech/dz40rgb/config.h b/keyboards/dztech/dz40rgb/config.h
index 0d6c4ae39..5f1502f4a 100644
--- a/keyboards/dztech/dz40rgb/config.h
+++ b/keyboards/dztech/dz40rgb/config.h
@@ -21,7 +21,7 @@
#define DEBOUNCE 3
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
+#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define DISABLE_RGB_MATRIX_SPLASH
#define DISABLE_RGB_MATRIX_MULTISPLASH
diff --git a/keyboards/dztech/dz40rgb/dz40rgb.c b/keyboards/dztech/dz40rgb/dz40rgb.c
index b1a03760f..92e4a7cad 100644
--- a/keyboards/dztech/dz40rgb/dz40rgb.c
+++ b/keyboards/dztech/dz40rgb/dz40rgb.c
@@ -52,7 +52,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
+
{0, E_13, D_13, F_13},
{0, E_14, D_14, F_14},
@@ -71,70 +71,25 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
- {{0|(11<<4)}, {20.36*11, 0}, 1},
- {{0|(10<<4)}, {20.36*10, 0}, 1},
- {{0|(9<<4)}, {20.36*9, 0}, 1},
- {{0|(8<<4)}, {20.36*8, 0}, 1},
- {{0|(7<<4)}, {20.36*7, 0}, 1},
- {{0|(6<<4)}, { 20.36*6, 0}, 1},
- {{0|(5<<4)}, { 20.36*5, 0}, 1},
- {{0|(4<<4)}, { 20.36*4, 0}, 1},
- {{0|(3<<4)}, { 20.36*3, 0}, 1},
- {{0|(2<<4)}, { 20.36*2, 0}, 1},
- {{0|(1<<4)}, { 20.36*1, 0}, 1},
- {{0|(0<<4)}, { 20.36*0, 0}, 1},
-
- {{0|(12<<4)}, {20.36*11, 21.33*0.5}, 1},
- {{0|(13<<4)}, {20.36*0,21.33*0.5}, 1},
-
- {{1|(11<<4)}, {20.36*11, 21.33}, 1},
- {{1|(10<<4)}, {20.36*10, 21.33}, 0},
- {{1|(9<<4)}, {20.36*9, 21.33}, 0},
- {{1|(8<<4)}, {20.36*8, 21.33}, 0},
- {{1|(7<<4)}, {20.36*7, 21.33}, 0},
- {{1|(6<<4)}, { 20.36*6, 21.33}, 0},
- {{1|(5<<4)}, { 20.36*5, 21.33}, 0},
- {{1|(4<<4)}, { 20.36*4, 21.33}, 0},
- {{1|(3<<4)}, { 20.36*3, 21.33}, 0},
- {{1|(2<<4)}, { 20.36*2, 21.33}, 0},
- {{1|(1<<4)}, { 20.36*1, 21.33}, 0},
- {{1|(0<<4)}, { 20.36*0, 21.33}, 1},
-
- {{1|(12<<4)}, {20.36*11, 21.33*1.5}, 1},
- {{1|(13<<4)}, {20.36*0,21.33*1.5}, 1},
-
- {{2|(11<<4)}, {20.36*11, 21.33*2}, 1},
- {{2|(10<<4)}, {20.36*10, 21.33*2}, 0},
- {{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
- {{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
- {{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
- {{2|(6<<4)}, { 20.36*6, 21.33*2}, 0},
- {{2|(5<<4)}, { 20.36*5, 21.33*2}, 0},
- {{2|(4<<4)}, { 20.36*4, 21.33*2}, 0},
- {{2|(3<<4)}, { 20.36*3, 21.33*2}, 0},
- {{2|(2<<4)}, { 20.36*2, 21.33*2}, 0},
- {{2|(1<<4)}, { 20.36*1, 21.33*2}, 0},
- {{2|(0<<4)}, { 20.36*0, 21.33*2}, 1},
+led_config_t g_led_config = { {
+ { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28 },
+ { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42 }
+}, {
+ { 223, 0 }, { 203, 0 }, { 183, 0 }, { 162, 0 }, { 142, 0 }, { 122, 0 }, { 101, 0 }, { 81, 0 }, { 61, 0 }, { 40, 0 }, { 20, 0 }, { 0, 0 },
+ { 223, 10 }, { 0, 10 }, { 223, 21 }, { 203, 21 }, { 183, 21 }, { 162, 21 }, { 142, 21 }, { 122, 21 }, { 101, 21 }, { 81, 21 }, { 61, 21 }, { 40, 21 },
+ { 20, 21 }, { 0, 21 }, { 223, 31 }, { 0, 31 }, { 223, 42 }, { 203, 42 }, { 183, 42 }, { 162, 42 }, { 142, 42 }, { 122, 42 }, { 101, 42 }, { 81, 42 },
+ { 61, 42 }, { 40, 42 }, { 20, 42 }, { 0, 42 }, { 223, 53 }, { 0, 53 }, { 223, 63 }, { 203, 63 }, { 183, 63 }, { 162, 63 }, { 142, 63 }, { 122, 63 },
+ { 101, 63 }, { 81, 63 }, { 61, 63 }, { 40, 63 }, { 20, 63 }, { 0, 63 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1
+} };
- {{2|(12<<4)}, {20.36*11, 21.33*2.5}, 1},
- {{2|(13<<4)}, {20.36*0,21.33*2.5}, 1},
-
- {{3|(11<<4)}, {20.36*11, 21.33*3}, 1},
- {{3|(10<<4)}, {20.36*10, 21.33*3}, 1},
- {{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
- {{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
- {{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
- {{3|(6<<4)}, { 20.36*6, 21.33*3}, 1},
- {{3|(5<<4)}, { 20.36*5, 21.33*3}, 1},
- {{3|(4<<4)}, { 20.36*4, 21.33*3}, 1},
- {{3|(3<<4)}, { 20.36*3, 21.33*3}, 1},
- {{3|(2<<4)}, { 20.36*2, 21.33*3}, 1},
- {{3|(1<<4)}, { 20.36*1, 21.33*3}, 1},
- {{3|(0<<4)}, { 20.36*0, 21.33*3}, 1}
-
-};
#else
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
@@ -205,93 +160,44 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
- {{0|(11<<4)}, {20.36*11, 0}, 1},
- {{0|(10<<4)}, {20.36*10, 0}, 1},
- {{0|(9<<4)}, {20.36*9, 0}, 1},
- {{0|(8<<4)}, {20.36*8, 0}, 1},
- {{0|(7<<4)}, {20.36*7, 0}, 1},
- {{0|(6<<4)}, { 20.36*6, 0}, 1},
- {{0|(5<<4)}, { 20.36*5, 0}, 1},
- {{0|(4<<4)}, { 20.36*4, 0}, 1},
- {{0|(3<<4)}, { 20.36*3, 0}, 1},
- {{0|(2<<4)}, { 20.36*2, 0}, 1},
- {{0|(1<<4)}, { 20.36*1, 0}, 1},
- {{0|(0<<4)}, { 20.36*0, 0}, 1},
-
- {{0|(12<<4)}, {20.36*11, 21.33*0.5}, 1},
- {{0|(13<<4)}, {20.36*0,21.33*0.5}, 1},
-
- {{1|(11<<4)}, {20.36*11, 21.33}, 1},
- {{1|(10<<4)}, {20.36*10, 21.33}, 0},
- {{1|(9<<4)}, {20.36*9, 21.33}, 0},
- {{1|(8<<4)}, {20.36*8, 21.33}, 0},
- {{1|(7<<4)}, {20.36*7, 21.33}, 0},
- {{1|(6<<4)}, { 20.36*6, 21.33}, 0},
- {{1|(5<<4)}, { 20.36*5, 21.33}, 0},
- {{1|(4<<4)}, { 20.36*4, 21.33}, 0},
- {{1|(3<<4)}, { 20.36*3, 21.33}, 0},
- {{1|(2<<4)}, { 20.36*2, 21.33}, 0},
- {{1|(1<<4)}, { 20.36*1, 21.33}, 0},
- {{1|(0<<4)}, { 20.36*0, 21.33}, 1},
+led_config_t g_led_config = { {
+ { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28 },
+ { 52, 51, 50, 49, 48, NO_LED, 47, 46, 45, 44, 43, 42 }
+}, {
+ { 223, 0 }, { 203, 0 }, { 183, 0 }, { 162, 0 }, { 142, 0 }, { 122, 0 }, { 101, 0 }, { 81, 0 }, { 61, 0 }, { 40, 0 }, { 20, 0 }, { 0, 0 },
+ { 223, 10 }, { 0, 10 }, { 223, 21 }, { 203, 21 }, { 183, 21 }, { 162, 21 }, { 142, 21 }, { 122, 21 }, { 101, 21 }, { 81, 21 }, { 61, 21 }, { 40, 21 },
+ { 20, 21 }, { 0, 21 }, { 223, 31 }, { 0, 31 }, { 223, 42 }, { 203, 42 }, { 183, 42 }, { 162, 42 }, { 142, 42 }, { 122, 42 }, { 101, 42 }, { 81, 42 },
+ { 61, 42 }, { 40, 42 }, { 20, 42 }, { 0, 42 }, { 223, 53 }, { 0, 53 }, { 223, 63 }, { 203, 63 }, { 183, 63 }, { 162, 63 }, { 142, 63 }, { 111, 63 },
+ { 81, 63 }, { 61, 63 }, { 40, 63 }, { 20, 63 }, { 0, 63 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+} };
- {{1|(12<<4)}, {20.36*11, 21.33*1.5}, 1},
- {{1|(13<<4)}, {20.36*0,21.33*1.5}, 1},
-
- {{2|(11<<4)}, {20.36*11, 21.33*2}, 1},
- {{2|(10<<4)}, {20.36*10, 21.33*2}, 0},
- {{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
- {{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
- {{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
- {{2|(6<<4)}, { 20.36*6, 21.33*2}, 0},
- {{2|(5<<4)}, { 20.36*5, 21.33*2}, 0},
- {{2|(4<<4)}, { 20.36*4, 21.33*2}, 0},
- {{2|(3<<4)}, { 20.36*3, 21.33*2}, 0},
- {{2|(2<<4)}, { 20.36*2, 21.33*2}, 0},
- {{2|(1<<4)}, { 20.36*1, 21.33*2}, 0},
- {{2|(0<<4)}, { 20.36*0, 21.33*2}, 1},
-
- {{2|(12<<4)}, {20.36*11, 21.33*2.5}, 1},
- {{2|(13<<4)}, {20.36*0,21.33*2.5}, 1},
-
- {{3|(11<<4)}, {20.36*11, 21.33*3}, 1},
- {{3|(10<<4)}, {20.36*10, 21.33*3}, 1},
- {{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
- {{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
- {{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
- {{3|(6<<4)}, { 20.36*5.5, 21.33*3}, 1},
- {{3|(4<<4)}, { 20.36*4, 21.33*3}, 1},
- {{3|(3<<4)}, { 20.36*3, 21.33*3}, 1},
- {{3|(2<<4)}, { 20.36*2, 21.33*3}, 1},
- {{3|(1<<4)}, { 20.36*1, 21.33*3}, 1},
- {{3|(0<<4)}, { 20.36*0, 21.33*3}, 1}
-
-};
#endif
-
void matrix_init_kb(void) {
matrix_init_user();
}
-
-
void matrix_scan_kb(void) {
matrix_scan_user();
}
-
-
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return process_record_user(keycode, record);
}
-
-
void suspend_power_down_kb(void)
{
rgb_matrix_set_suspend_state(true);
+ suspend_power_down_user();
}
void suspend_wakeup_init_kb(void)
{
rgb_matrix_set_suspend_state(false);
+ suspend_wakeup_init_user();
}
diff --git a/keyboards/dztech/dz40rgb/keymaps/default/keymap.c b/keyboards/dztech/dz40rgb/keymaps/default/keymap.c
index 6ea7421c9..650c178a7 100644
--- a/keyboards/dztech/dz40rgb/keymaps/default/keymap.c
+++ b/keyboards/dztech/dz40rgb/keymaps/default/keymap.c
@@ -31,14 +31,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
+
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz40rgb/keymaps/split_space/keymap.c b/keyboards/dztech/dz40rgb/keymaps/split_space/keymap.c
index bbbe5a8f0..80741b19c 100644
--- a/keyboards/dztech/dz40rgb/keymaps/split_space/keymap.c
+++ b/keyboards/dztech/dz40rgb/keymaps/split_space/keymap.c
@@ -53,15 +53,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz40rgb/rules.mk b/keyboards/dztech/dz40rgb/rules.mk
index 99cbafb8c..fc4b028d5 100644
--- a/keyboards/dztech/dz40rgb/rules.mk
+++ b/keyboards/dztech/dz40rgb/rules.mk
@@ -1,49 +1,6 @@
-# project specific files
-
-## chip/board settings
-# the next two should match the directories in
-# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
-MCU_FAMILY = STM32
-MCU_SERIES = STM32F3xx
-
-# Linker script to use
-# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
-# or <this_dir>/ld/
-MCU_LDSCRIPT = STM32F303xC
-
-# Startup code to use
-# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
-MCU_STARTUP = stm32f3xx
-
-# Board: it should exist either in <chibios>/os/hal/boards/
-# or <this_dir>/boards
-BOARD = GENERIC_STM32_F303XC
-
-# Cortex version
-MCU = cortex-m4
-
-# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
-ARMV = 7
-
-USE_FPU = yes
-
-# Vector table for application
-# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
-# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
-# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
-OPT_DEFS =
-
-# 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
-
-# Options to pass to dfu-util when flashing
+MCU = STM32F303
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
-
-# Build Options
-# comment out to disable the options.
-#
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/dztech/dz60rgb/config.h b/keyboards/dztech/dz60rgb/config.h
index f43b39810..edf0982ab 100644
--- a/keyboards/dztech/dz60rgb/config.h
+++ b/keyboards/dztech/dz60rgb/config.h
@@ -22,7 +22,7 @@
#define DEBOUNCE 3
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
+#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
@@ -32,5 +32,11 @@
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
#define DRIVER_COUNT 2
+#if defined (dzrgb60_ansi) || defined (dzrgb60_iso)
+#define DRIVER_1_LED_TOTAL 61
+#elif defined (dzrgb60_hhkb) || defined (dzrgb60_hhkb_iso)
+#define DRIVER_1_LED_TOTAL 62
+#else
#define DRIVER_1_LED_TOTAL 63
+#endif
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c
index 99e3b5646..28ac7ce9e 100644
--- a/keyboards/dztech/dz60rgb/dz60rgb.c
+++ b/keyboards/dztech/dz60rgb/dz60rgb.c
@@ -1,14 +1,7 @@
#include "dz60rgb.h"
#include "config.h"
#if defined (dzrgb60_iso)
-
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
{0, K_14, J_14, L_14},
{0, K_13, J_13, L_13},
{0, K_12, J_12, L_12},
@@ -23,7 +16,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, K_3, J_3, L_3},
{0, K_2, J_2, L_2},
{0, K_1, J_1, L_1},
-
{0, H_15, G_15, I_15},
{0, H_13, G_13, I_13},
{0, H_12, G_12, I_12},
@@ -38,7 +30,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, H_3, G_3, I_3},
{0, H_2, G_2, I_2},
{0, H_1, G_1, I_1},
-
{0, B_14, A_14, C_14},
{0, E_12, D_12, F_12},
{0, E_11, D_11, F_11},
@@ -52,7 +43,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
{0, B_13, A_13, C_13},
{0, B_11, A_11, C_11},
{0, B_10, A_10, C_10},
@@ -65,7 +55,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_3, A_3, C_3},
{0, B_2, A_2, C_2},
{0, B_1, A_1, C_1},
-
{0, B_15, A_15, C_15},
{0, E_13, D_13, F_13},
{0, B_12, A_12, C_12},
@@ -73,89 +62,31 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_16, A_16, C_16},
{0, E_16, D_16, F_16},
{0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16}
-};
-
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{0|(13<<4)}, {16*13.5, 0}, 1},
- {{0|(12<<4)}, {16*12, 0}, 1},
- {{0|(11<<4)}, {16*11, 0}, 1},
- {{0|(10<<4)}, {16*10, 0}, 1},
- {{0|(9<<4)}, {16*9, 0}, 1},
- {{0|(8<<4)}, {16*8, 0}, 1},
- {{0|(7<<4)}, {16*7, 0}, 1},
- {{0|(6<<4)}, {16*6, 0}, 1},
- {{0|(5<<4)}, {16*5, 0}, 1},
- {{0|(4<<4)}, {16*4, 0}, 1},
- {{0|(3<<4)}, {16*3, 0}, 1},
- {{0|(2<<4)}, {16*2, 0}, 1},
- {{0|(1<<4)}, {16*1, 0}, 1},
- {{0|(0<<4)}, {16*0, 0}, 1},
-
- {{2|(13<<4)}, {16*13.75, 24}, 1},
- {{1|(12<<4)}, {16*12.5, 16}, 0},
- {{1|(11<<4)}, {16*11.5, 16}, 0},
- {{1|(10<<4)}, {16*10.5, 16}, 0},
- {{1|(9<<4)}, { 16*9.5, 16}, 0},
- {{1|(8<<4)}, { 16*8.5, 16}, 0},
- {{1|(7<<4)}, { 16*7.5, 16}, 0},
- {{1|(6<<4)}, { 16*6.5, 16}, 0},
- {{1|(5<<4)}, { 16*5.5, 16}, 0},
- {{1|(4<<4)}, { 16*4.5, 16}, 0},
- {{1|(3<<4)}, { 16*3.5, 16}, 0},
- {{1|(2<<4)}, { 16*2.5, 16}, 0},
- {{1|(1<<4)}, { 16*1.5, 16}, 0},
- {{1|(0<<4)}, { 16*0.25, 16}, 1},
-
- {{1|(13<<4)}, {16*12.75, 32}, 1},
- {{2|(11<<4)}, {16*11.75, 32}, 0},
- {{2|(10<<4)}, {16*10.75, 32}, 0},
- {{2|(9<<4)}, {16*9.75, 32}, 0},
- {{2|(8<<4)}, {16*8.75, 32}, 0},
- {{2|(7<<4)}, {16*7.75, 32}, 0},
- {{2|(6<<4)}, { 16*6.75, 32}, 0},
- {{2|(5<<4)}, { 16*5.75, 32}, 0},
- {{2|(4<<4)}, { 16*4.75, 32}, 0},
- {{2|(3<<4)}, { 16*3.75, 32}, 0},
- {{2|(2<<4)}, { 16*2.75, 32}, 0},
- {{2|(1<<4)}, { 16*1.75, 32}, 0},
- {{2|(0<<4)}, { 16*0.375, 32}, 1},
-
- {{3|(11<<4)}, {16*13.125, 48}, 1},
- {{3|(10<<4)}, {16*11.25, 48}, 0},
- {{3|(9<<4)}, {16*10.25, 48}, 0},
- {{3|(8<<4)}, {16*9.25, 48}, 0},
- {{3|(7<<4)}, {16*8.25, 48}, 0},
- {{3|(6<<4)}, {16*7.25, 48}, 0},
- {{3|(5<<4)}, {16*6.25, 48}, 0},
- {{3|(4<<4)}, {16*5.25, 48}, 0},
- {{3|(3<<4)}, {16*4.25, 48}, 0},
- {{3|(2<<4)}, {16*3.25, 48}, 0},
- {{3|(1<<4)}, {16*1.25, 48}, 0},
- {{3|(0<<4)}, {16*0.625, 48}, 1},
-
- {{4|(13<<4)}, {16*13.875, 64}, 1},
- {{4|(11<<4)}, {16*12.625, 64}, 1},
- {{4|(10<<4)}, {16*11.375, 64}, 1},
- {{4|(9<<4)}, {16*10.125, 64}, 1},
- {{4|(5<<4)}, { 16*6.375, 64}, 0},
- {{4|(2<<4)}, { 16*2.625, 64}, 1},
- {{4|(1<<4)}, { 16*1.375, 64}, 1},
- {{4|(0<<4)}, { 16*0.125, 64}, 1}
-
+ {0, K_16, J_16, L_16},
};
-
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 28 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 14 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
+ { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
+}, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
+ { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
+ { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 1, 1, 1
+} };
#elif defined (dzrgb60_hhkb)
-
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
{0, H_15, G_15, I_15},
{0, K_14, J_14, L_14},
{0, K_13, J_13, L_13},
@@ -171,7 +102,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, K_3, J_3, L_3},
{0, K_2, J_2, L_2},
{0, K_1, J_1, L_1},
-
{0, H_14, G_14, I_14},
{0, H_13, G_13, I_13},
{0, H_12, G_12, I_12},
@@ -186,7 +116,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, H_3, G_3, I_3},
{0, H_2, G_2, I_2},
{0, H_1, G_1, I_1},
-
{0, E_14, D_14, F_14},
{0, E_12, D_12, F_12},
{0, E_11, D_11, F_11},
@@ -200,7 +129,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
{0, B_14, A_14, C_14},
{0, B_13, A_13, C_13},
{0, B_11, A_11, C_11},
@@ -214,93 +142,37 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_3, A_3, C_3},
{0, B_2, A_2, C_2},
{0, B_1, A_1, C_1},
-
{0, B_15, A_15, C_15},
{0, E_13, D_13, F_13},
{0, B_12, A_12, C_12},
{0, B_16, A_16, C_16},
{0, E_16, D_16, F_16},
{0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16}
+ {0, K_16, J_16, L_16},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{2|(12<<4)}, {16*14, 0}, 1},
- {{0|(13<<4)}, {16*13, 0}, 1},
- {{0|(12<<4)}, {16*12, 0}, 1},
- {{0|(11<<4)}, {16*11, 0}, 1},
- {{0|(10<<4)}, {16*10, 0}, 1},
- {{0|(9<<4)}, {16*9, 0}, 1},
- {{0|(8<<4)}, {16*8, 0}, 1},
- {{0|(7<<4)}, {16*7, 0}, 1},
- {{0|(6<<4)}, {16*6, 0}, 1},
- {{0|(5<<4)}, {16*5, 0}, 1},
- {{0|(4<<4)}, {16*4, 0}, 1},
- {{0|(3<<4)}, {16*3, 0}, 1},
- {{0|(2<<4)}, {16*2, 0}, 1},
- {{0|(1<<4)}, {16*1, 0}, 1},
- {{0|(0<<4)}, {16*0, 0}, 1},
-
- {{1|(13<<4)}, {16*13.75, 16}, 1},
- {{1|(12<<4)}, {16*12.5, 16}, 0},
- {{1|(11<<4)}, {16*11.5, 16}, 0},
- {{1|(10<<4)}, {16*10.5, 16}, 0},
- {{1|(9<<4)}, { 16*9.5, 16}, 0},
- {{1|(8<<4)}, { 16*8.5, 16}, 0},
- {{1|(7<<4)}, { 16*7.5, 16}, 0},
- {{1|(6<<4)}, { 16*6.5, 16}, 0},
- {{1|(5<<4)}, { 16*5.5, 16}, 0},
- {{1|(4<<4)}, { 16*4.5, 16}, 0},
- {{1|(3<<4)}, { 16*3.5, 16}, 0},
- {{1|(2<<4)}, { 16*2.5, 16}, 0},
- {{1|(1<<4)}, { 16*1.5, 16}, 0},
- {{1|(0<<4)}, { 16*0.25, 16}, 1},
-
- {{2|(13<<4)}, {16*12.75, 32}, 1},
- {{2|(11<<4)}, {16*11.75, 32}, 0},
- {{2|(10<<4)}, {16*10.75, 32}, 0},
- {{2|(9<<4)}, {16*9.75, 32}, 0},
- {{2|(8<<4)}, {16*8.75, 32}, 0},
- {{2|(7<<4)}, {16*7.75, 32}, 0},
- {{2|(6<<4)}, { 16*6.75, 32}, 0},
- {{2|(5<<4)}, { 16*5.75, 32}, 0},
- {{2|(4<<4)}, { 16*4.75, 32}, 0},
- {{2|(3<<4)}, { 16*3.75, 32}, 0},
- {{2|(2<<4)}, { 16*2.75, 32}, 0},
- {{2|(1<<4)}, { 16*1.75, 32}, 0},
- {{2|(0<<4)}, { 16*0.375, 32}, 1},
-
- {{3|(13<<4)}, {16*14, 48}, 1},
- {{3|(11<<4)}, {16*12.625, 48}, 0},
- {{3|(10<<4)}, {16*11.25, 48}, 0},
- {{3|(9<<4)}, {16*10.25, 48}, 0},
- {{3|(8<<4)}, {16*9.25, 48}, 0},
- {{3|(7<<4)}, {16*8.25, 48}, 0},
- {{3|(6<<4)}, {16*7.25, 48}, 0},
- {{3|(5<<4)}, {16*6.25, 48}, 0},
- {{3|(4<<4)}, {16*5.25, 48}, 0},
- {{3|(3<<4)}, {16*4.25, 48}, 0},
- {{3|(2<<4)}, {16*3.25, 48}, 0},
- {{3|(1<<4)}, {16*1.25, 48}, 0},
- {{3|(0<<4)}, {16*0.625, 48}, 1},
+led_config_t g_led_config = { {
+ { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
+ { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 },
+ { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 29 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
+ { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
+}, {
+ { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
+ { 0, 0 }, { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
+ { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
+ { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
+ { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 1, 1, 1
+} };
- {{4|(13<<4)}, {16*13.625, 64}, 1},
- {{4|(11<<4)}, {16*12.375, 64}, 1},
- {{4|(10<<4)}, {16*11.125, 64}, 1},
- {{4|(5<<4)}, { 16*7, 64}, 0},
- {{4|(2<<4)}, { 16*2.875, 64}, 1},
- {{4|(1<<4)}, { 16*1.625, 64}, 1},
- {{4|(0<<4)}, { 16*0.375, 64}, 1}
-
-};
#elif defined (dzrgb60_hhkb_iso)
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
{0, H_15, G_15, I_15},
{0, K_14, J_14, L_14},
{0, K_13, J_13, L_13},
@@ -316,7 +188,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, K_3, J_3, L_3},
{0, K_2, J_2, L_2},
{0, K_1, J_1, L_1},
-
{0, K_15, J_15, L_15},
{0, H_13, G_13, I_13},
{0, H_12, G_12, I_12},
@@ -331,7 +202,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, H_3, G_3, I_3},
{0, H_2, G_2, I_2},
{0, H_1, G_1, I_1},
-
{0, E_15, D_15, F_15},
{0, E_12, D_12, F_12},
{0, E_11, D_11, F_11},
@@ -345,7 +215,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
{0, B_14, A_14, C_14},
{0, B_13, A_13, C_13},
{0, B_11, A_11, C_11},
@@ -359,93 +228,37 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_3, A_3, C_3},
{0, B_2, A_2, C_2},
{0, B_1, A_1, C_1},
-
{0, B_15, A_15, C_15},
{0, E_13, D_13, F_13},
{0, B_12, A_12, C_12},
{0, B_16, A_16, C_16},
{0, E_16, D_16, F_16},
{0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16}
+ {0, K_16, J_16, L_16},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{2|(12<<4)}, {16*14, 0}, 1},
- {{0|(13<<4)}, {16*13, 0}, 1},
- {{0|(12<<4)}, {16*12, 0}, 1},
- {{0|(11<<4)}, {16*11, 0}, 1},
- {{0|(10<<4)}, {16*10, 0}, 1},
- {{0|(9<<4)}, {16*9, 0}, 1},
- {{0|(8<<4)}, {16*8, 0}, 1},
- {{0|(7<<4)}, {16*7, 0}, 1},
- {{0|(6<<4)}, {16*6, 0}, 1},
- {{0|(5<<4)}, {16*5, 0}, 1},
- {{0|(4<<4)}, {16*4, 0}, 1},
- {{0|(3<<4)}, {16*3, 0}, 1},
- {{0|(2<<4)}, {16*2, 0}, 1},
- {{0|(1<<4)}, {16*1, 0}, 1},
- {{0|(0<<4)}, {16*0, 0}, 1},
-
- {{2|(13<<4)}, {16*13.75, 24}, 1},
- {{1|(12<<4)}, {16*12.5, 16}, 0},
- {{1|(11<<4)}, {16*11.5, 16}, 0},
- {{1|(10<<4)}, {16*10.5, 16}, 0},
- {{1|(9<<4)}, { 16*9.5, 16}, 0},
- {{1|(8<<4)}, { 16*8.5, 16}, 0},
- {{1|(7<<4)}, { 16*7.5, 16}, 0},
- {{1|(6<<4)}, { 16*6.5, 16}, 0},
- {{1|(5<<4)}, { 16*5.5, 16}, 0},
- {{1|(4<<4)}, { 16*4.5, 16}, 0},
- {{1|(3<<4)}, { 16*3.5, 16}, 0},
- {{1|(2<<4)}, { 16*2.5, 16}, 0},
- {{1|(1<<4)}, { 16*1.5, 16}, 0},
- {{1|(0<<4)}, { 16*0.25, 16}, 1},
+led_config_t g_led_config = { {
+ { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
+ { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 29 },
+ { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 15 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
+ { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
+}, {
+ { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
+ { 0, 0 }, { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
+ { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
+ { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
+ { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 1, 1, 1
+} };
- {{1|(13<<4)}, {16*12.75, 32}, 1},
- {{2|(11<<4)}, {16*11.75, 32}, 0},
- {{2|(10<<4)}, {16*10.75, 32}, 0},
- {{2|(9<<4)}, {16*9.75, 32}, 0},
- {{2|(8<<4)}, {16*8.75, 32}, 0},
- {{2|(7<<4)}, {16*7.75, 32}, 0},
- {{2|(6<<4)}, { 16*6.75, 32}, 0},
- {{2|(5<<4)}, { 16*5.75, 32}, 0},
- {{2|(4<<4)}, { 16*4.75, 32}, 0},
- {{2|(3<<4)}, { 16*3.75, 32}, 0},
- {{2|(2<<4)}, { 16*2.75, 32}, 0},
- {{2|(1<<4)}, { 16*1.75, 32}, 0},
- {{2|(0<<4)}, { 16*0.375, 32}, 1},
-
- {{3|(13<<4)}, {16*14, 48}, 1},
- {{3|(11<<4)}, {16*12.625, 48}, 0},
- {{3|(10<<4)}, {16*11.25, 48}, 0},
- {{3|(9<<4)}, {16*10.25, 48}, 0},
- {{3|(8<<4)}, {16*9.25, 48}, 0},
- {{3|(7<<4)}, {16*8.25, 48}, 0},
- {{3|(6<<4)}, {16*7.25, 48}, 0},
- {{3|(5<<4)}, {16*6.25, 48}, 0},
- {{3|(4<<4)}, {16*5.25, 48}, 0},
- {{3|(3<<4)}, {16*4.25, 48}, 0},
- {{3|(2<<4)}, {16*3.25, 48}, 0},
- {{3|(1<<4)}, {16*1.25, 48}, 0},
- {{3|(0<<4)}, {16*0.625, 48}, 1},
-
- {{4|(13<<4)}, {16*13.625, 64}, 1},
- {{4|(11<<4)}, {16*12.375, 64}, 1},
- {{4|(10<<4)}, {16*11.125, 64}, 1},
- {{4|(5<<4)}, { 16*7, 64}, 0},
- {{4|(2<<4)}, { 16*2.875, 64}, 1},
- {{4|(1<<4)}, { 16*1.625, 64}, 1},
- {{4|(0<<4)}, { 16*0.375, 64}, 1}
-
-};
#elif defined (dzrgb60_ansi)
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
{0, K_14, J_14, L_14},
{0, K_13, J_13, L_13},
{0, K_12, J_12, L_12},
@@ -460,7 +273,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, K_3, J_3, L_3},
{0, K_2, J_2, L_2},
{0, K_1, J_1, L_1},
-
{0, H_14, G_14, I_14},
{0, H_13, G_13, I_13},
{0, H_12, G_12, I_12},
@@ -475,7 +287,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, H_3, G_3, I_3},
{0, H_2, G_2, I_2},
{0, H_1, G_1, I_1},
-
{0, E_14, D_14, F_14},
{0, E_12, D_12, F_12},
{0, E_11, D_11, F_11},
@@ -489,7 +300,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
{0, B_13, A_13, C_13},
{0, B_11, A_11, C_11},
{0, B_10, A_10, C_10},
@@ -502,7 +312,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_3, A_3, C_3},
{0, B_2, A_2, C_2},
{0, B_1, A_1, C_1},
-
{0, B_15, A_15, C_15},
{0, E_13, D_13, F_13},
{0, B_12, A_12, C_12},
@@ -510,85 +319,31 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_16, A_16, C_16},
{0, E_16, D_16, F_16},
{0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16}
+ {0, K_16, J_16, L_16},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{0|(13<<4)}, {16*13.5, 0}, 1},
- {{0|(12<<4)}, {16*12, 0}, 1},
- {{0|(11<<4)}, {16*11, 0}, 1},
- {{0|(10<<4)}, {16*10, 0}, 1},
- {{0|(9<<4)}, {16*9, 0}, 1},
- {{0|(8<<4)}, {16*8, 0}, 1},
- {{0|(7<<4)}, {16*7, 0}, 1},
- {{0|(6<<4)}, {16*6, 0}, 1},
- {{0|(5<<4)}, {16*5, 0}, 1},
- {{0|(4<<4)}, {16*4, 0}, 1},
- {{0|(3<<4)}, {16*3, 0}, 1},
- {{0|(2<<4)}, {16*2, 0}, 1},
- {{0|(1<<4)}, {16*1, 0}, 1},
- {{0|(0<<4)}, {16*0, 0}, 1},
-
- {{1|(13<<4)}, {16*13.75, 16}, 1},
- {{1|(12<<4)}, {16*12.5, 16}, 0},
- {{1|(11<<4)}, {16*11.5, 16}, 0},
- {{1|(10<<4)}, {16*10.5, 16}, 0},
- {{1|(9<<4)}, { 16*9.5, 16}, 0},
- {{1|(8<<4)}, { 16*8.5, 16}, 0},
- {{1|(7<<4)}, { 16*7.5, 16}, 0},
- {{1|(6<<4)}, { 16*6.5, 16}, 0},
- {{1|(5<<4)}, { 16*5.5, 16}, 0},
- {{1|(4<<4)}, { 16*4.5, 16}, 0},
- {{1|(3<<4)}, { 16*3.5, 16}, 0},
- {{1|(2<<4)}, { 16*2.5, 16}, 0},
- {{1|(1<<4)}, { 16*1.5, 16}, 0},
- {{1|(0<<4)}, { 16*0.25, 16}, 1},
-
- {{2|(13<<4)}, {16*13.375, 24}, 1},
- {{2|(11<<4)}, {16*11.75, 32}, 0},
- {{2|(10<<4)}, {16*10.75, 32}, 0},
- {{2|(9<<4)}, {16*9.75, 32}, 0},
- {{2|(8<<4)}, {16*8.75, 32}, 0},
- {{2|(7<<4)}, {16*7.75, 32}, 0},
- {{2|(6<<4)}, { 16*6.75, 32}, 0},
- {{2|(5<<4)}, { 16*5.75, 32}, 0},
- {{2|(4<<4)}, { 16*4.75, 32}, 0},
- {{2|(3<<4)}, { 16*3.75, 32}, 0},
- {{2|(2<<4)}, { 16*2.75, 32}, 0},
- {{2|(1<<4)}, { 16*1.75, 32}, 0},
- {{2|(0<<4)}, { 16*0.375, 32}, 1},
-
- {{3|(11<<4)}, {16*13.125, 48}, 1},
- {{3|(10<<4)}, {16*11.25, 48}, 0},
- {{3|(9<<4)}, {16*10.25, 48}, 0},
- {{3|(8<<4)}, {16*9.25, 48}, 0},
- {{3|(7<<4)}, {16*8.25, 48}, 0},
- {{3|(6<<4)}, {16*7.25, 48}, 0},
- {{3|(5<<4)}, {16*6.25, 48}, 0},
- {{3|(4<<4)}, {16*5.25, 48}, 0},
- {{3|(3<<4)}, {16*4.25, 48}, 0},
- {{3|(2<<4)}, {16*3.25, 48}, 0},
- {{3|(1<<4)}, {16*1.25, 48}, 0},
- {{3|(0<<4)}, {16*0.625, 48}, 1},
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
+ { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
+}, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 214, 24 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
+ { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
+ { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 1, 1, 1
+} };
- {{4|(13<<4)}, {16*13.875, 64}, 1},
- {{4|(11<<4)}, {16*12.625, 64}, 1},
- {{4|(10<<4)}, {16*11.375, 64}, 1},
- {{4|(9<<4)}, {16*10.125, 64}, 1},
- {{4|(5<<4)}, { 16*6.375, 64}, 0},
- {{4|(2<<4)}, { 16*2.625, 64}, 1},
- {{4|(1<<4)}, { 16*1.375, 64}, 1},
- {{4|(0<<4)}, { 16*0.125, 64}, 1}
-};
#else
-
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
{0, K_14, J_14, L_14},
{0, K_13, J_13, L_13},
{0, K_12, J_12, L_12},
@@ -603,7 +358,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, K_3, J_3, L_3},
{0, K_2, J_2, L_2},
{0, K_1, J_1, L_1},
-
{0, H_14, G_14, I_14},
{0, H_13, G_13, I_13},
{0, H_12, G_12, I_12},
@@ -618,7 +372,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, H_3, G_3, I_3},
{0, H_2, G_2, I_2},
{0, H_1, G_1, I_1},
-
{0, E_14, D_14, F_14},
{0, E_12, D_12, F_12},
{0, E_11, D_11, F_11},
@@ -632,7 +385,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_3, D_3, F_3},
{0, E_2, D_2, F_2},
{0, E_1, D_1, F_1},
-
{0, B_14, A_14, C_14},
{0, B_13, A_13, C_13},
{0, B_11, A_11, C_11},
@@ -646,7 +398,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_3, A_3, C_3},
{0, B_2, A_2, C_2},
{0, B_1, A_1, C_1},
-
{0, B_15, A_15, C_15},
{0, E_13, D_13, F_13},
{0, B_12, A_12, C_12},
@@ -655,102 +406,48 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, B_16, A_16, C_16},
{0, E_16, D_16, F_16},
{0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16}
+ {0, K_16, J_16, L_16},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{0|(13<<4)}, {17.23*13, 0}, 1},
- {{0|(12<<4)}, {17.23*12, 0}, 1},
- {{0|(11<<4)}, {17.23*11, 0}, 1},
- {{0|(10<<4)}, {17.23*10, 0}, 1},
- {{0|(9<<4)}, {17.23*9, 0}, 1},
- {{0|(8<<4)}, {17.23*8, 0}, 1},
- {{0|(7<<4)}, {17.23*7, 0}, 1},
- {{0|(6<<4)}, { 17.23*6, 0}, 1},
- {{0|(5<<4)}, { 17.23*5, 0}, 1},
- {{0|(4<<4)}, { 17.23*4, 0}, 1},
- {{0|(3<<4)}, { 17.23*3, 0}, 1},
- {{0|(2<<4)}, { 17.23*2, 0}, 1},
- {{0|(1<<4)}, { 17.23*1, 0}, 1},
- {{0|(0<<4)}, { 17.23*0, 0}, 1},
-
- {{1|(13<<4)}, {17.23*13, 16}, 1},
- {{1|(12<<4)}, {17.23*12, 16}, 0},
- {{1|(11<<4)}, {17.23*11, 16}, 0},
- {{1|(10<<4)}, {17.23*10, 16}, 0},
- {{1|(9<<4)}, {17.23*9, 16}, 0},
- {{1|(8<<4)}, {17.23*8, 16}, 0},
- {{1|(7<<4)}, {17.23*7, 16}, 0},
- {{1|(6<<4)}, { 17.23*6, 16}, 0},
- {{1|(5<<4)}, { 17.23*5, 16}, 0},
- {{1|(4<<4)}, { 17.23*4, 16}, 0},
- {{1|(3<<4)}, { 17.23*3, 16}, 0},
- {{1|(2<<4)}, { 17.23*2, 16}, 0},
- {{1|(1<<4)}, { 17.23*1, 16}, 0},
- {{1|(0<<4)}, { 17.23*0, 16}, 1},
-
- {{2|(13<<4)}, {17.23*13, 32}, 1},
- {{2|(11<<4)}, {17.23*11, 32}, 0},
- {{2|(10<<4)}, {17.23*10, 32}, 0},
- {{2|(9<<4)}, {17.23*9, 32}, 0},
- {{2|(8<<4)}, {17.23*8, 32}, 0},
- {{2|(7<<4)}, {17.23*7, 32}, 0},
- {{2|(6<<4)}, { 17.23*6, 32}, 0},
- {{2|(5<<4)}, { 17.23*5, 32}, 0},
- {{2|(4<<4)}, { 17.23*4, 32}, 0},
- {{2|(3<<4)}, { 17.23*3, 32}, 0},
- {{2|(2<<4)}, { 17.23*2, 32}, 0},
- {{2|(1<<4)}, { 17.23*1, 32}, 0},
- {{2|(0<<4)}, { 17.23*0, 32}, 1},
-
- {{3|(13<<4)}, {17.23*13, 48}, 1},
- {{3|(11<<4)}, {17.23*11, 48}, 0},
- {{3|(10<<4)}, {17.23*10, 48}, 0},
- {{3|(9<<4)}, {17.23*9, 48}, 0},
- {{3|(8<<4)}, {17.23*8, 48}, 0},
- {{3|(7<<4)}, {17.23*7, 48}, 0},
- {{3|(6<<4)}, { 17.23*6, 48}, 0},
- {{3|(5<<4)}, { 17.23*5, 48}, 0},
- {{3|(4<<4)}, { 17.23*4, 48}, 0},
- {{3|(3<<4)}, { 17.23*3, 48}, 0},
- {{3|(2<<4)}, { 17.23*2, 48}, 0},
- {{3|(1<<4)}, { 17.23*1, 48}, 0},
- {{3|(0<<4)}, { 17.23*0, 48}, 1},
-
- {{4|(13<<4)}, {17.23*13, 64}, 1},
- {{4|(11<<4)}, {17.23*11, 64}, 1},
- {{4|(10<<4)}, {17.23*10, 64}, 1},
- {{4|(9<<4)}, {17.23*9, 64}, 1},
- {{4|(8<<4)}, {17.23*8, 64}, 1},
- {{4|(5<<4)}, { 17.23*5, 64}, 0},
- {{4|(2<<4)}, { 17.23*2, 64}, 1},
- {{4|(1<<4)}, { 17.23*1, 64}, 1},
- {{4|(0<<4)}, { 17.23*0, 64}, 1}
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
+ { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, NO_LED, 41 },
+ { 62, 61, 60, NO_LED, NO_LED, 59, NO_LED, NO_LED, 58, 57, 56, 55, NO_LED, 54 }
+}, {
+ { 223, 0 }, { 206, 0 }, { 189, 0 }, { 172, 0 }, { 155, 0 }, { 137, 0 }, { 120, 0 }, { 103, 0 }, { 86, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 },
+ { 223, 16 }, { 206, 16 }, { 189, 16 }, { 172, 16 }, { 155, 16 }, { 137, 16 }, { 120, 16 }, { 103, 16 }, { 86, 16 }, { 68, 16 }, { 51, 16 }, { 34, 16 }, { 17, 16 }, { 0, 16 },
+ { 223, 32 }, { 189, 32 }, { 172, 32 }, { 155, 32 }, { 137, 32 }, { 120, 32 }, { 103, 32 }, { 86, 32 }, { 68, 32 }, { 51, 32 }, { 34, 32 }, { 17, 32 }, { 0, 32 }, { 223, 48 },
+ { 189, 48 }, { 172, 48 }, { 155, 48 }, { 137, 48 }, { 120, 48 }, { 103, 48 }, { 86, 48 }, { 68, 48 }, { 51, 48 }, { 34, 48 }, { 17, 48 }, { 0, 48 }, { 223, 64 }, { 189, 64 },
+ { 172, 64 }, { 155, 64 }, { 137, 64 }, { 86, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1
+} };
-};
#endif
void matrix_init_kb(void) {
matrix_init_user();
}
-
-
void matrix_scan_kb(void) {
matrix_scan_user();
}
-
-
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return process_record_user(keycode, record);
}
-
-
void suspend_power_down_kb(void)
{
rgb_matrix_set_suspend_state(true);
+ suspend_power_down_user();
}
void suspend_wakeup_init_kb(void)
{
rgb_matrix_set_suspend_state(false);
+ suspend_wakeup_init_user();
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/ansi/config.h b/keyboards/dztech/dz60rgb/keymaps/ansi/config.h
index 3ca582e84..4bfad0df0 100644
--- a/keyboards/dztech/dz60rgb/keymaps/ansi/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/ansi/config.h
@@ -1,6 +1,2 @@
#pragma once
#define dzrgb60_ansi
-#undef DRIVER_1_LED_TOTAL
-#undef DRIVER_LED_TOTAL
-#define DRIVER_1_LED_TOTAL 61
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
diff --git a/keyboards/dztech/dz60rgb/keymaps/ansi/keymap.c b/keyboards/dztech/dz60rgb/keymaps/ansi/keymap.c
index fcdf29e4e..584f035ef 100644
--- a/keyboards/dztech/dz60rgb/keymaps/ansi/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/ansi/keymap.c
@@ -38,14 +38,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c
index 0eff4ca8a..c0bc1b89b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/default/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/default/keymap.c
@@ -5,26 +5,23 @@ extern bool g_suspend_state;
#define _LAYER2 2
#define _LAYER3 3
#define _LAYER4 4
-#define _LAYER5 5
-#define _LAYER6 6
-#define _LAYER7 7
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = 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_BSLASH,\
- CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
- KC_LCTL, KC_LGUI, LM(1, MOD_LALT), KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RIGHT),
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,\
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
+ KC_LCTL, KC_LGUI, LM(1, MOD_LALT), KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
[_LAYER1] = LAYOUT( /* FN */
TO(3), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,\
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, EEP_RST,\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_VOLU, KC_MUTE,\
KC_TRNS, KC_TRNS, KC_TRNS, TO(4), KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
[_LAYER2] = LAYOUT( /* LIGHT */
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, EEP_RST,\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_LAYER3] = LAYOUT( /* NUMPAD */
@@ -33,38 +30,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_PENT,\
KC_TRNS, KC_P1, KC_P2, KC_P3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_TRNS, KC_TRNS,\
KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS),
- [_LAYER4] = LAYOUT( /* MAC */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,\
- CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(5) , KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_LAYER4] = LAYOUT( /* SWITCH LALT AND LGUI */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,\
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL),\
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, TO(0), KC_LEFT, KC_DOWN, KC_RIGHT),
};
-
-
-void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
- for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
- }
- }
-}
-
void rgb_matrix_indicators_user(void) {
uint8_t this_led = host_keyboard_leds();
if (!g_suspend_state) {
switch (biton32(layer_state)) {
- case _LAYER1:
- rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false);
- break;
- case _LAYER2:
- rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false);
- break;
case _LAYER3:
if ( this_led & (1<<USB_LED_NUM_LOCK)) {
rgb_matrix_set_color(13, 0xFF, 0x00, 0x00);
@@ -136,20 +113,15 @@ void rgb_matrix_indicators_user(void) {
rgb_matrix_set_color(62, 0x00, 0x00, 0x00);
break;
case _LAYER4:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false);
+ rgb_matrix_set_color_all(0xFF, 0xFF, 0x00);
break;
}
}
if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
}
-
}
-
-
-
-
void matrix_init_user(void) {
//user initialization
}
@@ -158,6 +130,6 @@ void matrix_scan_user(void) {
//user matrix
}
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/hhkb/config.h b/keyboards/dztech/dz60rgb/keymaps/hhkb/config.h
index 70f4bde25..2b5e7de6a 100644
--- a/keyboards/dztech/dz60rgb/keymaps/hhkb/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/hhkb/config.h
@@ -1,6 +1,2 @@
#pragma once
#define dzrgb60_hhkb
-#undef DRIVER_1_LED_TOTAL
-#undef DRIVER_LED_TOTAL
-#define DRIVER_1_LED_TOTAL 62
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
diff --git a/keyboards/dztech/dz60rgb/keymaps/hhkb/keymap.c b/keyboards/dztech/dz60rgb/keymaps/hhkb/keymap.c
index 6ba3ac7e6..5a7a56801 100644
--- a/keyboards/dztech/dz60rgb/keymaps/hhkb/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/hhkb/keymap.c
@@ -39,14 +39,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/config.h b/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/config.h
index 2bc3519de..8de5853e1 100644
--- a/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/config.h
@@ -1,6 +1,2 @@
#pragma once
#define dzrgb60_hhkb_iso
-#undef DRIVER_1_LED_TOTAL
-#undef DRIVER_LED_TOTAL
-#define DRIVER_1_LED_TOTAL 62
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
diff --git a/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/keymap.c b/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/keymap.c
index 772eddf07..34c1752ff 100644
--- a/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/hhkb_iso/keymap.c
@@ -39,14 +39,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS),
};
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/iso/config.h b/keyboards/dztech/dz60rgb/keymaps/iso/config.h
index 7ad810a16..c765fe0e2 100644
--- a/keyboards/dztech/dz60rgb/keymaps/iso/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/iso/config.h
@@ -1,6 +1,2 @@
#pragma once
#define dzrgb60_iso
-#undef DRIVER_1_LED_TOTAL
-#undef DRIVER_LED_TOTAL
-#define DRIVER_1_LED_TOTAL 61
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
diff --git a/keyboards/dztech/dz60rgb/keymaps/iso/keymap.c b/keyboards/dztech/dz60rgb/keymaps/iso/keymap.c
index a78e23703..3a90d2f33 100644
--- a/keyboards/dztech/dz60rgb/keymaps/iso/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/iso/keymap.c
@@ -38,14 +38,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
+extern led_config_t g_led_config;
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
- rgb_led led;
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color( i, red, green, blue );
- }
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
}
}
}
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
new file mode 100644
index 000000000..b6fb08dc1
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
@@ -0,0 +1,60 @@
+#pragma once
+
+#define FORCE_NKRO
+
+#define PERMISSIVE_HOLD
+#define TAPPING_TERM 150
+
+#undef DISABLE_RGB_MATRIX_SPLASH
+#undef DISABLE_RGB_MATRIX_MULTISPLASH
+#undef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+
+// #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_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_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
+
+#define QMK_KEYS_PER_SCAN 4
+
+// #define RGB_MATRIX_KEYRELEASES
+
+
+// some speed shit
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+#define NO_PRINT
+#endif // !NO_PRINT
+
+#define NO_ACTION_ONESHOT
+#define TAPPING_FORCE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// #include "config_led.h"
+// #include "dz60rgb.h"
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c
new file mode 100644
index 000000000..5c725f5dc
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c
@@ -0,0 +1,333 @@
+#include QMK_KEYBOARD_H
+
+extern bool g_suspend_state;
+
+enum dz60rgb_layers {
+ _QWERTY,
+ _FNM,
+ _NAV,
+ _RGB,
+ _FNC
+};
+
+enum dz60rgb_keycodes {
+ REBOOT = SAFE_RANGE,
+ MAS_CRM,
+ MAS_PRP,
+ MAS_RED,
+ MAS_GRN,
+ MAS_BLU,
+ MAS_CYN,
+ MAS_MGT,
+ MAS_YEL,
+ MAS_KEY,
+ MAS_WHT,
+};
+#define _V_V_V_ KC_TRNS
+#define LT_CAPS LT(_NAV, KC_CAPS)
+#define LT_DEL LT(_RGB, KC_DEL)
+extern rgb_config_t rgb_matrix_config;
+extern bool autoshift_enabled;
+#define MT_SLSH RSFT_T(KC_SLSH)
+#define MT_APP RALT_T(KC_APP)
+#define LM_LALT LM(_FNM, MOD_LALT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
+ LT_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT_SLSH, KC_UP, LT_DEL, \
+ KC_LCTL, KC_LGUI, LM_LALT, KC_SPC, MT_APP, MO(_FNC), KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+ [_FNM] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _V_V_V_, _______, _______, _______, _______, _______, _______ \
+ ),
+ [_NAV] = LAYOUT(
+ KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PMNS, KC_PPLS, KC_DEL, \
+ _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC_P4, KC_P5, KC_P6, KC_PSLS, KC_PSCR, KC_SLCK, KC_INS, \
+ _V_V_V_, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, KC_PENT, \
+ _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, KC_P0, KC_PDOT, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ [_RGB] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
+ _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, MAS_MGT, MAS_BLU, MAS_WHT, RGB_RMOD, RGB_MOD, _______, \
+ _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, MAS_RED, MAS_KEY, MAS_CYN, MAS_PRP, _______, _______, \
+ _______, RGB_TOG, _______, _______, _______, _______, _______, MAS_YEL, MAS_GRN, MAS_CRM, _______, _______, _V_V_V_, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ [_FNC] = LAYOUT( // fuck it edition
+ RCTL(KC_ESC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_ASTG, \
+ RCTL(KC_TAB), RCTL(KC_Q), RCTL(KC_W), RCTL(KC_E), RCTL(KC_R), RCTL(KC_T), RCTL(KC_Y), RCTL(KC_U), RCTL(KC_I), RCTL(KC_O), RCTL(KC_P), RCTL(KC_LBRC), RCTL(KC_RBRC), RCTL(KC_BSLS), \
+ RCTL(KC_CAPS), RCTL(KC_A), RCTL(KC_S), RCTL(KC_D), RCTL(KC_F), RCTL(KC_G), RCTL(KC_H), RCTL(KC_J), RCTL(KC_K), RCTL(KC_L), RCTL(KC_SCLN), RCTL(KC_QUOT), RCTL(KC_ENT), \
+ RCTL(KC_LSFT), RCTL(KC_Z), RCTL(KC_X), RCTL(KC_C), RCTL(KC_V), REBOOT, RCTL(KC_N), RCTL(KC_M), RCTL(KC_COMM), RCTL(KC_DOT), RCTL(KC_SLSH), KC_VOLU, RCTL(KC_DEL), \
+ RCTL(KC_LCTL), RCTL(KC_LGUI), RCTL(KC_LALT), RCTL(KC_SPC), KC_MUTE, _V_V_V_, RCTL(KC_LEFT), KC_VOLD, RCTL(KC_RGHT) \
+ ),
+ /*
+ [_FNC] = 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_ASTG, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, REBOOT, _______, _______, _______, _______, RCTL(KC_SLSH), KC_VOLU, RCTL(KC_DEL), \
+ _______, _______, _______, _______, KC_MUTE, _______, RCTL(KC_LEFT), KC_VOLD, RCTL(KC_RGHT) \
+ ),
+ [_LAYER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ [_LAYER] = LAYOUT(
+ 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \
+ 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, \
+ 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, \
+ 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, \
+ 62, 61, 60, 59, 58, 57, 56, 55, 54 \
+ ),
+ */
+};
+
+void rgb_matrix_indicators_user(void)
+{
+ uint8_t this_led = host_keyboard_leds();
+
+ if (!g_suspend_state && rgb_matrix_config.enable) {
+ switch (biton32(layer_state)) {
+ case _NAV:
+ if (this_led & (1 << USB_LED_NUM_LOCK)) {
+ rgb_matrix_set_color(13, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(19, 0xFF, 0xFF, 0x00);
+ } else {
+ rgb_matrix_set_color(13, 0x00, 0x00, 0x00);
+ rgb_matrix_set_color(19, 0xFF, 0x00, 0x00);
+ }
+
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF); // layer indicator
+ // ESDF
+ rgb_matrix_set_color(24, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(38, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(36, 0xFF, 0x00, 0x00);
+ // home/end
+ rgb_matrix_set_color(25, 0x00, 0xFF, 0x00);
+ rgb_matrix_set_color(23, 0x00, 0xFF, 0x00);
+ // pgup/dn
+ rgb_matrix_set_color(26, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(39, 0x00, 0x00, 0xFF);
+ // numpad
+ rgb_matrix_set_color(6, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(5, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(4, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(20, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(18, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(33, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(32, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(31, 0xFF, 0xFF, 0x00);
+ // zero
+ rgb_matrix_set_color(47, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(46, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(45, 0xFF, 0x00, 0x00);
+ // dot
+ rgb_matrix_set_color(44, 0x00, 0x00, 0xFF);
+ // math shit
+ rgb_matrix_set_color(3, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(2, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(1, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(0, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(17, 0x00, 0x00, 0xFF);
+ // other
+ rgb_matrix_set_color(16, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(15, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(14, 0xFF, 0xFF, 0xFF);
+ break;
+
+ case _RGB: {
+ HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
+ HSV hui = hsv;
+ HSV hud = hsv;
+ HSV sai = hsv;
+ HSV sad = hsv;
+ HSV vai = hsv;
+ HSV vad = hsv;
+ hui.h = hsv.h + 8;
+ hud.h = hsv.h - 8;
+ sai.s = hsv.s + 16 > 255 ? 255 : hsv.s + 16;
+ sad.s = hsv.s - 16 < 0 ? 0 : hsv.s - 16;
+ vai.v = hsv.v + 16 > 255 ? 255 : hsv.v + 16;
+ vad.v = hsv.v - 16 < 0 ? 0 : hsv.v - 16;
+ RGB rgb = hsv_to_rgb(hsv);
+ RGB rgbHUI = hsv_to_rgb(hui);
+ RGB rgbHUD = hsv_to_rgb(hud);
+ RGB rgbSAI = hsv_to_rgb(sai);
+ RGB rgbSAD = hsv_to_rgb(sad);
+ RGB rgbVAI = hsv_to_rgb(vai);
+ RGB rgbVAD = hsv_to_rgb(vad);
+ rgb_matrix_set_color(41, 0xFF, 0xFF, 0xFF); // layer indicator
+ rgb_matrix_set_color(59, rgb.r, rgb.g, rgb.b); // color indicator
+ rgb_matrix_set_color(26, 0xFF, 0x80, 0x00); //MOD
+ rgb_matrix_set_color(39, 0xFF, 0x80, 0x00); //MOD
+ rgb_matrix_set_color(16, 0xFF, 0x80, 0x00); //RGB_RMOD
+ rgb_matrix_set_color(15, 0xFF, 0x80, 0x00); //MOD
+ rgb_matrix_set_color(52, 0xFF, 0x40, 0x00); //TOG
+ rgb_matrix_set_color(25, 0x80, 0x80, 0x80); //SPI
+ rgb_matrix_set_color(38, 0x80, 0x80, 0x80); //SPD
+ rgb_matrix_set_color(24, rgbHUI.r, rgbHUI.g, rgbHUI.b); //HUI
+ rgb_matrix_set_color(37, rgbHUD.r, rgbHUD.g, rgbHUD.b); //HUD
+ rgb_matrix_set_color(23, rgbSAI.r, rgbSAI.g, rgbSAI.b); //SAI
+ rgb_matrix_set_color(36, rgbSAD.r, rgbSAD.g, rgbSAD.b); //SAD
+ rgb_matrix_set_color(22, rgbVAI.r, rgbVAI.g, rgbVAI.b); //VAI
+ rgb_matrix_set_color(35, rgbVAD.r, rgbVAD.g, rgbVAD.b); //VAD
+ rgb_matrix_set_color(19, 0xF0, 0x00, 0xFF); //MAS_MGT
+ rgb_matrix_set_color(18, 0x00, 0x02, 0xFF); //MAS_BLU
+ rgb_matrix_set_color(33, 0xFF, 0x00, 0x00); //MAS_RED
+ rgb_matrix_set_color(32, 0x00, 0x00, 0x00); //MAS_KEY
+ rgb_matrix_set_color(31, 0x00, 0xFF, 0xF7); //MAS_CYN
+ rgb_matrix_set_color(46, 0xFF, 0xDA, 0x00); //MAS_YEL
+ rgb_matrix_set_color(45, 0x00, 0xFF, 0x01); //MAS_GRN
+ rgb_matrix_set_color(44, 0xFF, 0xA5, 0x18); //MAS_CRM
+ rgb_matrix_set_color(30, 0x81, 0x3C, 0xFF); //MAS_PRP
+ rgb_matrix_set_color(17, 0xFF, 0xFF, 0xFF); //MAS_WHT
+ }
+ break;
+
+ case _FNC:
+ rgb_matrix_set_color(57, 0xFF, 0xFF, 0xFF); // layer indicator
+ rgb_matrix_set_color(48, 0xFF, 0x00, 0x00); // bootloader
+ rgb_matrix_set_color(42, 0x00, 0x80, 0xFF); // vol
+ rgb_matrix_set_color(55, 0x00, 0x80, 0xFF);
+ rgb_matrix_set_color(58, 0xFF, 0x00, 0x00); // mute
+ rgb_matrix_set_color(56, 0xFF, 0x80, 0x00); // ctrl+left/right
+ rgb_matrix_set_color(54, 0xFF, 0x80, 0x00);
+ rgb_matrix_set_color(41, 0xFF, 0x00, 0x40); // ctrl+delete
+ rgb_matrix_set_color(43, 0xFF, 0x00, 0x40); // ctrl+slash
+
+ if (this_led & (1 << !autoshift_enabled)) {
+ rgb_matrix_set_color(0, 0xFF, 0x00, 0x00); // KC_ASTG
+ } else {
+ rgb_matrix_set_color(0, 0xFF, 0xFF, 0x00);
+ }
+
+ break;
+ }
+ }
+
+ if (this_led & (1 << USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+void matrix_init_user(void)
+{
+ //user initialization
+ autoshift_disable();
+}
+
+void matrix_scan_user(void)
+{
+ //user matrix
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record)
+{
+ static uint32_t key_timer;
+
+ switch (keycode) {
+ case REBOOT:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ rgb_matrix_enable_noeeprom();
+ rgb_matrix_mode_noeeprom(1);
+ rgb_matrix_sethsv_noeeprom(11, 11, 11);
+ wait_ms(150);
+ reset_keyboard();
+ } else {
+ register_code(KC_RCTL);
+ tap_code(KC_B);
+ unregister_code(KC_RCTL);
+ }
+ }
+
+ return false;
+
+ case MAS_CRM:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(32, 160, 255);
+ }
+
+ return false;
+
+ case MAS_PRP:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(192, 112, 255);
+ }
+
+ return false;
+
+ case MAS_RED:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(0, 255, 255);
+ }
+
+ return false;
+
+ case MAS_GRN:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(88, 255, 255);
+ }
+
+ return false;
+
+ case MAS_BLU:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(168, 255, 255);
+ }
+
+ return false;
+
+ case MAS_CYN:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(128, 255, 255);
+ }
+
+ return false;
+
+ case MAS_MGT:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(216, 255, 255);
+ }
+
+ return false;
+
+ case MAS_YEL:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(40, 255, 255);
+ }
+
+ return false;
+
+ case MAS_KEY:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(0, 0, 0);
+ }
+
+ return false;
+
+ case MAS_WHT:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(128, 0, 255);
+ }
+
+ return false;
+
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/rules.mk b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/rules.mk
new file mode 100644
index 000000000..15b8ec1ba
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/rules.mk
@@ -0,0 +1,7 @@
+NKRO_ENABLE = yes # USB Nkey Rollover
+AUTO_SHIFT_ENABLE = yes # Auto Shift
+# VELOCIKEY_ENABLE = yes
+
+EXTRAFLAGS += -flto
+
+# SRC += dz60rgb.c
diff --git a/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c b/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
index 2784f6fa6..a6d1e226b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
@@ -50,42 +50,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-void rgb_matrix_layer_helper(uint8_t red, uint8_t green, uint8_t blue, bool default_layer)
-{
- rgb_led led;
-
- for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
-
- if (led.matrix_co.raw < 0xFF) {
- if (led.modifier) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
- }
+extern led_config_t g_led_config;
+void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
+ }
+ }
}
void rgb_matrix_indicators_user(void)
{
uint8_t this_led = host_keyboard_leds();
-
+
if (!g_suspend_state) {
switch (biton32(layer_state)) {
case _LAYER1:
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
-
+
case _LAYER2:
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
-
+
case _LAYER4:
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
}
}
-
+
if (this_led & (1 << USB_LED_CAPS_LOCK)) {
rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
}
-
+
switch (biton32(layer_state)) {
case _LAYER3:
if (this_led & (1 << USB_LED_NUM_LOCK)) {
@@ -93,7 +87,7 @@ void rgb_matrix_indicators_user(void)
} else {
rgb_matrix_set_color(13, 0x00, 0x00, 0x00);
}
-
+
rgb_matrix_set_color(0, 0x00, 0xFF, 0x00);
rgb_matrix_set_color(1, 0x00, 0x00, 0x00);
rgb_matrix_set_color(1, 0x00, 0xFF, 0x00);
diff --git a/keyboards/dztech/dz60rgb/mcuconf.h b/keyboards/dztech/dz60rgb/mcuconf.h
deleted file mode 100644
index 226da48d5..000000000
--- a/keyboards/dztech/dz60rgb/mcuconf.h
+++ /dev/null
@@ -1,257 +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.
-*/
-
-#ifndef MCUCONF_H
-#define MCUCONF_H
-
-/*
- * STM32F3xx drivers configuration.
- * The following settings override the default settings present in
- * the various device driver implementation headers.
- * Note that the settings for each driver only have effect if the whole
- * driver is enabled in halconf.h.
- *
- * IRQ priorities:
- * 15...0 Lowest...Highest.
- *
- * DMA priorities:
- * 0...3 Lowest...Highest.
- */
-
-#define STM32F3xx_MCUCONF
-
-/*
- * HAL driver system settings.
- */
-#define STM32_NO_INIT FALSE
-#define STM32_PVD_ENABLE FALSE
-#define STM32_PLS STM32_PLS_LEV0
-#define STM32_HSI_ENABLED TRUE
-#define STM32_LSI_ENABLED TRUE
-#define STM32_HSE_ENABLED TRUE
-#define STM32_LSE_ENABLED FALSE
-#define STM32_SW STM32_SW_PLL
-#define STM32_PLLSRC STM32_PLLSRC_HSE
-#define STM32_PREDIV_VALUE 1
-#define STM32_PLLMUL_VALUE 9
-#define STM32_HPRE STM32_HPRE_DIV1
-#define STM32_PPRE1 STM32_PPRE1_DIV2
-#define STM32_PPRE2 STM32_PPRE2_DIV2
-#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
-#define STM32_ADC12PRES STM32_ADC12PRES_DIV1
-#define STM32_ADC34PRES STM32_ADC34PRES_DIV1
-#define STM32_USART1SW STM32_USART1SW_PCLK
-#define STM32_USART2SW STM32_USART2SW_PCLK
-#define STM32_USART3SW STM32_USART3SW_PCLK
-#define STM32_UART4SW STM32_UART4SW_PCLK
-#define STM32_UART5SW STM32_UART5SW_PCLK
-#define STM32_I2C1SW STM32_I2C1SW_SYSCLK
-#define STM32_I2C2SW STM32_I2C2SW_SYSCLK
-#define STM32_TIM1SW STM32_TIM1SW_PCLK2
-#define STM32_TIM8SW STM32_TIM8SW_PCLK2
-#define STM32_RTCSEL STM32_RTCSEL_LSI
-#define STM32_USB_CLOCK_REQUIRED TRUE
-#define STM32_USBPRE STM32_USBPRE_DIV1P5
-
-#undef STM32_HSE_BYPASS
-// #error "oh no"
-// #endif
-
-/*
- * ADC driver system settings.
- */
-#define STM32_ADC_DUAL_MODE FALSE
-#define STM32_ADC_COMPACT_SAMPLES FALSE
-#define STM32_ADC_USE_ADC1 FALSE
-#define STM32_ADC_USE_ADC2 FALSE
-#define STM32_ADC_USE_ADC3 FALSE
-#define STM32_ADC_USE_ADC4 FALSE
-#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
-#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
-#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
-#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
-#define STM32_ADC_ADC1_DMA_PRIORITY 2
-#define STM32_ADC_ADC2_DMA_PRIORITY 2
-#define STM32_ADC_ADC3_DMA_PRIORITY 2
-#define STM32_ADC_ADC4_DMA_PRIORITY 2
-#define STM32_ADC_ADC12_IRQ_PRIORITY 5
-#define STM32_ADC_ADC3_IRQ_PRIORITY 5
-#define STM32_ADC_ADC4_IRQ_PRIORITY 5
-#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC4_DMA_IRQ_PRIORITY 5
-#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
-#define STM32_ADC_ADC34_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1
-
-/*
- * CAN driver system settings.
- */
-#define STM32_CAN_USE_CAN1 FALSE
-#define STM32_CAN_CAN1_IRQ_PRIORITY 11
-
-/*
- * DAC driver system settings.
- */
-#define STM32_DAC_DUAL_MODE FALSE
-#define STM32_DAC_USE_DAC1_CH1 TRUE
-#define STM32_DAC_USE_DAC1_CH2 TRUE
-#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10
-#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10
-#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2
-#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2
-
-/*
- * EXT driver system settings.
- */
-#define STM32_EXT_EXTI0_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI1_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI2_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI3_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI4_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI16_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI20_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI21_22_29_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI30_32_IRQ_PRIORITY 6
-#define STM32_EXT_EXTI33_IRQ_PRIORITY 6
-
-/*
- * GPT driver system settings.
- */
-#define STM32_GPT_USE_TIM1 FALSE
-#define STM32_GPT_USE_TIM2 FALSE
-#define STM32_GPT_USE_TIM3 FALSE
-#define STM32_GPT_USE_TIM4 FALSE
-#define STM32_GPT_USE_TIM6 TRUE
-#define STM32_GPT_USE_TIM7 TRUE
-#define STM32_GPT_USE_TIM8 TRUE
-#define STM32_GPT_TIM1_IRQ_PRIORITY 7
-#define STM32_GPT_TIM2_IRQ_PRIORITY 7
-#define STM32_GPT_TIM3_IRQ_PRIORITY 7
-#define STM32_GPT_TIM4_IRQ_PRIORITY 7
-#define STM32_GPT_TIM6_IRQ_PRIORITY 7
-#define STM32_GPT_TIM7_IRQ_PRIORITY 7
-#define STM32_GPT_TIM8_IRQ_PRIORITY 7
-
-/*
- * I2C driver system settings.
- */
-#define STM32_I2C_USE_I2C1 TRUE
-#define STM32_I2C_USE_I2C2 FALSE
-#define STM32_I2C_BUSY_TIMEOUT 50
-#define STM32_I2C_I2C1_IRQ_PRIORITY 10
-#define STM32_I2C_I2C2_IRQ_PRIORITY 10
-#define STM32_I2C_USE_DMA TRUE
-#define STM32_I2C_I2C1_DMA_PRIORITY 1
-#define STM32_I2C_I2C2_DMA_PRIORITY 1
-#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
-
-/*
- * ICU driver system settings.
- */
-#define STM32_ICU_USE_TIM1 FALSE
-#define STM32_ICU_USE_TIM2 FALSE
-#define STM32_ICU_USE_TIM3 FALSE
-#define STM32_ICU_USE_TIM4 FALSE
-#define STM32_ICU_USE_TIM8 FALSE
-#define STM32_ICU_TIM1_IRQ_PRIORITY 7
-#define STM32_ICU_TIM2_IRQ_PRIORITY 7
-#define STM32_ICU_TIM3_IRQ_PRIORITY 7
-#define STM32_ICU_TIM4_IRQ_PRIORITY 7
-#define STM32_ICU_TIM8_IRQ_PRIORITY 7
-
-/*
- * PWM driver system settings.
- */
-#define STM32_PWM_USE_ADVANCED FALSE
-#define STM32_PWM_USE_TIM1 FALSE
-#define STM32_PWM_USE_TIM2 FALSE
-#define STM32_PWM_USE_TIM3 FALSE
-#define STM32_PWM_USE_TIM4 FALSE
-#define STM32_PWM_USE_TIM8 FALSE
-#define STM32_PWM_TIM1_IRQ_PRIORITY 7
-#define STM32_PWM_TIM2_IRQ_PRIORITY 7
-#define STM32_PWM_TIM3_IRQ_PRIORITY 7
-#define STM32_PWM_TIM4_IRQ_PRIORITY 7
-#define STM32_PWM_TIM8_IRQ_PRIORITY 7
-
-/*
- * SERIAL driver system settings.
- */
-#define STM32_SERIAL_USE_USART1 FALSE
-#define STM32_SERIAL_USE_USART2 FALSE
-#define STM32_SERIAL_USE_USART3 FALSE
-#define STM32_SERIAL_USE_UART4 FALSE
-#define STM32_SERIAL_USE_UART5 FALSE
-#define STM32_SERIAL_USART1_PRIORITY 12
-#define STM32_SERIAL_USART2_PRIORITY 12
-#define STM32_SERIAL_USART3_PRIORITY 12
-#define STM32_SERIAL_UART4_PRIORITY 12
-#define STM32_SERIAL_UART5_PRIORITY 12
-
-/*
- * SPI driver system settings.
- */
-#define STM32_SPI_USE_SPI1 FALSE
-#define STM32_SPI_USE_SPI2 FALSE
-#define STM32_SPI_USE_SPI3 FALSE
-#define STM32_SPI_SPI1_DMA_PRIORITY 1
-#define STM32_SPI_SPI2_DMA_PRIORITY 1
-#define STM32_SPI_SPI3_DMA_PRIORITY 1
-#define STM32_SPI_SPI1_IRQ_PRIORITY 10
-#define STM32_SPI_SPI2_IRQ_PRIORITY 10
-#define STM32_SPI_SPI3_IRQ_PRIORITY 10
-#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
-
-/*
- * ST driver system settings.
- */
-#define STM32_ST_IRQ_PRIORITY 8
-#define STM32_ST_USE_TIMER 2
-
-/*
- * UART driver system settings.
- */
-#define STM32_UART_USE_USART1 FALSE
-#define STM32_UART_USE_USART2 FALSE
-#define STM32_UART_USE_USART3 FALSE
-#define STM32_UART_USART1_IRQ_PRIORITY 12
-#define STM32_UART_USART2_IRQ_PRIORITY 12
-#define STM32_UART_USART3_IRQ_PRIORITY 12
-#define STM32_UART_USART1_DMA_PRIORITY 0
-#define STM32_UART_USART2_DMA_PRIORITY 0
-#define STM32_UART_USART3_DMA_PRIORITY 0
-#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
-
-/*
- * USB driver system settings.
- */
-#define STM32_USB_USE_USB1 TRUE
-#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
-#define STM32_USB_USB1_HP_IRQ_PRIORITY 13
-#define STM32_USB_USB1_LP_IRQ_PRIORITY 14
-
-/*
- * WDG driver system settings.
- */
-#define STM32_WDG_USE_IWDG FALSE
-
-#endif /* MCUCONF_H */
diff --git a/keyboards/dztech/dz60rgb/rules.mk b/keyboards/dztech/dz60rgb/rules.mk
index cf89c4949..8ff1cbdc2 100644
--- a/keyboards/dztech/dz60rgb/rules.mk
+++ b/keyboards/dztech/dz60rgb/rules.mk
@@ -1,49 +1,6 @@
-# project specific files
-
-## chip/board settings
-# the next two should match the directories in
-# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
-MCU_FAMILY = STM32
-MCU_SERIES = STM32F3xx
-
-# Linker script to use
-# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
-# or <this_dir>/ld/
-MCU_LDSCRIPT = STM32F303xC
-
-# Startup code to use
-# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
-MCU_STARTUP = stm32f3xx
-
-# Board: it should exist either in <chibios>/os/hal/boards/
-# or <this_dir>/boards
-BOARD = GENERIC_STM32_F303XC
-
-# Cortex version
-MCU = cortex-m4
-
-# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
-ARMV = 7
-
-USE_FPU = yes
-
-# Vector table for application
-# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
-# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
-# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
-OPT_DEFS =
-
-# 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
-
-# Options to pass to dfu-util when flashing
+MCU = STM32F303
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
-
-# Build Options
-# comment out to disable the options.
-#
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/dztech/dz65rgb/config.h b/keyboards/dztech/dz65rgb/config.h
new file mode 100644
index 000000000..8ef9c2390
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/config.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "config_common.h"
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x1224
+#define DEVICE_VER 0x0001
+#define MANUFACTURER DZTECH
+#define PRODUCT DZ65RGB
+#define DESCRIPTION DZ65 ARM RGB keyboard
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
+#define MATRIX_COL_PINS {A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14, C15 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_MATRIX_LED_PROCESS_LIMIT 4
+#define RGB_MATRIX_LED_FLUSH_LIMIT 26
+#define DEBOUNCE 3
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+
+#define DRIVER_ADDR_1 0b1110100
+#define DRIVER_ADDR_2 0b1110111
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 35
+#define DRIVER_2_LED_TOTAL 33
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL
diff --git a/keyboards/dztech/dz65rgb/dz65rgb.c b/keyboards/dztech/dz65rgb/dz65rgb.c
new file mode 100644
index 000000000..932d3f68b
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/dz65rgb.c
@@ -0,0 +1,116 @@
+#include "dz65rgb.h"
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, C2_1, C3_1, C4_1}, // LA0
+ {0, C1_1, C3_2, C4_2}, // LA1
+ {0, C1_2, C2_2, C4_3}, // LA2
+ {0, C1_3, C2_3, C3_3}, // LA3
+ {0, C1_4, C2_4, C3_4}, // LA4
+ {0, C1_5, C2_5, C3_5}, // LA5
+ {0, C1_6, C2_6, C3_6}, // LA6
+ {0, C1_7, C2_7, C3_7}, // LA7
+ {0, C1_8, C2_8, C3_8}, // LA8
+ {0, C9_1, C8_1, C7_1}, // LA9
+ {0, C9_2, C8_2, C7_2}, // LA10
+ {0, C9_3, C8_3, C7_3}, // LA11
+ {0, C9_4, C8_4, C7_4}, // LA12
+ {0, C9_5, C8_5, C7_5}, // LA13
+ {0, C9_6, C8_6, C7_6}, // LA14
+ {0, C9_7, C8_7, C6_6}, // LA15
+ {0, C9_8, C7_7, C6_7}, // LA16
+ {0, C8_8, C7_8, C6_8}, // LA17
+ {0, C2_9, C3_9, C4_9}, // LB0
+ {0, C1_9, C3_10, C4_10}, // LB1
+ {0, C1_10, C2_10, C4_11}, // LB2
+ {0, C1_11, C2_11, C3_11}, // LB3
+ //{0, C1_12, C2_12, C3_12}, // LB4
+ {0, C1_13, C2_13, C3_13}, // LB5
+ {0, C1_14, C2_14, C3_14}, // LB6
+ {0, C1_15, C2_15, C3_15}, // LB7
+ {0, C1_16, C2_16, C3_16}, // LB8
+ {0, C9_9, C8_9, C7_9}, // LB9
+ {0, C9_10, C8_10, C7_10}, // LB10
+ {0, C9_11, C8_11, C7_11}, // LB11
+ {0, C9_12, C8_12, C7_12}, // LB12
+ {0, C9_13, C8_13, C7_13}, // LB13
+ {0, C9_14, C8_14, C7_14}, // LB14
+ {0, C9_15, C8_15, C6_14}, // LB15
+ {0, C9_16, C7_15, C6_15}, // LB16
+ {0, C8_16, C7_16, C6_16}, // LB17
+ {1, C2_1, C3_1, C4_1}, // LC0
+ {1, C1_1, C3_2, C4_2}, // LC1
+ {1, C1_2, C2_2, C4_3}, // LC2
+ {1, C1_3, C2_3, C3_3}, // LC3
+ {1, C1_4, C2_4, C3_4}, // LC4
+ {1, C1_5, C2_5, C3_5}, // LC5
+ //{1, C1_6, C2_6, C3_6}, // LC6
+ {1, C1_7, C2_7, C3_7}, // LC7
+ {1, C1_8, C2_8, C3_8}, // LC8
+ {1, C9_1, C8_1, C7_1}, // LC9
+ {1, C9_2, C8_2, C7_2}, // LC10
+ {1, C9_3, C8_3, C7_3}, // LC11
+ {1, C9_4, C8_4, C7_4}, // LC12
+ {1, C9_5, C8_5, C7_5}, // LC13
+ {1, C9_6, C8_6, C7_6}, // LC14
+ //{1, C9_7, C8_7, C6_6}, // LC15
+ {1, C9_8, C7_7, C6_7}, // LC16
+ {1, C8_8, C7_8, C6_8}, // LC17
+ {1, C2_9, C3_9, C4_9}, // LD0
+ {1, C1_9, C3_10, C4_10}, // LD1
+ {1, C1_10, C2_10, C4_11}, // LD2
+ {1, C1_11, C2_11, C3_11}, // LD3
+ {1, C1_12, C2_12, C3_12}, // LD4
+ {1, C1_13, C2_13, C3_13}, // LD5
+ {1, C1_14, C2_14, C3_14}, // LD6
+ {1, C1_15, C2_15, C3_15}, // LD7
+ {1, C1_16, C2_16, C3_16}, // LD8
+ {1, C9_9, C8_9, C7_9}, // LD9
+ {1, C9_10, C8_10, C7_10}, // LD10
+ {1, C9_11, C8_11, C7_11}, // LD11
+ {1, C9_12, C8_12, C7_12}, // LD12
+ //{1, C9_13, C8_13, C7_13}, // LD13
+ {1, C9_14, C8_14, C7_14}, // LD14
+ {1, C9_15, C8_15, C6_14}, // LD15
+ {1, C9_16, C7_15, C6_15}, // LD16
+ {1, C8_16, C7_16, C6_16}, // LD17
+};
+
+led_config_t g_led_config = { {
+ { 17, 16, 15, 14, 13, 12, 11, 10, 9, 18, 19, 20, 21, 22, 23 },
+ { 7, 6, 5, 4, 3, 2, 1, 0, 26, 27, 28, 29, 30, 31, 24 },
+ { 8, 48, 47, 46, 45, 44, 43, 51, 52, 53, 54, 55, NO_LED, 56, 25 },
+ { 49, 40, 39, 38, 37, 36, 60, 61, 62, 63, 57, 58, NO_LED, 59, 32 },
+ { 50, 42, 41, NO_LED, NO_LED, 35, NO_LED, NO_LED, 64, 65, 66, 67, NO_LED, 34, 33 }
+}, {
+ { 112, 16 }, { 96, 16 }, { 80, 16 }, { 64, 16 }, { 48, 16 }, { 32, 16 }, { 16, 16 }, { 0, 16 }, { 0, 32 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 },
+ { 32, 0 }, { 16, 0 }, { 0, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 224, 0 }, { 224, 16 }, { 224, 32 }, { 128, 16 }, { 144, 16 }, { 160, 16 }, { 176, 16 },
+ { 192, 16 }, { 208, 16 }, { 224, 48 }, { 224, 64 }, { 208, 64 }, { 80, 64 }, { 80, 48 }, { 64, 48 }, { 48, 48 }, { 32, 48 }, { 16, 48 }, { 32, 64 }, { 16, 64 }, { 96, 32 }, { 80, 32 },
+ { 64, 32 }, { 48, 32 }, { 32, 32 }, { 16, 32 }, { 0, 48 }, { 0, 64 }, { 112, 32 }, { 128, 32 }, { 144, 32 }, { 160, 32 }, { 176, 32 }, { 208, 32 }, { 160, 48 }, { 176, 48 }, { 208, 48 },
+ { 96, 48 }, { 112, 48 }, { 128, 48 }, { 144, 48 }, { 128, 64 }, { 144, 64 }, { 160, 64 }, { 176, 64 }
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 4, 1, 1, 4, 4,
+ 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 1, 1, 1, 1
+} };
+
+void matrix_init_kb(void) {
+ matrix_init_user();
+}
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ return process_record_user(keycode, record);
+}
+void suspend_power_down_kb(void)
+{
+ rgb_matrix_set_suspend_state(true);
+ suspend_power_down_user();
+}
+
+void suspend_wakeup_init_kb(void)
+{
+ rgb_matrix_set_suspend_state(false);
+ suspend_wakeup_init_user();
+}
diff --git a/keyboards/dztech/dz65rgb/dz65rgb.h b/keyboards/dztech/dz65rgb/dz65rgb.h
new file mode 100644
index 000000000..b251a339f
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/dz65rgb.h
@@ -0,0 +1,16 @@
+#pragma once
+#define XXX KC_NO
+#include "quantum.h"
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K45, K48, K49, K4A, K4B, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, K49, K4A, K4B, XXX, K4D, K4E } \
+}
diff --git a/keyboards/dztech/dz65rgb/info.json b/keyboards/dztech/dz65rgb/info.json
new file mode 100644
index 000000000..fe61e5d97
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "dz65rgb",
+ "url": "",
+ "maintainer": "dztch",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2},{"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5},{"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75},{"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/dztech/dz65rgb/keymaps/default/keymap.c b/keyboards/dztech/dz65rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000..bce9118f8
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+#include QMK_KEYBOARD_H
+extern bool g_suspend_state;
+#define _LAYER0 0
+#define _LAYER1 1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_LAYER0] = LAYOUT_65_ansi( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,\
+ CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,\
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_LAYER1] = LAYOUT_65_ansi( /* FN */
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,\
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,\
+ CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,\
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+};
+
+void rgb_matrix_indicators_user(void)
+{
+ if (IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK))
+ {
+ rgb_matrix_set_color(8, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+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/dztech/dz65rgb/readme.md b/keyboards/dztech/dz65rgb/readme.md
new file mode 100644
index 000000000..7f8aad95f
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/readme.md
@@ -0,0 +1,14 @@
+# DZ65RGB
+
+A customizable 65% RGB keyboard.
+
+Keyboard Maintainer: [DZtech](http://keyboarddiy.taobao.com)
+Hardware Supported: [DZtech](http://keyboarddiy.taobao.com)
+Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dztech/dz65rgb:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/dztech/dz65rgb/rules.mk b/keyboards/dztech/dz65rgb/rules.mk
new file mode 100644
index 000000000..bf392b4fa
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/rules.mk
@@ -0,0 +1,14 @@
+MCU = STM32F303
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
+BACKLIGHT_ENABLE = no
+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 # USB Nkey Rollover
+AUDIO_ENABLE = no
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+
+LAYOUTS = 65_ansi
diff --git a/keyboards/emptystring/NQG/info.json b/keyboards/emptystring/NQG/info.json
new file mode 100644
index 000000000..008dbbe98
--- /dev/null
+++ b/keyboards/emptystring/NQG/info.json
@@ -0,0 +1,50 @@
+{
+ "keyboard_name": "NQG (Not Quite Gherkin)",
+ "url": "",
+ "maintainer": "culturalsnow",
+ "width": 11,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"A", "x":1, "y":1},
+ {"label":"S", "x":2, "y":1},
+ {"label":"D", "x":3, "y":1},
+ {"label":"F", "x":4, "y":1},
+ {"label":"G", "x":5, "y":1},
+ {"label":"H", "x":6, "y":1},
+ {"label":"J", "x":7, "y":1},
+ {"label":"K", "x":8, "y":1},
+ {"label":"L", "x":9, "y":1},
+ {"label":"; '", "x":10, "y":1},
+ {"label":"Z", "x":1, "y":2},
+ {"label":"X", "x":2, "y":2},
+ {"label":"C", "x":3, "y":2},
+ {"label":"V", "x":4, "y":2},
+ {"label":"B", "x":5, "y":2},
+ {"label":"N", "x":6, "y":2},
+ {"label":"M", "x":7, "y":2},
+ {"label":",", "x":8, "y":2},
+ {"label":".", "x":9, "y":2},
+ {"label":"/ Enter", "x":10, "y":2},
+ {"label":"Shift / Tab", "x":0, "y":2},
+ {"label":"LT(_LOWER, KC_ESC)", "x":3, "y":3},
+ {"label":"Ctrl / Backspace", "x":4, "y":3},
+ {"label":"Ctrl / Backspace", "x":5, "y":3},
+ {"label":"Space", "x":6, "y":3},
+ {"label":"Space", "x":7, "y":3},
+ {"label":"MO(_RAISE)", "x":8, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/emptystring/NQG/readme.md b/keyboards/emptystring/NQG/readme.md
index a8c899863..5e78420e2 100644
--- a/keyboards/emptystring/NQG/readme.md
+++ b/keyboards/emptystring/NQG/readme.md
@@ -4,7 +4,7 @@
NQG (Not Quite Gherkin) is a 30% ortholinear keyboard with a macro key and dedicated row for thumb keys, made by emptystring studio.
-Keyboard Maintainer: [Culturalsnow](http://github.com/culturalsnow)
+Keyboard Maintainer: [Culturalsnow](http://github.com/culturalsnow)
Hardware Supported: NQG PCB, Pro Micro
Hardware Availability: Kits are available from [SA_EndlessGame](http://twitter.com/SA_EndlessGame)
diff --git a/keyboards/ergodash/ergodash.h b/keyboards/ergodash/ergodash.h
index bf2bac581..83c785930 100644
--- a/keyboards/ergodash/ergodash.h
+++ b/keyboards/ergodash/ergodash.h
@@ -12,26 +12,6 @@
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- LT0, LT1, LT2, LT3, LT4, LT5, RT0, RT1, RT2, RT3, RT4, RT5 \
- ) \
- LAYOUT( \
- KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \
- KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \
- KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \
- KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, \
- KC_##LT0, KC_##LT1, KC_##LT2, KC_##LT3, KC_##LT4, KC_##LT5, KC_##RT0, KC_##RT1, KC_##RT2, KC_##RT3, KC_##RT4, KC_##RT5 \
- )
-#endif // #ifdef KEYBOARD_ergodash_rev1
-
-#ifdef KEYBOARD_ergodash_rev2
- #include "rev2.h"
-
- // Used to create a keymap using only KC_ prefixed keys
- #define LAYOUT_kc( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
) \
LAYOUT( \
@@ -41,7 +21,7 @@
KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, \
KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, KC_##R46 \
)
-#endif // #ifdef KEYBOARD_ergodash_rev2
+#endif // #ifdef KEYBOARD_ergodash_rev1
#ifdef KEYBOARD_ergodash_mini
#include "mini.h"
diff --git a/keyboards/ergodash/i2c.c b/keyboards/ergodash/i2c.c
deleted file mode 100644
index 084c890c4..000000000
--- a/keyboards/ergodash/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/ergodash/i2c.h b/keyboards/ergodash/i2c.h
deleted file mode 100644
index c15b6bc50..000000000
--- a/keyboards/ergodash/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/ergodash/matrix.c b/keyboards/ergodash/matrix.c
deleted file mode 100644
index bdf265a87..000000000
--- a/keyboards/ergodash/matrix.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
-Copyright 2017 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * 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 BACKLIGHT_ENABLE
- #include "backlight.h"
- extern backlight_config_t backlight_config;
-#endif
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCING_DELAY
-# define DEBOUNCING_DELAY 5
-#endif
-
-#if (DEBOUNCING_DELAY > 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 SERIAL_LED_ADDR 0x00
-
-#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
-#if (DIODE_DIRECTION == COL2ROW)
- unselect_rows();
- init_cols();
-#elif (DIODE_DIRECTION == ROW2COL)
- unselect_cols();
- init_rows();
-#endif
-
- 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 (DEBOUNCING_DELAY > 0)
- bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
-
- if (matrix_changed) {
- debouncing = true;
- debouncing_time = timer_read();
- PORTD ^= (1 << 2);
- }
-
-# 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 (DEBOUNCING_DELAY > 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 (DEBOUNCING_DELAY > 0)
- if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
- 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;
-
-#ifdef BACKLIGHT_ENABLE
- // Write backlight level for slave to read
- err = i2c_master_write(backlight_config.enable ? backlight_config.level : 0);
-#else
- // Write zero, so our byte index is the same
- err = i2c_master_write(0x00);
-#endif
- 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];
- }
-
-#ifdef BACKLIGHT_ENABLE
- // Write backlight level for slave to read
- serial_master_buffer[SERIAL_LED_ADDR] = backlight_config.enable ? backlight_config.level : 0;
-#endif
- 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
-#ifdef BACKLIGHT_ENABLE
- // Read backlight level sent from master and update level on slave
- backlight_set(i2c_slave_buffer[0]);
-#endif
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- i2c_slave_buffer[i+1] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-
-#ifdef BACKLIGHT_ENABLE
- // Read backlight level sent from master and update level on slave
- backlight_set(serial_master_buffer[SERIAL_LED_ADDR]);
-#endif
-#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/ergodash/mini/config.h b/keyboards/ergodash/mini/config.h
index fc63cc1e9..cac1bba6f 100644
--- a/keyboards/ergodash/mini/config.h
+++ b/keyboards/ergodash/mini/config.h
@@ -45,10 +45,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_HAS_GHOST
#define C6_AUDIO
-#ifdef AUDIO_ENABLE
- #define STARTUP_SONG SONG(STARTUP_SOUND)
- #define GOODBYE_SONG SONG(GOODBYE_SOUND)
-#endif
/* number of backlight levels */
#ifdef BACKLIGHT_ENABLE
@@ -68,23 +64,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-
-#define RGBLED_NUM 20 // Number of LEDs
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 20
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 10, 10 } // Number of LEDs
+
+#define SOFT_SERIAL_PIN D0
+#define SELECT_SOFT_SERIAL_SPEED 1
+/*Sets the protocol speed when using serial communication*/
+//Speeds:
+//0: about 189kbps (Experimental only)
+//1: about 137kbps (default)
+//2: about 75kbps
+//3: about 39kbps
+//4: about 26kbps
+//5: about 20kbps
diff --git a/keyboards/ergodash/mini/keymaps/default/config.h b/keyboards/ergodash/mini/keymaps/default/config.h
index a5a722fb2..df04873a9 100644
--- a/keyboards/ergodash/mini/keymaps/default/config.h
+++ b/keyboards/ergodash/mini/keymaps/default/config.h
@@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
+
/* Use I2C or Serial, not both */
#define USE_SERIAL
@@ -30,10 +31,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 20
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/ergodash/mini/keymaps/default/rules.mk b/keyboards/ergodash/mini/keymaps/default/rules.mk
index e69de29bb..bb9e33b08 100644
--- a/keyboards/ergodash/mini/keymaps/default/rules.mk
+++ b/keyboards/ergodash/mini/keymaps/default/rules.mk
@@ -0,0 +1,3 @@
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = no
diff --git a/keyboards/ergodash/mini/rules.mk b/keyboards/ergodash/mini/rules.mk
index b6c9a2580..bb9e33b08 100644
--- a/keyboards/ergodash/mini/rules.mk
+++ b/keyboards/ergodash/mini/rules.mk
@@ -1,2 +1,3 @@
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = no
diff --git a/keyboards/ergodash/readme.md b/keyboards/ergodash/readme.md
index 40d9fddfa..27672c3ec 100644
--- a/keyboards/ergodash/readme.md
+++ b/keyboards/ergodash/readme.md
@@ -9,16 +9,17 @@ Hardware Availability: Order your own [yourself](https://github.com/omkbd/ErgoDa
Make example for this keyboard (after setting up your build environment):
- make ergodash/rev2:default
+ make ergodash/rev1: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.
Install Example: (for pro micro)
- `make ergodash/rev2:default:avrdude`
-
+ `make ergodash/rev1:default:avrdude`
+
Note:
- "rev2" is for PCB ver 1.1,1.2
- "rev1" is from earlier pcb
+ "rev1" is for PCB ver 1.0,1.1,1.2
+ **The original Rev 1 was owned only by the designer. Therefore, Rev1 has been removed. Since the current PCB is Rev1, we changed Rev2 to Rev1 to match the firmware version.**
+
# Layout
![layout](https://github.com/omkbd/picture/blob/master/ergodash-layout.png)
diff --git a/keyboards/ergodash/rev1/config.h b/keyboards/ergodash/rev1/config.h
index 160e70362..5b7d85688 100644
--- a/keyboards/ergodash/rev1/config.h
+++ b/keyboards/ergodash/rev1/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -35,9 +34,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 7
// wiring of each half
-#define MATRIX_ROW_PINS { D7, E6, B4, B5, D4 }
-#define MATRIX_COL_PINS { F5, 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 MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
+#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 tapping term */
#define TAPPING_TERM 120
@@ -45,8 +44,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
+#define C6_AUDIO
+
/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
+#ifdef BACKLIGHT_ENABLE
+ #define BACKLIGHT_PIN B6
+ #define BACKLIGHT_LEVELS 7
+// #define BACKLIGHT_BREATHING
+// #define BREATHING_PERIOD 4
+#endif
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
@@ -58,25 +64,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-
-#define RGBLED_NUM 24 // Number of LEDs
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-#endif
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 24
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 12, 12 } // Number of LEDs
+
+#define SOFT_SERIAL_PIN D0
+#define SELECT_SOFT_SERIAL_SPEED 1
+/*Sets the protocol speed when using serial communication*/
+//Speeds:
+//0: about 189kbps (Experimental only)
+//1: about 137kbps (default)
+//2: about 75kbps
+//3: about 39kbps
+//4: about 26kbps
+//5: about 20kbps
diff --git a/keyboards/ergodash/rev1/info.json b/keyboards/ergodash/rev1/info.json
index f5ed321de..bcfbda6d3 100644
--- a/keyboards/ergodash/rev1/info.json
+++ b/keyboards/ergodash/rev1/info.json
@@ -1,13 +1,13 @@
{
- "keyboard_name": "ErgoDash rev1",
+ "keyboard_name": "ErgoDash rev2",
"url": "",
"maintainer": "qmk",
- "width": 16,
+ "width": 18,
"height": 6.25,
"layouts": {
"LAYOUT": {
- "key_count": 68,
- "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.375}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.75}, {"label":"R00", "x":9, "y":0.75}, {"label":"R01", "x":10, "y":0.25}, {"label":"R02", "x":11, "y":0.125}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0.125}, {"label":"R05", "x":14, "y":0.375}, {"label":"R06", "x":15, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.375}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.75}, {"label":"R10", "x":9, "y":1.75}, {"label":"R11", "x":10, "y":1.25}, {"label":"R12", "x":11, "y":1.125}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1.125}, {"label":"R15", "x":14, "y":1.375}, {"label":"R16", "x":15, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.375}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6, "y":2.75}, {"label":"R20", "x":9, "y":2.75}, {"label":"R21", "x":10, "y":2.25}, {"label":"R22", "x":11, "y":2.125}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2.125}, {"label":"R25", "x":14, "y":2.375}, {"label":"R26", "x":15, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.375}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3.125}, {"label":"L35", "x":5, "y":3.25}, {"label":"L36", "x":6.5, "y":4.25}, {"label":"R30", "x":8.5, "y":4.25}, {"label":"R31", "x":10, "y":3.25}, {"label":"R32", "x":11, "y":3.125}, {"label":"R33", "x":12, "y":3}, {"label":"R34", "x":13, "y":3.125}, {"label":"R35", "x":14, "y":3.375}, {"label":"R36", "x":15, "y":3.375}, {"label":"LT0", "x":0, "y":4.375}, {"label":"LT1", "x":1, "y":4.375}, {"label":"LT2", "x":2, "y":4.125}, {"label":"LT3", "x":3, "y":4}, {"label":"LT4", "x":5.5, "y":5.25}, {"label":"LT5", "x":6.5, "y":5.25}, {"label":"RT0", "x":8.5, "y":5.25}, {"label":"RT1", "x":9.5, "y":5.25}, {"label":"RT2", "x":12, "y":4}, {"label":"RT3", "x":13, "y":4.125}, {"label":"RT4", "x":14, "y":4.375}, {"label":"RT5", "x":15, "y":4.375}]
+ "key_count": 70,
+ "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.375}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.75}, {"label":"R00", "x":11, "y":0.75}, {"label":"R01", "x":12, "y":0.25}, {"label":"R02", "x":13, "y":0.125}, {"label":"R03", "x":14, "y":0}, {"label":"R04", "x":15, "y":0.125}, {"label":"R05", "x":16, "y":0.375}, {"label":"R06", "x":17, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.375}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.75}, {"label":"R10", "x":11, "y":1.75}, {"label":"R11", "x":12, "y":1.25}, {"label":"R12", "x":13, "y":1.125}, {"label":"R13", "x":14, "y":1}, {"label":"R14", "x":15, "y":1.125}, {"label":"R15", "x":16, "y":1.375}, {"label":"R16", "x":17, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.375}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6, "y":2.75}, {"label":"R20", "x":11, "y":2.75}, {"label":"R21", "x":12, "y":2.25}, {"label":"R22", "x":13, "y":2.125}, {"label":"R23", "x":14, "y":2}, {"label":"R24", "x":15, "y":2.125}, {"label":"R25", "x":16, "y":2.375}, {"label":"R26", "x":17, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.375}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3.125}, {"label":"L35", "x":5, "y":3.25}, {"label":"L36", "x":6.5, "y":4.25}, {"label":"R30", "x":10.5, "y":4.25}, {"label":"R31", "x":12, "y":3.25}, {"label":"R32", "x":13, "y":3.125}, {"label":"R33", "x":14, "y":3}, {"label":"R34", "x":15, "y":3.125}, {"label":"R35", "x":16, "y":3.375}, {"label":"R36", "x":17, "y":3.375}, {"label":"L40", "x":0, "y":4.375}, {"label":"L41", "x":1, "y":4.375}, {"label":"L42", "x":2, "y":4.125}, {"label":"L43", "x":3, "y":4}, {"label":"L44", "x":5.5, "y":5.25}, {"label":"L45", "x":6.5, "y":5.25}, {"label":"L46", "x":7.5, "y":4.25, "h":2}, {"label":"R40", "x":9.5, "y":4.25, "h":2}, {"label":"R41", "x":10.5, "y":5.25}, {"label":"R42", "x":11.5, "y":5.25}, {"label":"R43", "x":14, "y":4}, {"label":"R44", "x":15, "y":4.125}, {"label":"R45", "x":16, "y":4.375}, {"label":"R46", "x":17, "y":4.375}]
}
}
}
diff --git a/keyboards/ergodash/rev1/keymaps/default/config.h b/keyboards/ergodash/rev1/keymaps/default/config.h
index dc00328dc..df04873a9 100644
--- a/keyboards/ergodash/rev1/keymaps/default/config.h
+++ b/keyboards/ergodash/rev1/keymaps/default/config.h
@@ -20,7 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-// place overrides here
/* Use I2C or Serial, not both */
@@ -32,10 +31,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 24
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/ergodash/rev1/keymaps/default/keymap.c b/keyboards/ergodash/rev1/keymaps/default/keymap.c
index a1bfb2267..615399874 100644
--- a/keyboards/ergodash/rev1/keymaps/default/keymap.c
+++ b/keyboards/ergodash/rev1/keymaps/default/keymap.c
@@ -14,92 +14,92 @@ enum custom_keycodes {
ADJUST,
};
-#define KC_JPN LALT(KC_GRV)
+#define EISU LALT(KC_GRV)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
- * ,-------------------------------------------------------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 | [ | ] | 6 | 7 | 8 | 9 | 0 | Caps |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | ` | Q | W | E | R | T | - | = | Y | U | I | O | P | \ |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | A | S | D | F | G | Del | Bksp | H | J | K | L | ; | " |
- * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | JPN | Enter| N | M | , | . | / | Shift|
- * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
- * | Ctrl | GUI | ALt |Adjust| |Lower | Space |Enter |Raise| | Left| Down | Up | Right|
- * ,-------------------------------------------------------------------------------------------------.
+ * ,----------------------------------------------------------------------------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | [ | | ] | 6 | 7 | 8 | 9 | 0 |Pscree|
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | ` | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | Del | | Bksp | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | Space| | Enter| N | M | , | . | / | Shift|
+ * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
+ * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| Del |||||||| Bksp | Enter| Raise|||||||| Left | Down | Up | Right|
+ * ,----------------------------------------------------------------------------------------------------------------------.
*/
[_QWERTY] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CAPS, \
- KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_JPN , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC , KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
),
/* Lower
- * ,-------------------------------------------------------------------------------------------------.
- * | F11 | F1 | F2 | F3 | F4 | F5 | { | } | F6 | F7 | F8 | F9 | F10 | F12 |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | _ | + | ^ | & | * | ( | ) | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | 1 | 2 | 3 | 4 | 5 | Del | Bksp | H | J | K | L | : | " |
- * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
- * | Shift| 6 | 7 | 8 | 9 | 0 | JPN | Enter| N | M | < | > | ? | Shift|
- * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
- * | Ctrl | GUI | ALt |Adjust| |Lower | Space |Enter |Raise| | Home |PageDn|PageUp| End |
- * ,-------------------------------------------------------------------------------------------------.
+ * ,----------------------------------------------------------------------------------------------------------------------.
+ * | F11 | F1 | F2 | F3 | F4 | F5 | { | | } | F6 | F7 | F8 | F9 | F10 | F12 |
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | _ | | + | ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | Tab | 1 | 2 | 3 | 4 | 5 | Del | | Bksp | H | J | K | L | : | " |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | Shift| 6 | 7 | 8 | 9 | 0 | Space| | Enter| N | M | < | > | ? | Shift|
+ * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
+ * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| Del |||||||| Bksp | Enter| Raise|||||||| Home |PageDn|PageUp| End |
+ * ,----------------------------------------------------------------------------------------------------------------------.
*/
[_LOWER] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JPN , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC , KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
+ KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
/* Raise
- * ,-------------------------------------------------------------------------------------------------.
- * | F11 | F1 | F2 | F3 | F4 | F5 | { | } | F6 | F7 | F8 | F9 | F10 | F12 |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | _ | + | ^ | & | * | ( | ) | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | 1 | 2 | 3 | 4 | 5 | Del | Bksp | H | J | K | L | : | " |
- * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
- * | Shift| 6 | 7 | 8 | 9 | 0 | JPN | Enter| N | M | < | > | ? | Shift|
- * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
- * | Ctrl | GUI | ALt |Adjust| |Lower | Space |Enter |Raise| | Home |PageDn|PageUp| End |
- * ,-------------------------------------------------------------------------------------------------.
+ * ,----------------------------------------------------------------------------------------------------------------------.
+ * | F11 | F1 | F2 | F3 | F4 | F5 | { | | } | F6 | F7 | F8 | F9 | F10 | F12 |
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | _ | | + | ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
+ * | Tab | 1 | 2 | 3 | 4 | 5 | Del | | Bksp | H | J | K | L | : | " |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | Shift| 6 | 7 | 8 | 9 | 0 | Space| | Enter| N | M | < | > | ? | Shift|
+ * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
+ * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| Del |||||||| Bksp | Enter| Raise|||||||| Home |PageDn|PageUp| End |
+ * ,----------------------------------------------------------------------------------------------------------------------.
*/
[_RAISE] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JPN , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC , KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
+ KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
/* Adjust
- * ,-------------------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | | Reset|RGB ON| MODE| HUE-| HUE+| | | SAT-| SAT+| VAL-| VAL+| | |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | | | |
- * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
- * | | | | | | | | | | | | | | |
- * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
- * | | | | | | | | | | | | | | |
- * ,-------------------------------------------------------------------------------------------------.
+ * ,----------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | | Reset|RGB ON| MODE| HUE-| HUE+| | | | SAT-| SAT+| VAL-| VAL+| | |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | | | BL ON| BRTG| INC| DEC| | | | | | | | | |
+ * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
+ * | | | | |||||||| | | |||||||| | | |||||||| | | | |
+ * ,----------------------------------------------------------------------------------------------------------------------.
*/
[_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
+ _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/ergodash/rev1/keymaps/default/rules.mk b/keyboards/ergodash/rev1/keymaps/default/rules.mk
index e69de29bb..bb9e33b08 100644
--- a/keyboards/ergodash/rev1/keymaps/default/rules.mk
+++ b/keyboards/ergodash/rev1/keymaps/default/rules.mk
@@ -0,0 +1,3 @@
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = no
diff --git a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/config.h b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/config.h
index 8ace28f24..df04873a9 100644
--- a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/config.h
+++ b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/config.h
@@ -31,11 +31,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 24
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/keyboard-layout-editor.json b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/keyboard-layout-editor.json
index 8f8d30855..8f8d30855 100644
--- a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/keyboard-layout-editor.json
+++ b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/keyboard-layout-editor.json
diff --git a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/keymap.c b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/keymap.c
index 7a7985f75..7a7985f75 100644
--- a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/keymap.c
+++ b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/keymap.c
diff --git a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/rules.mk b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/rules.mk
index 11b62b9bf..11b62b9bf 100644
--- a/keyboards/ergodash/rev2/keymaps/greenshadowmaker/rules.mk
+++ b/keyboards/ergodash/rev1/keymaps/greenshadowmaker/rules.mk
diff --git a/keyboards/ergodash/rev1/rev1.h b/keyboards/ergodash/rev1/rev1.h
index 952801916..55135adca 100644
--- a/keyboards/ergodash/rev1/rev1.h
+++ b/keyboards/ergodash/rev1/rev1.h
@@ -25,19 +25,19 @@
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- LT0, LT1, LT2, LT3, LT4, LT5, RT0, RT1, RT2, RT3, RT4, RT5 \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
) \
{ \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { LT0, LT1, LT2, LT3, LT4, LT5, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { RT5, RT4, RT3, RT2, RT1, RT0, KC_NO } \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
}
#else
// Keymap with right side flipped
@@ -47,19 +47,19 @@
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- LT0, LT1, LT2, LT3, LT4, LT5, RT0, RT1, RT2, RT3, RT4, RT5 \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
) \
{ \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { LT0, LT1, LT2, LT3, LT4, LT5, KC_NO }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- { RT0, RT1, RT2, RT3, RT4, RT5, KC_NO } \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 } \
}
#endif
diff --git a/keyboards/ergodash/rev1/rules.mk b/keyboards/ergodash/rev1/rules.mk
index 7b30c0bef..bb9e33b08 100644
--- a/keyboards/ergodash/rev1/rules.mk
+++ b/keyboards/ergodash/rev1/rules.mk
@@ -1 +1,3 @@
BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+AUDIO_ENABLE = no
diff --git a/keyboards/ergodash/rev2/info.json b/keyboards/ergodash/rev2/info.json
deleted file mode 100644
index bcfbda6d3..000000000
--- a/keyboards/ergodash/rev2/info.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "keyboard_name": "ErgoDash rev2",
- "url": "",
- "maintainer": "qmk",
- "width": 18,
- "height": 6.25,
- "layouts": {
- "LAYOUT": {
- "key_count": 70,
- "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.375}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.75}, {"label":"R00", "x":11, "y":0.75}, {"label":"R01", "x":12, "y":0.25}, {"label":"R02", "x":13, "y":0.125}, {"label":"R03", "x":14, "y":0}, {"label":"R04", "x":15, "y":0.125}, {"label":"R05", "x":16, "y":0.375}, {"label":"R06", "x":17, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.375}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.75}, {"label":"R10", "x":11, "y":1.75}, {"label":"R11", "x":12, "y":1.25}, {"label":"R12", "x":13, "y":1.125}, {"label":"R13", "x":14, "y":1}, {"label":"R14", "x":15, "y":1.125}, {"label":"R15", "x":16, "y":1.375}, {"label":"R16", "x":17, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.375}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6, "y":2.75}, {"label":"R20", "x":11, "y":2.75}, {"label":"R21", "x":12, "y":2.25}, {"label":"R22", "x":13, "y":2.125}, {"label":"R23", "x":14, "y":2}, {"label":"R24", "x":15, "y":2.125}, {"label":"R25", "x":16, "y":2.375}, {"label":"R26", "x":17, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.375}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3.125}, {"label":"L35", "x":5, "y":3.25}, {"label":"L36", "x":6.5, "y":4.25}, {"label":"R30", "x":10.5, "y":4.25}, {"label":"R31", "x":12, "y":3.25}, {"label":"R32", "x":13, "y":3.125}, {"label":"R33", "x":14, "y":3}, {"label":"R34", "x":15, "y":3.125}, {"label":"R35", "x":16, "y":3.375}, {"label":"R36", "x":17, "y":3.375}, {"label":"L40", "x":0, "y":4.375}, {"label":"L41", "x":1, "y":4.375}, {"label":"L42", "x":2, "y":4.125}, {"label":"L43", "x":3, "y":4}, {"label":"L44", "x":5.5, "y":5.25}, {"label":"L45", "x":6.5, "y":5.25}, {"label":"L46", "x":7.5, "y":4.25, "h":2}, {"label":"R40", "x":9.5, "y":4.25, "h":2}, {"label":"R41", "x":10.5, "y":5.25}, {"label":"R42", "x":11.5, "y":5.25}, {"label":"R43", "x":14, "y":4}, {"label":"R44", "x":15, "y":4.125}, {"label":"R45", "x":16, "y":4.375}, {"label":"R46", "x":17, "y":4.375}]
- }
- }
-}
diff --git a/keyboards/ergodash/rev2/keymaps/default/keymap.c b/keyboards/ergodash/rev2/keymaps/default/keymap.c
deleted file mode 100644
index 5412eb0c0..000000000
--- a/keyboards/ergodash/rev2/keymaps/default/keymap.c
+++ /dev/null
@@ -1,154 +0,0 @@
-#include QMK_KEYBOARD_H
-
-extern keymap_config_t keymap_config;
-
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- LOWER,
- RAISE,
- ADJUST,
-};
-
-#define EISU LALT(KC_GRV)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Qwerty
- * ,----------------------------------------------------------------------------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 | [ | | ] | 6 | 7 | 8 | 9 | 0 |Pscree|
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | ` | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | Tab | A | S | D | F | G | Del | | Bksp | H | J | K | L | ; | " |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | Space| | Enter| N | M | , | . | / | Shift|
- * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
- * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| |||||||| | Enter| Raise|||||||| Left | Down | Up | Right|
- * ,----------------------------------------------------------------------------------------------------------------------.
- */
- [_QWERTY] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \
- KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_SPC, KC_SPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Lower
- * ,----------------------------------------------------------------------------------------------------------------------.
- * | F11 | F1 | F2 | F3 | F4 | F5 | { | | } | F6 | F7 | F8 | F9 | F10 | F12 |
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | _ | | + | ^ | & | * | ( | ) | | |
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | Tab | 1 | 2 | 3 | 4 | 5 | Del | | Bksp | H | J | K | L | : | " |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | Shift| 6 | 7 | 8 | 9 | 0 | Space| | Enter| N | M | < | > | ? | Shift|
- * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
- * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| |||||||| | Enter| Raise|||||||| Home |PageDn|PageUp| End |
- * ,----------------------------------------------------------------------------------------------------------------------.
- */
- [_LOWER] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_SPC, KC_SPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
- ),
-
- /* Raise
- * ,----------------------------------------------------------------------------------------------------------------------.
- * | F11 | F1 | F2 | F3 | F4 | F5 | { | | } | F6 | F7 | F8 | F9 | F10 | F12 |
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | _ | | + | ^ | & | * | ( | ) | | |
- * |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
- * | Tab | 1 | 2 | 3 | 4 | 5 | Del | | Bksp | H | J | K | L | : | " |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | Shift| 6 | 7 | 8 | 9 | 0 | Space| | Enter| N | M | < | > | ? | Shift|
- * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
- * | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| |||||||| | Enter| Raise|||||||| Home |PageDn|PageUp| End |
- * ,----------------------------------------------------------------------------------------------------------------------.
- */
- [_RAISE] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_SPC, KC_SPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
- ),
-
- /* Adjust
- * ,----------------------------------------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | | Reset|RGB ON| MODE| HUE-| HUE+| | | | SAT-| SAT+| VAL-| VAL+| | |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | | | | |
- * |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | | | | |
- * |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
- * | | | | |||||||| | | |||||||| | | |||||||| | | | |
- * ,----------------------------------------------------------------------------------------------------------------------.
- */
- [_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
- _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______ \
- )
-};
-
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-#endif
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- print("mode just switched to qwerty and this is a huge string\n");
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- case LOWER:
- if (record->event.pressed) {
- layer_on(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case RAISE:
- if (record->event.pressed) {
- layer_on(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- return false;
- break;
- }
- return true;
-}
diff --git a/keyboards/ergodash/rev2/rev2.c b/keyboards/ergodash/rev2/rev2.c
deleted file mode 100644
index 5e787921c..000000000
--- a/keyboards/ergodash/rev2/rev2.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "ergodash.h"
-
-#ifdef AUDIO_ENABLE
- float tone_startup[][2] = SONG(STARTUP_SOUND);
- float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
-#endif
-
-#ifdef SSD1306OLED
-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);
-}
-#endif
-
-void matrix_init_kb(void) {
-
- #ifdef AUDIO_ENABLE
- _delay_ms(20); // gets rid of tick
- PLAY_SONG(tone_startup);
- #endif
-
- // // green led on
- // DDRD |= (1<<5);
- // PORTD &= ~(1<<5);
-
- // // orange led on
- // DDRB |= (1<<0);
- // PORTB &= ~(1<<0);
-
- matrix_init_user();
-};
-
-void shutdown_user(void) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_goodbye);
- _delay_ms(150);
- stop_all_notes();
- #endif
-}
diff --git a/keyboards/ergodash/rev2/rev2.h b/keyboards/ergodash/rev2/rev2.h
deleted file mode 100644
index 55135adca..000000000
--- a/keyboards/ergodash/rev2/rev2.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef REV1_H
-#define REV1_H
-
-#include "ergodash.h"
-
-//void promicro_bootloader_jmp(bool program);
-#include "quantum.h"
-
-
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
-//void promicro_bootloader_jmp(bool program);
-
-#ifndef FLIP_HALF
-// Standard Keymap
-// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
-#else
-// Keymap with right side flipped
-// (TRRS jack on both halves are to the right)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- { R40, R41, R42, R43, R44, R45, R46 } \
- }
-#endif
-
-#endif
diff --git a/keyboards/ergodash/rules.mk b/keyboards/ergodash/rules.mk
index e25346dac..8be059d96 100644
--- a/keyboards/ergodash/rules.mk
+++ b/keyboards/ergodash/rules.mk
@@ -1,52 +1,21 @@
-SRC += matrix.c \
- i2c.c \
- split_util.c \
- serial.c \
- ssd1306.c
-
# MCU name
-#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
F_CPU = 16000000
-#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = caterina
# Build Options
@@ -57,19 +26,17 @@ 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
+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 = no # Enable WS2812 RGB underlight.
-SUBPROJECT_rev1 = yes
-USE_I2C = yes
+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
-CUSTOM_MATRIX = yes
+SPLIT_KEYBOARD = yes # Enables split keyboard support
-DEFAULT_FOLDER = ergodash/rev2
+DEFAULT_FOLDER = ergodash/rev1
diff --git a/keyboards/ergodash/serial.c b/keyboards/ergodash/serial.c
deleted file mode 100644
index 74bcbb6bf..000000000
--- a/keyboards/ergodash/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/ergodash/serial.h b/keyboards/ergodash/serial.h
deleted file mode 100644
index 15fe4db7b..000000000
--- a/keyboards/ergodash/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/ergodash/split_util.c b/keyboards/ergodash/split_util.c
deleted file mode 100644
index 346cbc908..000000000
--- a/keyboards/ergodash/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/ergodash/split_util.h b/keyboards/ergodash/split_util.h
deleted file mode 100644
index 595a0659e..000000000
--- a/keyboards/ergodash/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/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 6f4ae9fed..09443cf72 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -269,68 +269,39 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
- /*{row | col << 4}
- | {x=0..224, y=0..64}
- | | modifier
- | | | */
- {{ 8|(0<<4)}, {17.2* 8, 12.8*0}, 0}, // LED 1 on right > Key 6
- {{ 9|(0<<4)}, {17.2* 9, 12.8*0}, 0}, // LED 2 > Key 7
- {{10|(0<<4)}, {17.2*10, 12.8*0}, 0}, // LED 3 > Key 8
- {{11|(0<<4)}, {17.2*11, 12.8*0}, 0}, // LED 4 > Key 9
- {{12|(0<<4)}, {17.2*12, 12.8*0}, 0}, // LED 5 > Key 0
-
- {{ 8|(1<<4)}, {17.2* 8, 12.8*1}, 0}, // LED 6
- {{ 9|(1<<4)}, {17.2* 9, 12.8*1}, 0}, // LED 7
- {{10|(1<<4)}, {17.2*10, 12.8*1}, 0}, // LED 8
- {{11|(1<<4)}, {17.2*11, 12.8*1}, 0}, // LED 9
- {{12|(1<<4)}, {17.2*12, 12.8*1}, 0}, // LED 10
-
- {{ 8|(2<<4)}, {17.2* 8, 12.8*2}, 0}, // LED 11
- {{ 9|(2<<4)}, {17.2* 9, 12.8*2}, 0}, // LED 12
- {{10|(2<<4)}, {17.2*10, 12.8*2}, 0}, // LED 13
- {{11|(2<<4)}, {17.2*11, 12.8*2}, 0}, // LED 14
- {{12|(2<<4)}, {17.2*12, 12.8*2}, 0}, // LED 15
-
- {{ 8|(3<<4)}, {17.2* 8, 12.8*3}, 0}, // LED 16
- {{ 9|(3<<4)}, {17.2* 9, 12.8*3}, 0}, // LED 17
- {{10|(3<<4)}, {17.2*10, 12.8*3}, 0}, // LED 18
- {{11|(3<<4)}, {17.2*11, 12.8*3}, 0}, // LED 19
- {{12|(3<<4)}, {17.2*12, 12.8*3}, 0}, // LED 20
-
- {{ 9|(4<<4)}, {17.2* 9, 12.8*4}, 1}, // LED 21
- {{10|(4<<4)}, {17.2*10, 12.8*4}, 1}, // LED 22
- {{11|(4<<4)}, {17.2*11, 12.8*4}, 1}, // LED 23
- {{12|(4<<4)}, {17.2*12, 12.8*4}, 1}, // LED 24
-
- {{ 5|(0<<4)}, {17.2* 5, 12.8*0}, 0}, // LED 1 on left > Key 5
- {{ 4|(0<<4)}, {17.2* 4, 12.8*0}, 0}, // LED 2 > Key 4
- {{ 3|(0<<4)}, {17.2* 3, 12.8*0}, 0}, // LED 3 > Key 3
- {{ 2|(0<<4)}, {17.2* 2, 12.8*0}, 0}, // LED 4 > Key 2
- {{ 1|(0<<4)}, {17.2* 1, 12.8*0}, 0}, // LED 5 > Key 1
-
- {{ 5|(1<<4)}, {17.2* 5, 12.8*1}, 0}, // LED 6
- {{ 4|(1<<4)}, {17.2* 4, 12.8*1}, 0}, // LED 7
- {{ 3|(1<<4)}, {17.2* 3, 12.8*1}, 0}, // LED 8
- {{ 2|(1<<4)}, {17.2* 2, 12.8*1}, 0}, // LED 9
- {{ 1|(1<<4)}, {17.2* 1, 12.8*1}, 0}, // LED 10
-
- {{ 5|(2<<4)}, {17.2* 5, 12.8*2}, 0}, // LED 11
- {{ 4|(2<<4)}, {17.2* 4, 12.8*2}, 0}, // LED 12
- {{ 3|(2<<4)}, {17.2* 3, 12.8*2}, 0}, // LED 13
- {{ 2|(2<<4)}, {17.2* 2, 12.8*2}, 0}, // LED 14
- {{ 1|(2<<4)}, {17.2* 1, 12.8*2}, 0}, // LED 15
-
- {{ 5|(3<<4)}, {17.2* 5, 12.8*3}, 0}, // LED 16
- {{ 4|(3<<4)}, {17.2* 4, 12.8*3}, 0}, // LED 17
- {{ 3|(3<<4)}, {17.2* 3, 12.8*3}, 0}, // LED 18
- {{ 2|(3<<4)}, {17.2* 2, 12.8*3}, 0}, // LED 19
- {{ 1|(3<<4)}, {17.2* 1, 12.8*3}, 0}, // LED 20
-
- {{ 4|(4<<4)}, {17.2* 4, 12.8*4}, 1}, // LED 21
- {{ 3|(4<<4)}, {17.2* 3, 12.8*4}, 1}, // LED 22
- {{ 2|(4<<4)}, {17.2* 2, 12.8*4}, 1}, // LED 23
- {{ 1|(4<<4)}, {17.2* 1, 12.8*4}, 1}, // LED 24 > Key Hack
-};
+led_config_t g_led_config = { {
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 28, 33, 38, 43, 47, NO_LED },
+ { 27, 32, 37, 42, 46, NO_LED },
+ { 26, 31, 36, 41, 45, NO_LED },
+ { 25, 30, 35, 40, 44, NO_LED },
+ { 24, 29, 34, 39, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 0, 5, 10, 15, NO_LED, NO_LED },
+ { 1, 6, 11, 16, 20, NO_LED },
+ { 2, 7, 12, 17, 21, NO_LED },
+ { 3, 8, 13, 18, 22, NO_LED },
+ { 4, 9, 14, 19, 23, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+ { 137, 0 }, { 154, 0 }, { 172, 0 }, { 189, 0 }, { 206, 0 }, { 137, 12 },
+ { 154, 12 }, { 172, 12 }, { 189, 12 }, { 206, 12 }, { 137, 25 }, { 154, 25 },
+ { 172, 25 }, { 189, 25 }, { 206, 25 }, { 137, 38 }, { 154, 38 }, { 172, 38 },
+ { 189, 38 }, { 206, 38 }, { 154, 51 }, { 172, 51 }, { 189, 51 }, { 206, 51 },
+ { 86, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 86, 12 },
+ { 68, 12 }, { 51, 12 }, { 34, 12 }, { 17, 12 }, { 86, 25 }, { 68, 25 },
+ { 51, 25 }, { 34, 25 }, { 17, 25 }, { 86, 38 }, { 68, 38 }, { 51, 38 },
+ { 34, 38 }, { 17, 38 }, { 68, 51 }, { 51, 51 }, { 34, 51 }, { 17, 51 }
+}, {
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1, 1
+} };
+
#endif
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
index 1cc95193c..af8e9ef20 100644
--- a/keyboards/ergodox_infinity/rules.mk
+++ b/keyboards/ergodox_infinity/rules.mk
@@ -59,6 +59,7 @@ OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000
#
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)
diff --git a/keyboards/ergotravel/keymaps/rs/keymap.c b/keyboards/ergotravel/keymaps/rs/keymap.c
index 634e97c49..1ac0a94d9 100644
--- a/keyboards/ergotravel/keymaps/rs/keymap.c
+++ b/keyboards/ergotravel/keymaps/rs/keymap.c
@@ -1,25 +1,7 @@
#include QMK_KEYBOARD_H
-
-enum layers {
- _QWERTY,
- _HYPER,
- _SIGN
-};
-
-
-#define KC_ KC_TRNS
-
-#define KC_ESCC MT(MOD_LCTL, KC_ESC)
-#define KC_ENTS MT(MOD_LSFT, KC_ENT)
-#define KC_HYPE MO(_HYPER)
-#define KC_SIGN MO(_SIGN)
-#define KC_RST RESET
-// Brightness
-#define KC_BRUP KC_PAUS
-#define KC_BRDN KC_SLCK
+#include "rs.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
TAB , Q , W , E , R , T , GRV, BSLS, Y , U , I , O , P ,EQL ,
@@ -28,32 +10,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSFT, Z , X , C , V , B , SPC, BSPC, N , M ,COMM,DOT ,SLSH,ENTS,
//|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
- SIGN, ,LCTL,LALT,LGUI, SPC, BSPC, HYPE,LEFT, UP ,DOWN,RIGHT
+ FN , ,LCTL,LALT,LGUI, SPC, BSPC, CODE,LEFT, UP ,DOWN,RIGHT
//`----+----+----+--+-+----/----/ \----\----+----+----+----+----'
),
-
-
- [_HYPER] = LAYOUT_kc(
+ [_CODE] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
- GRV , 1 , 2 , 3 , 4 , 5 , , , 6 , 7 , 8 , 9 , 0 , ,
+ GRV ,EXLM, AT ,HASH, DLR,PERC, , ,CIRC,LPLT,ASTR,RPGT,NEQL, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
- , , ,PGUP, , , , , , , UP ,LBRC,RBRC,BSLS,
+ , 1 , 2 , 3 , 4 , 5 , , ,MINS,LBRC, UP ,RBRC, ,BSLS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
- , ,HOME,PGDN,END , , , VOLU, ,LEFT,DOWN,RGHT, ,PIPE,
+ , 6 , 7 , 8 , 9 , 0 , DOT, ,AMPR,LEFT,DOWN,RGHT, ,PIPE,
//|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
- , , , , , , VOLD, ,MUTE, , ,
+ , , , , , , , , , , ,
//`----+----+----+----+----/----/ \----\----+----+----+----+----'
),
-
- [_SIGN] = LAYOUT_kc(
+ [_FN] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
- TILD,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LBRC,RBRC, ,
+ , F1 , F2 , F3 , F4 , F5 , , , F6 , F7 , F8 , F9 , F10,F11 ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
- RST , F1 , F2 , F3 , F4 , F5 , F6 , , , , ,LCBR,RCBR,PIPE,
+ , , , , , ,BRMU, , , ,PGUP, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
- , 1 , 2 , 3 , 4 , 5 , , BRUP, 6 , 7 , 8 , 9 , 0 , ,
+ , , , , , RST,BRMD, VOLU, ,CTRA,PGDN,CTRE, , ,
//|----+----+----+----+----+----+----. .----+----+----+----+----+----+----|
- , , , , , , BRDN, , , , ,
+ , , , , , , VOLD,MUTE, , , ,
//`----+----+----+----+----/----/ \----\----+----+----+----+----'
),
}; \ No newline at end of file
diff --git a/keyboards/ergotravel/keymaps/rs/readme.md b/keyboards/ergotravel/keymaps/rs/readme.md
index 93b87cc23..d23ab6687 100644
--- a/keyboards/ergotravel/keymaps/rs/readme.md
+++ b/keyboards/ergotravel/keymaps/rs/readme.md
@@ -1,13 +1 @@
-# Code friendly 60% keymap
-
-I developped this keymap to make a better use of 60% ortho keyboards I use like the preonic of the iris. Instead of trying to mimic the Planck layout like the default preonic keymap, this keymap removes the raise and lower layers and offers a simpler hyper layer concept for a few missing sign keys and cursors / media keys.
-
-The important part for coders is that most important signs needed to code are available at their usual position on a full keyboard, without complex layer gymnastic. Access to [] and {} are available on the hyper layer at their usual emplacement.
-
-The right thumb is used for both backspace and hyper layer switching. On the hyper layer, in addition to some coding signs, you get the cursor keys arranged in cross, just under your right fingers, so you don't have to move your hand when navigating in code or command line. Other hand gets the home/end page up/down in a similar layout.
-
-Because you sometime have to use your internal keyboard when you use a macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the hyper layer / backspace on right command key etc.
-
-This keymap is also available for other keyboards:
-- [ortho_5x12/rs](../../../../layouts/community/ortho_5x12/rs/keymap.c)
-- [Iris/rs](../../../iris/keymaps/rs/keymap.c)
+See [rs readme](../../../../users/rs/readme.md). \ No newline at end of file
diff --git a/keyboards/exclusive/e6_rgb/e6_rgb.c b/keyboards/exclusive/e6_rgb/e6_rgb.c
index d50af86b5..106e58497 100644
--- a/keyboards/exclusive/e6_rgb/e6_rgb.c
+++ b/keyboards/exclusive/e6_rgb/e6_rgb.c
@@ -114,91 +114,79 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{0, E_16, D_16, F_16},
{0, B_16, A_16, C_16},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
-//cs1
- {{0|(0<<4)}, { 0, 0}, 1},
- {{0|(1<<4)}, { 17, 0}, 0},
- {{1|(0<<4)}, { 0, 16}, 1},
- {{2|(0<<4)}, { 0, 32}, 1},
+led_config_t g_led_config = { {
+ { 0, 1, 4, 5, 12, 13, 36, 20, 21, 24, 25, 16, 17, 28 },
+ { 2, 6, 7, 14, 15, 37, 38, 22, 23, 26, 27, 18, 19, 30 },
+ { 3, 8, 9, 32, 33, 39, 40, 44, 45, 48, 49, 52, 31, NO_LED },
+ { 59, 10, 11, 34, 35, 41, 42, 46, 47, 50, 53, 54, 56, NO_LED },
+ { 60, 61, 62, NO_LED, NO_LED, 43, 51, 55, 58, 57, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+//cs1
+ { 0, 0 }, { 17, 0 }, { 0, 16 }, { 0, 32 },
//cs2
- {{0|(2<<4)}, { 34, 0}, 0},
- {{0|(3<<4)}, { 51, 0}, 0},
- {{1|(1<<4)}, { 17, 16}, 0},
- {{1|(2<<4)}, { 34, 16}, 0},
+ { 34, 0 }, { 51, 0 }, { 17, 16 }, { 34, 16 },
//cs3
- {{2|(1<<4)}, { 17, 32}, 0},
- {{2|(2<<4)}, { 34, 32}, 0},
- {{3|(1<<4)}, { 17, 48}, 0},
- {{3|(2<<4)}, { 34, 48}, 0},
+ { 17, 32 }, { 34, 32 }, { 17, 48 }, { 34, 48 },
//cs4
- {{0|(4<<4)}, { 68, 0}, 0},
- {{0|(5<<4)}, { 85, 0}, 0},
- {{1|(3<<4)}, { 51, 16}, 0},
- {{1|(4<<4)}, { 68, 16}, 0},
+ { 68, 0 }, { 85, 0 }, { 51, 16 }, { 68, 16 },
//cs5
- {{0|(11<<4)}, {187, 0}, 0},
- {{0|(12<<4)}, {204, 0}, 0},
- {{1|(11<<4)}, {187, 16}, 0},
- {{1|(12<<4)}, {204, 16}, 0},
+ { 187, 0 }, { 204, 0 }, { 187, 16 }, { 204, 16 },
//cs6
- {{0|(7<<4)}, {119, 0}, 0},
- {{0|(8<<4)}, {136, 0}, 0},
- {{1|(7<<4)}, {119, 16}, 0},
- {{1|(8<<4)}, {136, 16}, 0},
+ { 119, 0 }, { 136, 0 }, { 119, 16 }, { 136, 16 },
//cs7
- {{0|(9<<4)}, {153, 0}, 0},
- {{0|(10<<4)}, {170, 0}, 0},
- {{1|(9<<4)}, {153, 16}, 0},
- {{1|(10<<4)}, {170, 16}, 0},
+ { 153, 0 }, { 170, 0 }, { 153, 16 }, { 170, 16 },
//cs8
- {{0|(13<<4)}, {221, 0}, 0},
- {{0|(14<<4)}, {221, 0}, 0},
- {{1|(13<<4)}, {221, 32}, 1},
- {{2|(12<<4)}, {221, 16}, 1},
+ { 221, 0 }, { 221, 0 }, { 221, 32 }, { 221, 16 },
//cs9
- {{2|(3<<4)}, { 51, 32}, 0},
- {{2|(4<<4)}, { 68, 32}, 0},
- {{3|(3<<4)}, { 51, 48}, 0},
- {{3|(4<<4)}, { 68, 48}, 0},
+ { 51, 32 }, { 68, 32 }, { 51, 48 }, { 68, 48 },
//cs10
- {{0|(6<<4)}, {102, 0}, 0},
- {{1|(5<<4)}, { 85, 16}, 0},
- {{1|(6<<4)}, {102, 16}, 0},
- {{2|(5<<4)}, { 85, 32}, 0},
+ { 102, 0 }, { 85, 16 }, { 102, 16 }, { 85, 32 },
//cs11
- {{2|(6<<4)}, {102, 32}, 0},
- {{3|(5<<4)}, { 85, 48}, 0},
- {{3|(6<<4)}, {102, 48}, 0},
- {{4|(5<<4)}, {102, 64}, 0},
+ { 102, 32 }, { 85, 48 }, { 102, 48 }, { 102, 64 },
//cs12
- {{2|(7<<4)}, {119, 32}, 0},
- {{2|(8<<4)}, {136, 32}, 0},
- {{3|(7<<4)}, {119, 48}, 0},
- {{3|(8<<4)}, {136, 48}, 0},
+ { 119, 32 }, { 136, 32 }, { 119, 48 }, { 136, 48 },
//cs13
- {{2|(9<<4)}, {153, 32}, 0},
- {{2|(10<<4)}, {170, 32}, 0},
- {{3|(9<<4)}, {153, 48}, 0},
- {{4|(6<<4)}, {136, 48}, 1},
+ { 153, 32 }, { 170, 32 }, { 153, 48 }, { 136, 48 },
//cs14
- {{2|(11<<4)}, {187, 32}, 0},
- {{3|(10<<4)}, {170, 48}, 0},
- {{3|(11<<4)}, {187, 48}, 1},
- {{4|(7<<4)}, {153, 48}, 1},
+ { 187, 32 }, { 170, 48 }, { 187, 48 }, { 153, 48 },
//cs15
- {{3|(12<<4)}, {221, 48}, 1},
-
- {{4|(9<<4)}, {221, 64}, 1},
- {{4|(8<<4)}, {204, 64}, 1},
+ { 221, 48 }, { 221, 64 }, { 204, 64 },
//cs16
- {{3|(0<<4)}, { 0, 48}, 1},
- {{4|(0<<4)}, { 0, 64}, 1},
- {{4|(1<<4)}, { 17, 64}, 1},
- {{4|(2<<4)}, { 34, 64}, 1},
-};
+ { 0, 48 }, { 0, 64 }, { 17, 64 }, { 34, 64 }
+}, {
+//cs1
+ 1, 4, 1, 1,
+//cs2
+ 4, 4, 4, 4,
+//cs3
+ 4, 4, 4, 4,
+//cs4
+ 4, 4, 4, 4,
+//cs5
+ 4, 4, 4, 4,
+//cs6
+ 4, 4, 4, 4,
+//cs7
+ 4, 4, 4, 4,
+//cs8
+ 4, 4, 1, 1,
+//cs9
+ 4, 4, 4, 4,
+//cs10
+ 4, 4, 4, 4,
+//cs11
+ 4, 4, 4, 4,
+//cs12
+ 4, 4, 4, 4,
+//cs13
+ 4, 4, 4, 1,
+//cs14
+ 4, 4, 1, 1,
+//cs15
+ 1, 1, 1,
+//cs16
+ 1, 1, 1, 1
+} };
+
#endif
diff --git a/keyboards/exclusive/e6v2/bmc/bmc.h b/keyboards/exclusive/e6v2/bmc/bmc.h
index 06d23fbe6..44c02c860 100644
--- a/keyboards/exclusive/e6v2/bmc/bmc.h
+++ b/keyboards/exclusive/e6v2/bmc/bmc.h
@@ -72,7 +72,7 @@
k01, k02, k75, k08, k09 \
) \
{ \
- { KC_NO, k01, k02, KC_NO, KC_NO, k05, KC_NO, KC_NO, k08, k09, KC_NO }, \
+ { KC_NO, k01, k02, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k08, k09, KC_NO }, \
{ k10, k11, k12, k13, k14, k15, KC_NO, KC_NO, k18, k19, KC_NO }, \
{ k20, k21, k22, k23, k24, k25, k26, KC_NO, k28, k29, KC_NO }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, KC_NO }, \
diff --git a/keyboards/gergo/gergo.c b/keyboards/gergo/gergo.c
index cc0bef391..fab8d0f44 100644
--- a/keyboards/gergo/gergo.c
+++ b/keyboards/gergo/gergo.c
@@ -43,20 +43,20 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b10000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
i2c_stop();
// set pull-up
// - unused : on : 1
// - input : on : 1
// - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b10000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
out:
i2c_stop();
diff --git a/keyboards/gergo/gergo.h b/keyboards/gergo/gergo.h
index 0292c512a..1370325f2 100644
--- a/keyboards/gergo/gergo.h
+++ b/keyboards/gergo/gergo.h
@@ -1,14 +1,14 @@
#pragma once
-#include <util/delay.h>
+
+#include "quantum.h"
#include <stdint.h>
#include <stdbool.h>
-#include "quantum.h"
#include "i2c_master.h"
-#include "matrix.h"
+#include <util/delay.h>
extern i2c_status_t mcp23018_status;
-#define ERGODOX_EZ_I2C_TIMEOUT 1000
+#define I2C_TIMEOUT 1000
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
#define CPU_16MHz 0x00
@@ -26,18 +26,14 @@ extern i2c_status_t mcp23018_status;
#define OLATA 0x14 // output latch register
#define OLATB 0x15
-void init_ergodox(void);
uint8_t init_mcp23018(void);
/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
-#define LAYOUT_GERGO( \
+#define LAYOUT_gergo( \
L00,L01,L02,L03,L04,L05, R00,R01,R02,R03,R04,R05, \
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, \
- L31,L32, R33,R34, \
- L30, R30, \
- L33,L34, R31,R32) \
- \
+ L20,L21,L22,L23,L24,L25,L26,L30, R30,R20,R21,R22,R23,R24,R25,R26, \
+ L31,L32,L33,L34, R31,R32,R33,R34) \
/* matrix positions */ \
{ \
{ KC_NO, L16, L26, L30}, \
diff --git a/keyboards/gergo/i2cmaster.h b/keyboards/gergo/i2cmaster.h
deleted file mode 100644
index 72e050849..000000000
--- a/keyboards/gergo/i2cmaster.h
+++ /dev/null
@@ -1,178 +0,0 @@
-#ifndef _I2CMASTER_H
-#define _I2CMASTER_H 1
-/*************************************************************************
-* Title: C include file for the I2C master interface
-* (i2cmaster.S or twimaster.c)
-* Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
-* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $
-* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
-* Target: any AVR device
-* Usage: see Doxygen manual
-**************************************************************************/
-
-#ifdef DOXYGEN
-/**
- @defgroup pfleury_ic2master I2C Master library
- @code #include <i2cmaster.h> @endcode
-
- @brief I2C (TWI) Master Software Library
-
- Basic routines for communicating with I2C slave devices. This single master
- implementation is limited to one bus master on the I2C bus.
-
- This I2c library is implemented as a compact assembler software implementation of the I2C protocol
- which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c).
- Since the API for these two implementations is exactly the same, an application can be linked either against the
- software I2C implementation or the hardware I2C implementation.
-
- Use 4.7k pull-up resistor on the SDA and SCL pin.
-
- Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module
- i2cmaster.S to your target when using the software I2C implementation !
-
- Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion.
-
- @note
- The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted
- to GNU assembler and AVR-GCC C call interface.
- Replaced the incorrect quarter period delays found in AVR300 with
- half period delays.
-
- @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
-
- @par API Usage Example
- The following code shows typical usage of this library, see example test_i2cmaster.c
-
- @code
-
- #include <i2cmaster.h>
-
-
- #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet
-
- int main(void)
- {
- unsigned char ret;
-
- i2c_init(); // initialize I2C library
-
- // write 0x75 to EEPROM address 5 (Byte Write)
- i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
- i2c_write(0x05); // write address = 5
- i2c_write(0x75); // write value 0x75 to EEPROM
- i2c_stop(); // set stop conditon = release bus
-
-
- // read previously written value back from EEPROM address 5
- i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
-
- i2c_write(0x05); // write address = 5
- i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode
-
- ret = i2c_readNak(); // read one byte from EEPROM
- i2c_stop();
-
- for(;;);
- }
- @endcode
-
-*/
-#endif /* DOXYGEN */
-
-/**@{*/
-
-#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
-#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
-#endif
-
-#include <avr/io.h>
-
-/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */
-#define I2C_READ 1
-
-/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */
-#define I2C_WRITE 0
-
-
-/**
- @brief initialize the I2C master interace. Need to be called only once
- @param void
- @return none
- */
-void i2c_init(void);
-
-
-/**
- @brief Terminates the data transfer and releases the I2C bus
- @param void
- @return none
- */
-void i2c_stop(void);
-
-
-/**
- @brief Issues a start condition and sends address and transfer direction
-
- @param addr address and transfer direction of I2C device
- @retval 0 device accessible
- @retval 1 failed to access device
- */
-unsigned char i2c_start(unsigned char addr);
-
-
-/**
- @brief Issues a repeated start condition and sends address and transfer direction
-
- @param addr address and transfer direction of I2C device
- @retval 0 device accessible
- @retval 1 failed to access device
- */
-unsigned char i2c_rep_start(unsigned char addr);
-
-
-/**
- @brief Issues a start condition and sends address and transfer direction
-
- If device is busy, use ack polling to wait until device ready
- @param addr address and transfer direction of I2C device
- @return none
- */
-void i2c_start_wait(unsigned char addr);
-
-
-/**
- @brief Send one byte to I2C device
- @param data byte to be transfered
- @retval 0 write successful
- @retval 1 write failed
- */
-unsigned char i2c_write(unsigned char data);
-
-
-/**
- @brief read one byte from the I2C device, request more data from device
- @return byte read from I2C device
- */
-unsigned char i2c_readAck(void);
-
-/**
- @brief read one byte from the I2C device, read is followed by a stop condition
- @return byte read from I2C device
- */
-unsigned char i2c_readNak(void);
-
-/**
- @brief read one byte from the I2C device
-
- Implemented as a macro, which calls either i2c_readAck or i2c_readNak
-
- @param ack 1 send ack, request more data from device<br>
- 0 send nak, read is followed by a stop condition
- @return byte read from I2C device
- */
-unsigned char i2c_read(unsigned char ack);
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-
-/**@}*/
-#endif
diff --git a/keyboards/gergo/info.json b/keyboards/gergo/info.json
index cacbda423..586b9c908 100644
--- a/keyboards/gergo/info.json
+++ b/keyboards/gergo/info.json
@@ -5,7 +5,7 @@
"keyboard_name": "Gergo",
"url": "http://gboards.ca",
"layouts": {
- "LAYOUT_GERGO": {
+ "LAYOUT_gergo": {
"layout": [
{
"label": "L00",
@@ -181,6 +181,16 @@
"y": 1.75
},
{
+ "label": "L30",
+ "x": 8.25,
+ "y": 2.75
+ },
+ {
+ "label": "R30",
+ "x": 10.25,
+ "y": 2.75
+ },
+ {
"h": 1.5,
"label": "R20",
"x": 12,
@@ -228,26 +238,6 @@
"y": 3.63
},
{
- "label": "R33",
- "x": 12.5,
- "y": 3.63
- },
- {
- "label": "R34",
- "x": 13.75,
- "y": 3.25
- },
- {
- "label": "L30",
- "x": 8.25,
- "y": 2.75
- },
- {
- "label": "R30",
- "x": 10.25,
- "y": 2.75
- },
- {
"h": 2,
"label": "L33",
"x": 7.25,
@@ -270,6 +260,16 @@
"label": "R32",
"x": 11.25,
"y": 3.75
+ },
+ {
+ "label": "R33",
+ "x": 12.5,
+ "y": 3.63
+ },
+ {
+ "label": "R34",
+ "x": 13.75,
+ "y": 3.25
}
]
}
diff --git a/keyboards/gergo/keymaps/colemak/keymap.c b/keyboards/gergo/keymaps/colemak/keymap.c
new file mode 100644
index 000000000..b2e79114f
--- /dev/null
+++ b/keyboards/gergo/keymaps/colemak/keymap.c
@@ -0,0 +1,174 @@
+/* Good on you for modifying your layout! if you don't have
+ * time to read the QMK docs, a list of keycodes can be found at
+ *
+ * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
+ *
+ * There's also a template for adding new layers at the bottom of this file!
+ */
+
+#include QMK_KEYBOARD_H
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define NUMB 2 // numbers/motion
+
+enum custom_keycodes {
+ M1_STRING = SAFE_RANGE,
+ M2_URL,
+};
+
+// Blank template at the bottom
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | TAB | Q | W | F | P | G | | J | L | U | Y | ; : | | \ |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | Ctrl | A | R | S | T | D |O(CMD)| |O(CTL)| H | N | E | I | O | ' " |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B |O(ALT)| | | K | M | , < | . > | / ? | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .----------. .-------. .------. .--------.
+ * | alt/del | | BKSP | | Space| |cmd/del |
+ * '----------' '-------' `------. '--------'
+ * ,-------. ,-------.
+ * | MMB | | : |
+ * ,------|-------| |-------|------.
+ * | NUMB | SYMB | | SYMB | NUMB |
+ * | Esc | F13 | | F14 | Enter|
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[BASE] = LAYOUT_gergo(
+KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y,KC_SCLN, KC_BSLS,
+KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, OSM(MOD_LGUI), OSM(MOD_LCTL), KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, OSM(MOD_LALT), KC_TRNS, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+
+ ALT_T(KC_DEL), KC_BSPC, KC_SPC, CMD_T(KC_DEL),
+
+ KC_BTN3, KC_COLON,
+ LT(SYMB, KC_ESC), LT(NUMB, KC_F13), LT(NUMB, KC_F14), LT(SYMB, KC_ENT)),
+/* Keymap 1: Symbols layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | VolUp |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | | [ | ] | { | } | ` | M1 | | | | - | _ | + | = | VolDn |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | | ` | ~ | | | ~ | M2 | | | | | Prev |Pl/Pau| Next | Mute |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | | | |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[SYMB] = LAYOUT_gergo(
+KC_TRNS, KC_EXLM, KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC__VOLUP,
+KC_TRNS, KC_LBRC, KC_RBRC, KC_LCBR,KC_RCBR, KC_PLUS, M1_STRING, KC_TRNS, KC_TRNS, KC_MINS, KC_UNDERSCORE, KC_PLUS, KC_EQL, KC__VOLDOWN,
+KC_TRNS, KC_GRV, KC_TILD,KC_TRNS,KC_TRNS, KC_EQL, M2_URL, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_REWIND, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_FAST_FORWARD, KC__MUTE,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+/* Keymap 2: Pad/Function layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | PgUp |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | BTN1 | | Home | LEFT | DOWN | UP | RIGHT| End | PgDn |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 | BTN2 | | | MLFT | MDWN | MUP | MRGHT| | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | ALT | | |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[NUMB] = LAYOUT_gergo(
+KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGUP,
+KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_BTN1, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_PGDN,
+KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BTN2, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS,
+
+ KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+/* Keymap template
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | | | |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `--------------' `--------------'
+[SYMB] = LAYOUT_gergo(
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ */
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+ //uint8_t layer = biton32(layer_state);
+ biton32(layer_state);
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case M1_STRING:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("Hi!" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+
+ case M2_URL:
+ if (record->event.pressed) {
+ SEND_STRING("https://ddg.gg" SS_TAP(X_ENTER));
+ }
+ break;
+
+ }
+ return true;
+};
+
diff --git a/keyboards/gergo/keymaps/colemak/readme.md b/keyboards/gergo/keymaps/colemak/readme.md
new file mode 100644
index 000000000..1c1cc7bde
--- /dev/null
+++ b/keyboards/gergo/keymaps/colemak/readme.md
@@ -0,0 +1,16 @@
+# [Gergo! By g Heavy Industries](http://gboards.ca)
+
+![Gergo image](https://4.bp.blogspot.com/-889nMXxgSM0/XCNxwnO5kUI/AAAAAAAA6mI/tZbWgZVCBW0dyZOCGJDkjN06DVax7j8XwCLcBGAs/s1600/48422820_967732713413298_485744639215665152_n.jpg)
+
+This is a [Colemak](https://colemak.com/) mapping for the Gergo,
+
+Unlike the default mapping, most symbols are at their original place on the number row to ease in the
+learning curve.
+
+You can view this layout over at
+[keyboad-layout-editor.com](http://www.keyboard-layout-editor.com/#/gists/f04d6a3b0cd3db91407c51f7ba36aeb3).
+
+## Settings
+To edit various settings, enable the 1u trackball and whatnot please modify /keyboards/gergo/keymaps/default/rules.mk
+
+Ideally you should copy this directory and make your changes there. If you come up with a good layout submit a PR!
diff --git a/keyboards/gergo/keymaps/colemak/rules.mk b/keyboards/gergo/keymaps/colemak/rules.mk
new file mode 100644
index 000000000..ddec12d1b
--- /dev/null
+++ b/keyboards/gergo/keymaps/colemak/rules.mk
@@ -0,0 +1,36 @@
+#----------------------------------------------------------------------------
+# make gergo:germ:dfu
+# Make sure you have dfu-programmer installed!
+#----------------------------------------------------------------------------
+# Firmware options
+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
+
+#Debug options
+VERBOSE = no
+DEBUG_MATRIX_SCAN_RATE = no
+DEBUG_BALLER = no
+DEBUG_MATRIX = no
+
+# A bunch of stuff that you shouldn't touch unless you
+# know what you're doing.
+#
+# No touchy, capiche?
+SRC += matrix.c i2c_master.c
+ifneq ($(strip $(BALLSTEP)),)
+ OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
+endif
+ifneq ($(strip $(SCROLLSTEP)),)
+ OPT_DEFS += -DSCROLLSTEP=$(strip $(SCROLLSTEP))
+endif
+ifeq ($(strip $(BALLER)), yes)
+ OPT_DEFS += -DBALLER
+endif
+ifeq ($(strip $(DEBUG_BALLER)), yes)
+ OPT_DEFS += -DDEBUG_BALLER
+endif
+ifeq ($(strip $(DEBUG_MATRIX)), yes)
+ OPT_DEFS += -DDEBUG_MATRIX
+endif
diff --git a/keyboards/gergo/keymaps/default/config.h b/keyboards/gergo/keymaps/default/config.h
new file mode 100644
index 000000000..6393d46f1
--- /dev/null
+++ b/keyboards/gergo/keymaps/default/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/gergo/keymaps/default/keymap.c b/keyboards/gergo/keymaps/default/keymap.c
index fabd945fe..8e26223f1 100644
--- a/keyboards/gergo/keymaps/default/keymap.c
+++ b/keyboards/gergo/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Good on you for modifying your layout! if you don't have
+/* Good on you for modifying your layout! if you don't have
* time to read the QMK docs, a list of keycodes can be found at
*
* https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
@@ -8,7 +8,6 @@
#include QMK_KEYBOARD_H
-#define IGNORE_MOD_TAP_INTERRUPT
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define NUMB 2 // numbers/motion
@@ -41,15 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | |
* `--------------' `--------------'
*/
-[BASE] = LAYOUT_GERGO(
-LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
-MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
-KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
-
- MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), KC_TAB, KC_BSPC,
-
- KC_BTN3, KC_PGDN,
- LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC)),
+[BASE] = LAYOUT_gergo(
+ LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
+ MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC
+ ),
/* Keymap 1: Symbols layer
*
* ,-------------------------------------------. ,-------------------------------------------.
@@ -70,14 +66,12 @@ KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BSP
* | | | | | |
* `--------------' `--------------'
*/
-[SYMB] = LAYOUT_GERGO(
-KC_TRNS, KC_EXLM, KC_AT, KC_LCBR,KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
-KC_TRNS, KC_HASH, KC_DLR, KC_LPRN,KC_RPRN, KC_GRV, KC_TRNS, KC_TRNS, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
-KC_TRNS, KC_PERC, KC_CIRC,KC_LBRC,KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
-
- KC_TRNS, KC_TRNS, KC_PGUP, KC_DEL,
- KC_TRNS, KC_TRNS,
- KC_SCLN, KC_EQL, KC_EQL, KC_SCLN),
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
+ KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_TRNS, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ KC_TRNS, KC_TRNS, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_PGUP, KC_DEL
+ ),
/* Keymap 2: Pad/Function layer
*
* ,-------------------------------------------. ,-------------------------------------------.
@@ -98,17 +92,15 @@ KC_TRNS, KC_PERC, KC_CIRC,KC_LBRC,KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_
* | | | | | |
* `--------------' `--------------'
*/
-[NUMB] = LAYOUT_GERGO(
-KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
-KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU,
-KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT,
-
- KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+[NUMB] = LAYOUT_gergo(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
};
-/* Keymap template
+/* Keymap template
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
@@ -127,25 +119,10 @@ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, K
* | | | | | |
* | | | | | |
* `--------------' `--------------'
-[SYMB] = LAYOUT_GERGO(
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
*/
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
- //uint8_t layer = biton32(layer_state);
- biton32(layer_state);
-};
-
-
diff --git a/keyboards/gergo/keymaps/default/rules.mk b/keyboards/gergo/keymaps/default/rules.mk
index 507cc97b7..da2d03af2 100644
--- a/keyboards/gergo/keymaps/default/rules.mk
+++ b/keyboards/gergo/keymaps/default/rules.mk
@@ -3,7 +3,7 @@
# Make sure you have dfu-programmer installed!
#----------------------------------------------------------------------------
# Firmware options
-BALLER = yes # Enable to ball out
+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
@@ -26,6 +26,7 @@ ifneq ($(strip $(SCROLLSTEP)),)
OPT_DEFS += -DSCROLLSTEP=$(strip $(SCROLLSTEP))
endif
ifeq ($(strip $(BALLER)), yes)
+ POINTING_DEVICE_ENABLE = yes
OPT_DEFS += -DBALLER
endif
ifeq ($(strip $(DEBUG_BALLER)), yes)
diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c
new file mode 100644
index 000000000..ffa23462e
--- /dev/null
+++ b/keyboards/gergo/keymaps/drashna/keymap.c
@@ -0,0 +1,113 @@
+/* Good on you for modifying your layout! if you don't have
+ * time to read the QMK docs, a list of keycodes can be found at
+ *
+ * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
+ *
+ * There's also a template for adding new layers at the bottom of this file!
+ */
+
+#include QMK_KEYBOARD_H
+#include "drashna.h"
+
+
+#define LAYOUT_gergo_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_gergo_wrapper( \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
+ KC_TAB, K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, KC_QUOT, \
+ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
+ KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
+ )
+
+#define LAYOUT_gergo_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_gergo_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+ [_COLEMAK] = LAYOUT_gergo_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DVORAK] = LAYOUT_gergo_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_WORKMAN] = LAYOUT_gergo_base_wrapper(
+ _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
+ _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
+ _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
+ ),
+
+ [_NORMAN] = LAYOUT_gergo_base_wrapper(
+ _________________NORMAN_L1_________________, _________________NORMAN_L1_________________,
+ _________________NORMAN_L2_________________, _________________NORMAN_R2_________________,
+ _________________NORMAN_L3_________________, _________________NORMAN_R3_________________
+ ),
+
+ [_MALTRON] = LAYOUT_gergo_base_wrapper(
+ _________________MALTRON_L1________________, _________________MALTRON_R1________________,
+ _________________MALTRON_L2________________, _________________MALTRON_R2________________,
+ _________________MALTRON_L3________________, _________________MALTRON_R3________________
+ ),
+
+ [_EUCALYN] = LAYOUT_gergo_base_wrapper(
+ _________________EUCALYN_L1________________, _________________EUCALYN_R1________________,
+ _________________EUCALYN_L2________________, _________________EUCALYN_R2________________,
+ _________________EUCALYN_L3________________, _________________EUCALYN_R3________________
+ ),
+
+ [_CARPLAX] = LAYOUT_gergo_base_wrapper(
+ _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________,
+ _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
+ _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
+ ),
+
+ [_MODS] = LAYOUT_gergo_wrapper(
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ _______, ___________________BLANK___________________, _______, _______, ___________________BLANK___________________, _______,
+ KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_LOWER] = LAYOUT_gergo_wrapper(
+ KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
+ _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_PIPE,
+ _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_gergo_wrapper(
+ _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______,
+ _______, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_BSLS,
+ _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_gergo_wrapper(
+ KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
+ VRSN, _________________ADJUST_L2_________________, _______, KC_NUKE, _________________ADJUST_R2_________________, EEP_RST,
+ _______, _________________ADJUST_L3_________________, _______, _______, _______, _______, _________________ADJUST_R3_________________, TG_MODS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+/* Keymap template
+
+ [SYMB] = LAYOUT_gergo_wrapper(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ */
diff --git a/keyboards/gergo/keymaps/drashna/rules.mk b/keyboards/gergo/keymaps/drashna/rules.mk
new file mode 100644
index 000000000..ec81d11e9
--- /dev/null
+++ b/keyboards/gergo/keymaps/drashna/rules.mk
@@ -0,0 +1,2 @@
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
diff --git a/keyboards/gergo/keymaps/germ/config.h b/keyboards/gergo/keymaps/germ/config.h
new file mode 100644
index 000000000..6393d46f1
--- /dev/null
+++ b/keyboards/gergo/keymaps/germ/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/gergo/keymaps/germ/keymap.c b/keyboards/gergo/keymaps/germ/keymap.c
index fabd945fe..8e26223f1 100644
--- a/keyboards/gergo/keymaps/germ/keymap.c
+++ b/keyboards/gergo/keymaps/germ/keymap.c
@@ -1,4 +1,4 @@
-/* Good on you for modifying your layout! if you don't have
+/* Good on you for modifying your layout! if you don't have
* time to read the QMK docs, a list of keycodes can be found at
*
* https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
@@ -8,7 +8,6 @@
#include QMK_KEYBOARD_H
-#define IGNORE_MOD_TAP_INTERRUPT
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define NUMB 2 // numbers/motion
@@ -41,15 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | |
* `--------------' `--------------'
*/
-[BASE] = LAYOUT_GERGO(
-LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
-MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
-KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
-
- MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), KC_TAB, KC_BSPC,
-
- KC_BTN3, KC_PGDN,
- LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC)),
+[BASE] = LAYOUT_gergo(
+ LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
+ MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC
+ ),
/* Keymap 1: Symbols layer
*
* ,-------------------------------------------. ,-------------------------------------------.
@@ -70,14 +66,12 @@ KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BSP
* | | | | | |
* `--------------' `--------------'
*/
-[SYMB] = LAYOUT_GERGO(
-KC_TRNS, KC_EXLM, KC_AT, KC_LCBR,KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
-KC_TRNS, KC_HASH, KC_DLR, KC_LPRN,KC_RPRN, KC_GRV, KC_TRNS, KC_TRNS, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
-KC_TRNS, KC_PERC, KC_CIRC,KC_LBRC,KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
-
- KC_TRNS, KC_TRNS, KC_PGUP, KC_DEL,
- KC_TRNS, KC_TRNS,
- KC_SCLN, KC_EQL, KC_EQL, KC_SCLN),
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
+ KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_TRNS, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ KC_TRNS, KC_TRNS, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_PGUP, KC_DEL
+ ),
/* Keymap 2: Pad/Function layer
*
* ,-------------------------------------------. ,-------------------------------------------.
@@ -98,17 +92,15 @@ KC_TRNS, KC_PERC, KC_CIRC,KC_LBRC,KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_
* | | | | | |
* `--------------' `--------------'
*/
-[NUMB] = LAYOUT_GERGO(
-KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
-KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU,
-KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT,
-
- KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+[NUMB] = LAYOUT_gergo(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
};
-/* Keymap template
+/* Keymap template
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
@@ -127,25 +119,10 @@ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, K
* | | | | | |
* | | | | | |
* `--------------' `--------------'
-[SYMB] = LAYOUT_GERGO(
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
*/
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
- //uint8_t layer = biton32(layer_state);
- biton32(layer_state);
-};
-
-
diff --git a/keyboards/gergo/keymaps/germ/rules.mk b/keyboards/gergo/keymaps/germ/rules.mk
index 2f825a766..badfe7bb9 100644
--- a/keyboards/gergo/keymaps/germ/rules.mk
+++ b/keyboards/gergo/keymaps/germ/rules.mk
@@ -27,6 +27,7 @@ ifneq ($(strip $(SCROLLSTEP)),)
endif
ifeq ($(strip $(BALLER)), yes)
OPT_DEFS += -DBALLER
+ POINTING_DEVICE_ENABLE = yes
endif
ifeq ($(strip $(DEBUG_BALLER)), yes)
OPT_DEFS += -DDEBUG_BALLER
diff --git a/keyboards/gergo/matrix.c b/keyboards/gergo/matrix.c
index 9886ecf15..234160326 100644
--- a/keyboards/gergo/matrix.c
+++ b/keyboards/gergo/matrix.c
@@ -29,14 +29,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "print.h"
#include "debug.h"
#include "util.h"
-#include "pointing_device.h"
+#include "debounce.h"
#include QMK_KEYBOARD_H
#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
+# include "timer.h"
#endif
#ifdef BALLER
#include <avr/interrupt.h>
+#include "pointing_device.h"
#endif
#ifndef DEBOUNCE
@@ -117,12 +118,11 @@ static matrix_row_t raw_matrix[MATRIX_ROWS];
// Debouncing: store for each key the number of scans until it's eligible to
// change. When scanning the matrix, ignore any changes in keys that have
// already changed in the last DEBOUNCE scans.
-static uint8_t debounce_matrix[MATRIX_ROWS * MATRIX_COLS];
static matrix_row_t read_cols(uint8_t row);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
+static void init_cols(void);
+static void unselect_rows(void);
+static void select_row(uint8_t row);
static void enableInterrupts(void);
static uint8_t mcp23018_reset_loop;
@@ -134,11 +134,9 @@ uint32_t matrix_scan_count;
#endif
-__attribute__ ((weak))
-void matrix_init_user(void) {}
+__attribute__ ((weak)) void matrix_init_user(void) {}
-__attribute__ ((weak))
-void matrix_scan_user(void) {}
+__attribute__ ((weak)) void matrix_scan_user(void) {}
__attribute__ ((weak))
void matrix_init_kb(void) {
@@ -150,39 +148,28 @@ void matrix_scan_kb(void) {
matrix_scan_user();
}
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
+inline uint8_t matrix_rows(void) { return MATRIX_ROWS; }
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
+inline uint8_t matrix_cols(void) { return MATRIX_COLS; }
-void matrix_init(void)
-{
+void matrix_init(void) {
// initialize row and col
mcp23018_status = init_mcp23018();
unselect_rows();
init_cols();
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- raw_matrix[i] = 0;
- for (uint8_t j=0; j < MATRIX_COLS; ++j) {
- debounce_matrix[i * MATRIX_COLS + j] = 0;
- }
- }
+ // initialize matrix state: all keys off
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ raw_matrix[i] = 0;
+ }
#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
+ matrix_timer = timer_read32();
matrix_scan_count = 0;
#endif
+ debounce_init(MATRIX_ROWS);
matrix_init_quantum();
}
@@ -198,130 +185,120 @@ void matrix_power_up(void) {
}
#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
+ matrix_timer = timer_read32();
matrix_scan_count = 0;
#endif
}
-// Returns a matrix_row_t whose bits are set if the corresponding key should be
-// eligible to change in this scan.
-matrix_row_t debounce_mask(matrix_row_t rawcols, uint8_t row) {
- matrix_row_t result = 0;
- matrix_row_t change = rawcols ^ raw_matrix[row];
- raw_matrix[row] = rawcols;
- for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
- if (debounce_matrix[row * MATRIX_COLS + i]) {
- --debounce_matrix[row * MATRIX_COLS + i];
- } else {
- result |= (1 << i);
- }
- if (change & (1 << i)) {
- debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
- }
+// Reads and stores a row, returning
+// whether a change occurred.
+static inline bool store_raw_matrix_row(uint8_t index) {
+ matrix_row_t temp = read_cols(index);
+ if (raw_matrix[index] != temp) {
+ raw_matrix[index] = temp;
+ return true;
}
- return result;
+ return false;
}
-matrix_row_t debounce_read_cols(uint8_t row) {
- // Read the row without debouncing filtering and store it for later usage.
- matrix_row_t cols = read_cols(row);
- // Get the Debounce mask.
- matrix_row_t mask = debounce_mask(cols, row);
- // debounce the row and return the result.
- return (cols & mask) | (matrix[row] & ~mask);;
-}
-uint8_t matrix_scan(void)
-{
- // TODO: Find what is trashing interrupts
- enableInterrupts();
- // First we handle the mouse inputs
- #ifdef BALLER
- uint8_t pBtn = PINE & TRKBTN;
+uint8_t matrix_scan(void) {
+ // TODO: Find what is trashing interrupts
+ enableInterrupts();
+
+ // First we handle the mouse inputs
+#ifdef BALLER
+ uint8_t pBtn = PINE & TRKBTN;
- #ifdef DEBUG_BALLER
- // Compare to previous, mod report
- if (tbUpCnt + tbDnCnt + tbLtCnt + tbRtCnt != 0)
- xprintf("U: %d D: %d L: %d R: %d B: %d\n", tbUpCnt, tbDnCnt, tbLtCnt, tbRtCnt, (trkBtnState >> 6));
- #endif
+ #ifdef DEBUG_BALLER
+ // Compare to previous, mod report
+ if (tbUpCnt + tbDnCnt + tbLtCnt + tbRtCnt != 0)
+ xprintf("U: %d D: %d L: %d R: %d B: %d\n", tbUpCnt, tbDnCnt, tbLtCnt, tbRtCnt, (trkBtnState >> 6));
+ #endif
- // Modify the report
- report_mouse_t pRprt = pointing_device_get_report();
+ // Modify the report
+ report_mouse_t pRprt = pointing_device_get_report();
- // Scroll by default, move on layer
- if (layer_state == 0) {
+ // Scroll by default, move on layer
+ if (layer_state == 0) {
pRprt.h += tbLtCnt * SCROLLSTEP; tbLtCnt = 0;
pRprt.h -= tbRtCnt * SCROLLSTEP; tbRtCnt = 0;
pRprt.v -= tbUpCnt * SCROLLSTEP; tbUpCnt = 0;
pRprt.v += tbDnCnt * SCROLLSTEP; tbDnCnt = 0;
- } else {
+ } else {
pRprt.x -= tbLtCnt * TRKSTEP * (layer_state - 1); tbLtCnt = 0;
pRprt.x += tbRtCnt * TRKSTEP * (layer_state - 1); tbRtCnt = 0;
pRprt.y -= tbUpCnt * TRKSTEP * (layer_state - 1); tbUpCnt = 0;
pRprt.y += tbDnCnt * TRKSTEP * (layer_state - 1); tbDnCnt = 0;
- }
+ }
- #ifdef DEBUG_BALLER
- if (pRprt.x != 0 || pRprt.y != 0)
- xprintf("X: %d Y: %d\n", pRprt.x, pRprt.y);
- #endif
-
- if ((pBtn != trkBtnState) && ((pBtn >> 6) == 0)) pRprt.buttons |= MOUSE_BTN1;
- if ((pBtn != trkBtnState) && ((pBtn >> 6) == 1)) pRprt.buttons &= ~MOUSE_BTN1;
-
- // Save state, push update
- if (pRprt.x != 0 || pRprt.y != 0 || pRprt.h != 0 || pRprt.v != 0 || (trkBtnState != pBtn))
- pointing_device_set_report(pRprt);
-
- trkBtnState = pBtn;
- #endif
-
- // Then the keyboard
- if (mcp23018_status) { // if there was an error
- if (++mcp23018_reset_loop == 0) {
- // if (++mcp23018_reset_loop >= 1300) {
- // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
- // this will be approx bit more frequent than once per second
- print("trying to reset mcp23018\n");
- mcp23018_status = init_mcp23018();
- if (mcp23018_status) {
- print("left side not responding\n");
- } else {
- print("left side attached\n");
- }
- }
- }
+#ifdef DEBUG_BALLER
+ if (pRprt.x != 0 || pRprt.y != 0)
+ xprintf("X: %d Y: %d\n", pRprt.x, pRprt.y);
+#endif
+
+ if ((pBtn != trkBtnState) && ((pBtn >> 6) == 0)) pRprt.buttons |= MOUSE_BTN1;
+ if ((pBtn != trkBtnState) && ((pBtn >> 6) == 1)) pRprt.buttons &= ~MOUSE_BTN1;
+
+ // Save state, push update
+ if (pRprt.x != 0 || pRprt.y != 0 || pRprt.h != 0 || pRprt.v != 0 || (trkBtnState != pBtn))
+ pointing_device_set_report(pRprt);
+
+ trkBtnState = pBtn;
+#endif
+
+ // Then the keyboard
+ if (mcp23018_status) { // if there was an error
+ if (++mcp23018_reset_loop == 0) {
+ // if (++mcp23018_reset_loop >= 1300) {
+ // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
+ // this will be approx bit more frequent than once per second
+ print("trying to reset mcp23018\n");
+ mcp23018_status = init_mcp23018();
+ if (mcp23018_status) {
+ print("left side not responding\n");
+ } else {
+ print("left side attached\n");
+ }
+ }
+ }
#ifdef DEBUG_MATRIX_SCAN_RATE
matrix_scan_count++;
+
uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
+ if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) {
print("matrix scan frequency: ");
pdec(matrix_scan_count);
print("\n");
- matrix_timer = timer_now;
+ matrix_timer = timer_now;
matrix_scan_count = 0;
}
#endif
+
+ bool changed = false;
for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
- select_row(i);
- // and select on left hand
- select_row(i + MATRIX_ROWS_PER_SIDE);
+ // select rows from left and right hands
+ uint8_t left_index = i;
+ uint8_t right_index = i + MATRIX_ROWS_PER_SIDE;
+ select_row(left_index);
+ select_row(right_index);
+
// we don't need a 30us delay anymore, because selecting a
// left-hand row requires more than 30us for i2c.
- // grab cols from left hand
- matrix[i] = debounce_read_cols(i);
- // grab cols from right hand
- matrix[i + MATRIX_ROWS_PER_SIDE] = debounce_read_cols(i + MATRIX_ROWS_PER_SIDE);
+ changed |= store_raw_matrix_row(left_index);
+ changed |= store_raw_matrix_row(right_index);
unselect_rows();
}
+ debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
matrix_scan_quantum();
+
enableInterrupts();
#ifdef DEBUG_MATRIX
@@ -338,20 +315,11 @@ bool matrix_is_modified(void) // deprecated and evidently not called.
return true;
}
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
+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];
-}
+inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
-void matrix_print(void)
-{
+void matrix_print(void) {
print("\nr/c 0123456789ABCDEF\n");
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
phex(row); print(": ");
@@ -360,8 +328,7 @@ void matrix_print(void)
}
}
-uint8_t matrix_key_count(void)
-{
+uint8_t matrix_key_count(void) {
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop16(matrix[i]);
@@ -370,8 +337,7 @@ uint8_t matrix_key_count(void)
}
// Remember this means ROWS
-static void init_cols(void)
-{
+static void init_cols(void) {
// init on mcp23018
// not needed, already done as part of init_mcp23018()
@@ -380,17 +346,16 @@ static void init_cols(void)
PORTF |= FMASK;
}
-static matrix_row_t read_cols(uint8_t row)
-{
+static matrix_row_t read_cols(uint8_t row) {
if (row < 7) {
if (mcp23018_status) { // if there was an error
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOB, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_read_nack(I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
data = ~((uint8_t)mcp23018_status);
mcp23018_status = I2C_STATUS_SUCCESS;
out:
@@ -440,9 +405,9 @@ static void select_row(uint8_t row)
// select on mcp23018
if (mcp23018_status) { // do nothing on error
} else { // set active row low : 0 // set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1<<row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0xFF & ~(1<<row), I2C_TIMEOUT); if (mcp23018_status) goto out;
out:
i2c_stop();
}
diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk
index aadc1c2ce..a33bfcec8 100644
--- a/keyboards/gergo/rules.mk
+++ b/keyboards/gergo/rules.mk
@@ -14,7 +14,8 @@ BOOTLOADER = atmel-dfu
F_USB = $(F_CPU)
CUSTOM_MATRIX = yes
-POINTING_DEVICE_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
+
+DEBOUNCE_TYPE = eager_pr
diff --git a/keyboards/h87a/h87a.h b/keyboards/h87a/h87a.h
deleted file mode 100644
index 8aa3e160e..000000000
--- a/keyboards/h87a/h87a.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright 2018 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef H87A_H
-#define H87A_H
-
-#include "quantum.h"
-
-// 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
-// The second converts the arguments into a two-dimensional array
-#define LAYOUT_all(\
- K000, K001, K011, K002, K012, K003, K013, K004, K014, K015, K006, K016, K007, K017, K008, K018, \
- K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
- K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \
- K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \
- K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K088, \
- K100, K110, K101, K113, K105, K115, K106, K116, K117, K108, K118 \
-) { \
- { K000, K001, K002, K003, K004, KC_NO, K006, K007, K008 }, \
- { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \
- { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
- { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
- { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \
- { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
- { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \
- { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \
- { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \
- { K090, K091, K092, K093, K094, K095, K096, KC_NO, KC_NO }, \
- { K100, K101, KC_NO, KC_NO, KC_NO, K105, K106, KC_NO, K108 }, \
- { K110, KC_NO, KC_NO, K113, KC_NO, K115, K116, K117, K118 } \
-}
-
-#endif
diff --git a/keyboards/h87a/info.json b/keyboards/h87a/info.json
deleted file mode 100644
index cf3e81dd3..000000000
--- a/keyboards/h87a/info.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "keyboard_name": "h87a",
- "url": "",
- "maintainer": "hineybush",
- "width": 18.25,
- "height": 6.5,
- "layouts": {
- "LAYOUT_all": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
- }
- }
-} \ No newline at end of file
diff --git a/keyboards/hadron/ver3/ver3.c b/keyboards/hadron/ver3/ver3.c
index e99ed11a7..1491caba4 100644
--- a/keyboards/hadron/ver3/ver3.c
+++ b/keyboards/hadron/ver3/ver3.c
@@ -19,24 +19,19 @@
#include "haptic.h"
#ifdef RGB_MATRIX_ENABLE
-#include "rgblight.h"
-
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- /*{row | col << 4}
- | {x=0..224, y=0..64}
- | | modifier
- | | | */
- {{1|(13<<4)}, {195, 3}, 0},
- {{4|(13<<4)}, {195, 16}, 0},
- {{4|(10<<4)}, {150, 16}, 0},
- {{4|(7<<4)}, {105, 16}, 0},
- {{4|(4<<4)}, {60, 16}, 0},
- {{4|(1<<4)}, {15, 16}, 0},
- {{1|(1<<4)}, {15, 3}, 0},
- {{1|(4<<4)}, {60, 3}, 0},
- {{1|(7<<4)}, {105, 3}, 0},
- {{1|(10<<4)}, {150, 3}, 0}
-};
+#include "rgb_matrix.h"
+
+led_config_t g_led_config = { {
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 6, NO_LED, NO_LED, 7, NO_LED, NO_LED, 8, NO_LED, NO_LED, 9, NO_LED, NO_LED, 0, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 5, NO_LED, NO_LED, 4, NO_LED, NO_LED, 3, NO_LED, NO_LED, 2, NO_LED, NO_LED, 1, NO_LED }
+}, {
+ { 195, 3 }, { 195, 16 }, { 150, 16 }, { 105, 16 }, { 60, 16 }, { 15, 16 }, { 15, 3 }, { 60, 3 }, { 105, 3 }, { 150, 3 }
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+} };
#endif
@@ -53,12 +48,12 @@ uint16_t counterst = 0;
#define ScreenOffInterval 60000 /* milliseconds */
static uint16_t last_flush;
-volatile uint8_t led_numlock = false;
-volatile uint8_t led_capslock = false;
+volatile uint8_t led_numlock = false;
+volatile uint8_t led_capslock = false;
volatile uint8_t led_scrolllock = false;
static uint8_t layer;
-static bool queue_for_send = false;
+static bool queue_for_send = false;
static uint8_t encoder_value = 32;
__attribute__ ((weak))
@@ -69,7 +64,7 @@ void draw_ui(void) {
/* Layer indicator is 41 x 10 pixels */
#define LAYER_INDICATOR_X 5
-#define LAYER_INDICATOR_Y 0
+#define LAYER_INDICATOR_Y 0
draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM);
@@ -83,7 +78,7 @@ void draw_ui(void) {
for (uint8_t y = 0; y < MATRIX_COLS; y++) {
draw_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
}
- }
+ }
draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19, 9, PIXEL_ON, NORM);
/* hadron oled location on thumbnail */
draw_rect_filled_soft(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3, 1, PIXEL_ON, NORM);
@@ -162,7 +157,7 @@ void read_host_led_state(void) {
if (led_capslock == false){
led_capslock = true;}
} else {
- if (led_capslock == true){
+ if (led_capslock == true){
led_capslock = false;}
}
if (leds & (1 << USB_LED_SCROLL_LOCK)) {
@@ -197,7 +192,7 @@ void matrix_init_kb(void) {
queue_for_send = true;
matrix_init_user();
}
-
+
void matrix_scan_kb(void) {
if (queue_for_send) {
#ifdef QWIIC_MICRO_OLED_ENABLE
diff --git a/keyboards/handwired/frenchdev/config.h b/keyboards/handwired/frenchdev/config.h
index b01eec7aa..eca669090 100644
--- a/keyboards/handwired/frenchdev/config.h
+++ b/keyboards/handwired/frenchdev/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 FRENCHDEV_V1_CONFIG_H
-#define FRENCHDEV_V1_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -81,5 +80,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
//#define DEBUG_MATRIX_SCAN_RATE
-
-#endif //FRENCHDEV_V1_CONFIG_H
diff --git a/keyboards/handwired/frenchdev/frenchdev.c b/keyboards/handwired/frenchdev/frenchdev.c
index 6d5883a3a..6eed4de5f 100644
--- a/keyboards/handwired/frenchdev/frenchdev.c
+++ b/keyboards/handwired/frenchdev/frenchdev.c
@@ -1,5 +1,26 @@
#include "frenchdev.h"
-#include "i2cmaster.h"
+
+extern inline void frenchdev_board_led_on(void);
+extern inline void frenchdev_led_1_on(void);
+extern inline void frenchdev_led_2_on(void);
+extern inline void frenchdev_led_3_on(void);
+extern inline void frenchdev_led_on(uint8_t led);
+
+extern inline void frenchdev_board_led_off(void);
+extern inline void frenchdev_led_1_off(void);
+extern inline void frenchdev_led_2_off(void);
+extern inline void frenchdev_led_3_off(void);
+extern inline void frenchdev_led_off(uint8_t led);
+
+extern inline void frenchdev_led_all_on(void);
+extern inline void frenchdev_led_all_off(void);
+
+extern inline void frenchdev_led_1_set(uint8_t n);
+extern inline void frenchdev_led_2_set(uint8_t n);
+extern inline void frenchdev_led_3_set(uint8_t n);
+extern inline void frenchdev_led_set(uint8_t led, uint8_t n);
+
+extern inline void frenchdev_led_all_set(uint8_t n);
bool i2c_initialized = 0;
uint8_t mcp23018_status = 0x20;
@@ -31,15 +52,15 @@ void frenchdev_blink_all_leds(void)
frenchdev_led_all_off();
frenchdev_led_all_set(LED_BRIGHTNESS_HI);
frenchdev_led_1_on();
- _delay_ms(50);
+ wait_ms(50);
frenchdev_led_2_on();
- _delay_ms(50);
+ wait_ms(50);
frenchdev_led_3_on();
- _delay_ms(50);
+ wait_ms(50);
frenchdev_led_1_off();
- _delay_ms(50);
+ wait_ms(50);
frenchdev_led_2_off();
- _delay_ms(50);
+ wait_ms(50);
frenchdev_led_3_off();
frenchdev_led_all_off();
}
@@ -54,28 +75,28 @@ uint8_t init_mcp23018(void) {
// cli();
if (i2c_initialized == 0) {
i2c_init(); // on pins D(1,0)
- i2c_initialized++;
- _delay_ms(1000);
+ i2c_initialized = true;;
+ wait_ms(1000);
}
// set pin direction
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
i2c_stop();
// set pull-up
// - unused : on : 1
// - input : on : 1
// - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
out:
i2c_stop();
@@ -84,4 +105,3 @@ out:
return mcp23018_status;
}
-
diff --git a/keyboards/handwired/frenchdev/frenchdev.h b/keyboards/handwired/frenchdev/frenchdev.h
index 82dbe18b8..1df399088 100644
--- a/keyboards/handwired/frenchdev/frenchdev.h
+++ b/keyboards/handwired/frenchdev/frenchdev.h
@@ -1,10 +1,9 @@
-#ifndef FRENCHDEV_V1_H
-#define FRENCHDEV_V1_H
+#pragma once
#include "quantum.h"
#include <stdint.h>
#include <stdbool.h>
-#include "i2cmaster.h"
+#include "i2c_master.h"
#include <util/delay.h>
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
@@ -24,6 +23,7 @@
#define OLATB 0x15
extern uint8_t mcp23018_status;
+#define I2C_TIMEOUT 100
void init_frenchdev(void);
void frenchdev_blink_all_leds(void);
@@ -111,5 +111,3 @@ inline void frenchdev_led_all_set(uint8_t n)
{ k51, k41, k31, k21, k11, k01 }, \
{ k50, k40, k30, k20, k10, KC_NO } \
}
-
-#endif
diff --git a/keyboards/handwired/frenchdev/i2cmaster.h b/keyboards/handwired/frenchdev/i2cmaster.h
deleted file mode 100644
index 3917b9e6c..000000000
--- a/keyboards/handwired/frenchdev/i2cmaster.h
+++ /dev/null
@@ -1,178 +0,0 @@
-#ifndef _I2CMASTER_H
-#define _I2CMASTER_H 1
-/*************************************************************************
-* Title: C include file for the I2C master interface
-* (i2cmaster.S or twimaster.c)
-* Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
-* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $
-* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
-* Target: any AVR device
-* Usage: see Doxygen manual
-**************************************************************************/
-
-#ifdef DOXYGEN
-/**
- @defgroup pfleury_ic2master I2C Master library
- @code #include <i2cmaster.h> @endcode
-
- @brief I2C (TWI) Master Software Library
-
- Basic routines for communicating with I2C slave devices. This single master
- implementation is limited to one bus master on the I2C bus.
-
- This I2c library is implemented as a compact assembler software implementation of the I2C protocol
- which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c).
- Since the API for these two implementations is exactly the same, an application can be linked either against the
- software I2C implementation or the hardware I2C implementation.
-
- Use 4.7k pull-up resistor on the SDA and SCL pin.
-
- Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module
- i2cmaster.S to your target when using the software I2C implementation !
-
- Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion.
-
- @note
- The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted
- to GNU assembler and AVR-GCC C call interface.
- Replaced the incorrect quarter period delays found in AVR300 with
- half period delays.
-
- @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
-
- @par API Usage Example
- The following code shows typical usage of this library, see example test_i2cmaster.c
-
- @code
-
- #include <i2cmaster.h>
-
-
- #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet
-
- int main(void)
- {
- unsigned char ret;
-
- i2c_init(); // initialize I2C library
-
- // write 0x75 to EEPROM address 5 (Byte Write)
- i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
- i2c_write(0x05); // write address = 5
- i2c_write(0x75); // write value 0x75 to EEPROM
- i2c_stop(); // set stop conditon = release bus
-
-
- // read previously written value back from EEPROM address 5
- i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
-
- i2c_write(0x05); // write address = 5
- i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode
-
- ret = i2c_readNak(); // read one byte from EEPROM
- i2c_stop();
-
- for(;;);
- }
- @endcode
-
-*/
-#endif /* DOXYGEN */
-
-/**@{*/
-
-#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
-#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
-#endif
-
-#include <avr/io.h>
-
-/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */
-#define I2C_READ 1
-
-/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */
-#define I2C_WRITE 0
-
-
-/**
- @brief initialize the I2C master interace. Need to be called only once
- @param void
- @return none
- */
-extern void i2c_init(void);
-
-
-/**
- @brief Terminates the data transfer and releases the I2C bus
- @param void
- @return none
- */
-extern void i2c_stop(void);
-
-
-/**
- @brief Issues a start condition and sends address and transfer direction
-
- @param addr address and transfer direction of I2C device
- @retval 0 device accessible
- @retval 1 failed to access device
- */
-extern unsigned char i2c_start(unsigned char addr);
-
-
-/**
- @brief Issues a repeated start condition and sends address and transfer direction
-
- @param addr address and transfer direction of I2C device
- @retval 0 device accessible
- @retval 1 failed to access device
- */
-extern unsigned char i2c_rep_start(unsigned char addr);
-
-
-/**
- @brief Issues a start condition and sends address and transfer direction
-
- If device is busy, use ack polling to wait until device ready
- @param addr address and transfer direction of I2C device
- @return none
- */
-extern void i2c_start_wait(unsigned char addr);
-
-
-/**
- @brief Send one byte to I2C device
- @param data byte to be transfered
- @retval 0 write successful
- @retval 1 write failed
- */
-extern unsigned char i2c_write(unsigned char data);
-
-
-/**
- @brief read one byte from the I2C device, request more data from device
- @return byte read from I2C device
- */
-extern unsigned char i2c_readAck(void);
-
-/**
- @brief read one byte from the I2C device, read is followed by a stop condition
- @return byte read from I2C device
- */
-extern unsigned char i2c_readNak(void);
-
-/**
- @brief read one byte from the I2C device
-
- Implemented as a macro, which calls either i2c_readAck or i2c_readNak
-
- @param ack 1 send ack, request more data from device<br>
- 0 send nak, read is followed by a stop condition
- @return byte read from I2C device
- */
-extern unsigned char i2c_read(unsigned char ack);
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-
-/**@}*/
-#endif
diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
index 506383a1b..7b82f36e3 100644
--- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c
+++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
@@ -1,5 +1,4 @@
#include QMK_KEYBOARD_H
-#include "mousekey.h"
#include "keymap_bepo.h"
@@ -14,7 +13,7 @@
#define KEY_DELAY 130
enum macros {
- M_LP, // left pedal
+ M_LP = SAFE_RANGE, // left pedal
M_RP, // right pedal
M_SF, // shift
M_SFS, // shift and space
@@ -63,19 +62,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------| / |------| , | space|------|------|------ .. ------|------|------| L1/sp| LEFT |------| UP |------+------| *
* | CTRL | win |------/ \-------------| L1 | alt | .. | CAPS | L1 |-------------/ \------| : | CTRL | *
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
- *M(M_LP)
*/
[_BASE] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
KC_ESC, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_DTRM, BP_DCRC, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC, \
KC_TAB, BP_B, BP_ECUT, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT, \
BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_APOS, \
- M(M_SF), BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRACKET, M(M_SFS), BP_CBSP, M(L2INS), M(L2LOC), BP_CDEL, M(M_SFS),BP_M, BP_G, KC_UP, BP_H, BP_Q, M(M_SF), \
- KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M(M_L1E), KC_LALT, KC_CAPS, M(M_L1E),KC_SPACE,KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL, \
+ M_SF, BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRC, M_SFS, BP_CBSP, L2INS, L2LOC, BP_CDEL, M_SFS, BP_M, BP_G, KC_UP, BP_H, BP_Q, M_SF, \
+ KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M_L1E, KC_LALT, KC_CAPS, M_L1E, KC_SPACE, KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL, \
//left pedals
- M(M_LP), M(M_RP), KC_TRNS, \
+ M_LP, M_RP, KC_TRNS, \
//right pedals
- M(M_LP), M(M_RP), KC_TRNS \
+ M_LP, M_RP, KC_TRNS \
),
/* Larer 1 for symbols.
@@ -102,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, BP_DCUR, BP_PARG, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_DCAR, BP_LEQL, BP_GEQL, BP_PSMS, BP_OBEL, BP_TIMS, KC_TRNS, \
KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_DIFF, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PMIL, KC_TRNS, \
KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QEST, BP_CCED, BP_LESS, BP_GRTR, BP_AMPR, BP_UNDS, KC_TRNS, \
- KC_TRNS, M(M_UN), M(M_CUT),M(M_CP), M(M_PS), M(M_SE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, \
+ KC_TRNS, M_UN, M_CUT, M_CP, M_PS, M_SE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, \
KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, \
//left pedals
KC_TRNS, KC_BTN1, KC_TRNS, \
@@ -134,12 +132,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_PMNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_BTN4, KC_BTN5, KC_BTN4, KC_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS, \
- KC_TRNS, M(M_UN), M(M_CUT),M(M_CP), M(M_PS), KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, \
+ KC_TRNS, M_UN, M_CUT, M_CP, M_PS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_PDOT, BP_DOT, BP_COMM, KC_TRNS, \
//left pedals
- KC_BTN3, M(M_RP), KC_TRNS, \
+ KC_BTN3, M_RP, KC_TRNS, \
//right pedals
- KC_BTN3, M(M_RP), KC_TRNS \
+ KC_BTN3, M_RP, KC_TRNS \
),
/* TRNS - skeleton for laters
@@ -169,9 +167,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
//left pedals
- KC_BTN3, M(M_RP), KC_TRNS, \
+ KC_BTN3, M_RP, KC_TRNS, \
//right pedals
- KC_BTN3, M(M_RP), KC_TRNS \
+ KC_BTN3, M_RP, KC_TRNS \
),
};
@@ -191,28 +189,52 @@ void release_shift(void) {
void press_space(void) {
if(shift_count > 0) unregister_code (KC_LSHIFT);
- register_code (KC_SPACE);
- unregister_code (KC_SPACE);
+ tap_code(KC_SPACE);
if(shift_count > 0) register_code (KC_LSHIFT);
}
void press_enter(void) {
if(shift_count > 0) unregister_code (KC_LSHIFT);
- register_code (KC_ENT);
- unregister_code (KC_ENT);
+ tap_code (KC_ENT);
if(shift_count > 0) register_code (KC_LSHIFT);
}
void press_underscore(void) {
if(shift_count > 0) unregister_code (KC_LSHIFT);
- register_code ((unsigned char) BP_UNDS);
- unregister_code ((unsigned char) BP_UNDS);
+ tap_code ((unsigned char) BP_UNDS);
if(shift_count > 0) register_code (KC_LSHIFT);
}
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
+void matrix_init_user(void) {
+}
+
+// Bleah globals need to be initialized.
+uint8_t old_layer=_BASE;
+
+void matrix_scan_user(void) {
+ uint8_t layer = biton32(layer_state);
+
+ frenchdev_led_1_off();
+ frenchdev_led_2_off();
+ switch (layer) {
+ case _BASE:
+ frenchdev_led_2_on();
+ break;
+ case _SYMBOLS:
+ frenchdev_led_1_on();
+ break;
+ case _MEDIA:
+ frenchdev_led_1_on();
+ frenchdev_led_2_on();
+ default:
+ // none
+ break;
+ }
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
case M_LP: //left pedal
if (record->event.pressed) {
layer_on(1);
@@ -220,25 +242,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
key_timer_left_pedal = timer_read(); // if the key is being pressed, we start the timer.
} else {
if (timer_elapsed(key_timer_left_pedal) < KEY_DELAY) {
- mousekey_on (KC_BTN2);
- mousekey_send();
- mousekey_off (KC_BTN2);
- mousekey_send();
+ tap_code (KC_BTN2);
}
unregister_code (KC_SLCK);
layer_off(1);
}
- break;
+ break;
case M_RP: //right pedal
if (record->event.pressed) {
layer_on(2);
key_timer_right_pedal = timer_read(); // if the key is being pressed, we start the timer.
} else {
if (timer_elapsed(key_timer_right_pedal) < PEDAL_DELAY) {
- mousekey_on (KC_BTN1);
- mousekey_send();
- mousekey_off (KC_BTN1);
- mousekey_send();
+ tap_code (KC_BTN1);
}
layer_off(2);
}
@@ -289,13 +305,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
key_timer_2 = timer_read(); // if the key is being pressed, we start the timer.
} else {
if (timer_elapsed(key_timer_2) < KEY_DELAY) {
- register_code (KC_INS);
- unregister_code (KC_INS);
+ tap_code (KC_INS);
}
l2_locked = 0;
layer_off(2);
}
- break;
+ break;
case L2LOC: //lock L2
if (record->event.pressed) {
key_timer_2 = timer_read(); // if the key is being pressed, we start the timer.
@@ -309,80 +324,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
layer_off(2);
}
}
- break;
+ break;
case M_UN: // undo
if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(BP_Z);
- unregister_code(BP_Z);
- unregister_code(KC_LCTL);
+ tap_code16(C(BP_Z));
}
- break;
+ break;
case M_CUT: // cut
if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(BP_X);
- unregister_code(BP_X);
- unregister_code(KC_LCTL);
+ tap_code16(C(BP_X));
}
- break;
+ break;
case M_CP: // copy
if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(BP_C);
- unregister_code(BP_C);
- unregister_code(KC_LCTL);
+ tap_code16(C(BP_C));
}
- break;
+ break;
case M_PS: // paste
if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(BP_V);
- unregister_code(BP_V);
- unregister_code(KC_LCTL);
+ tap_code16(C(BP_V));
}
- break;
+ break;
case M_SE: // search
if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(BP_F);
- unregister_code(BP_F);
- unregister_code(KC_LCTL);
+ tap_code16(C(BP_F));
}
- break;
+ break;
}
- return MACRO_NONE;
-};
-
-void matrix_init_user(void) {
-}
-
-// Bleah globals need to be initialized.
-uint8_t old_layer=_BASE;
-
-void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
-
- frenchdev_led_1_off();
- frenchdev_led_2_off();
- switch (layer) {
- case _BASE:
- frenchdev_led_2_on();
- break;
- case _SYMBOLS:
- frenchdev_led_1_on();
- break;
- case _MEDIA:
- frenchdev_led_1_on();
- frenchdev_led_2_on();
- default:
- // none
- break;
- }
-}
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c
index 7fe3d0bbf..4263555e9 100644
--- a/keyboards/handwired/frenchdev/matrix.c
+++ b/keyboards/handwired/frenchdev/matrix.c
@@ -40,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h"
#include "matrix.h"
#include "frenchdev.h"
-#include "i2cmaster.h"
#ifdef DEBUG_MATRIX_SCAN_RATE
#include "timer.h"
#endif
@@ -280,11 +279,12 @@ static matrix_row_t read_cols(uint8_t row)
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out;
- data = i2c_readNak();
- data = ~data;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOB, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ data = i2c_read_nack(I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
+ data = ~((uint8_t)mcp23018_status);
+ mcp23018_status = I2C_STATUS_SUCCESS;
out:
i2c_stop();
return data;
@@ -318,11 +318,9 @@ static void unselect_rows(void)
// do nothing
} else {
// set all rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write( 0xFF
- & ~(0<<8)
- ); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write( 0xFF & ~(0<<8), I2C_TIMEOUT); if (mcp23018_status) goto out;
out:
i2c_stop();
}
@@ -346,11 +344,9 @@ static void select_row(uint8_t row)
} else {
// set active row low : 0
// set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write( 0xFF & ~(1<<row)
- & ~(0<<8)
- ); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write( 0xFF & ~(1<<row) & ~(0<<8), I2C_TIMEOUT); if (mcp23018_status) goto out;
out:
i2c_stop();
}
@@ -393,4 +389,3 @@ static void select_row(uint8_t row)
}
}
}
-
diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk
index c82bf4a38..69a12b68d 100644
--- a/keyboards/handwired/frenchdev/rules.mk
+++ b/keyboards/handwired/frenchdev/rules.mk
@@ -15,7 +15,7 @@
#----------------------------------------------------------------------------
# # project specific files
-SRC = twimaster.c \
+SRC = i2c_master.c \
matrix.c
# MCU name
@@ -64,8 +64,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+BOOTLOADER = halfKay
# Build Options
# comment out to disable the options.
@@ -86,4 +85,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = no
API_SYSEX_ENABLE = no
-
diff --git a/keyboards/handwired/frenchdev/twimaster.c b/keyboards/handwired/frenchdev/twimaster.c
deleted file mode 100644
index f91c08e6e..000000000
--- a/keyboards/handwired/frenchdev/twimaster.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*************************************************************************
-* Title: I2C master library using hardware TWI interface
-* Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
-* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $
-* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
-* Target: any AVR device with hardware TWI
-* Usage: API compatible with I2C Software Library i2cmaster.h
-**************************************************************************/
-#include <inttypes.h>
-#include <compat/twi.h>
-
-#include <i2cmaster.h>
-
-
-/* define CPU frequency in Mhz here if not defined in Makefile */
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-/* I2C clock in Hz */
-#define SCL_CLOCK 400000L
-
-
-/*************************************************************************
- Initialization of the I2C bus interface. Need to be called only once
-*************************************************************************/
-void i2c_init(void)
-{
- /* initialize TWI clock
- * minimal values in Bit Rate Register (TWBR) and minimal Prescaler
- * bits in the TWI Status Register should give us maximal possible
- * I2C bus speed - about 444 kHz
- *
- * for more details, see 20.5.2 in ATmega16/32 secification
- */
-
- TWSR = 0; /* no prescaler */
- TWBR = 10; /* must be >= 10 for stable operation */
-
-}/* i2c_init */
-
-
-/*************************************************************************
- Issues a start condition and sends address and transfer direction.
- return 0 = device accessible, 1= failed to access device
-*************************************************************************/
-unsigned char i2c_start(unsigned char address)
-{
- uint8_t twst;
-
- // send START condition
- TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-
- // wait until transmission completed
- while(!(TWCR & (1<<TWINT)));
-
- // check value of TWI Status Register. Mask prescaler bits.
- twst = TW_STATUS & 0xF8;
- if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
-
- // send device address
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- // wail until transmission completed and ACK/NACK has been received
- while(!(TWCR & (1<<TWINT)));
-
- // check value of TWI Status Register. Mask prescaler bits.
- twst = TW_STATUS & 0xF8;
- if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;
-
- return 0;
-
-}/* i2c_start */
-
-
-/*************************************************************************
- Issues a start condition and sends address and transfer direction.
- If device is busy, use ack polling to wait until device is ready
-
- Input: address and transfer direction of I2C device
-*************************************************************************/
-void i2c_start_wait(unsigned char address)
-{
- uint8_t twst;
-
-
- while ( 1 )
- {
- // send START condition
- TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-
- // wait until transmission completed
- while(!(TWCR & (1<<TWINT)));
-
- // check value of TWI Status Register. Mask prescaler bits.
- twst = TW_STATUS & 0xF8;
- if ( (twst != TW_START) && (twst != TW_REP_START)) continue;
-
- // send device address
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- // wail until transmission completed
- while(!(TWCR & (1<<TWINT)));
-
- // check value of TWI Status Register. Mask prescaler bits.
- twst = TW_STATUS & 0xF8;
- if ( (twst == TW_MT_SLA_NACK )||(twst ==TW_MR_DATA_NACK) )
- {
- /* device busy, send stop condition to terminate write operation */
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- // wait until stop condition is executed and bus released
- while(TWCR & (1<<TWSTO));
-
- continue;
- }
- //if( twst != TW_MT_SLA_ACK) return 1;
- break;
- }
-
-}/* i2c_start_wait */
-
-
-/*************************************************************************
- Issues a repeated start condition and sends address and transfer direction
-
- Input: address and transfer direction of I2C device
-
- Return: 0 device accessible
- 1 failed to access device
-*************************************************************************/
-unsigned char i2c_rep_start(unsigned char address)
-{
- return i2c_start( address );
-
-}/* i2c_rep_start */
-
-
-/*************************************************************************
- Terminates the data transfer and releases the I2C bus
-*************************************************************************/
-void i2c_stop(void)
-{
- /* send stop condition */
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- // wait until stop condition is executed and bus released
- while(TWCR & (1<<TWSTO));
-
-}/* i2c_stop */
-
-
-/*************************************************************************
- Send one byte to I2C device
-
- Input: byte to be transfered
- Return: 0 write successful
- 1 write failed
-*************************************************************************/
-unsigned char i2c_write( unsigned char data )
-{
- uint8_t twst;
-
- // send data to the previously addressed device
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- // wait until transmission completed
- while(!(TWCR & (1<<TWINT)));
-
- // check value of TWI Status Register. Mask prescaler bits
- twst = TW_STATUS & 0xF8;
- if( twst != TW_MT_DATA_ACK) return 1;
- return 0;
-
-}/* i2c_write */
-
-
-/*************************************************************************
- Read one byte from the I2C device, request more data from device
-
- Return: byte read from I2C device
-*************************************************************************/
-unsigned char i2c_readAck(void)
-{
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
- while(!(TWCR & (1<<TWINT)));
-
- return TWDR;
-
-}/* i2c_readAck */
-
-
-/*************************************************************************
- Read one byte from the I2C device, read is followed by a stop condition
-
- Return: byte read from I2C device
-*************************************************************************/
-unsigned char i2c_readNak(void)
-{
- TWCR = (1<<TWINT) | (1<<TWEN);
- while(!(TWCR & (1<<TWINT)));
-
- return TWDR;
-
-}/* i2c_readNak */
diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c
index 179b411ee..b09e30457 100644
--- a/keyboards/handwired/promethium/keymaps/default/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/default/keymap.c
@@ -1277,7 +1277,7 @@ void set_output_user(uint8_t output) {
}
void matrix_init_user() {
- _delay_ms(500); // give time for usb to initialize
+ wait_ms(500); // give time for usb to initialize
set_unicode_input_mode(UC_LNX);
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 179b411ee..fbb1ae1d6 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -53,7 +53,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
} while (0)
#endif
#endif
+#ifdef __AVR__
#include "outputselect.h"
+#endif
#include "led.h"
#define COUNT(x) (sizeof (x) / sizeof (*(x)))
@@ -1277,7 +1279,7 @@ void set_output_user(uint8_t output) {
}
void matrix_init_user() {
- _delay_ms(500); // give time for usb to initialize
+ wait_ms(500); // give time for usb to initialize
set_unicode_input_mode(UC_LNX);
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/README.md b/keyboards/handwired/woodpad/keymaps/drashna/README.md
deleted file mode 100644
index f24d2c48f..000000000
--- a/keyboards/handwired/woodpad/keymaps/drashna/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Overview
-========
-
-This is my personal Numpad (Woodpad) configuration, and my daily driver.
-
-Most of the code resides in my userspace, rather than here, as I have multiple keyboards.
-
-How to build
-------------
-make handwired/woodpad:drashna:avrdude
-
-Layers
-------
-* NUMLOCK: Num pad, locked to NUM LOCK enabled.
-* NAV: Navigation codes without needing to enable numlock.
-* DIABLO: This contains a Diablo 3 layout, that requires much less reaching or shifting. If Tap Dance is enabled, then it has a "spam" feature. See Userspace for details.
-* MACROS: This layer contains a bunch of macros for spamming chat, with a toggle on what key to open up chat with.
-* MEDIA: Media and RGB commands
-
-All layers have RGB specific indicators, so you can see what layer you're on by the underglow.
-
-Woodpad Specific Code
----------------------
-
-Aside from my userspace code, this includes LED indications for numlock and macro mode. It also forces NUMLOCK to be enabled.
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
deleted file mode 100644
index 20b4e064e..000000000
--- a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright 2017 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-#include "drashna.h"
-
- // Each layer gets a name for readability, which is then used in the keymap matrix below.
- // The underscores don't mean anything - you can have a layer called STUFF or any other name.
- // Layer names don't all need to be of the same length, obviously, and you can also skip them
- // entirely and just use numbers.
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_NUMLOCK] = KEYMAP( /* Base */
- TG(_NAV), TG(_DIABLO), TG(_MACROS), KC_PSLS,\
- KC_P7, KC_P8, KC_P9, KC_PAST, \
- KC_P4, KC_P5, KC_P6, KC_PMNS, \
- KC_P1, KC_P2, KC_P3, KC_PPLS, \
- LT(_MEDIA,KC_P0), KC_PDOT, KC_COLN, KC_PENT \
-),
-[_NAV] = KEYMAP( /* Base */
- _______, _______, _______, _______,\
- KC_HOME, KC_UP, KC_PGUP, _______, \
- KC_LEFT, XXXXXXX, KC_RIGHT, _______, \
- KC_END, KC_DOWN, KC_PGDN, _______, \
- KC_INS, KC_DEL, _______, _______ \
-),
-[_DIABLO] = KEYMAP( /* Base */
- KC_ESC, _______, XXXXXXX, _______,\
- KC_S, KC_I, KC_F, KC_M, \
- KC_1, KC_2, KC_3, KC_4, \
- KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, \
- XXXXXXX, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \
-),
-
-[_MACROS] = KEYMAP( /* Base */
- KC_OVERWATCH, XXXXXXX, _______, XXXXXXX,\
- KC_JUSTGAME, XXXXXXX, XXXXXXX, KC_C9, \
- XXXXXXX, XXXXXXX, KC_AIM, KC_GGEZ, \
- KC_SYMM, KC_TORB, XXXXXXX, KC_GOODGAME, \
- KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GLHF \
-),
-[_MEDIA] = KEYMAP( /* Base */
- KC_RESET, KC_MUTE, KC_VOLD, KC_VOLU,\
- KC_MAKE, _______, RGB_HUI, RGB_HUD, \
- KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \
- RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \
- _______, KC_RGB_T, RGB_SAD, RGB_VAD \
-),
-
-};
-
-
-void numlock_led_on(void) {
- PORTF |= (1 << 7);
-}
-
-void numlock_led_off(void) {
- PORTF &= ~(1 << 7);
-}
-
-
-
-void matrix_init_keymap(void) {
- // set Numlock LED to output and low
- DDRF |= (1 << 7);
- PORTF &= ~(1 << 7);
-}
-
-void matrix_scan_keymap(void) {
- numlock_led_off();
- if ((is_overwatch && biton32(layer_state) == _MACROS) || (biton32(layer_state) == _NUMLOCK)) {
- numlock_led_on();
- }
-
- // Run Diablo 3 macro checking code.
-}
-
-void led_set_keymap(uint8_t usb_led) {
- if (!(usb_led & (1<<USB_LED_NUM_LOCK))) {
- register_code(KC_NUMLOCK);
- unregister_code(KC_NUMLOCK);
- }
-}
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
deleted file mode 100644
index 7f7f30e2a..000000000
--- a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-TAP_DANCE_ENABLE = yes
-COMMAND_ENABLE = no # Commands for debug and configuration
-RGBLIGHT_ENABLE = yes
-MIDI_ENABLE = no
-CONSOLE_ENABLE = no
-NKRO_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-EXTRAFLAGS = -flto
-
diff --git a/keyboards/h87a/config.h b/keyboards/hineybush/h87a/config.h
index 90b3a509c..2e6c37e33 100644
--- a/keyboards/h87a/config.h
+++ b/keyboards/hineybush/h87a/config.h
@@ -72,4 +72,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP // RGB will turn off when PC is put to sleep
#endif
diff --git a/keyboards/h87a/h87a.c b/keyboards/hineybush/h87a/h87a.c
index 2ce469b69..2ce469b69 100644
--- a/keyboards/h87a/h87a.c
+++ b/keyboards/hineybush/h87a/h87a.c
diff --git a/keyboards/hineybush/h87a/h87a.h b/keyboards/hineybush/h87a/h87a.h
new file mode 100644
index 000000000..437199b23
--- /dev/null
+++ b/keyboards/hineybush/h87a/h87a.h
@@ -0,0 +1,90 @@
+/* Copyright 2018 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+// 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
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT_all(\
+ K000, K001, K011, K002, K012, K003, K013, K004, K014, K015, K006, K016, K007, K017, K008, K018, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \
+ K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K088, \
+ K100, K110, K101, K113, K105, K115, K106, K116, K117, K108, K118 \
+) { \
+ { K000, K001, K002, K003, K004, KC_NO, K006, K007, K008 }, \
+ { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \
+ { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \
+ { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \
+ { K090, K091, K092, K093, K094, K095, K096, KC_NO, KC_NO }, \
+ { K100, K101, KC_NO, KC_NO, KC_NO, K105, K106, KC_NO, K108 }, \
+ { K110, KC_NO, KC_NO, K113, KC_NO, K115, K116, K117, K118 } \
+}
+
+
+#define LAYOUT_tkl_ansi(\
+ K000, K001, K011, K002, K012, K003, K013, K004, K014, K015, K006, K016, K007, K017, K008, K018, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K027, K037, K028, K038, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \
+ K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K088, \
+ K100, K110, K101, K113, K105, K115, K106, K116, K117, K108, K118 \
+) { \
+ { K000, K001, K002, K003, K004, KC_NO, K006, K007, K008 }, \
+ { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, KC_NO, K037, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, KC_NO, KC_NO, KC_NO }, \
+ { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \
+ { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \
+ {KC_NO, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \
+ { K100, K101, KC_NO, KC_NO, KC_NO, K105, K106, KC_NO, K108 }, \
+ { K110, KC_NO, KC_NO, K113, KC_NO, K115, K116, K117, K118 } \
+}
+
+#define LAYOUT_tkl_ansi_wkl(\
+ K000, K001, K011, K002, K012, K003, K013, K004, K014, K015, K006, K016, K007, K017, K008, K018, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K027, K037, K028, K038, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \
+ K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K088, \
+ K100, K101, K113, K115, K116, K117, K108, K118 \
+) { \
+ { K000, K001, K002, K003, K004, KC_NO, K006, K007, K008 }, \
+ { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, KC_NO, K037, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, KC_NO, KC_NO, KC_NO }, \
+ { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \
+ { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \
+ {KC_NO, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \
+ { K100, K101, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, K108 }, \
+ {KC_NO, KC_NO, KC_NO, K113, KC_NO, K115, K116, K117, K118 } \
+}
+
diff --git a/keyboards/hineybush/h87a/info.json b/keyboards/hineybush/h87a/info.json
new file mode 100644
index 000000000..57f68db0b
--- /dev/null
+++ b/keyboards/hineybush/h87a/info.json
@@ -0,0 +1,20 @@
+{
+ "keyboard_name": "h87a",
+ "url": "",
+ "maintainer": "hineybush",
+ "width": 18.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"label":"Bksp", "x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+ },
+
+ "LAYOUT_tkl_ansi": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Bksp", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+ },
+ "LAYOUT_tkl_ansi_wkl": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Bksp", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+ }
+ }
+}
+
diff --git a/keyboards/hineybush/h87a/keymaps/default/config.h b/keyboards/hineybush/h87a/keymaps/default/config.h
new file mode 100644
index 000000000..cef67bd48
--- /dev/null
+++ b/keyboards/hineybush/h87a/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2018 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+
+// place overrides here
+
diff --git a/keyboards/h87a/keymaps/default/keymap.c b/keyboards/hineybush/h87a/keymaps/default/keymap.c
index 89178453d..6382af1ee 100644
--- a/keyboards/h87a/keymaps/default/keymap.c
+++ b/keyboards/hineybush/h87a/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_TRNS, KC_UP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
diff --git a/keyboards/hineybush/h87a/keymaps/default/readme.md b/keyboards/hineybush/h87a/keymaps/default/readme.md
new file mode 100644
index 000000000..da22afc6a
--- /dev/null
+++ b/keyboards/hineybush/h87a/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for h87a \ No newline at end of file
diff --git a/keyboards/h87a/keymaps/gam3cat/config.h b/keyboards/hineybush/h87a/keymaps/gam3cat/config.h
index 334beb0ac..334beb0ac 100644
--- a/keyboards/h87a/keymaps/gam3cat/config.h
+++ b/keyboards/hineybush/h87a/keymaps/gam3cat/config.h
diff --git a/keyboards/h87a/keymaps/gam3cat/keymap.c b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
index 2a4e5ca41..2a4e5ca41 100644
--- a/keyboards/h87a/keymaps/gam3cat/keymap.c
+++ b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
diff --git a/keyboards/h87a/keymaps/gam3cat/readme.md b/keyboards/hineybush/h87a/keymaps/gam3cat/readme.md
index 5eb4c7d61..5eb4c7d61 100644
--- a/keyboards/h87a/keymaps/gam3cat/readme.md
+++ b/keyboards/hineybush/h87a/keymaps/gam3cat/readme.md
diff --git a/keyboards/h87a/keymaps/gam3cat/rules.mk b/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk
index 85b2b41a6..85b2b41a6 100644
--- a/keyboards/h87a/keymaps/gam3cat/rules.mk
+++ b/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk
diff --git a/keyboards/hineybush/h87a/keymaps/wkl/config.h b/keyboards/hineybush/h87a/keymaps/wkl/config.h
new file mode 100644
index 000000000..cef67bd48
--- /dev/null
+++ b/keyboards/hineybush/h87a/keymaps/wkl/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2018 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+
+// place overrides here
+
diff --git a/keyboards/hineybush/h87a/keymaps/wkl/keymap.c b/keyboards/hineybush/h87a/keymaps/wkl/keymap.c
new file mode 100644
index 000000000..72b4d4e44
--- /dev/null
+++ b/keyboards/hineybush/h87a/keymaps/wkl/keymap.c
@@ -0,0 +1,73 @@
+/* Copyright 2018 Josh Hinnebusch
+
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_tkl_ansi_wkl(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_tkl_ansi_wkl(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void led_init_ports(void) {
+ setPinOutput(D5);
+ setPinOutput(E6);
+}
+
+void led_set_user(uint8_t usb_led) {
+
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ setPinOutput(D5);
+ writePinLow(D5);
+ } else {
+ setPinInput(D5);
+ writePinLow(D5);
+ }
+
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ setPinOutput(E6);
+ writePinLow(E6);
+ } else {
+ setPinInput(E6);
+ writePinLow(E6);
+ }
+
+}
diff --git a/keyboards/hineybush/h87a/keymaps/wkl/readme.md b/keyboards/hineybush/h87a/keymaps/wkl/readme.md
new file mode 100644
index 000000000..da22afc6a
--- /dev/null
+++ b/keyboards/hineybush/h87a/keymaps/wkl/readme.md
@@ -0,0 +1 @@
+# The default keymap for h87a \ No newline at end of file
diff --git a/keyboards/h87a/readme.md b/keyboards/hineybush/h87a/readme.md
index d7185db52..90f513c45 100644
--- a/keyboards/h87a/readme.md
+++ b/keyboards/hineybush/h87a/readme.md
@@ -3,16 +3,16 @@ h87a
A QMK-powered replacement PCB for custom TKL keyboards. This PCB has the same size of the b.87 PCB, while using the USB port placement and spacebar stabilizer orientation as the a.87 PCB.
-Keyboard Maintainer: hineybush (Josh Hinnebusch)
-
-Hardware Supported: h87a Rev 1
-
-Hardware Availability: Currently prototyped, group buy TBD
+Keyboard Maintainer: [hineybush](https://github.com/hineybush)
+Hardware Supported: h87a ver. 1.5, ver. 1.6 (normal and thin), h87alps
+Hardware Availability: hineybush.com
Make example for this keyboard (after setting up your build environment):
- make h87a:default
+ make hineybush/h87a: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).
+
## h87a hardware information
Controller: Atmega32u4
@@ -35,8 +35,11 @@ The H87a PCB utilizes duplex matrix organization.
Backlight Pin: B7
RGB Data Pin: D3
+
+
+For ver 1.5 in-switch indicators:
To connect the Caps Lock LED to the main backlight matrix, jump the middle pad and the left pad on J1. To use the Caps Lock LED as an indicator, jump the middle pad and the right pad on J1.
To connect the Scroll Lock LED to the main backlight matrix, jump the middle pad and the right pad on J2. To use the Scroll Lock LED as an indicator, jump the middle pad and the left pad on J2.
-Note: The different orientations of J1 and J2 will be fixed with Rev 2.
+Note: The different orientations of J1 and J2 was fixed with ver. 1.6.
diff --git a/keyboards/h87a/rules.mk b/keyboards/hineybush/h87a/rules.mk
index dac21d72c..dac21d72c 100644
--- a/keyboards/h87a/rules.mk
+++ b/keyboards/hineybush/h87a/rules.mk
diff --git a/keyboards/hineybush/hineyg80/config.h b/keyboards/hineybush/hineyg80/config.h
new file mode 100644
index 000000000..7e75c62b3
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/config.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER hineybush
+#define PRODUCT hineyG80
+#define DESCRIPTION QMK-powered PCB for Cherry G80/81-1800 Boards
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B2, B3, D0, B1, D2, D1, D5, D3, D6, D4, B4, D7 }
+#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, B7, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 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/hineybush/hineyg80/hineyg80.c b/keyboards/hineybush/hineyg80/hineyg80.c
new file mode 100644
index 000000000..236c646be
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/hineyg80.c
@@ -0,0 +1,63 @@
+/* Copyright 2019 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "hineyg80.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
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ // Turn numlock on
+ writePinHigh(C6);
+ } else {
+ // Turn numlock off
+ writePinLow(C6);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ // Turn capslock on
+ writePinHigh(B6);
+ } else {
+ // Turn capslock off
+ writePinLow(B6);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ // Turn scrolllock on
+ writePinHigh(B5);
+ } else {
+ // Turn scrolllock off
+ writePinLow(B5);
+ }
+ led_set_user(usb_led);
+}
diff --git a/keyboards/hineybush/hineyg80/hineyg80.h b/keyboards/hineybush/hineyg80/hineyg80.h
new file mode 100644
index 000000000..617c5166a
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/hineyg80.h
@@ -0,0 +1,89 @@
+/* Copyright 2019 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K000,K010,K001,K011,K002,K012,K003,K013,K004,K014,K005,K015,K006, K007,K017,K008,K018, \
+ K027,K016,K028,K038, \
+ K020,K030,K021,K031,K022,K032,K023,K033,K024,K034,K025,K035,K026,K036,K037,K047,K057,K048,K058, \
+ K040,K050,K041,K051,K042,K052,K043,K053,K044,K054,K045,K055,K046,K056, K067,K077,K068,K078, \
+ K060,K070,K061,K071,K062,K072,K063,K073,K064,K074,K065,K075,K066,K076, K087,K097,K088,K098, \
+ K080,K090,K081,K091,K082,K092,K083,K093,K084,K094,K085,K095,K086,K096, K106,K116,K108,K118, \
+ K100,K110,K101, K102, K112,K103,K113,K104,K114, K105,K115,K117,K107 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+ { K070, K071, K072, K073, K074, K075, K076, K077, K078 }, \
+ { K080, K081, K082, K083, K084, K085, K086, K087, K088 }, \
+ { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108 }, \
+ { K110, KC_NO, K112, K113, K114, K115, K116, K117, K118 } \
+}
+
+/* 6U spacebar, 1U mods */
+#define LAYOUT_ansi_100u_mods( \
+ K000,K010,K001,K011,K002,K012,K003,K013,K004,K014,K005,K015,K006, K007,K017,K008,K018, \
+ K027,K016,K028,K038, \
+ K020,K030,K021,K031,K022,K032,K023,K033,K024,K034,K025,K035,K026,K036,K047,K057,K048,K058, \
+ K040,K050,K041,K051,K042,K052,K043,K053,K044,K054,K045,K055,K046,K056,K067,K077,K068,K078, \
+ K060,K070,K061,K071,K062,K072,K063,K073,K064,K074,K065,K075, K076,K087,K097,K088,K098, \
+ K080 ,K081,K091,K082,K092,K083,K093,K084,K094,K085,K095,K086,K096,K106,K116,K108,K118, \
+ K100,K110,K101, K102, K112,K103,K113,K104,K114,K105,K115,K117,K107 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, KC_NO, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, KC_NO, K067, K068 }, \
+ { K070, K071, K072, K073, K074, K075, K076, K077, K078 }, \
+ { K080, K081, K082, K083, K084, K085, K086, K087, K088 }, \
+ {KC_NO, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108 }, \
+ { K110, KC_NO, K112, K113, K114, K115, K116, K117, K118 } \
+}
+
+/* 7U spacebar, 1.5U mods */
+#define LAYOUT_ansi_150u_mods( \
+ K000,K010,K001,K011,K002,K012,K003,K013,K004,K014,K005,K015,K006, K007,K017,K008,K018, \
+ K027,K016,K028,K038, \
+ K020,K030,K021,K031,K022,K032,K023,K033,K024,K034,K025,K035,K026,K036,K047,K057,K048,K058, \
+ K040,K050,K041,K051,K042,K052,K043,K053,K044,K054,K045,K055,K046,K056,K067,K077,K068,K078, \
+ K060,K070,K061,K071,K062,K072,K063,K073,K064,K074,K065,K075 ,K076,K087,K097,K088,K098, \
+ K080 ,K081,K091,K082,K092,K083,K093,K084,K094,K085,K095,K086,K096,K106,K116,K108,K118, \
+ K100, K101, K102, K103, K104,K114,K105,K115,K117,K107 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, KC_NO, K038 }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
+ { K060, K061, K062, K063, K064, K065, KC_NO, K067, K068 }, \
+ { K070, K071, K072, K073, K074, K075, K076, K077, K078 }, \
+ { K080, K081, K082, K083, K084, K085, K086, K087, K088 }, \
+ {KC_NO, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, K114, K115, K116, K117, K118 } \
+}
diff --git a/keyboards/hineybush/hineyg80/info.json b/keyboards/hineybush/hineyg80/info.json
new file mode 100644
index 000000000..07498b9bb
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "hineyg80",
+ "url": "",
+ "maintainer": "hineybush",
+ "width": 19.5,
+ "height": 7.25,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Pause", "x":15.5, "y":0}, {"label":"Insert", "x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"Scroll Lock", "x":15.5, "y":1}, {"label":"Delete", "x":16.5, "y":1}, {"label":"End", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Bksp", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"-", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"+", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":4, "w":1.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"Alt", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"\u2190", "x":13.25, "y":6.25}, {"label":"\u2193", "x":14.25, "y":6.25}, {"label":"\u2192", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
+ },
+ "LAYOUT_ansi_100u_mods": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"Prt Sc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"label":"Enter", "x":12.75, "y":4, "w":2.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":2.25}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"Alt", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"\u2190", "x":13.25, "y":6.25}, {"label":"\u2193", "x":14.25, "y":6.25}, {"label":"\u2192", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
+ },
+ "LAYOUT_ansi_150u_mods": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"Prt Sc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"label":"Enter", "x":12.75, "y":4, "w":2.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":2.25}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6, "w":1.5}, {"label":"Alt", "x":1.5, "y":6, "w":1.5}, {"x":3, "y":6, "w":7}, {"label":"Menu", "x":10, "y":6, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":6, "w":1.5}, {"label":"\u2190", "x":13.25, "y":6.25}, {"label":"\u2193", "x":14.25, "y":6.25}, {"label":"\u2192", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
+ }
+ }
+}
+
diff --git a/keyboards/hineybush/hineyg80/keymaps/default/config.h b/keyboards/hineybush/hineyg80/keymaps/default/config.h
new file mode 100644
index 000000000..16e640d30
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/hineybush/hineyg80/keymaps/default/keymap.c b/keyboards/hineybush/hineyg80/keymaps/default/keymap.c
new file mode 100644
index 000000000..13d0c8955
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/default/keymap.c
@@ -0,0 +1,58 @@
+/* Copyright 2019 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi_100u_mods( /* 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_INS, KC_HOME, KC_PGUP, KC_PSCR,
+ KC_DEL, KC_END, KC_PGDN, KC_SLCK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_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_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_ansi_100u_mods( /* Fn */KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/hineybush/hineyg80/keymaps/default/readme.md b/keyboards/hineybush/hineyg80/keymaps/default/readme.md
new file mode 100644
index 000000000..3e0d8343c
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for hineyg80 \ No newline at end of file
diff --git a/keyboards/hineybush/hineyg80/keymaps/wkl/config.h b/keyboards/hineybush/hineyg80/keymaps/wkl/config.h
new file mode 100644
index 000000000..16e640d30
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/wkl/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Josh Hinnebusch
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c b/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c
new file mode 100644
index 000000000..a1255e9cc
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c
@@ -0,0 +1,60 @@
+/* Copyright 2019 %YOUR_NAME%
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL,
+ ______ = KC_TRNS,
+ XXXXXX = KC_NO
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi_150u_mods( /* 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_INS, KC_HOME, KC_PGUP, KC_PSCR,
+ KC_DEL, KC_END, KC_PGDN, KC_SLCK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_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_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_ansi_150u_mods( /* Fn */______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
+ ______, ______, ______, KC_VOLD,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_DEL, ______, ______, ______, ______,
+ ______, ______, ______, ______, RESET , ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ KC_CAPS, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+} \ No newline at end of file
diff --git a/keyboards/hineybush/hineyg80/keymaps/wkl/readme.md b/keyboards/hineybush/hineyg80/keymaps/wkl/readme.md
new file mode 100644
index 000000000..3e0d8343c
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/keymaps/wkl/readme.md
@@ -0,0 +1 @@
+# The default keymap for hineyg80 \ No newline at end of file
diff --git a/keyboards/hineybush/hineyg80/readme.md b/keyboards/hineybush/hineyg80/readme.md
new file mode 100644
index 000000000..b305049d6
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/readme.md
@@ -0,0 +1,16 @@
+# hineyg80
+
+
+A small-batch PCB design to be a drop-in replacement for G80-1800 and G81-1800 boards.
+
+Keyboard Maintainer: [hineybush](https://github.com/hineybush)
+
+Hardware Supported: hiney g80 rev 2
+
+Hardware Availability: https://geekhack.org/index.php?topic=92389.0
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hineybush/hineyg80: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/hineybush/hineyg80/rules.mk b/keyboards/hineybush/hineyg80/rules.mk
new file mode 100644
index 000000000..383a3594b
--- /dev/null
+++ b/keyboards/hineybush/hineyg80/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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 (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/hs60/v1/v1.c b/keyboards/hs60/v1/v1.c
index 882611030..5267c9457 100644
--- a/keyboards/hs60/v1/v1.c
+++ b/keyboards/hs60/v1/v1.c
@@ -165,83 +165,37 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{1, C9_16, C7_15, C6_15} //D16
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-//
-// C7, C6, C5, C4, C3, C2, C1, A7, A6, A5, A4, A3, A2, A1,
-// C8, C9, C10, C11, C12, C13, C14, A8, A9, A10, A11, A12, A13, A15,
-// D4, D5, D6, D7, D8, C16, C15, B5, B6, B7, B8, A16, ---, A14,
-// D3, ---, D1, D9, D10, D11, D12, B4, B3, B2, B1, B9, ---, B10,
-// D16, D15, D14, ---, ---, ---, D13, ---, ---, ---, B14, B13, B12, B11
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
- {{0|(13<<4)}, {224, 0}, 1}, //A1-A16
- {{0|(12<<4)}, {204, 0}, 0},
- {{0|(11<<4)}, {187, 0}, 0},
- {{0|(10<<4)}, {170, 0}, 0},
- {{0|(9<<4)}, {153, 0}, 0},
- {{0|(8<<4)}, {136, 0}, 0},
- {{0|(7<<4)}, {119, 0}, 0},
- {{1|(7<<4)}, {119, 16}, 0},
- {{1|(8<<4)}, {136, 16}, 0},
- {{1|(9<<4)}, {153, 16}, 0},
- {{1|(10<<4)}, {170, 16}, 0},
- {{1|(11<<4)}, {187, 16}, 0},
- {{1|(12<<4)}, {204, 16}, 0},
- {{2|(13<<4)}, {224, 32}, 1},
- {{2|(12<<4)}, {224, 16}, 0},
- {{2|(11<<4)}, {197, 32}, 0},
-
- {{3|(10<<4)}, {170, 48}, 0}, //B1-B14
- {{3|(9<<4)}, {153, 48}, 0},
- {{3|(8<<4)}, {136, 48}, 0},
- {{3|(7<<4)}, {119, 48}, 0},
- {{2|(7<<4)}, {119, 32}, 0},
- {{2|(8<<4)}, {136, 32}, 0},
- {{2|(9<<4)}, {153, 32}, 0},
- {{2|(10<<4)}, {170, 32}, 0},
- {{3|(11<<4)}, {187, 48}, 0},
- {{3|(13<<4)}, {214, 48}, 1},
- {{4|(13<<4)}, {224, 64}, 1},
- {{4|(12<<4)}, {204, 64}, 1},
- {{4|(11<<4)}, {187, 64}, 1},
- {{4|(10<<4)}, {170, 64}, 1},
-
- {{0|(6<<4)}, {102, 0}, 0}, //C1-C16
- {{0|(5<<4)}, { 85, 0}, 0},
- {{0|(4<<4)}, { 68, 0}, 0},
- {{0|(3<<4)}, { 51, 0}, 0},
- {{0|(2<<4)}, { 34, 0}, 0},
- {{0|(1<<4)}, { 17, 0}, 0},
- {{0|(0<<4)}, { 0, 0}, 1},
- {{1|(0<<4)}, { 0, 16}, 1},
- {{1|(1<<4)}, { 17, 16}, 0},
- {{1|(2<<4)}, { 34, 16}, 0},
- {{1|(3<<4)}, { 51, 16}, 0},
- {{1|(4<<4)}, { 68, 16}, 0},
- {{1|(5<<4)}, { 85, 16}, 0},
- {{1|(6<<4)}, {102, 16}, 0},
- {{2|(6<<4)}, {102, 32}, 0},
- {{2|(5<<4)}, { 85, 32}, 0},
-
- {{3|(2<<4)}, { 32, 48}, 0}, //D1-D16
- //D2
- {{3|(0<<4)}, { 10, 48}, 1},
- {{2|(0<<4)}, { 0, 32}, 1},
- {{2|(1<<4)}, { 17, 32}, 0},
- {{2|(2<<4)}, { 34, 32}, 0},
- {{2|(3<<4)}, { 51, 32}, 0},
- {{2|(4<<4)}, { 68, 32}, 0},
- {{3|(3<<4)}, { 51, 48}, 0},
- {{3|(4<<4)}, { 68, 48}, 0},
- {{3|(5<<4)}, { 85, 48}, 0},
- {{3|(6<<4)}, {102, 48}, 0},
- {{4|(3<<4)}, {102, 64}, 0},
- {{4|(2<<4)}, { 34, 68}, 1},
- {{4|(1<<4)}, { 17, 68}, 1},
- {{4|(0<<4)}, { 0, 68}, 1}
-};
+led_config_t g_led_config = { {
+ { 36, 35, 34, 33, 32, 31, 30, 6, 5, 4, 3, 2, 1, 0 },
+ { 37, 38, 39, 40, 41, 42, 43, 7, 8, 9, 10, 11, 12, NO_LED },
+ { 48, 49, 50, 51, 52, 45, 44, 20, 21, 22, 23, 15, 14, 13 },
+ { 47, NO_LED, 46, 53, 54, 55, 56, 19, 18, 17, 16, 24, NO_LED, 25 },
+ { 60, 59, 58, 57, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 29, 28, 27, 26 }
+}, {
+ //A1-A16
+ { 224, 0 }, { 204, 0 }, { 187, 0 }, { 170, 0 }, { 153, 0 }, { 136, 0 }, { 119, 0 }, { 119, 16 }, { 136, 16 }, { 153, 16 }, { 170, 16 }, { 187, 16 }, { 204, 16 }, { 224, 32 },
+ { 224, 16 }, { 197, 32 },
+ //B1-B14
+ { 170, 48 }, { 153, 48 }, { 136, 48 }, { 119, 48 }, { 119, 32 }, { 136, 32 }, { 153, 32 }, { 170, 32 }, { 187, 48 }, { 214, 48 }, { 224, 64 }, { 204, 64 }, { 187, 64 }, { 170, 64 },
+ //C1-C16
+ { 102, 0 }, { 85, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 }, { 0, 16 }, { 17, 16 }, { 34, 16 }, { 51, 16 }, { 68, 16 }, { 85, 16 }, { 102, 16 },
+ { 102, 32 }, { 85, 32 },
+ //D1-D16
+ { 32, 48 }, { 10, 48 }, { 0, 32 }, { 17, 32 }, { 34, 32 }, { 51, 32 }, { 68, 32 }, { 51, 48 }, { 68, 48 }, { 85, 48 }, { 102, 48 }, { 102, 64 }, { 34, 68 }, { 17, 68 },
+ { 0, 68 }
+}, {
+ //A1-A16
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4,
+ //B1-B14
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
+ //C1-C16
+ 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4,
+ 4, 4,
+ //D1-D16
+ 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1
+} };
#else
@@ -319,83 +273,37 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{1, C9_16, C7_15, C6_15} //D16
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-//
-// C7, C6, C5, C4, C3, C2, C1, A7, A6, A5, A4, A3, A2, A1,
-// C8, C9, C10, C11, C12, C13, C14, A8, A9, A10, A11, A12, A13, ---,
-// D4, D5, D6, D7, D8, C16, C15, B5, B6, B7, B8, A16, A15, A14,
-// D3, D2, D1, D9, D10, D11, D12, B4, B3, B2, B1, B9, ---, B10,
-// D16, D15, D14, ---, ---, ---, D13, ---, ---, ---, B14, B13, B12, B11
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
- {{0|(13<<4)}, {224, 0}, 1}, //A1-A16
- {{0|(12<<4)}, {204, 0}, 0},
- {{0|(11<<4)}, {187, 0}, 0},
- {{0|(10<<4)}, {170, 0}, 0},
- {{0|(9<<4)}, {153, 0}, 0},
- {{0|(8<<4)}, {136, 0}, 0},
- {{0|(7<<4)}, {119, 0}, 0},
- {{1|(7<<4)}, {119, 16}, 0},
- {{1|(8<<4)}, {136, 16}, 0},
- {{1|(9<<4)}, {153, 16}, 0},
- {{1|(10<<4)}, {170, 16}, 0},
- {{1|(11<<4)}, {187, 16}, 0},
- {{1|(12<<4)}, {204, 16}, 0},
- {{2|(13<<4)}, {224, 8}, 1},
- {{2|(12<<4)}, {204, 32}, 0},
- {{2|(11<<4)}, {187, 32}, 0},
-
- {{3|(10<<4)}, {170, 48}, 0}, //B1-B14
- {{3|(9<<4)}, {153, 48}, 0},
- {{3|(8<<4)}, {136, 48}, 0},
- {{3|(7<<4)}, {119, 48}, 0},
- {{2|(7<<4)}, {119, 32}, 0},
- {{2|(8<<4)}, {136, 32}, 0},
- {{2|(9<<4)}, {153, 32}, 0},
- {{2|(10<<4)}, {170, 32}, 0},
- {{3|(11<<4)}, {187, 48}, 0},
- {{3|(13<<4)}, {214, 48}, 1},
- {{4|(13<<4)}, {224, 64}, 1},
- {{4|(12<<4)}, {204, 64}, 1},
- {{4|(11<<4)}, {187, 64}, 1},
- {{4|(10<<4)}, {170, 64}, 1},
-
- {{0|(6<<4)}, {102, 0}, 0}, //C1-C16
- {{0|(5<<4)}, { 85, 0}, 0},
- {{0|(4<<4)}, { 68, 0}, 0},
- {{0|(3<<4)}, { 51, 0}, 0},
- {{0|(2<<4)}, { 34, 0}, 0},
- {{0|(1<<4)}, { 17, 0}, 0},
- {{0|(0<<4)}, { 0, 0}, 1},
- {{1|(0<<4)}, { 0, 16}, 1},
- {{1|(1<<4)}, { 17, 16}, 0},
- {{1|(2<<4)}, { 34, 16}, 0},
- {{1|(3<<4)}, { 51, 16}, 0},
- {{1|(4<<4)}, { 68, 16}, 0},
- {{1|(5<<4)}, { 85, 16}, 0},
- {{1|(6<<4)}, {102, 16}, 0},
- {{2|(6<<4)}, {102, 32}, 0},
- {{2|(5<<4)}, { 85, 32}, 0},
-
- {{3|(2<<4)}, { 32, 48}, 0}, //D1-D16
- {{3|(1<<4)}, { 17, 48}, 0},
- {{3|(0<<4)}, { 0, 48}, 1},
- {{2|(0<<4)}, { 0, 32}, 1},
- {{2|(1<<4)}, { 17, 32}, 0},
- {{2|(2<<4)}, { 34, 32}, 0},
- {{2|(3<<4)}, { 51, 32}, 0},
- {{2|(4<<4)}, { 68, 32}, 0},
- {{3|(3<<4)}, { 51, 48}, 0},
- {{3|(4<<4)}, { 68, 48}, 0},
- {{3|(5<<4)}, { 85, 48}, 0},
- {{3|(6<<4)}, {102, 48}, 0},
- {{4|(3<<4)}, {102, 64}, 0},
- {{4|(2<<4)}, { 34, 68}, 1},
- {{4|(1<<4)}, { 17, 68}, 1},
- {{4|(0<<4)}, { 0, 68}, 1}
-};
+led_config_t g_led_config = { {
+ { 36, 35, 34, 33, 32, 31, 30, 6, 5, 4, 3, 2, 1, 0 },
+ { 37, 38, 39, 40, 41, 42, 43, 7, 8, 9, 10, 11, 12, NO_LED },
+ { 49, 50, 51, 52, 53, 45, 44, 20, 21, 22, 23, 15, 14, 13 },
+ { 48, 47, 46, 54, 55, 56, 57, 19, 18, 17, 16, 24, NO_LED, 25 },
+ { 61, 60, 59, 58, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 29, 28, 27, 26 }
+}, {
+ //A1-A16
+ { 224, 0 }, { 204, 0 }, { 187, 0 }, { 170, 0 }, { 153, 0 }, { 136, 0 }, { 119, 0 }, { 119, 16 }, { 136, 16 }, { 153, 16 }, { 170, 16 }, { 187, 16 }, { 204, 16 }, { 224, 8 },
+ { 204, 32 }, { 187, 32 },
+ //B1-B14
+ { 170, 48 }, { 153, 48 }, { 136, 48 }, { 119, 48 }, { 119, 32 }, { 136, 32 }, { 153, 32 }, { 170, 32 }, { 187, 48 }, { 214, 48 }, { 224, 64 }, { 204, 64 }, { 187, 64 }, { 170, 64 },
+ //C1-C16
+ { 102, 0 }, { 85, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 }, { 0, 16 }, { 17, 16 }, { 34, 16 }, { 51, 16 }, { 68, 16 }, { 85, 16 }, { 102, 16 },
+ { 102, 32 }, { 85, 32 },
+ //D1-D16
+ { 32, 48 }, { 17, 48 }, { 0, 48 }, { 0, 32 }, { 17, 32 }, { 34, 32 }, { 51, 32 }, { 68, 32 }, { 51, 48 }, { 68, 48 }, { 85, 48 }, { 102, 48 }, { 102, 64 }, { 34, 68 },
+ { 17, 68 }, { 0, 68 }
+}, {
+ //A1-A16
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4,
+ //B1-B14
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
+ //C1-C16
+ 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4,
+ 4, 4,
+ //D1-D16
+ 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1
+} };
#endif
@@ -492,4 +400,4 @@ void suspend_power_down_kb(void)
void suspend_wakeup_init_kb(void)
{
rgb_matrix_set_suspend_state(false);
-} \ No newline at end of file
+}
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk b/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
index a2850a830..deb4fc889 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/default_via/rules.mk b/keyboards/hs60/v2/keymaps/default_via/rules.mk
index a2850a830..deb4fc889 100644
--- a/keyboards/hs60/v2/keymaps/default_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/default_via/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk b/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
index a2850a830..deb4fc889 100644
--- a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
+++ b/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk b/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
index a2850a830..deb4fc889 100644
--- a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk b/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
index a2850a830..deb4fc889 100644
--- a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
+++ b/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk b/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
index c46a6b952..817785d7a 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
+++ b/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk b/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
index c89d90969..05193af4b 100644
--- a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
+++ b/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/hs60/v2/rules.mk b/keyboards/hs60/v2/rules.mk
index 5659d28c9..64948c2e9 100644
--- a/keyboards/hs60/v2/rules.mk
+++ b/keyboards/hs60/v2/rules.mk
@@ -45,6 +45,7 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk
index 8cb2b3755..1f02e05c8 100644
--- a/keyboards/infinity60/rules.mk
+++ b/keyboards/infinity60/rules.mk
@@ -58,6 +58,7 @@ OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000
#
DFU_ARGS = -d 1c11:b007
+DFU_SUFFIX_ARGS = -p b007 -v 1c11
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
diff --git a/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c b/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
index 61386395a..528bde885 100644
--- a/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
@@ -15,7 +15,7 @@ const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};
// These control which colors are selected for the gradient mode
-const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90};
+const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk
index a1c56903b..7762f1868 100644
--- a/keyboards/k_type/rules.mk
+++ b/keyboards/k_type/rules.mk
@@ -57,6 +57,7 @@ ARMV = 7
OPT_DEFS =
DFU_ARGS = -d 1c11:b007
+DFU_SUFFIX_ARGS = -p b007 -v 1c11
# Build Options
# comment out to disable the options.
diff --git a/keyboards/kagamidget/config.h b/keyboards/kagamidget/config.h
new file mode 100644
index 000000000..fc9463aee
--- /dev/null
+++ b/keyboards/kagamidget/config.h
@@ -0,0 +1,222 @@
+/*
+Copyright 2019 yynmt
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yynmt
+#define PRODUCT KagaMidget
+#define DESCRIPTION 48 keys tiny keyboard
+
+/* 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, D0, F4, F5 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+
+#define RGB_DI_PIN D3
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 4
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 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 */
+/*#define IS_COMMAND() ( \
+ keyboard_report->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_HELP1 H
+//#define MAGIC_KEY_HELP2 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_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#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 PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#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/kagamidget/info.json b/keyboards/kagamidget/info.json
new file mode 100644
index 000000000..a9e0dd1b8
--- /dev/null
+++ b/keyboards/kagamidget/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "KagaMidget",
+ "url": "http://yynmt.com",
+ "maintainer": "yynmt",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 48,
+ "layout": [
+ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0},
+ {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1},
+ {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2},
+ {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kagamidget/kagamidget.c b/keyboards/kagamidget/kagamidget.c
new file mode 100644
index 000000000..1f790c9e7
--- /dev/null
+++ b/keyboards/kagamidget/kagamidget.c
@@ -0,0 +1,43 @@
+/* Copyright 2019 yynmt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "kagamidget.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/kagamidget/kagamidget.h b/keyboards/kagamidget/kagamidget.h
new file mode 100644
index 000000000..e0655a4e9
--- /dev/null
+++ b/keyboards/kagamidget/kagamidget.h
@@ -0,0 +1,39 @@
+/* Copyright 2019 yynmt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#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( \
+ K01, K05, K09, K13, K17, K21, K25, K29, K33, K37, K41, K45, \
+ K02, K06, K10, K14, K18, K22, K26, K30, K34, K38, K42, K46, \
+ K03, K07, K11, K15, K19, K23, K27, K31, K35, K39, K43, K47, \
+ K04, K08, K12, K16, K20, K24, K28, K32, K36, K40, K44, K48 \
+) \
+{ \
+ { K01, K05, K09, K13, K17, K21, K25, K29, K33, K37, K41, K45 }, \
+ { K02, K06, K10, K14, K18, K22, K26, K30, K34, K38, K42, K46 }, \
+ { K03, K07, K11, K15, K19, K23, K27, K31, K35, K39, K43, K47 }, \
+ { K04, K08, K12, K16, K20, K24, K28, K32, K36, K40, K44, K48 }, \
+}
diff --git a/keyboards/kagamidget/keymaps/default/config.h b/keyboards/kagamidget/keymaps/default/config.h
new file mode 100644
index 000000000..bab59c67e
--- /dev/null
+++ b/keyboards/kagamidget/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 yynmt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/kagamidget/keymaps/default/keymap.c b/keyboards/kagamidget/keymaps/default/keymap.c
new file mode 100644
index 000000000..3d9a95470
--- /dev/null
+++ b/keyboards/kagamidget/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+/* Copyright 2019 yynmt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| Debug|RGBTog|RGBMod|RGBHuI|RGBHuD|RGBSaI|RGBSaD|RGBVaI|RGBVaD| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/kagamidget/keymaps/default/readme.md b/keyboards/kagamidget/keymaps/default/readme.md
new file mode 100644
index 000000000..9ce02fb09
--- /dev/null
+++ b/keyboards/kagamidget/keymaps/default/readme.md
@@ -0,0 +1,49 @@
+# The default keymap for KagaMidget
+## 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 |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Shift| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+`-----------------------------------------------------------------------------------'
+```
+## Lower
+```
+,-----------------------------------------------------------------------------------.
+| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | Next | Vol- | Vol+ | Play |
+`-----------------------------------------------------------------------------------'
+ ```
+## Raise
+```
+,-----------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | Next | Vol- | Vol+ | Play |
+`-----------------------------------------------------------------------------------'
+```
+## Adjust (Lower + Raise)
+```
+,-----------------------------------------------------------------------------------.
+| | Reset| Debug|RGBTog|RGBMod|RGBHuI|RGBHuD|RGBSaI|RGBSaD|RGBVaI|RGBVaD| Del |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | | | | |
+`-----------------------------------------------------------------------------------'
+```
diff --git a/keyboards/kagamidget/readme.md b/keyboards/kagamidget/readme.md
new file mode 100644
index 000000000..af38fdd85
--- /dev/null
+++ b/keyboards/kagamidget/readme.md
@@ -0,0 +1,14 @@
+# KagaMidget
+
+![KagaMidget](https://raw.githubusercontent.com/yynmt/KagaMidget/master/images/main_image.jpg)
+
+KagaMidget is 40% tiny keyboard.
+
+Keyboard Maintainer: [yynmt](https://github.com/yynmt)
+Hardware Supported: KagaMidget PCBs, ProMicro supported
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kagamidget: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/kagamidget/rules.mk b/keyboards/kagamidget/rules.mk
new file mode 100644
index 000000000..50608d985
--- /dev/null
+++ b/keyboards/kagamidget/rules.mk
@@ -0,0 +1,83 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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 (+2400 to 4200, depending on config)
+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)
+
+RGBLIGHT_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd4x/kbd4x.h b/keyboards/kbdfans/kbd4x/kbd4x.h
index df0251fa4..ab31d3657 100644
--- a/keyboards/kbdfans/kbd4x/kbd4x.h
+++ b/keyboards/kbdfans/kbd4x/kbd4x.h
@@ -21,13 +21,13 @@
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b } \
+ { k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b } \
}
// The PCB does support a grid layout, but the case does not.
@@ -35,11 +35,24 @@
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 \
+ 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 } \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_kc_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 \
+) \
+{ \
+ { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
+ { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
+ { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
+ { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b } \
}
diff --git a/keyboards/kbdfans/kbd4x/rules.mk b/keyboards/kbdfans/kbd4x/rules.mk
index de03b833c..639546d6c 100644
--- a/keyboards/kbdfans/kbd4x/rules.mk
+++ b/keyboards/kbdfans/kbd4x/rules.mk
@@ -65,7 +65,7 @@ BOOTLOADER = atmel-dfu
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)
+CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
@@ -79,3 +79,5 @@ 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)
+
+LAYOUTS = ortho_4x12 planck_mit
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
new file mode 100644
index 000000000..de18f2ff4
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+enum layer {
+ LAYER_DEFAULT,
+ LAYER_FUNCTION,
+};
+
+/* Switch to function layer when held. */
+#define LY_FUNC MO(LAYER_FUNCTION)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default layer: http://www.keyboard-layout-editor.com/#/gists/dd675b40cc4df2c7bb78847ac29f5988 */
+ [LAYER_DEFAULT] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, \
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FUNC, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+ /* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
+ [LAYER_FUNCTION] = 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_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, _______, _______, KC_INS, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, _______, \
+ KC_CAPS, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, KC_APP, _______, _______, _______, _______ \
+ ),
+};
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
new file mode 100644
index 000000000..88b9742a6
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
@@ -0,0 +1,13 @@
+# bcat's Quefrency 65% layout
+
+This is pretty much a stock 65% split keyboard layout, with an HHKB-style
+(split) backspace and media keys in the function layer centered around the WASD
+cluster.
+
+## Default layer
+
+![Default layer layout](https://i.imgur.com/stwELz3.png)
+
+## Function layer
+
+![Function layer layout](https://i.imgur.com/K5Z5qbw.png)
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/default/readme.md b/keyboards/kbdfans/kbd67/rev1/keymaps/default/readme.md
index 2cb43c5e1..391ea3b41 100644
--- a/keyboards/kbdfans/kbd67/rev1/keymaps/default/readme.md
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/default/readme.md
@@ -1 +1,33 @@
# The default keymap for kbd67
+
+```
+/* Keymap (Base Layer) Default Layer
+ * ,----------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home|
+ * |----------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
+ * |----------------------------------------------------------------|
+ * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
+ * |----------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End |
+ * |----------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
+ * `----------------------------------------------------------------'
+ */
+```
+
+```
+ /* Keymap Fn Layer
+ * ,----------------------------------------------------------------.
+ * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
+ * |----------------------------------------------------------------|
+ * |Caps | |Up | | | | | |PSc|SLk|Pau|Up | | | |
+ * |----------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | |End|PDn|Dow| |PUp| |
+ * |----------------------------------------------------------------|
+ * | | | | | | | |Hom|PDn|End |
+ * `----------------------------------------------------------------'
+ */
+```
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h
new file mode 100644
index 000000000..a3ed4f762
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2018 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/keymap.c b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/keymap.c
new file mode 100644
index 000000000..839e28fae
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/keymap.c
@@ -0,0 +1,99 @@
+/* Copyright 2018 'mechmerlin'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap (Base Layer) Default Layer
+ * ,----------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | ~|
+ * |----------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Del|
+ * |----------------------------------------------------------------|
+ * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp|
+ * |----------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
+ * |----------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
+ * `----------------------------------------------------------------'
+ */
+[0] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRAVE, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE,\
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap Fn Layer
+ * ,----------------------------------------------------------------.
+ * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
+ * |----------------------------------------------------------------|
+ * |Caps | |Up | | | | | |PSc|SLk|Pau|Up | | | |
+ * |----------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | |End|PDn|Dow| |PUp| |
+ * |----------------------------------------------------------------|
+ * | | | | | | | |Hom|PDn|End |
+ * `----------------------------------------------------------------'
+ */
+[1] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,KC_INS, \
+ KC_CAPS,_______, KC_UP,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP,_______, _______,_______, \
+ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,_______,_______,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT, _______,_______, \
+ _______,_______,_______,_______,_______,_______,_______,_______, KC_END,KC_PGDN,KC_DOWN, _______,KC_PGUP,_______, \
+ _______, _______, _______, _______, _______,_______,_______,KC_HOME,KC_PGDN, KC_END),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ 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/kbdfans/kbd67/rev1/keymaps/martinffx/readme.md b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/readme.md
new file mode 100644
index 000000000..dfa800d17
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/readme.md
@@ -0,0 +1,33 @@
+# The default keymap for kbd67
+
+```
+/* Keymap (Base Layer) Default Layer
+ * ,----------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | ~|
+ * |----------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Del|
+ * |----------------------------------------------------------------|
+ * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp|
+ * |----------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
+ * |----------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
+ * `----------------------------------------------------------------'
+ */
+```
+
+```
+ /* Keymap Fn Layer
+ * ,----------------------------------------------------------------.
+ * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
+ * |----------------------------------------------------------------|
+ * |Caps | |Up | | | | | |PSc|SLk|Pau|Up | | | |
+ * |----------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | |End|PDn|Dow| |PUp| |
+ * |----------------------------------------------------------------|
+ * | | | | | | | |Hom|PDn|End |
+ * `----------------------------------------------------------------'
+ */
+```
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
index 3404cc4e4..bb8ab6b9b 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
@@ -2,91 +2,95 @@
#include "konstantin.h"
enum keycodes_keymap {
- RCTRL = RANGE_KEYMAP,
+ RCTRL = RANGE_KEYMAP,
};
enum layers_keymap {
- L_RCTRL = L_RANGE_KEYMAP,
+ L_RCTRL = L_RANGE_KEYMAP,
};
+void eeconfig_init_keymap(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+}
+
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case RCTRL:
- if (record->event.pressed) {
- layer_on(L_RCTRL);
- register_code(KC_RCTRL);
- } else {
- layer_off(L_RCTRL);
- unregister_code(KC_RCTRL);
- }
- return false;
+ switch (keycode) {
+ case RCTRL:
+ if (record->event.pressed) {
+ register_code(KC_RCTRL);
+ layer_on(L_RCTRL);
+ } else {
+ unregister_code(KC_RCTRL);
+ layer_off(L_RCTRL);
+ }
+ return false;
- default:
- return true;
- }
+ default:
+ return true;
+ }
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Base layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │LCtCps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
- * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnL│
- * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
- * │LGu│LAlt │ Space │RAlGu│RCt│
- * └───┴─────┴───────────────────────────┴─────┴───┘
- */
- [L_BASE] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_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,
- LCT_CPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- LSFT_FN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_FNLK,
- XXXXXXX, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, RCTRL, XXXXXXX
- ),
+ /* Base layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │LCtCps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnL│
+ * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
+ * │LGu│LAlt │ Space │RAlGu│RCt│
+ * └───┴─────┴───────────────────────────┴─────┴───┘
+ */
+ [L_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_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,
+ LCT_CPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ LSFT_FN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_FNLK,
+ XXXXXXX, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, RCTRL, XXXXXXX
+ ),
- /* Function layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
- * │ │Hom│ ↑ │End│PgU│ │ │ │ │M1 │M↑ │M2 │M3 │ Del │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ │ ← │ ↓ │ → │PgD│ │ │ │MW↑│M← │M↓ │M→ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
- * │ │Mut│Vo-│Vo+│Ply│Prv│Nxt│MW←│MW→│M4 │M5 │ │ │
- * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
- * │DPR│DstNA│ MW↓ │MAcl2│ │
- * └───┴─────┴───────────────────────────┴─────┴───┘
- */
- [L_FN] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS,
- _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_DEL,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______,
- _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_WH_L, KC_WH_R, KC_BTN4, KC_BTN5, _______, _______,
- XXXXXXX, DST_P_R, DST_N_A, KC_WH_D, KC_ACL2, _______, XXXXXXX
- ),
+ /* Function layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ │Hom│ ↑ │End│PgU│ │ │ │ │M1 │M↑ │M3 │M2 │ Del │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ ← │ ↓ │ → │PgD│ │ │ │MW↑│M← │M↓ │M→ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │ │Mut│Vo-│Vo+│Ply│Prv│Nxt│MW←│MW→│M4 │M5 │ │ │
+ * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
+ * │ │ │ MW↓ │MAcl2│ │
+ * └───┴─────┴───────────────────────────┴─────┴───┘
+ */
+ [L_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS,
+ _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN3, KC_BTN2, KC_DEL,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______,
+ _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_WH_L, KC_WH_R, KC_BTN4, KC_BTN5, _______, _______,
+ XXXXXXX, _______, _______, KC_WH_D, KC_ACL2, _______, XXXXXXX
+ ),
- /* RCtrl layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
- * │ │Top│Mv↑│Btm│PrT│ │ │ │ │ │ │ │ │Clear│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ │Mv←│Mv↓│Mv→│NxT│ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
- * │DtR│DstA │ │ │ │
- * └───┴─────┴───────────────────────────┴─────┴───┘
- */
- [L_RCTRL] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, TOP, MV_UP, BOTTOM, PRV_TAB, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR,
- _______, MV_LEFT, MV_DOWN, MV_RGHT, NXT_TAB, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- XXXXXXX, DST_REM, DST_ADD, _______, _______, _______, XXXXXXX
- ),
+ /* RCtrl layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Clr│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ │Top│Mv↑│Btm│TPr│ │ │ │ │ │ │ │ │DelNx│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │Mv←│Mv↓│Mv→│TNx│ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │ │RTg│RV-│RV+│ │ │ │ │ │ │ │ │ │
+ * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
+ * │DPR│DstNA│ │ │ │
+ * └───┴─────┴───────────────────────────┴─────┴───┘
+ */
+ [L_RCTRL] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR,
+ _______, TOP, MV_UP, BOTTOM, TAB_PRV, _______, _______, _______, _______, _______, _______, _______, _______, DEL_NXT,
+ _______, MV_LEFT, MV_DOWN, MV_RGHT, TAB_NXT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ XXXXXXX, DST_P_R, DST_N_A, _______, _______, _______, XXXXXXX
+ ),
};
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
index 4e485bf76..f7cf0758b 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
BOOTMAGIC_ENABLE = no
COMMAND_ENABLE = yes
-CONSOLE_ENABLE = yes
+CONSOLE_ENABLE = no
EXTRAKEY_ENABLE = yes
MOUSEKEY_ENABLE = yes
NKRO_ENABLE = yes
TAP_DANCE_ENABLE = yes
-UNICODEMAP_ENABLE = yes
+UNICODEMAP_ENABLE = no
-BACKLIGHT_ENABLE = no
-RGBLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c
new file mode 100644
index 000000000..f3aa991f3
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c
@@ -0,0 +1,82 @@
+/* Copyright 2018 wanleg
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "wanleg.h"
+
+
+#define LAYOUT_kbd6x_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_wrapper( \
+ KC_ESC, KC_1, KC_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, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_LBRC, KC_RBRC, KC_BSLS, \
+ KC_CAPS, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, KC_ENT, \
+ KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_LSFT, FUNCTION, \
+ KC_LCTL, KC_LGUI, KC_LALT, LT(gDIR,KC_SPC), KC_RALT, KC_RGUI, KC_RCTL \
+ )
+#define LAYOUT_kbd6x_base_wrapper(...) LAYOUT_kbd6x_base(__VA_ARGS__)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[gGK] = LAYOUT_kbd6x_base_wrapper(
+ _______________Gherkin_Row_0_______________,
+ _______________Gherkin_Row_1_______________,
+ _______________Gherkin_Row_2_______________
+),
+
+[gNUM] = LAYOUT_kbd6x_base_wrapper(
+ _______________Gherkin_NUM_0_______________,
+ _______________Gherkin_NUM_1_______________,
+ _______________Gherkin_NUM_2_______________
+),
+
+[gDIR] = LAYOUT_kbd6x_base_wrapper(
+ _______________Gherkin_DIR_0_______________,
+ _______________Gherkin_DIR_1_______________,
+ _______________Gherkin_DIR_2_______________
+),
+
+[gETC] = LAYOUT_kbd6x_base_wrapper(
+ _______________Gherkin_ETC_0_______________,
+ _______________Gherkin_ETC_1_______________,
+ _______________Gherkin_ETC_2_______________
+),
+
+[_FN] = LAYOUT_kbd6x_base_wrapper(
+ _______________Gherkin_FN_0________________,
+ _______________Gherkin_FN_1________________,
+ _______________Gherkin_FN_2________________
+),
+
+//mac layout
+[_QW] = LAYOUT_wrapper(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(ONE),
+ KC_LCTL, MO(ONE), KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, KC_RCTL
+ ),
+
+[ONE] = LAYOUT_wrapper(
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, BL_BRTG, BL_DEC, BL_INC, BL_TOGG, BL_STEP, BL_ON, KC_PGUP, KC_HOME, _______, _______, _______, _______, _______,
+ _______, RGB_M_B, RGB_VAD, RGB_VAI, RGB_TOG, RGB_MOD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
+ _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, KC_PGDN, KC_END, _______, gGHERKIN,_______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk
new file mode 100644
index 000000000..92cc41e21
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk
@@ -0,0 +1,3 @@
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400) \ No newline at end of file
diff --git a/keyboards/keebio/bdn9/keymaps/default/keymap.c b/keyboards/keebio/bdn9/keymaps/default/keymap.c
index 3bab86ae5..c700019dc 100644
--- a/keyboards/keebio/bdn9/keymaps/default/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/default/keymap.c
@@ -16,15 +16,26 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ | Knob 1: Vol Dn/Up | | Knob 2: Page Dn/Up |
+ | Press: Mute | Home | Press: Play/Pause |
+ | Hold: Layer 2 | Up | RGB Mode |
+ | Left | Down | Right |
+ */
[0] = LAYOUT(
- KC_MUTE, KC_HOME, KC_MPLY, \
- MO(1), KC_UP, RGB_MOD, \
- KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_MUTE, KC_HOME, KC_MPLY,
+ MO(1) , KC_UP , RGB_MOD,
+ KC_LEFT, KC_DOWN, KC_RGHT
),
+ /*
+ | RESET | N/A | Media Stop |
+ | Held: Layer 2 | Home | RGB Mode |
+ | Media Previous | End | Media Next |
+ */
[1] = LAYOUT(
- RESET, BL_STEP, KC_STOP, \
- _______, KC_HOME, RGB_MOD, \
- KC_MPRV, KC_END, KC_MNXT \
+ RESET , BL_STEP, KC_STOP,
+ _______, KC_HOME, RGB_MOD,
+ KC_MPRV, KC_END , KC_MNXT
),
};
diff --git a/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c b/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c
new file mode 100644
index 000000000..ca8679d57
--- /dev/null
+++ b/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c
@@ -0,0 +1,57 @@
+#include QMK_KEYBOARD_H
+
+// Macro keys for some apps
+#define SLACKUP LALT(LSFT(KC_UP))
+#define SLACKDN LALT(LSFT(KC_DOWN))
+#define RELOAD LGUI(KC_R)
+
+enum custom_keycodes {
+ PAWFIVE = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ RESET , PAWFIVE, RELOAD ,
+ SLACKUP, KC_UP , KC_PGUP,
+ SLACKDN, KC_DOWN, KC_PGDN
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ // Call the post init code.
+ rgblight_enable_noeeprom(); // enables Rgb, without saving settings
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); // sets mode to Slow breathing without saving
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case PAWFIVE:
+ if (record->event.pressed) {
+ SEND_STRING("+:pawfive:\n");
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ // Tab right
+ tap_code16(LSFT(LGUI(KC_RBRC)));
+ } else {
+ // Tab left
+ tap_code16(LSFT(LGUI(KC_LBRC)));
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ // History forward
+ tap_code16(LGUI(KC_RBRC));
+ } else {
+ // History back
+ tap_code16(LGUI(KC_LBRC));
+ }
+ }
+}
diff --git a/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c
new file mode 100644
index 000000000..7687ea2bf
--- /dev/null
+++ b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c
@@ -0,0 +1,172 @@
+/* Copyright 2019 Chuck Lauer Vose <vosechu@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// // Debugging
+// #include <print.h>
+
+#define BASE TO(_BASE)
+#define PANIC TO(_PANIC)
+#define FLIGHT TO(_FLIGHT)
+#define RCS TO(_RCS)
+
+enum my_layers {
+ _BASE = 0,
+ _PANIC,
+ _FLIGHT,
+ _RCS
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_MUTE, PANIC , XXXXXXX,
+ FLIGHT , XXXXXXX, RCS ,
+ XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+ [_PANIC] = LAYOUT(
+ RESET , BASE , XXXXXXX,
+ _______, XXXXXXX, _______,
+ KC_F2 , KC_F5 , KC_F9
+ ),
+ [_FLIGHT] = LAYOUT(
+ XXXXXXX, _______, KC_M ,
+ BASE , KC_W , _______,
+ KC_A , KC_S , KC_D
+ ),
+ [_RCS] = LAYOUT(
+ XXXXXXX, _______, XXXXXXX,
+ _______, KC_I , BASE ,
+ KC_J , KC_K , KC_L
+ )
+};
+
+bool base_mode = false;
+bool panic_mode = false;
+bool flight_mode = false;
+bool rcs_mode = false;
+
+uint32_t layer_state_set_user(uint32_t state) {
+ base_mode = false;
+ panic_mode = false;
+ flight_mode = false;
+ rcs_mode = false;
+
+ switch (biton32(state)) {
+ case _PANIC:
+ panic_mode = true; // For use in encoder evaluation
+ rgblight_sethsv_noeeprom(HSV_RED);
+ break;
+ case _FLIGHT:
+ flight_mode = true; // For use in encoder evaluation
+ rgblight_sethsv_noeeprom(HSV_CYAN);
+ break;
+ case _RCS:
+ rcs_mode = true; // For use in encoder evaluation
+ rgblight_sethsv_noeeprom(HSV_BLUE);
+ break;
+ default: // for any other layers, or the default layer
+ base_mode = true;
+ rgblight_sethsv_noeeprom(HSV_SPRINGGREEN);
+ break;
+ }
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Call the post init code.
+ rgblight_enable_noeeprom(); // enables Rgb, without saving settings
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 1); // sets mode to Slow breathing without saving
+ rgblight_sethsv_noeeprom(HSV_SPRINGGREEN);
+}
+
+// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+// switch (keycode) {
+// uprintf("Keycode: %s\n", keycode);
+// if (record->event.pressed) {
+// print("pressed");
+// // Do something when pressed
+// } else {
+// print("unpressed");
+// // Do something else when release
+// }
+// }
+// return true;
+// }
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if(base_mode == true) {
+ if (index == 0) {
+ if (clockwise) {
+ // Volume up
+ tap_code(KC_VOLU);
+ } else {
+ // Volume down
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ // Time warp faster
+ tap_code(KC_DOT);
+ } else {
+ // Time warp slower
+ tap_code(KC_COMM);
+ }
+ }
+ }
+
+ if(rcs_mode == true) {
+ if (index == 0) {
+ if (clockwise) {
+ // RCS Forward
+ tap_code(KC_H);
+ } else {
+ // RCS Backward
+ tap_code(KC_N);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ // RCS Rotate Left
+ tap_code(KC_Q);
+ } else {
+ // RCS Rotate Right
+ tap_code(KC_E);
+ }
+ }
+ }
+
+ if(flight_mode == true) {
+ if (index == 0) {
+ if (clockwise) {
+ // Throttle up
+ tap_code(KC_LSFT);
+ } else {
+ // Throttle down
+ tap_code(KC_LCTL);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ // Trim left
+ tap_code16(LALT(KC_A));
+ } else {
+ // Trim right
+ tap_code16(LALT(KC_D));
+ }
+ }
+ }
+}
diff --git a/keyboards/keebio/iris/keymaps/drashna/config.h b/keyboards/keebio/iris/keymaps/drashna/config.h
index dd247a42a..1a937b4b7 100644
--- a/keyboards/keebio/iris/keymaps/drashna/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna/config.h
@@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Use I2C or Serial, not both */
-#define USE_SERIAL
-#undef USE_I2C
+// #define USE_SERIAL
+#define USE_I2C
/* Select hand configuration */
@@ -29,24 +29,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EE_HANDS
#ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 18 // Number of LEDs
-
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
-
-#define RGBLIGHT_LIMIT_VAL 225
+# undef RGBLED_NUM
+# define RGBLED_NUM 18 // Number of LEDs
+# define RGBLED_SPLIT { 9, 9 }
+# define RGBLIGHT_HUE_STEP 12
+# define RGBLIGHT_SAT_STEP 12
+# define RGBLIGHT_VAL_STEP 12
+# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
+
+# define RGBLIGHT_LIMIT_VAL 225
#endif // RGBLIGHT_ENABLE
#ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#ifdef RGBLIGHT_ENABLE
-#define NO_MUSIC_MODE
-#endif //RGBLIGHT_ENABLE
+# define C6_AUDIO
+# ifdef RGBLIGHT_ENABLE
+# define NO_MUSIC_MODE
+# endif //RGBLIGHT_ENABLE
#endif //AUDIO_ENABLE
#define QMK_ESC_OUTPUT F6 // usually COL
@@ -55,8 +54,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QMK_SPEAKER C6
#undef PRODUCT
-#ifdef KEYBOARD_iris_rev2
-#define PRODUCT Drashna Hacked Iris Rev.2
+#ifdef KEYBOARD_keebio_iris_rev2
+# define PRODUCT Drashna Hacked Iris Rev.2
#endif
#define SHFT_LED1 6
diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c
index 0c3b0d6d4..95092cc52 100644
--- a/keyboards/keebio/iris/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c
@@ -12,7 +12,7 @@
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
KC_TAB , K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
- OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
+ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
)
#define LAYOUT_iris_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__)
@@ -113,11 +113,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_init_keymap(void) {
- #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
setPinOutput(D5);
writePinHigh(D5);
setPinOutput(B0);
writePinHigh(B0);
- #endif
+#endif
+}
+
+
+void keyboard_post_init_keymap(void) {
+#if BACKLIGHT_ENABLE
+ backlight_enable();
+ backlight_level(5);
+ #ifdef BACKLIGHT_BREATHING
+ breathing_enable();
+ #endif
+#endif
}
diff --git a/keyboards/keebio/iris/keymaps/drashna/rules.mk b/keyboards/keebio/iris/keymaps/drashna/rules.mk
index e8035176e..1311ab280 100644
--- a/keyboards/keebio/iris/keymaps/drashna/rules.mk
+++ b/keyboards/keebio/iris/keymaps/drashna/rules.mk
@@ -5,13 +5,15 @@ CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
TAP_DANCE_ENABLE = no
RGBLIGHT_ENABLE = yes
-AUDIO_ENABLE = yes
+AUDIO_ENABLE = no
NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no
SWAP_HANDS_ENABLE = no
+SPACE_CADET_ENABLE = no
-INDICATOR_LIGHTS = yes
+INDICATOR_LIGHTS = no
MACROS_ENABLED = no
RGBLIGHT_TWINKLE = no
+RGBLIGHT_STARTUP_ANIMATION = yes
BOOTLOADER = qmk-dfu
diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/config.h b/keyboards/keebio/iris/keymaps/drashna_lp/config.h
new file mode 100644
index 000000000..d59890b46
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/drashna_lp/config.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2017 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+#include "../drashna/config.h"
+
+#ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# define RGBLED_NUM 16 // Number of LEDs
+# undef RGBLED_SPLIT
+# define RGBLED_SPLIT { 8, 8 }
+#endif
+
+#undef PRODUCT
+#ifdef KEYBOARD_keebio_iris_rev2
+# define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
+#endif
+
+#undef SHFT_LED1
+#define SHFT_LED1 5
+#undef SHFT_LED2
+#define SHFT_LED2 10
+
+#undef CTRL_LED1
+#define CTRL_LED1 6
+#undef CTRL_LED2
+#define CTRL_LED2 9
+
+#undef ALT_LED1
+#define ALT_LED1 7
+#undef GUI_LED1
+#define GUI_LED1 8
diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c b/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c
new file mode 100644
index 000000000..ff7bd09c0
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c
@@ -0,0 +1 @@
+// placeholder
diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk b/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk
new file mode 100644
index 000000000..d3f6f5550
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk
@@ -0,0 +1,7 @@
+USER_NAME := drashna
+SRC += ../drashna/keymap.c
+
+include $(KEYBOARD_PATH_2)/keymaps/drashna/rules.mk
+
+AUDIO_ENABLE = no
+BACKLIGHT_ENABLE = yes
diff --git a/keyboards/keebio/iris/keymaps/drashna_old/config.h b/keyboards/keebio/iris/keymaps/drashna_old/config.h
index b985c4dfc..5adf014e3 100644
--- a/keyboards/keebio/iris/keymaps/drashna_old/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna_old/config.h
@@ -21,13 +21,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../drashna/config.h"
#ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 16 // Number of LEDs
+# undef RGBLED_NUM
+# define RGBLED_NUM 16 // Number of LEDs
+# undef RGBLED_SPLIT
+# define RGBLED_SPLIT { 8, 8 }
#endif
#undef PRODUCT
-#ifdef KEYBOARD_iris_rev2
-#define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
+#ifdef KEYBOARD_keebio_iris_rev2
+# define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
#endif
#undef SHFT_LED1
diff --git a/keyboards/keebio/iris/keymaps/rs/config.h b/keyboards/keebio/iris/keymaps/rs/config.h
index 7c5b5ca43..412862c87 100644
--- a/keyboards/keebio/iris/keymaps/rs/config.h
+++ b/keyboards/keebio/iris/keymaps/rs/config.h
@@ -35,4 +35,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SLEEP
#define RGBLIGHT_HUE_STEP 1
#define RGBLIGHT_SAT_STEP 1
-#define RGBLIGHT_VAL_STEP 1 \ No newline at end of file
+#define RGBLIGHT_VAL_STEP 1
diff --git a/keyboards/keebio/iris/keymaps/rs/karabiner.json b/keyboards/keebio/iris/keymaps/rs/karabiner.json
deleted file mode 100644
index f5214650a..000000000
--- a/keyboards/keebio/iris/keymaps/rs/karabiner.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "title": "RS",
- "rules": [{
- "description": "CapsLock to Escape / Control Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "caps_lock",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "left_control"}],
- "to_if_alone": [{"key_code": "escape"}]
- }]
- },
- {
- "description": "Right-Shift / Enter Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "right_shift",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_shift"}],
- "to_if_alone": [{"key_code": "return_or_enter"}]
- }]
- },
- {
- "description": "Right-Command / Backspace Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "right_command",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_command"}],
- "to_if_alone": [{"key_code": "delete_or_backspace"}]
- }]
- },
- {
- "description": "Right-Command Accents",
- "manipulators": [
- {
- "type": "basic",
- "from": {
- "key_code": "a",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["left_shift", "right_shift"]
- }
- },
- "to": [
- {"key_code": "grave_accent_and_tilde", "modifiers": ["left_option"]},
- {"key_code": "a"}
- ]
- }]
- },
- {
- "description": "Right Command Navigation",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "j",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "left_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "k",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "down_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "i",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "up_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "l",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "e",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "page_up"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "d",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "page_down"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "s",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "home"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "f",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "end"}]
- }]
- }]
-}
diff --git a/keyboards/keebio/iris/keymaps/rs/keymap.c b/keyboards/keebio/iris/keymaps/rs/keymap.c
index 43374e59f..0e254ea19 100644
--- a/keyboards/keebio/iris/keymaps/rs/keymap.c
+++ b/keyboards/keebio/iris/keymaps/rs/keymap.c
@@ -1,48 +1,45 @@
#include QMK_KEYBOARD_H
-
-enum layers {
- _QWERTY,
- _HYPER,
-};
-
-#define KC_ KC_TRNS
-
-#define KC_ESCC MT(MOD_LCTL, KC_ESC)
-#define KC_ENTS MT(MOD_LSFT, KC_ENT)
-#define KC_HYPE MO(_HYPER)
-#define KC_RST RESET
-// Brightness
-#define KC_BRUP KC_PAUS
-#define KC_BRDN KC_SLCK
-#define KC_BLTG BL_TOGG
+#include "rs.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- TAB , Q , W , E , R , T , Y , U , I , O , P ,EQL,
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,EQL ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
ESCC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
LSFT, Z , X , C , V , B ,SPC, BSPC, N , M ,COMM,DOT ,SLSH,ENTS,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
- LALT,LGUI,SPC, BSPC,HYPE,ENT
+ LALT,LGUI,SPC , BSPC,CODE,FN
// `----+----+----' `+---+----+----'
- ), // |
- // |
- [_HYPER] = LAYOUT_kc( // V
+ ),
+ [_CODE] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ GRV ,EXLM, AT ,HASH, DLR,PERC, CIRC,LPLT,ASTR,RPGT,NEQL, ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , 1 , 2 , 3 , 4 , 5 , MINS,LBRC, UP ,RBRC, ,BSLS,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , 6 , 7 , 8 , 9 , 0 , , ,AMPR,LEFT,DOWN,RGHT, ,PIPE,
+ //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
+ , , DOT, , ,
+ // `----+----+----' `----+----+----'
+ ),
+ [_FN] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
- RST , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 ,LBRC,RBRC, ,
+ , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, F11,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- , , ,PGUP, ,BRUP, , , UP ,LCBR,RCBR,BSLS,
+ , , , , , , , , , , , ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- , ,HOME,PGDN,END ,BRDN, MINS,LEFT,DOWN,RGHT, ,PIPE,
+ BLTG,BLUP, , , ,BRMU, , ,PGUP, , , ,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- , , , , , ,BLTG, VOLU, , , , , , ,
+ ,BLDN, , ,RST ,BRMD, , VOLU, ,CTRA,PGDN,CTRE, , ,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
- , , , VOLD, ,MUTE
+ , , , VOLD,MUTE,
// `----+----+----' `----+----+----'
),
};
+
diff --git a/keyboards/keebio/iris/keymaps/rs/readme.md b/keyboards/keebio/iris/keymaps/rs/readme.md
index bdf44121e..d23ab6687 100644
--- a/keyboards/keebio/iris/keymaps/rs/readme.md
+++ b/keyboards/keebio/iris/keymaps/rs/readme.md
@@ -1,13 +1 @@
-# Code friendly 60% keymap
-
-I developped this keymap to make a better use of 60% ortho keyboards I use like the preonic of the iris. Instead of trying to mimic the Planck layout like the default preonic keymap, this keymap removes the raise and lower layers and offers a simpler hyper layer concept for a few missing sign keys and cursors / media keys.
-
-The important part for coders is that most important signs needed to code are available at their usual position on a full keyboard, without complex layer gymnastic. Access to [] and {} are available on the hyper layer at their usual emplacement.
-
-The right thumb is used for both backspace and hyper layer switching. On the hyper layer, in addition to some coding signs, you get the cursor keys arranged in cross, just under your right fingers, so you don't have to move your hand when navigating in code or command line. Other hand gets the home/end page up/down in a similar layout.
-
-Because you sometime have to use your internal keyboard when you use a macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the hyper layer / backspace on right command key etc.
-
-This keymap is also available for other keyboards:
-- [ortho_5x12/rs](../../../../layouts/community/ortho_5x12/rs/keymap.c)
-- [ErgoTravel/rs](../../../ergotravel/keymaps/rs/keymap.c)
+See [rs readme](../../../../users/rs/readme.md). \ No newline at end of file
diff --git a/keyboards/keebio/iris/keymaps/rs/rules.mk b/keyboards/keebio/iris/keymaps/rs/rules.mk
index bd518d8f2..b4f058b4b 100644
--- a/keyboards/keebio/iris/keymaps/rs/rules.mk
+++ b/keyboards/keebio/iris/keymaps/rs/rules.mk
@@ -1 +1,2 @@
BACKLIGHT_ENABLE = yes
+BOOTLOADER = atmel-dfu
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/config.h b/keyboards/keebio/quefrency/keymaps/bcat/config.h
new file mode 100644
index 000000000..528cfd39a
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/bcat/config.h
@@ -0,0 +1,24 @@
+#pragma once
+
+/* Use I2C rather than serial communicaiton to reduce latency. */
+#define USE_I2C
+
+/* Turn off RGB lighting when the host goes to sleep. */
+#define RGBLIGHT_SLEEP
+
+/* Use an extra LED on the right side since it's wider on the 65% PCB. */
+#undef RGBLED_NUM
+#define RGBLED_NUM 17
+
+/* Set up RGB lighting so it works with either side as master. */
+#define RGBLED_SPLIT { 8, 9 }
+
+/* Make mouse operation smoother. */
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 16
+
+/* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_TIME_TO_MAX 150
+#define MOUSEKEY_WHEEL_MAX_SPEED 4
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
new file mode 100644
index 000000000..28818c96f
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -0,0 +1,42 @@
+#include QMK_KEYBOARD_H
+
+enum layer {
+ LAYER_DEFAULT,
+ LAYER_FUNCTION,
+ LAYER_MOUSE,
+};
+
+/* Switch to function layer when held. */
+#define LY_FUNC MO(LAYER_FUNCTION)
+
+/* Switch to mouse layer when held; send menu key when tapped. */
+#define LY_MOUSE LT(LAYER_MOUSE, KC_APP)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default layer: http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b */
+ [LAYER_DEFAULT] = LAYOUT_65(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, \
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_LCTL, KC_LGUI, KC_LALT, LY_FUNC, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FUNC, LY_MOUSE, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+ /* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
+ [LAYER_FUNCTION] = LAYOUT_65(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_HUI, \
+ _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, _______, _______, KC_INS, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, RGB_SAI, \
+ KC_CAPS, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAD, \
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD \
+ ),
+
+ /* Mouse layer: http://www.keyboard-layout-editor.com/#/gists/05b9fbe8a34f65ed85ded659b3941152 */
+ [LAYER_MOUSE] = LAYOUT_65(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN3, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN3, KC_BTN1, KC_MS_U, KC_BTN2, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R \
+ ),
+};
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/readme.md b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
new file mode 100644
index 000000000..1ecf42c29
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
@@ -0,0 +1,17 @@
+# bcat's Quefrency 65% layout
+
+This is pretty much a stock 65% split keyboard layout, with an HHKB-style
+(split) backspace, media keys in the function layer centered around the WASD
+cluster, and mouse keys on their own layer centered around the arrow cluster.
+
+## Default layer
+
+![Default layer layout](https://i.imgur.com/3riRFev.png)
+
+## Function layer
+
+![Function layer layout](https://i.imgur.com/Hu5wNpl.png)
+
+## Mouse layer
+
+![Mouse layer layout](https://i.imgur.com/LmGgJEG.png)
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/rules.mk b/keyboards/keebio/quefrency/keymaps/bcat/rules.mk
new file mode 100644
index 000000000..6c605daec
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/bcat/rules.mk
@@ -0,0 +1 @@
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/config.h b/keyboards/keebio/quefrency/keymaps/georgepetri/config.h
new file mode 100644
index 000000000..d72d7760e
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/config.h
@@ -0,0 +1,24 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define USE_I2C \ No newline at end of file
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
new file mode 100644
index 000000000..f08ab4f83
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BASE 0
+#define _FN1 1
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_65(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,\
+// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
+// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\
+// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_PGDN,\
+// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC ,_______, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT_65(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, KC_INS, \
+// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,\
+// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
+// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
+// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md b/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md
new file mode 100644
index 000000000..425190d19
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md
@@ -0,0 +1,48 @@
+# George Petri's Quefrency 65 layout
+
+```
+make keebio/quefrency:georgepetri
+```
+
+Based on the default querty layout with minor tweaks.
+The position of the arrow keys in a line in the bottom right.
+The backspace key is 1u and to the left of the delete key.
+Grave, pause and insert are on the function layer.
+
+### Base Layer
+```
+┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ ESC ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 │ │ 7 ││ 8 ││ 9 ││ 0 ││ MINS││ EQL ││ BSPC││ DEL ││ HOME│
+└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
+│ TAB ││ Q ││ W ││ E ││ R ││ T │ │ Y ││ U ││ I ││ O ││ P ││ LBRC││ RBRC││ BSLS ││ END │
+└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
+┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
+│ CAPS ││ A ││ S ││ D ││ F ││ G │ │ H ││ J ││ K ││ L ││ SCLN││ QUOT││ ENT ││ PGUP│
+└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
+┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
+│ LSFT ││ Z ││ X ││ C ││ V ││ B │ │ N ││ M ││ COMM││ DOT ││ SLSH││ RSFT ││ PGDN│
+└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
+┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ LCTL ││ LGUI ││ LALT ││MO(_FN1)││ SPC │ │ SPC ││ RALT││ RCTL││ LEFT││ DOWN││ UP ││ RGHT│
+└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+```
+
+### Function
+```
+┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ GRV ││ F1 ││ F2 ││ F3 ││ F4 ││ F5 ││ F6 │ │ F7 ││ F8 ││ F9 ││ F10 ││ F11 ││ F12 ││ BSPC││ DEL ││ INS │
+└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
+│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ ││ PAUS│
+└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
+┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
+│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ │
+└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
+┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
+│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
+└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
+┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
+└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+``` \ No newline at end of file
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk b/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk
diff --git a/keyboards/keebio/viterbi/keymaps/drashna/config.h b/keyboards/keebio/viterbi/keymaps/drashna/config.h
index c0a50cc04..201c02e41 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna/config.h
+++ b/keyboards/keebio/viterbi/keymaps/drashna/config.h
@@ -21,35 +21,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 5
#ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 16
-
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+# undef RGBLED_NUM
+# define RGBLED_NUM 16
+
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
#endif // RGBLIGHT_ENABLE
-#undef LOCKING_SUPPORT_ENABLE
-#undef LOCKING_RESYNC_ENABLE
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
#undef PRODUCT
#define PRODUCT Drashnas Viterbi Macro Pad
#ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#define NO_MUSIC_MODE
+# define C6_AUDIO
+# define NO_MUSIC_MODE
#endif
#define LAYOUT_ortho_5x7( \
diff --git a/keyboards/keebio/viterbi/keymaps/drashna/rules.mk b/keyboards/keebio/viterbi/keymaps/drashna/rules.mk
index f28ecc533..f42e065d5 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna/rules.mk
+++ b/keyboards/keebio/viterbi/keymaps/drashna/rules.mk
@@ -8,6 +8,7 @@ RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = yes
NKRO_ENABLE = yes
SPLIT_KEYBOARD = no
+SPACE_CADET_ENABLE = no
NO_SECRETS = yes
MACROS_ENABLED = yes
diff --git a/keyboards/keebio/viterbi/keymaps/drashna_old/config.h b/keyboards/keebio/viterbi/keymaps/drashna_old/config.h
index b36a4edd4..5697f7f11 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna_old/config.h
+++ b/keyboards/keebio/viterbi/keymaps/drashna_old/config.h
@@ -20,6 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../drashna/config.h"
#ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 12
+# undef RGBLED_NUM
+# define RGBLED_NUM 12
#endif
diff --git a/keyboards/massdrop/alt/config.h b/keyboards/massdrop/alt/config.h
index f63c38bf6..59e66e133 100644
--- a/keyboards/massdrop/alt/config.h
+++ b/keyboards/massdrop/alt/config.h
@@ -123,6 +123,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_LED_PROCESS_LIMIT 15
#define RGB_MATRIX_LED_FLUSH_LIMIT 10
-#define RGB_MATRIX_EXTRA_TOG
#include "config_led.h"
diff --git a/keyboards/massdrop/alt/config_led.c b/keyboards/massdrop/alt/config_led.c
index 7d98e47c9..42d4d1474 100644
--- a/keyboards/massdrop/alt/config_led.c
+++ b/keyboards/massdrop/alt/config_led.c
@@ -20,123 +20,34 @@
//
// There is a quick-and-dirty implementation of this under ledvis.html
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- /* 0 */ { { (0)|(0 << 4) }, { 8, 56 }, 0 }, // KC_ESC
- /* 1 */ { { (0)|(1 << 4) }, { 22, 56 }, 0 }, // KC_1
- /* 2 */ { { (0)|(2 << 4) }, { 35, 56 }, 0 }, // KC_2
- /* 3 */ { { (0)|(3 << 4) }, { 49, 56 }, 0 }, // KC_3
- /* 4 */ { { (0)|(4 << 4) }, { 63, 56 }, 0 }, // KC_4
- /* 5 */ { { (0)|(5 << 4) }, { 77, 56 }, 0 }, // KC_5
- /* 6 */ { { (0)|(6 << 4) }, { 91, 56 }, 0 }, // KC_6
- /* 7 */ { { (0)|(7 << 4) }, { 105, 56 }, 0 }, // KC_7
- /* 8 */ { { (0)|(8 << 4) }, { 118, 56 }, 0 }, // KC_8
- /* 9 */ { { (0)|(9 << 4) }, { 132, 56 }, 0 }, // KC_9
- /* 10 */ { { (0)|(10 << 4) }, { 146, 56 }, 0 }, // KC_0
- /* 11 */ { { (0)|(11 << 4) }, { 160, 56 }, 0 }, // KC_MINS
- /* 12 */ { { (0)|(12 << 4) }, { 174, 56 }, 0 }, // KC_EQL
- /* 13 */ { { (0)|(13 << 4) }, { 195, 56 }, 0 }, // KC_BSPC
- /* 14 */ { { (0)|(14 << 4) }, { 215, 56 }, 0 }, // KC_DEL
- /* 15 */ { { (1)|(0 << 4) }, { 11, 44 }, 0 }, // KC_TAB
- /* 16 */ { { (1)|(1 << 4) }, { 28, 44 }, 0 }, // KC_Q
- /* 17 */ { { (1)|(2 << 4) }, { 42, 44 }, 0 }, // KC_W
- /* 18 */ { { (1)|(3 << 4) }, { 56, 44 }, 0 }, // KC_E
- /* 19 */ { { (1)|(4 << 4) }, { 70, 44 }, 0 }, // KC_R
- /* 20 */ { { (1)|(5 << 4) }, { 84, 44 }, 0 }, // KC_T
- /* 21 */ { { (1)|(6 << 4) }, { 98, 44 }, 0 }, // KC_Y
- /* 22 */ { { (1)|(7 << 4) }, { 112, 44 }, 0 }, // KC_U
- /* 23 */ { { (1)|(8 << 4) }, { 125, 44 }, 0 }, // KC_I
- /* 24 */ { { (1)|(9 << 4) }, { 139, 44 }, 0 }, // KC_O
- /* 25 */ { { (1)|(10 << 4) }, { 153, 44 }, 0 }, // KC_P
- /* 26 */ { { (1)|(11 << 4) }, { 167, 44 }, 0 }, // KC_LBRC
- /* 27 */ { { (1)|(12 << 4) }, { 181, 44 }, 0 }, // KC_RBRC
- /* 28 */ { { (1)|(13 << 4) }, { 198, 44 }, 0 }, // KC_BSLS
- /* 29 */ { { (1)|(14 << 4) }, { 215, 44 }, 0 }, // KC_HOME
- /* 30 */ { { (2)|(0 << 4) }, { 13, 32 }, 1 }, // KC_CAPS
- /* 31 */ { { (2)|(1 << 4) }, { 32, 32 }, 0 }, // KC_A
- /* 32 */ { { (2)|(2 << 4) }, { 46, 32 }, 0 }, // KC_S
- /* 33 */ { { (2)|(3 << 4) }, { 60, 32 }, 0 }, // KC_D
- /* 34 */ { { (2)|(4 << 4) }, { 73, 32 }, 0 }, // KC_F
- /* 35 */ { { (2)|(5 << 4) }, { 87, 32 }, 0 }, // KC_G
- /* 36 */ { { (2)|(6 << 4) }, { 101, 32 }, 0 }, // KC_H
- /* 37 */ { { (2)|(7 << 4) }, { 115, 32 }, 0 }, // KC_J
- /* 38 */ { { (2)|(8 << 4) }, { 129, 32 }, 0 }, // KC_K
- /* 39 */ { { (2)|(9 << 4) }, { 143, 32 }, 0 }, // KC_L
- /* 40 */ { { (2)|(10 << 4) }, { 156, 32 }, 0 }, // KC_SCLN
- /* 41 */ { { (2)|(11 << 4) }, { 170, 32 }, 0 }, // KC_QUOT
- /* _________________________________________ */ // ____
- /* 42 */ { { (2)|(13 << 4) }, { 193, 32 }, 0 }, // KC_ENT
- /* 43 */ { { (2)|(14 << 4) }, { 215, 32 }, 0 }, // KC_PGUP
- /* 44 */ { { (3)|(0 << 4) }, { 16, 19 }, 0 }, // KC_LSFT
- /* 45 */ { { (3)|(2 << 4) }, { 39, 19 }, 0 }, // KC_Z
- /* 46 */ { { (3)|(3 << 4) }, { 53, 19 }, 0 }, // KC_X
- /* 47 */ { { (3)|(4 << 4) }, { 67, 19 }, 0 }, // KC_C
- /* 48 */ { { (3)|(5 << 4) }, { 80, 19 }, 0 }, // KC_V
- /* 49 */ { { (3)|(6 << 4) }, { 94, 19 }, 0 }, // KC_B
- /* 50 */ { { (3)|(7 << 4) }, { 108, 19 }, 0 }, // KC_N
- /* 51 */ { { (3)|(8 << 4) }, { 122, 19 }, 0 }, // KC_M
- /* 52 */ { { (3)|(9 << 4) }, { 136, 19 }, 0 }, // KC_COMM
- /* 53 */ { { (3)|(10 << 4) }, { 150, 19 }, 0 }, // KC_DOT
- /* 54 */ { { (3)|(11 << 4) }, { 163, 19 }, 0 }, // KC_SLSH
- /* 55 */ { { (3)|(12 << 4) }, { 182, 19 }, 0 }, // KC_RSFT
- /* _________________________________________ */ // ____
- /* 56 */ { { (3)|(13 << 4) }, { 201, 19 }, 0 }, // KC_UP
- /* 57 */ { { (3)|(14 << 4) }, { 215, 19 }, 0 }, // KC_PGDN
- /* 58 */ { { (4)|(0 << 4) }, { 9, 7 }, 0 }, // KC_LCTL
- /* 59 */ { { (4)|(1 << 4) }, { 27, 7 }, 0 }, // KC_LGUI
- /* 60 */ { { (4)|(2 << 4) }, { 44, 7 }, 0 }, // KC_LALT
- /* _________________________________________ */ // ____
- /* _________________________________________ */ // ____
- /* _________________________________________ */ // ____
- /* 61 */ { { (4)|(6 << 4) }, { 96, 7 }, 0 }, // KC_SPC
- /* _________________________________________ */ // ____
- /* _________________________________________ */ // ____
- /* _________________________________________ */ // ____
- /* 62 */ { { (4)|(10 << 4) }, { 148, 7 }, 0 }, // KC_RALT
- /* 63 */ { { (4)|(11 << 4) }, { 165, 7 }, 0 }, // MO(1)
- /* 64 */ { { (4)|(12 << 4) }, { 188, 7 }, 0 }, // KC_LEFT
- /* 65 */ { { (4)|(13 << 4) }, { 201, 7 }, 0 }, // KC_DOWN
- /* 66 */ { { (4)|(14 << 4) }, { 215, 7 }, 0 }, // KC_RGHT
-
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 },
+ { 44, NO_LED, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
+ { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66 }
+}, {
+ { 8, 56 }, { 22, 56 }, { 35, 56 }, { 49, 56 }, { 63, 56 }, { 77, 56 }, { 91, 56 }, { 105, 56 }, { 118, 56 }, { 132, 56 }, { 146, 56 }, { 160, 56 }, { 174, 56 }, { 195, 56 }, { 215, 56 },
+ { 11, 44 }, { 28, 44 }, { 42, 44 }, { 56, 44 }, { 70, 44 }, { 84, 44 }, { 98, 44 }, { 112, 44 }, { 125, 44 }, { 139, 44 }, { 153, 44 }, { 167, 44 }, { 181, 44 }, { 198, 44 }, { 215, 44 },
+ { 13, 32 }, { 32, 32 }, { 46, 32 }, { 60, 32 }, { 73, 32 }, { 87, 32 }, { 101, 32 }, { 115, 32 }, { 129, 32 }, { 143, 32 }, { 156, 32 }, { 170, 32 }, { 193, 32 }, { 215, 32 }, { 16, 19 },
+ { 39, 19 }, { 53, 19 }, { 67, 19 }, { 80, 19 }, { 94, 19 }, { 108, 19 }, { 122, 19 }, { 136, 19 }, { 150, 19 }, { 163, 19 }, { 182, 19 }, { 201, 19 }, { 215, 19 }, { 9, 7 }, { 27, 7 },
+ { 44, 7 }, { 96, 7 }, { 148, 7 }, { 165, 7 }, { 188, 7 }, { 201, 7 }, { 215, 7 },
+ // Underglow LEDs
+ { 1, 1 }, { 15, 0 }, { 31, 0 }, { 47, 0 }, { 63, 0 }, { 79, 0 }, { 95, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 222, 1 },
+ { 224, 13 }, { 224, 25 }, { 224, 38 }, { 224, 50 }, { 222, 62 }, { 191, 64 }, { 179, 64 }, { 167, 64 }, { 153, 64 }, { 139, 64 }, { 125, 64 }, { 112, 64 }, { 98, 64 }, { 84, 64 }, { 70, 64 },
+ { 56, 64 }, { 42, 64 }, { 28, 64 }, { 1, 62 }, { 0, 50 }, { 0, 38 }, { 0, 25 }, { 0, 13 }
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4,
// Underglow LEDs
- { { 255 }, { 1, 1 }, 0 },
- { { 255 }, { 15, 0 }, 0 },
- { { 255 }, { 31, 0 }, 0 },
- { { 255 }, { 47, 0 }, 0 },
- { { 255 }, { 63, 0 }, 0 },
- { { 255 }, { 79, 0 }, 0 },
- { { 255 }, { 95, 0 }, 0 },
- { { 255 }, { 112, 0 }, 0 },
- { { 255 }, { 128, 0 }, 0 },
- { { 255 }, { 144, 0 }, 0 },
- { { 255 }, { 160, 0 }, 0 },
- { { 255 }, { 176, 0 }, 0 },
- { { 255 }, { 192, 0 }, 0 },
- { { 255 }, { 208, 0 }, 0 },
- { { 255 }, { 222, 1 }, 0 },
- { { 255 }, { 224, 13 }, 0 },
- { { 255 }, { 224, 25 }, 0 },
- { { 255 }, { 224, 38 }, 0 },
- { { 255 }, { 224, 50 }, 0 },
- { { 255 }, { 222, 62 }, 0 },
- { { 255 }, { 191, 64 }, 0 },
- { { 255 }, { 179, 64 }, 0 },
- { { 255 }, { 167, 64 }, 0 },
- { { 255 }, { 153, 64 }, 0 },
- { { 255 }, { 139, 64 }, 0 },
- { { 255 }, { 125, 64 }, 0 },
- { { 255 }, { 112, 64 }, 0 },
- { { 255 }, { 98, 64 }, 0 },
- { { 255 }, { 84, 64 }, 0 },
- { { 255 }, { 70, 64 }, 0 },
- { { 255 }, { 56, 64 }, 0 },
- { { 255 }, { 42, 64 }, 0 },
- { { 255 }, { 28, 64 }, 0 },
- { { 255 }, { 1, 62 }, 0 },
- { { 255 }, { 0, 50 }, 0 },
- { { 255 }, { 0, 38 }, 0 },
- { { 255 }, { 0, 25 }, 0 },
- { { 255 }, { 0, 13 }, 0 },
-};
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2
+} };
+
#ifdef USB_LED_INDICATOR_ENABLE
void rgb_matrix_indicators_kb(void)
diff --git a/keyboards/massdrop/alt/keymaps/abishalom/keymap.c b/keyboards/massdrop/alt/keymaps/abishalom/keymap.c
index a4519d404..f6f79ad91 100644
--- a/keyboards/massdrop/alt/keymaps/abishalom/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/abishalom/keymap.c
@@ -95,6 +95,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
default:
return true; //Process all other keycodes normally
}
diff --git a/keyboards/massdrop/alt/keymaps/default/keymap.c b/keyboards/massdrop/alt/keymaps/default/keymap.c
index a4519d404..f6f79ad91 100644
--- a/keyboards/massdrop/alt/keymaps/default/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/default/keymap.c
@@ -95,6 +95,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
default:
return true; //Process all other keycodes normally
}
diff --git a/keyboards/massdrop/alt/keymaps/mac/keymap.c b/keyboards/massdrop/alt/keymaps/mac/keymap.c
index 26a1c6d01..222d7e2c5 100644
--- a/keyboards/massdrop/alt/keymaps/mac/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/mac/keymap.c
@@ -95,6 +95,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
default:
return true; //Process all other keycodes normally
}
diff --git a/keyboards/massdrop/ctrl/config.h b/keyboards/massdrop/ctrl/config.h
index df2e50921..9b9f98f5f 100644
--- a/keyboards/massdrop/ctrl/config.h
+++ b/keyboards/massdrop/ctrl/config.h
@@ -123,6 +123,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_LED_PROCESS_LIMIT 15
#define RGB_MATRIX_LED_FLUSH_LIMIT 10
-#define RGB_MATRIX_EXTRA_TOG
#include "config_led.h"
diff --git a/keyboards/massdrop/ctrl/config_led.c b/keyboards/massdrop/ctrl/config_led.c
index afdbf3a22..5f1c45207 100644
--- a/keyboards/massdrop/ctrl/config_led.c
+++ b/keyboards/massdrop/ctrl/config_led.c
@@ -5,134 +5,72 @@
#include "rgb_matrix.h"
#include "config_led.h"
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 16, 17, 18, 19, 20, 21, 22, 23 },
+ { 33, 34, 35, 36, 37, 38, 39, 40 },
+ { 50, 51, 52, 53, 54, 55, 56, 57 },
+ { 63, 64, 65, 66, 67, 68, 69, 70 },
+ { 76, 77, 78, 79, 80, 81, 82, 83 },
+ { 8, 9, 10, 11, 12, 13, 14, 15 },
+ { 24, 25, 26, 27, 28, 29, 30, 31 },
+ { 41, 42, 43, 44, 45, 46, 47, 48 },
+ { 58, 59, 60, 61, 62, 75, 49, 32 },
+ { 71, 72, 73, 74, 84, 85, 86, NO_LED }
+}, {
// KC_ESC, KC_F1, KC_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
- { { 0|(0<<4) }, { 7, 5 }, 0 },
- { { 0|(1<<4) }, { 31, 5 }, 0 },
- { { 0|(2<<4) }, { 43, 5 }, 0 },
- { { 0|(3<<4) }, { 55, 5 }, 0 },
- { { 0|(4<<4) }, { 67, 5 }, 0 },
- { { 0|(5<<4) }, { 85, 5 }, 0 },
- { { 0|(6<<4) }, { 97, 5 }, 0 },
- { { 0|(7<<4) }, { 109, 5 }, 0 },
- { { 6|(0<<4) }, { 121, 5 }, 0 },
- { { 6|(1<<4) }, { 139, 5 }, 0 },
- { { 6|(2<<4) }, { 151, 5 }, 0 },
- { { 6|(3<<4) }, { 163, 5 }, 0 },
- { { 6|(4<<4) }, { 175, 5 }, 0 },
- { { 6|(5<<4) }, { 193, 5 }, 0 },
- { { 6|(6<<4) }, { 205, 5 }, 1 },
- { { 6|(7<<4) }, { 217, 5 }, 0 },
+ { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 },
+ { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
// KC_GRV, KC_1, KC_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
- { { 1|(0<<4) }, { 7, 20 }, 0 },
- { { 1|(1<<4) }, { 19, 20 }, 0 },
- { { 1|(2<<4) }, { 31, 20 }, 0 },
- { { 1|(3<<4) }, { 43, 20 }, 0 },
- { { 1|(4<<4) }, { 55, 20 }, 0 },
- { { 1|(5<<4) }, { 67, 20 }, 0 },
- { { 1|(6<<4) }, { 79, 20 }, 0 },
- { { 1|(7<<4) }, { 91, 20 }, 0 },
- { { 7|(0<<4) }, { 103, 20 }, 0 },
- { { 7|(1<<4) }, { 115, 20 }, 0 },
- { { 7|(2<<4) }, { 127, 20 }, 0 },
- { { 7|(3<<4) }, { 139, 20 }, 0 },
- { { 7|(4<<4) }, { 151, 20 }, 0 },
- { { 7|(5<<4) }, { 169, 20 }, 0 },
- { { 7|(6<<4) }, { 193, 20 }, 0 },
- { { 7|(7<<4) }, { 205, 20 }, 0 },
- { { 9|(7<<4) }, { 217, 20 }, 0 },
+ { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 },
+ { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 },
+ { 217, 20 },
// KC_TAB, KC_Q, KC_W, KC_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
- { { 2|(0<<4) }, { 10, 30 }, 0 },
- { { 2|(1<<4) }, { 25, 30 }, 0 },
- { { 2|(2<<4) }, { 37, 30 }, 0 },
- { { 2|(3<<4) }, { 49, 30 }, 0 },
- { { 2|(4<<4) }, { 61, 30 }, 0 },
- { { 2|(5<<4) }, { 73, 30 }, 0 },
- { { 2|(6<<4) }, { 85, 30 }, 0 },
- { { 2|(7<<4) }, { 97, 30 }, 0 },
- { { 8|(0<<4) }, { 109, 30 }, 0 },
- { { 8|(1<<4) }, { 121, 30 }, 0 },
- { { 8|(2<<4) }, { 133, 30 }, 0 },
- { { 8|(3<<4) }, { 145, 30 }, 0 },
- { { 8|(4<<4) }, { 157, 30 }, 0 },
- { { 8|(5<<4) }, { 172, 30 }, 0 },
- { { 8|(6<<4) }, { 193, 30 }, 0 },
- { { 8|(7<<4) }, { 205, 30 }, 0 },
- { { 9|(6<<4) }, { 217, 30 }, 0 },
+ { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 },
+ { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 },
+ { 217, 30 },
// KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT
- { { 3|(0<<4) }, { 11, 39 }, 1 },
- { { 3|(1<<4) }, { 28, 39 }, 0 },
- { { 3|(2<<4) }, { 40, 39 }, 0 },
- { { 3|(3<<4) }, { 52, 39 }, 0 },
- { { 3|(4<<4) }, { 64, 39 }, 0 },
- { { 3|(5<<4) }, { 76, 39 }, 0 },
- { { 3|(6<<4) }, { 88, 39 }, 0 },
- { { 3|(7<<4) }, { 100, 39 }, 0 },
- { { 9|(0<<4) }, { 112, 39 }, 0 },
- { { 9|(1<<4) }, { 124, 39 }, 0 },
- { { 9|(2<<4) }, { 136, 39 }, 0 },
- { { 9|(3<<4) }, { 148, 39 }, 0 },
- { { 9|(4<<4) }, { 168, 39 }, 0 },
+ { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 },
+ { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
// KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP
- { { 4|(0<<4) }, { 14, 49 }, 0 },
- { { 4|(1<<4) }, { 34, 49 }, 0 },
- { { 4|(2<<4) }, { 46, 49 }, 0 },
- { { 4|(3<<4) }, { 58, 49 }, 0 },
- { { 4|(4<<4) }, { 70, 49 }, 0 },
- { { 4|(5<<4) }, { 82, 49 }, 0 },
- { { 4|(6<<4) }, { 94, 49 }, 0 },
- { { 4|(7<<4) }, { 106, 49 }, 0 },
- { { 10|(0<<4) }, { 118, 49 }, 0 },
- { { 10|(1<<4) }, { 130, 49 }, 0 },
- { { 10|(2<<4) }, { 142, 49 }, 0 },
- { { 10|(3<<4) }, { 165, 49 }, 0 },
- { { 9|(5<<4) }, { 205, 49 }, 0 },
+ { 14, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 },
+ { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
// KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- { { 5|(0<<4) }, { 8, 59 }, 0 },
- { { 5|(1<<4) }, { 23, 59 }, 0 },
- { { 5|(2<<4) }, { 38, 59 }, 0 },
- { { 5|(3<<4) }, { 83, 59 }, 0 },
- { { 5|(4<<4) }, { 129, 59 }, 0 },
- { { 5|(5<<4) }, { 144, 59 }, 0 },
- { { 5|(6<<4) }, { 159, 59 }, 0 },
- { { 5|(7<<4) }, { 174, 59 }, 0 },
- { { 10|(4<<4) }, { 193, 59 }, 0 },
- { { 10|(5<<4) }, { 205, 59 }, 0 },
- { { 10|(6<<4) }, { 217, 59 }, 0 },
+ { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 },
+ { 193, 59 }, { 205, 59 }, { 217, 59 },
// Underglow / Border
- { { 0xFF }, { 222, 64 }, 0 },
- { { 0xFF }, { 204, 64 }, 0 },
- { { 0xFF }, { 186, 64 }, 0 },
- { { 0xFF }, { 167, 64 }, 0 },
- { { 0xFF }, { 149, 64 }, 0 },
- { { 0xFF }, { 130, 64 }, 0 },
- { { 0xFF }, { 112, 64 }, 0 },
- { { 0xFF }, { 94, 64 }, 0 },
- { { 0xFF }, { 75, 64 }, 0 },
- { { 0xFF }, { 57, 64 }, 0 },
- { { 0xFF }, { 38, 64 }, 0 },
- { { 0xFF }, { 20, 64 }, 0 },
- { { 0xFF }, { 0, 64 }, 0 },
- { { 0xFF }, { 0, 47 }, 0 },
- { { 0xFF }, { 0, 32 }, 0 },
- { { 0xFF }, { 0, 17 }, 0 },
- { { 0xFF }, { 0, 0 }, 0 },
- { { 0xFF }, { 20, 0 }, 0 },
- { { 0xFF }, { 38, 0 }, 0 },
- { { 0xFF }, { 57, 0 }, 0 },
- { { 0xFF }, { 75, 0 }, 0 },
- { { 0xFF }, { 94, 0 }, 0 },
- { { 0xFF }, { 112, 0 }, 0 },
- { { 0xFF }, { 130, 0 }, 0 },
- { { 0xFF }, { 149, 0 }, 0 },
- { { 0xFF }, { 167, 0 }, 0 },
- { { 0xFF }, { 186, 0 }, 0 },
- { { 0xFF }, { 204, 0 }, 0 },
- { { 0xFF }, { 222, 1 }, 0 },
- { { 0xFF }, { 224, 17 }, 0 },
- { { 0xFF }, { 224, 32 }, 0 },
- { { 0xFF }, { 224, 47 }, 0 },
-};
+ { 222, 64 }, { 204, 64 }, { 186, 64 }, { 167, 64 }, { 149, 64 }, { 130, 64 }, { 112, 64 }, { 94, 64 },
+ { 75, 64 }, { 57, 64 }, { 38, 64 }, { 20, 64 }, { 0, 64 }, { 0, 47 }, { 0, 32 }, { 0, 17 },
+ { 0, 0 }, { 20, 0 }, { 38, 0 }, { 57, 0 }, { 75, 0 }, { 94, 0 }, { 112, 0 }, { 130, 0 },
+ { 149, 0 }, { 167, 0 }, { 186, 0 }, { 204, 0 }, { 222, 1 }, { 224, 17 }, { 224, 32 }, { 224, 47 }
+}, {
+ // KC_ESC, KC_F1, KC_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
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 1, 4,
+ // KC_GRV, KC_1, KC_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
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4,
+ // KC_TAB, KC_Q, KC_W, KC_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
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4,
+ // KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT
+ 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4,
+ // KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4,
+ // KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4,
+ // Underglow / Border
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2
+} };
+
#ifdef USB_LED_INDICATOR_ENABLE
void rgb_matrix_indicators_kb(void)
diff --git a/keyboards/massdrop/ctrl/keymaps/default/keymap.c b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
index 182abbbad..53c96d95d 100644
--- a/keyboards/massdrop/ctrl/keymaps/default/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
@@ -98,6 +98,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
default:
return true; //Process all other keycodes normally
}
diff --git a/keyboards/massdrop/ctrl/keymaps/mac/keymap.c b/keyboards/massdrop/ctrl/keymaps/mac/keymap.c
index 41cf82757..79fe7388a 100644
--- a/keyboards/massdrop/ctrl/keymaps/mac/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/mac/keymap.c
@@ -98,6 +98,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
default:
return true; //Process all other keycodes normally
}
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
new file mode 100644
index 000000000..35fd44619
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
@@ -0,0 +1,52 @@
+#pragma once
+
+#define FORCE_NKRO
+
+#define PERMISSIVE_HOLD
+#define TAPPING_TERM 150
+
+// #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_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_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
+
+#define QMK_KEYS_PER_SCAN 4
+
+// #define RGB_MATRIX_KEYRELEASES
+
+
+// some speed shit
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+#define NO_PRINT
+#endif // !NO_PRINT
+
+#define NO_ACTION_ONESHOT
+#define TAPPING_FORCE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/keymap.c b/keyboards/massdrop/ctrl/keymaps/matthewrobo/keymap.c
new file mode 100644
index 000000000..b4339a4d4
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/keymap.c
@@ -0,0 +1,405 @@
+#include QMK_KEYBOARD_H
+extern bool g_suspend_state;
+
+enum ctrl_layers {
+ _QWERTY,
+ _NAV,
+ _FNC
+};
+
+enum ctrl_keycodes {
+ U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
+ U_T_AGCR, //USB Toggle Automatic GCR control
+ DBG_TOG, //DEBUG Toggle On / Off
+ DBG_MTRX, //DEBUG Toggle Matrix Prints
+ DBG_KBD, //DEBUG Toggle Keyboard Prints
+ DBG_MOU, //DEBUG Toggle Mouse Prints
+ MD_BOOT, //Restart into bootloader after hold timeout
+ MAS_TOG,
+ MAS_CRM,
+ MAS_PRP,
+ MAS_RED,
+ MAS_GRN,
+ MAS_BLU,
+ MAS_CYN,
+ MAS_MGT,
+ MAS_YEL,
+ MAS_KEY,
+ MAS_WHT,
+};
+
+#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
+#define LT_CAPS LT(_NAV, KC_CAPS)
+#define _V_V_V_ KC_TRNS
+extern rgb_config_t rgb_matrix_config;
+extern bool autoshift_enabled;
+
+
+keymap_config_t keymap_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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, \
+ LT_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FNC), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+ [_NAV] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, \
+ _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, _______, KC_EQL, _______, _______, _______, \
+ _V_V_V_, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PPLS, _______, \
+ _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, KC_P0, KC_PDOT, KC_PSLS, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ [_FNC] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MSEL, KC_ASTG, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_VOLU, \
+ _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, MAS_MGT, MAS_BLU, MAS_WHT, RGB_RMOD, RGB_MOD, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
+ _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, MAS_RED, MAS_KEY, MAS_CYN, MAS_PRP, _______, _______, \
+ MAS_TOG, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, MAS_YEL, MAS_GRN, MAS_CRM, _______, _______, RGB_VAI, \
+ _______, _______, _______, _______, _______, _V_V_V_, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI \
+ ),
+ /*
+ [X] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ [X] = LAYOUT(
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, \
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, \
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, \
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, \
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, \
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 \
+ ),
+ */
+};
+
+extern rgb_led g_rgb_leds[DRIVER_LED_TOTAL];
+void set_color_helper(int index, uint8_t red, uint8_t green, uint8_t blue)
+{
+ if (!HAS_ANY_FLAGS(g_rgb_leds[index].flags, rgb_matrix_get_flags()))
+ { return; }
+
+ rgb_matrix_set_color(index, red, green, blue);
+}
+
+void rgb_matrix_indicators_user(void)
+{
+ uint8_t this_led = host_keyboard_leds();
+
+ if (!g_suspend_state && rgb_matrix_config.enable) {
+ switch (biton32(layer_state)) {
+ case _NAV:
+ if (this_led & (1 << USB_LED_NUM_LOCK)) {
+ rgb_matrix_set_color(41, 0xFF, 0x00, 0x00);
+ } else {
+ rgb_matrix_set_color(41, 0x00, 0x00, 0x00);
+ }
+
+ // layer indicator
+ rgb_matrix_set_color(50, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(101, 0xFF, 0xFF, 0xFF);
+ // ESDF
+ rgb_matrix_set_color(36, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(52, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(53, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(54, 0xFF, 0x00, 0x00);
+ // home/end
+ rgb_matrix_set_color(35, 0x00, 0xFF, 0x00);
+ rgb_matrix_set_color(37, 0x00, 0xFF, 0x00);
+ // pgup/dn
+ rgb_matrix_set_color(34, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(51, 0x00, 0x00, 0xFF);
+ // numpad
+ rgb_matrix_set_color(23, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(24, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(25, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(42, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(57, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(58, 0xFF, 0xFF, 0x00);
+ rgb_matrix_set_color(59, 0xFF, 0xFF, 0x00);
+ // zero
+ rgb_matrix_set_color(69, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(70, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(71, 0xFF, 0x00, 0x00);
+ // dot
+ rgb_matrix_set_color(72, 0x00, 0x00, 0xFF);
+ // math shit
+ rgb_matrix_set_color(26, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(27, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(28, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(43, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(46, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(60, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(61, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(73, 0x00, 0x00, 0xFF);
+ break;
+
+ case _FNC: {
+ HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
+ HSV hui = hsv;
+ HSV hud = hsv;
+ HSV sai = hsv;
+ HSV sad = hsv;
+ HSV vai = hsv;
+ HSV vad = hsv;
+ hui.h = hsv.h + 8;
+ hud.h = hsv.h - 8;
+ sai.s = hsv.s + 16 > 255 ? 255u : hsv.s + 16;
+ sad.s = hsv.s - 16 < 0 ? 0 : hsv.s - 16;
+ vai.v = hsv.v + 16 > 255 ? 255 : hsv.v + 16;
+ vad.v = hsv.v - 16 < 0 ? 0 : hsv.v - 16;
+ RGB rgb = hsv_to_rgb(hsv);
+ RGB rgbHUI = hsv_to_rgb(hui);
+ RGB rgbHUD = hsv_to_rgb(hud);
+ RGB rgbSAI = hsv_to_rgb(sai);
+ RGB rgbSAD = hsv_to_rgb(sad);
+ RGB rgbVAI = hsv_to_rgb(vai);
+ RGB rgbVAD = hsv_to_rgb(vad);
+ rgb_matrix_set_color(81, 0xFF, 0xFF, 0xFF); // layer indicator
+ rgb_matrix_set_color(91, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(93, 0x00, 0x00, 0x00);
+ rgb_matrix_set_color(94, rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color(95, rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color(96, 0x00, 0x00, 0x00);
+ rgb_matrix_set_color(68, 0xFF, 0x00, 0x00); // MD_BOOT
+ rgb_matrix_set_color(69, 0xFF, 0x00, 0x40); // TG_NKRO
+ rgb_matrix_set_color(32, 0x00, 0x80, 0xFF); // KC_VOLU
+ rgb_matrix_set_color(49, 0x00, 0x80, 0xFF);
+ rgb_matrix_set_color(13, 0xFF, 0x00, 0x00); // KC_MUTE
+ rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // KC_MSTP
+ rgb_matrix_set_color(47, 0xFF, 0x40, 0x00); // KC_MPRV
+ rgb_matrix_set_color(48, 0xFF, 0x40, 0x00);
+ rgb_matrix_set_color(14, 0x00, 0xFF, 0x00); // KC_MSEL
+ rgb_matrix_set_color(31, 0x00, 0xFF, 0x00); // KC_MPLY
+
+ if (this_led & (1 << !autoshift_enabled)) {
+ rgb_matrix_set_color(15, 0xFF, 0x00, 0x00); // KC_ASTG
+ } else {
+ rgb_matrix_set_color(15, 0xFF, 0xFF, 0x00);
+ }
+
+ rgb_matrix_set_color(44, 0xFF, 0x80, 0x00); //RGB_MOD
+ rgb_matrix_set_color(45, 0xFF, 0x80, 0x00);
+ rgb_matrix_set_color(34, 0xFF, 0x80, 0x00); //RGB_MOD
+ rgb_matrix_set_color(51, 0xFF, 0x80, 0x00);
+ rgb_matrix_set_color(63, 0xFF, 0x40, 0x00); //RGB_TOG
+ rgb_matrix_set_color(64, rgb.r, rgb.g, rgb.b); //MAS_TOG
+ rgb_matrix_set_color(36, rgbHUI.r, rgbHUI.g, rgbHUI.b); //RGB_HUI
+ rgb_matrix_set_color(53, rgbHUD.r, rgbHUD.g, rgbHUD.b);
+ rgb_matrix_set_color(37, rgbSAI.r, rgbSAI.g, rgbSAI.b); //RGB_SAI
+ rgb_matrix_set_color(54, rgbSAD.r, rgbSAD.g, rgbSAD.b);
+ rgb_matrix_set_color(38, rgbVAI.r, rgbVAI.g, rgbVAI.b); //RGB_VAI
+ rgb_matrix_set_color(55, rgbVAD.r, rgbVAD.g, rgbVAD.b);
+ rgb_matrix_set_color(79, rgb.r, rgb.g, rgb.b); // config display
+ rgb_matrix_set_color(75, rgbVAI.r, rgbVAI.g, rgbVAI.b); //RGB_VAI
+ rgb_matrix_set_color(85, rgbVAD.r, rgbVAD.g, rgbVAD.b);
+ rgb_matrix_set_color(35, 0x80, 0x80, 0x80); //RGB_SPI
+ rgb_matrix_set_color(52, 0x80, 0x80, 0x80);
+ rgb_matrix_set_color(84, 0x80, 0x80, 0x80); //RGB_SPI
+ rgb_matrix_set_color(86, 0x80, 0x80, 0x80);
+ rgb_matrix_set_color(41, 0xF0, 0x00, 0xFF); //MAS_MGT
+ rgb_matrix_set_color(42, 0x00, 0x02, 0xFF); //MAS_BLU
+ rgb_matrix_set_color(57, 0xFF, 0x00, 0x00); //MAS_RED
+ rgb_matrix_set_color(58, 0x00, 0x00, 0x00); //MAS_KEY
+ rgb_matrix_set_color(59, 0x00, 0xFF, 0xF7); //MAS_CYN
+ rgb_matrix_set_color(70, 0xFF, 0xDA, 0x00); //MAS_YEL
+ rgb_matrix_set_color(71, 0x00, 0xFF, 0x01); //MAS_GRN
+ rgb_matrix_set_color(72, 0xFF, 0xA5, 0x18); //MAS_CRM
+ rgb_matrix_set_color(60, 0x81, 0x3C, 0xFF); //MAS_PRP
+ rgb_matrix_set_color(26, 0xFF, 0xFF, 0xFF); //MAS_WHT
+ }
+ break;
+ }
+ }
+}
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void)
+{
+ autoshift_disable();
+ rgb_matrix_sethsv(192, 112, 255);
+ rgb_matrix_mode(4);
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void)
+{
+};
+
+#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
+#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
+#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record)
+{
+ static uint32_t key_timer;
+
+ switch (keycode) {
+ case U_T_AUTO:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
+ }
+
+ return false;
+
+ case U_T_AGCR:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
+ }
+
+ return false;
+
+ case DBG_TOG:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
+ }
+
+ return false;
+
+ case DBG_MTRX:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
+ }
+
+ return false;
+
+ case DBG_KBD:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
+ }
+
+ return false;
+
+ case DBG_MOU:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
+ }
+
+ return false;
+
+ case MD_BOOT:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+
+ return false;
+
+ case MAS_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+
+ case LED_FLAG_KEYLIGHT: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ }
+ break;
+ }
+ }
+
+ return false;
+
+ case MAS_CRM:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(32, 160, 255);
+ }
+
+ return false;
+
+ case MAS_PRP:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(192, 112, 255);
+ }
+
+ return false;
+
+ case MAS_RED:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(0, 255, 255);
+ }
+
+ return false;
+
+ case MAS_GRN:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(88, 255, 255);
+ }
+
+ return false;
+
+ case MAS_BLU:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(168, 255, 255);
+ }
+
+ return false;
+
+ case MAS_CYN:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(128, 255, 255);
+ }
+
+ return false;
+
+ case MAS_MGT:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(216, 255, 255);
+ }
+
+ return false;
+
+ case MAS_YEL:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(40, 255, 255);
+ }
+
+ return false;
+
+ case MAS_KEY:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(0, 0, 0);
+ }
+
+ return false;
+
+ case MAS_WHT:
+ if (record->event.pressed) {
+ rgb_matrix_sethsv(128, 0, 255);
+ }
+
+ return false;
+
+ default:
+ return true; //Process all other keycodes normally
+ }
+}
+
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk
new file mode 100644
index 000000000..4fb7826ce
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk
@@ -0,0 +1,2 @@
+NKRO_ENABLE = yes # USB Nkey Rollover
+AUTO_SHIFT_ENABLE = yes # Auto Shift
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c
index 1150e5dc7..7d65a0e98 100644
--- a/keyboards/melody96/keymaps/konstantin/keymap.c
+++ b/keyboards/melody96/keymaps/konstantin/keymap.c
@@ -2,77 +2,77 @@
#include "konstantin.h"
static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
-static size_t cnum = sizeof colors / sizeof *colors;
+static const size_t cnum = sizeof colors / sizeof *colors;
static size_t cidx = 0;
-void eeconfig_init_keymap(void) {
- rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
-}
-
enum keycodes_keymap {
- RGB_SET = RANGE_KEYMAP,
+ RGB_SET = RANGE_KEYMAP,
};
+void eeconfig_init_keymap(void) {
+ rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
+}
+
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case RGB_SET:
- if (record->event.pressed) {
- cidx = (cidx + 1) % cnum;
- rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
- }
- return false;
+ switch (keycode) {
+ case RGB_SET:
+ if (record->event.pressed) {
+ cidx = (cidx + 1) % cnum;
+ rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
+ }
+ return false;
- default:
- return true;
- }
+ default:
+ return true;
+ }
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Base layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
- * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
- * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │P4 │P5 │P6 │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
- * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │P1 │P2 │P3 │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│
- * │LCtl│LGui│LAlt│ Space │RAlGu│RCtrl│ ← │ ↓ │ → │P0 │P. │ │
- * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
- */
- [L_BASE] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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, XXXXXXX,
- FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, RAL_RGU, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
- ),
+ /* Base layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
+ * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │P4 │P5 │P6 │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
+ * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │P1 │P2 │P3 │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤PEn│
+ * │LCtl│LGui│LAlt│ Space │RAG│FnL│RCt│ ← │ ↓ │ → │P0 │P. │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [L_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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, XXXXXXX,
+ FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, RAL_RGU, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
- /* Function layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │Sys│SLk│Pau│Brk│Top│Btm│
- * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │RTg│ ÷ │ × │ − │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
- * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
- * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │RH-│RS-│RV-│ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
- * │ │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ │PgU│RMR│RMS│RMB│ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤RMP│
- * │ │DtPR│DtNA│ MW↓ │ │ App │Hom│PgD│End│RM-│RM+│ │
- * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
- */
- [L_FN] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSR, KC_SLCK, KC_PAUS, KC_BRK, TOP, BOTTOM,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, DIVIDE, TIMES, MINUS,
- KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
- _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
- _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
- _______, DST_P_R, DST_N_A, KC_WH_D, _______, XXXXXXX, KC_APP, KC_HOME, KC_PGDN, KC_END, RGB_RMOD,RGB_MOD, RGB_M_P
- ),
+ /* Function layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │Sys│SLk│Pau│Brk│Top│Btm│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │RTg│ ÷ │ × │ − │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
+ * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
+ * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │RH-│RS-│RV-│ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
+ * │ │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ │PgU│RMR│RMS│RMB│ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤RMP│
+ * │ │DtPR│DtNA│ MW↓ │ │ │App│Hom│PgD│End│RM-│RM+│ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [L_FN] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSR, KC_SLCK, KC_PAUS, KC_BRK, TOP, BOTTOM,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, DIVIDE, TIMES, MINUS,
+ KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
+ _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
+ _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
+ _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_APP, KC_HOME, KC_PGDN, KC_END, RGB_RMOD,RGB_MOD, RGB_M_P
+ ),
};
diff --git a/keyboards/miniaxe/keymaps/wanleg/config.h b/keyboards/miniaxe/keymaps/wanleg/config.h
new file mode 100644
index 000000000..0f20ea455
--- /dev/null
+++ b/keyboards/miniaxe/keymaps/wanleg/config.h
@@ -0,0 +1,11 @@
+#pragma once
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+//#define QMK_ESC_OUTPUT F1 // usually COL
+//#define QMK_ESC_INPUT D6 // usually ROW // connected to nothing on the miniaxe
+//#define QMK_LED D7 //connected to nothing on the miniaxe
diff --git a/keyboards/miniaxe/keymaps/wanleg/keymap.c b/keyboards/miniaxe/keymaps/wanleg/keymap.c
new file mode 100644
index 000000000..69233741b
--- /dev/null
+++ b/keyboards/miniaxe/keymaps/wanleg/keymap.c
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+#include "wanleg.h"
+
+#define LAYOUT_miniaxe_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_wrapper( \
+ 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, \
+ _______, NUMBER, ETCETERA, KC_SPC, DIRECTION, KC_RGUI \
+ )
+#define LAYOUT_miniaxe_base_wrapper(...) LAYOUT_miniaxe_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_GK] = LAYOUT_miniaxe_base_wrapper(
+ _______________Gherkin_Row_0_______________,
+ _______________Gherkin_Row_1_______________,
+ SFT_T(KC_Z), KC_X, KC_C, LT(NUM,KC_V), LT(ETC,KC_B), LT(_FN,KC_N), LT(DIR,KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC)
+),
+
+[NUM] = LAYOUT_wrapper(
+ _______________Gherkin_NUM_0_______________,
+ _______________Gherkin_NUM_1_______________,
+ _______________Gherkin_NUM_2_______________,
+ _______, _______, _______, KC_ENT, KC_RSFT, _______
+),
+
+[DIR] = LAYOUT_miniaxe_base_wrapper(
+ _______________Gherkin_DIR_0_______________,
+ _______________Gherkin_DIR_1_______________,
+ _______________Gherkin_DIR_2_______________
+),
+
+[ETC] = LAYOUT_wrapper(
+ _______________Gherkin_ETC_0_______________,
+ _______________Gherkin_ETC_1_______________,
+ _______________Gherkin_ETC_2_______________,
+ _______, NUMBER, ETCETERA, LALT(LCTL(KC_DEL)), DIRECTION, KC_RGUI
+),
+
+[_FN] = LAYOUT_miniaxe_base_wrapper(
+ _______________Gherkin_FN_0________________,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+}; \ No newline at end of file
diff --git a/keyboards/miniaxe/keymaps/wanleg/rules.mk b/keyboards/miniaxe/keymaps/wanleg/rules.mk
new file mode 100644
index 000000000..ae5ae549c
--- /dev/null
+++ b/keyboards/miniaxe/keymaps/wanleg/rules.mk
@@ -0,0 +1,18 @@
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+#BOOTLOADER = qmk-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096 \ No newline at end of file
diff --git a/keyboards/mint60/config.h b/keyboards/mint60/config.h
index eda933d3a..35449eb26 100644
--- a/keyboards/mint60/config.h
+++ b/keyboards/mint60/config.h
@@ -31,6 +31,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
+#define USE_SERIAL
+
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/mint60/keymaps/default/config.h b/keyboards/mint60/keymaps/default/config.h
index 0195c61df..9af2f45cf 100644
--- a/keyboards/mint60/keymaps/default/config.h
+++ b/keyboards/mint60/keymaps/default/config.h
@@ -17,7 +17,7 @@
#pragma once
/* Use I2C or Serial, not both */
-#define USE_SERIAL
+// #define USE_SERIAL
// #define USE_I2C
// #define MASTER_RIGHT
diff --git a/keyboards/mint60/keymaps/eucalyn/config.h b/keyboards/mint60/keymaps/eucalyn/config.h
index 0195c61df..9af2f45cf 100644
--- a/keyboards/mint60/keymaps/eucalyn/config.h
+++ b/keyboards/mint60/keymaps/eucalyn/config.h
@@ -17,7 +17,7 @@
#pragma once
/* Use I2C or Serial, not both */
-#define USE_SERIAL
+// #define USE_SERIAL
// #define USE_I2C
// #define MASTER_RIGHT
diff --git a/keyboards/model01/leds.c b/keyboards/model01/leds.c
index 7a62c7424..b21c1a5c8 100644
--- a/keyboards/model01/leds.c
+++ b/keyboards/model01/leds.c
@@ -46,72 +46,35 @@ void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b) {
#ifdef RGB_MATRIX_ENABLE
__attribute__ ((weak))
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
- {{0x73}, { 3, 35}, 0},
- {{0x72}, { 0, 26}, 0},
- {{0x71}, { 0, 17}, 0},
- {{0x70}, { 0, 6}, 0},
- {{0x60}, { 14, 5}, 0},
- {{0x61}, { 15, 16}, 0},
- {{0x62}, { 16, 25}, 0},
- {{0x63}, { 17, 34}, 0},
- {{0x53}, { 31, 29}, 0},
- {{0x52}, { 31, 19}, 0},
- {{0x51}, { 30, 11}, 0},
- {{0x50}, { 30, 1}, 0},
- {{0x40}, { 45, 0}, 0},
- {{0x41}, { 45, 8}, 0},
- {{0x42}, { 46, 17}, 0},
- {{0x43}, { 46, 27}, 0},
- {{0x33}, { 60, 27}, 0},
- {{0x32}, { 60, 18}, 0},
- {{0x31}, { 60, 9}, 0},
- {{0x30}, { 60, 0}, 0},
- {{0x20}, { 74, 2}, 0},
- {{0x21}, { 74, 11}, 0},
- {{0x22}, { 75, 20}, 0},
- {{0x23}, { 74, 28}, 0},
- {{0x12}, { 89, 30}, 0},
- {{0x11}, { 89, 19}, 0},
- {{0x10}, { 89, 7}, 0},
- {{0x00}, { 70, 38}, 1},
- {{0x01}, { 82, 41}, 1},
- {{0x02}, { 93, 45}, 1},
- {{0x03}, {104, 50}, 1},
- {{0x13}, { 74, 64}, 1},
- {{0x67}, {149, 64}, 1},
- {{0x77}, {119, 50}, 1},
- {{0x76}, {130, 45}, 1},
- {{0x75}, {141, 41}, 1},
- {{0x74}, {153, 38}, 1},
- {{0x64}, {134, 7}, 0},
- {{0x65}, {134, 19}, 0},
- {{0x66}, {134, 30}, 0},
- {{0x57}, {149, 28}, 0},
- {{0x56}, {148, 20}, 0},
- {{0x55}, {149, 11}, 0},
- {{0x54}, {149, 2}, 0},
- {{0x44}, {163, 0}, 0},
- {{0x45}, {163, 9}, 0},
- {{0x46}, {163, 18}, 0},
- {{0x47}, {163, 27}, 0},
- {{0x37}, {177, 27}, 0},
- {{0x36}, {177, 17}, 0},
- {{0x35}, {178, 8}, 0},
- {{0x34}, {178, 0}, 0},
- {{0x24}, {193, 1}, 0},
- {{0x25}, {193, 11}, 0},
- {{0x26}, {192, 19}, 0},
- {{0x27}, {192, 29}, 0},
- {{0x17}, {206, 34}, 0},
- {{0x16}, {207, 25}, 0},
- {{0x15}, {208, 16}, 0},
- {{0x14}, {209, 5}, 0},
- {{0x04}, {224, 6}, 0},
- {{0x05}, {223, 17}, 0},
- {{0x06}, {223, 26}, 0},
- {{0x07}, {220, 35}, 0},
-};
+led_config_t g_led_config = { {
+ { 27, 26, 20, 19, 12, 11, 4, 3 },
+ { 28, 25, 21, 18, 13, 10, 5, 2 },
+ { 29, 24, 22, 17, 14, 9, 6, 1 },
+ { 30, 31, 23, 16, 15, 8, 7, 0 },
+ { 60, 59, 52, 51, 44, 43, 37, 36 },
+ { 61, 58, 53, 50, 45, 42, 38, 35 },
+ { 62, 57, 54, 49, 46, 41, 39, 34 },
+ { 63, 56, 55, 48, 47, 40, 32, 33 }
+}, {
+ { 3, 35 }, { 0, 26 }, { 0, 17 }, { 0, 6 }, { 14, 5 }, { 15, 16 }, { 16, 25 }, { 17, 34 },
+ { 31, 29 }, { 31, 19 }, { 30, 11 }, { 30, 1 }, { 45, 0 }, { 45, 8 }, { 46, 17 }, { 46, 27 },
+ { 60, 27 }, { 60, 18 }, { 60, 9 }, { 60, 0 }, { 74, 2 }, { 74, 11 }, { 75, 20 }, { 74, 28 },
+ { 89, 30 }, { 89, 19 }, { 89, 7 }, { 70, 38 }, { 82, 41 }, { 93, 45 }, { 104, 50 }, { 74, 64 },
+ { 149, 64 }, { 119, 50 }, { 130, 45 }, { 141, 41 }, { 153, 38 }, { 134, 7 }, { 134, 19 }, { 134, 30 },
+ { 149, 28 }, { 148, 20 }, { 149, 11 }, { 149, 2 }, { 163, 0 }, { 163, 9 }, { 163, 18 }, { 163, 27 },
+ { 177, 27 }, { 177, 17 }, { 178, 8 }, { 178, 0 }, { 193, 1 }, { 193, 11 }, { 192, 19 }, { 192, 29 },
+ { 206, 34 }, { 207, 25 }, { 208, 16 }, { 209, 5 }, { 224, 6 }, { 223, 17 }, { 223, 26 }, { 220, 35 }
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4
+} };
+
static struct {
uint8_t b;
diff --git a/keyboards/nomu30/config.h b/keyboards/nomu30/config.h
new file mode 100644
index 000000000..13fae5af3
--- /dev/null
+++ b/keyboards/nomu30/config.h
@@ -0,0 +1,49 @@
+/*
+Copyright 2019 Naoto Takai
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xC0C0
+#define PRODUCT_ID 0x3000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Naoto Takai
+#define PRODUCT nomu30
+#define DESCRIPTION A 30% keyboard with ISO enter.
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#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, D0, D4 }
+#define MATRIX_COL_PINS { C6, D7, E6, B4, F4, F5, F6, F7, B1, B3, B2, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nomu30/info.json b/keyboards/nomu30/info.json
new file mode 100644
index 000000000..d0c186016
--- /dev/null
+++ b/keyboards/nomu30/info.json
@@ -0,0 +1,172 @@
+{
+ "keyboard_name": "Nomu30",
+ "url": "https://keys.recompile.net/projects/nomu30/",
+ "maintainer": "takai",
+ "width": 11.5,
+ "height": 3,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "Q",
+ "x": 0.5,
+ "y": 0
+ },
+ {
+ "label": "W",
+ "x": 1.5,
+ "y": 0
+ },
+ {
+ "label": "E",
+ "x": 2.5,
+ "y": 0
+ },
+ {
+ "label": "R",
+ "x": 3.5,
+ "y": 0
+ },
+ {
+ "label": "T",
+ "x": 4.5,
+ "y": 0
+ },
+ {
+ "label": "Y",
+ "x": 5.5,
+ "y": 0
+ },
+ {
+ "label": "U",
+ "x": 6.5,
+ "y": 0
+ },
+ {
+ "label": "I",
+ "x": 7.5,
+ "y": 0
+ },
+ {
+ "label": "O",
+ "x": 8.5,
+ "y": 0
+ },
+ {
+ "label": "P",
+ "x": 9.5,
+ "y": 0
+ },
+ {
+ "label": "Del",
+ "x": 10.5,
+ "y": 0
+ },
+ {
+ "label": "|",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "A",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "S",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "D",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "F",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "G",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "H",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "J",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "K",
+ "x": 8,
+ "y": 1
+ },
+ {
+ "label": "L",
+ "x": 9,
+ "y": 1
+ },
+ {
+ "label": "Enter",
+ "x": 10.25,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "label": "Control",
+ "x": 0,
+ "y": 2,
+ "w": 1.5
+ },
+ {
+ "label": "Z",
+ "x": 1.5,
+ "y": 2
+ },
+ {
+ "label": "X",
+ "x": 2.5,
+ "y": 2
+ },
+ {
+ "label": "C",
+ "x": 3.5,
+ "y": 2
+ },
+ {
+ "label": "V",
+ "x": 4.5,
+ "y": 2
+ },
+ {
+ "label": "B",
+ "x": 5.5,
+ "y": 2
+ },
+ {
+ "label": "N",
+ "x": 6.5,
+ "y": 2
+ },
+ {
+ "label": "M",
+ "x": 7.5,
+ "y": 2
+ },
+ {
+ "label": "Shift",
+ "x": 8.5,
+ "y": 2,
+ "w": 1.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/config.h b/keyboards/nomu30/keymaps/default/config.h
index c4f28034c..fb21eed1b 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/config.h
+++ b/keyboards/nomu30/keymaps/default/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+/* Copyright 2019 Naoto Takai
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -14,32 +14,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
-#include QMK_KEYBOARD_CONFIG_H
+// place overrides here
-#if (defined(TAP_DANCE_ENABLE) && !defined(TAPPING_TERM))
#define TAPPING_TERM 200
-#endif // TAP_DANCE_ENABLE
-
-
-#define B5_AUDIO
-
-
-#ifdef RGBLIGHT_ENABLE
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 14 // Number of LEDs
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 4
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
-#define RGBLIGHT_SLEEP
-#endif // RGBLIGHT_ENABLE
-
-#define FORCE_NKRO
-
-#endif
+#define PERMISSIVE_HOLD
diff --git a/keyboards/nomu30/keymaps/default/keymap.c b/keyboards/nomu30/keymaps/default/keymap.c
new file mode 100644
index 000000000..8878c3b1e
--- /dev/null
+++ b/keyboards/nomu30/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NUMS 1
+#define _SYMS 2
+#define _FUNC 3
+
+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_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, LALT_T(KC_Z), LGUI_T(KC_X), KC_C, LT(_SYMS, KC_V), LT(_FUNC, KC_B), LT(_NUMS, KC_N), KC_M, KC_SPC
+ ),
+ [_NUMS] = LAYOUT(
+ 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_LBRC, KC_RBRC, KC_SLSH, KC_BSLS, KC_TRNS, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_COMM, KC_DOT
+ ),
+ [_SYMS] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_PIPE, KC_TRNS, KC_UNDS, KC_PLUS, KC_COLN, KC_DQUO, KC_TRNS,
+ KC_TRNS, KC_LABK, KC_RABK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FUNC] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_TAB, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, RESET,
+ KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/nomu30/keymaps/default/readme.md b/keyboards/nomu30/keymaps/default/readme.md
new file mode 100644
index 000000000..55bc45850
--- /dev/null
+++ b/keyboards/nomu30/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for nomu30
diff --git a/keyboards/nomu30/nomu30.c b/keyboards/nomu30/nomu30.c
new file mode 100644
index 000000000..37a8614c1
--- /dev/null
+++ b/keyboards/nomu30/nomu30.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "nomu30.h"
diff --git a/keyboards/nomu30/nomu30.h b/keyboards/nomu30/nomu30.h
new file mode 100644
index 000000000..e6c553bec
--- /dev/null
+++ b/keyboards/nomu30/nomu30.h
@@ -0,0 +1,48 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#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( \
+ K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208 \
+) \
+{ \
+ { KC_NO, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, KC_NO, KC_NO, KC_NO }, \
+}
+
+#define LAYOUT_kc( \
+ K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208 \
+) \
+LAYOUT( \
+ KC_##K001, KC_##K002, KC_##K003, KC_##K004, KC_##K005, KC_##K006, KC_##K007, KC_##K008, KC_##K009, KC_##K010, KC_##K011, \
+ KC_##K100, KC_##K101, KC_##K102, KC_##K103, KC_##K104, KC_##K105, KC_##K106, KC_##K107, KC_##K108, KC_##K109, KC_##K110, \
+ KC_##K200, KC_##K201, KC_##K202, KC_##K203, KC_##K204, KC_##K205, KC_##K206, KC_##K207, KC_##K208 \
+)
diff --git a/keyboards/nomu30/readme.md b/keyboards/nomu30/readme.md
new file mode 100644
index 000000000..95577164a
--- /dev/null
+++ b/keyboards/nomu30/readme.md
@@ -0,0 +1,15 @@
+# nomu30
+
+![nomu30](https://keys.recompile.net/images/nomu30-main@600w.jpg)
+
+A 30% keyboard with ISO enter.
+
+Keyboard Maintainer: [Naoto Takai](https://github.com/takai)
+Hardware Supported: The Nomu30 PCBs, ProMicro supported
+Hardware Availability: https://keys.recompile.net/projects/nomu30/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nomu30: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/nomu30/rules.mk b/keyboards/nomu30/rules.mk
new file mode 100644
index 000000000..d4785aabb
--- /dev/null
+++ b/keyboards/nomu30/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = caterina
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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 (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/noxary/220/220.c b/keyboards/noxary/220/220.c
new file mode 100644
index 000000000..e671e15a4
--- /dev/null
+++ b/keyboards/noxary/220/220.c
@@ -0,0 +1,62 @@
+/* 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 "220.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.
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ setPinOutput(C6);
+ 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) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ writePinLow(C6);
+ } else {
+ writePinHigh(C6);
+ }
+ led_set_user(usb_led);
+} \ No newline at end of file
diff --git a/keyboards/noxary/220/220.h b/keyboards/noxary/220/220.h
new file mode 100644
index 000000000..3f1375e2a
--- /dev/null
+++ b/keyboards/noxary/220/220.h
@@ -0,0 +1,42 @@
+/* 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
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43, \
+ K50, K51, K52, K53 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, K43 }, \
+ { K50, K51, K52, K53 } \
+}
diff --git a/keyboards/noxary/220/config.h b/keyboards/noxary/220/config.h
new file mode 100644
index 000000000..e5a6be2de
--- /dev/null
+++ b/keyboards/noxary/220/config.h
@@ -0,0 +1,251 @@
+/*
+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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Noxary
+#define PRODUCT 220
+#define DESCRIPTION A custom numpad
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { C4, B0, D3, D4, D5, D6 }
+#define MATRIX_COL_PINS { B4, C5, D2, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+#define 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 DEBOUNCING_DELAY 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/noxary/220/info.json b/keyboards/noxary/220/info.json
new file mode 100644
index 000000000..252c824aa
--- /dev/null
+++ b/keyboards/noxary/220/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Noxary 220",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT_ortho_6x4": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2, "y":2.5}, {"x":3, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2, "y":3.5}, {"x":3, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2, "y":4.5}, {"x":3, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2, "y":5.5}, {"x":3, "y":5.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/noxary/220/keymaps/default/config.h b/keyboards/noxary/220/keymaps/default/config.h
new file mode 100644
index 000000000..26c6d6ade
--- /dev/null
+++ b/keyboards/noxary/220/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/noxary/220/keymaps/default/keymap.c b/keyboards/noxary/220/keymaps/default/keymap.c
new file mode 100644
index 000000000..a72841db5
--- /dev/null
+++ b/keyboards/noxary/220/keymaps/default/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2019 Rozakiin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT_ortho_6x4(
+ KC_ESC, BL_TOGG, BL_DEC, BL_INC,
+ KC_NLCK, KC_SLSH, KC_ASTR, KC_PEQL,
+ KC_7, KC_8, KC_9, KC_PMNS,
+ KC_4, KC_5, KC_6, KC_PPLS,
+ KC_1, KC_2, KC_3, KC_PENT,
+ KC_0, KC_0, KC_DEL, KC_PENT),
+
+ LAYOUT_ortho_6x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ 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/noxary/220/keymaps/default/readme.md b/keyboards/noxary/220/keymaps/default/readme.md
new file mode 100644
index 000000000..bff7feda3
--- /dev/null
+++ b/keyboards/noxary/220/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Noxary 220 \ No newline at end of file
diff --git a/keyboards/noxary/220/readme.md b/keyboards/noxary/220/readme.md
new file mode 100644
index 000000000..1fcdfcc3c
--- /dev/null
+++ b/keyboards/noxary/220/readme.md
@@ -0,0 +1,13 @@
+# Noxary 220
+
+A fully customizable numpad
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [Rozakiin](https://github.com/rozakiin)
+Hardware Supported: Noxary 220 PCB
+Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=95660.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make noxary/220: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/noxary/220/rules.mk b/keyboards/noxary/220/rules.mk
new file mode 100644
index 000000000..0f8cae926
--- /dev/null
+++ b/keyboards/noxary/220/rules.mk
@@ -0,0 +1,83 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+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)
+
+LAYOUTS = ortho_6x4 \ No newline at end of file
diff --git a/keyboards/noxary/260/260.c b/keyboards/noxary/260/260.c
new file mode 100644
index 000000000..9f577a2ae
--- /dev/null
+++ b/keyboards/noxary/260/260.c
@@ -0,0 +1,61 @@
+/* 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 "260.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.
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ setPinOutput(B1);
+ 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(B1);
+ } else {
+ writePinHigh(B1);
+ }
+
+ led_set_user(usb_led);
+} \ No newline at end of file
diff --git a/keyboards/noxary/260/260.h b/keyboards/noxary/260/260.h
new file mode 100644
index 000000000..2c62bd2a5
--- /dev/null
+++ b/keyboards/noxary/260/260.h
@@ -0,0 +1,40 @@
+/* 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
+
+#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( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \
+ K400, K401, K402, K406, K410, K411, K412, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \
+ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \
+}
diff --git a/keyboards/noxary/260/config.h b/keyboards/noxary/260/config.h
new file mode 100644
index 000000000..984712dd1
--- /dev/null
+++ b/keyboards/noxary/260/config.h
@@ -0,0 +1,251 @@
+/*
+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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E58
+#define PRODUCT_ID 0x003C
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Noxary
+#define PRODUCT 260
+#define DESCRIPTION A custom 60% keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F7, F6, F5, F0, B5 }
+#define MATRIX_COL_PINS { C7, C6, B6, F4, E6, D0, B4, D1, D2, D3, D7, D6, D4, F1, D5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * 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 DEBOUNCING_DELAY 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/noxary/260/info.json b/keyboards/noxary/260/info.json
new file mode 100644
index 000000000..e5b449ff3
--- /dev/null
+++ b/keyboards/noxary/260/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Noxary 260",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/noxary/260/keymaps/default/config.h b/keyboards/noxary/260/keymaps/default/config.h
new file mode 100644
index 000000000..26c6d6ade
--- /dev/null
+++ b/keyboards/noxary/260/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/noxary/260/keymaps/default/keymap.c b/keyboards/noxary/260/keymaps/default/keymap.c
new file mode 100644
index 000000000..061e3d240
--- /dev/null
+++ b/keyboards/noxary/260/keymaps/default/keymap.c
@@ -0,0 +1,87 @@
+/* Copyright 2019 Rozakiin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* _BL: Base Layer(Default) - For ISO enter use ANSI enter
+ * ,-----------------------------------------------------------.
+ * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BSpc|
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
+ * |-----------------------------------------------------------|
+ * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| Ent|
+ * |-----------------------------------------------------------|
+ * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift |Del|
+ * |-----------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt |Win |Mo(1) |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [_BL] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, MO(_FL1), KC_RCTL),
+ /* _FL1: Function Layer 1 - For ISO enter use ANSI enter
+ * ,----------------------------------------------------------------.
+ * | `|F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |PScr| |
+ * |----------------------------------------------------------------|
+ * | | | | |RST| | | | | | | | | | Ins|
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |Home|
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | |Bl-|Bl+| |Mute|Vol+| End|
+ * |----------------------------------------------------------------|
+ * | | | | BL_Toggle | | | | |Vol-| |
+ * `----------------------------------------------------------------'
+ */
+ [_FL1] = 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_VOLU, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_VOLD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, _______,
+ _______, _______, _______, BL_TOGG, _______, _______, _______, _______),
+ /* _FL2: Function Layer 2 - For ISO enter use ANSI enter
+ * ,----------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | | | | | | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | | | | | | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | | | | | | |
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | |
+ * `----------------------------------------------------------------'
+ */
+ [_FL2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______),
+
+
+};
+
diff --git a/keyboards/noxary/260/keymaps/default/readme.md b/keyboards/noxary/260/keymaps/default/readme.md
new file mode 100644
index 000000000..af0cd4ee2
--- /dev/null
+++ b/keyboards/noxary/260/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Noxary 260 \ No newline at end of file
diff --git a/keyboards/noxary/260/readme.md b/keyboards/noxary/260/readme.md
new file mode 100644
index 000000000..48cbbbf22
--- /dev/null
+++ b/keyboards/noxary/260/readme.md
@@ -0,0 +1,15 @@
+Noxary 260
+
+![260](https://cdn.discordapp.com/attachments/438429095303315456/489188948749451276/image0.jpg)
+
+A fully customizable 60% keyboard.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [Rozakiin](https://github.com/rozakiin)
+Hardware Supported: Noxary 260 PCB
+Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=93572.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make noxary/260: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/noxary/260/rules.mk b/keyboards/noxary/260/rules.mk
new file mode 100644
index 000000000..0fffc2d38
--- /dev/null
+++ b/keyboards/noxary/260/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/noxary/280/280.c b/keyboards/noxary/280/280.c
new file mode 100644
index 000000000..441f0ad84
--- /dev/null
+++ b/keyboards/noxary/280/280.c
@@ -0,0 +1,70 @@
+/* Copyright 2019 %YOUR_NAME%
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "280.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.
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ setPinOutput(D5);
+ setPinOutput(D0);
+ 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);
+ }
+
+ led_set_user(usb_led);
+} \ No newline at end of file
diff --git a/keyboards/noxary/280/280.h b/keyboards/noxary/280/280.h
new file mode 100644
index 000000000..1a93c8c6b
--- /dev/null
+++ b/keyboards/noxary/280/280.h
@@ -0,0 +1,49 @@
+/* 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
+
+#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( \
+ K000, K002, K103, K004, K105, K006, K107, K008, K109, K111, K012, K113, K014, K115, K016, K117, \
+ K200, K301, K202, K303, K204, K305, K206, K307, K208, K309, K210, K311, K212, K313, K214, K315, K216, K317, \
+ K400, K501, K402, K503, K404, K505, K406, K507, K408, K509, K410, K511, K412, K414, K515, K416, K517, \
+ K600, K701, K602, K703, K604, K705, K606, K707, K608, K709, K610, K711, K612, K614, \
+ K800, K901, K802, K903, K804, K905, K806, K907, K808, K909, K810, K911, K812, K814, K816, \
+ K1000,K1101,K1002, K1006, K1010,K1111,K1012, K1014,K1115,K1016,K1117\
+) { \
+ { K000, K002, K004, K006, K008, KC_NO, K012, K014, K016 },\
+ { KC_NO, K103, K105, K107, K109, K111, K113, K115, K117 },\
+ { K200, K202, K204, K206, K208, K210, K212, K214, K216 },\
+ { K301, K303, K305, K307, K309, K311, K313, K315, K317 },\
+ { K400, K402, K404, K406, K408, K410, K412, K414, K416 },\
+ { K501, K503, K505, K507, K509, K511, KC_NO, K515, K517 },\
+ { K600, K602, K604, K606, K608, K610, K612, K614, KC_NO },\
+ { K701, K703, K705, K707, K709, K711, KC_NO, KC_NO, KC_NO },\
+ { K800, K802, K804, K806, K808, K810, K812, K814, K816 },\
+ { K901, K903, K905, K907, K909, K911, KC_NO, KC_NO, KC_NO },\
+ { K1000, K1002, KC_NO, K1006, KC_NO, K1010, K1012, K1014, K1016 },\
+ { K1101, KC_NO, KC_NO, KC_NO, KC_NO, K1111, KC_NO, K1115, K1117 }\
+}
diff --git a/keyboards/noxary/280/config.h b/keyboards/noxary/280/config.h
new file mode 100644
index 000000000..427709d1b
--- /dev/null
+++ b/keyboards/noxary/280/config.h
@@ -0,0 +1,251 @@
+/*
+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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E58
+#define PRODUCT_ID 0x0050
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Noxary
+#define PRODUCT 280
+#define DESCRIPTION A custom TKL
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F0, E6, D6, D4, F6, F5, F4, F1, B2, D3, D2, D1}
+#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, B0, B3}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * 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 DEBOUNCING_DELAY 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/noxary/280/info.json b/keyboards/noxary/280/info.json
new file mode 100644
index 000000000..f75d27656
--- /dev/null
+++ b/keyboards/noxary/280/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Noxary 280",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 18.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/noxary/280/keymaps/default/config.h b/keyboards/noxary/280/keymaps/default/config.h
new file mode 100644
index 000000000..26c6d6ade
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/noxary/280/keymaps/default/keymap.c b/keyboards/noxary/280/keymaps/default/keymap.c
new file mode 100644
index 000000000..3d993e042
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/default/keymap.c
@@ -0,0 +1,102 @@
+/* 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
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+// 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
+
+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(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+
+ };
+
diff --git a/keyboards/noxary/280/keymaps/default/readme.md b/keyboards/noxary/280/keymaps/default/readme.md
new file mode 100644
index 000000000..e1a03dc00
--- /dev/null
+++ b/keyboards/noxary/280/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Noxary 280 \ No newline at end of file
diff --git a/keyboards/noxary/280/readme.md b/keyboards/noxary/280/readme.md
new file mode 100644
index 000000000..5af7441dd
--- /dev/null
+++ b/keyboards/noxary/280/readme.md
@@ -0,0 +1,13 @@
+Noxary 280
+
+A fully customizable TKL keyboard.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [Rozakin](https://github.com/rozakiin)
+Hardware Supported: 280 PCB
+Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=95660.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make noxary/280: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/noxary/280/rules.mk b/keyboards/noxary/280/rules.mk
new file mode 100644
index 000000000..ad6117f16
--- /dev/null
+++ b/keyboards/noxary/280/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+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
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# 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)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+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)
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h
index a2eaf63c3..4719c2269 100644
--- a/keyboards/orthodox/keymaps/drashna/config.h
+++ b/keyboards/orthodox/keymaps/drashna/config.h
@@ -23,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Use I2C or Serial, not both */
-#define USE_SERIAL
-#undef USE_I2C
+// #define USE_SERIAL
+#define USE_I2C
/* Select hand configuration */
@@ -39,36 +39,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
)
#ifdef RGBLIGHT_ENABLE
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 16 // Number of LEDs
-
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+# define RGB_DI_PIN D3
+# define RGBLED_NUM 16 // Number of LEDs
+# define RGBLED_SPLIT { 8, 8 }
+
+# define RGBLIGHT_HUE_STEP 12
+# define RGBLIGHT_SAT_STEP 12
+# define RGBLIGHT_VAL_STEP 12
+# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
#endif // RGBLIGHT_ENABLE
#ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#ifdef RGBLIGHT_ENABLE
-#define NO_MUSIC_MODE
-#endif
+# define C6_AUDIO
+# ifdef RGBLIGHT_ENABLE
+# define NO_MUSIC_MODE
+# endif
#endif //AUDIO_ENABLE
#undef PRODUCT
#ifdef KEYBOARD_orthodox_rev1
-#define PRODUCT Drashna Hacked Orthodox Rev.1
+# define PRODUCT Drashna Hacked Orthodox Rev.1
#elif KEYBOARD_orthodox_rev3
-#define PRODUCT Drashna Hacked Orthodox Rev.3
+# define PRODUCT Drashna Hacked Orthodox Rev.3
#endif
#define QMK_ESC_OUTPUT D7 // usually COL
#ifdef KEYBOARD_orthodox_rev1
-#define QMK_ESC_INPUT D4 // usually ROW
+# define QMK_ESC_INPUT D4 // usually ROW
#else
-#define QMK_ESC_INPUT D2 // usually ROW
+# define QMK_ESC_INPUT D2 // usually ROW
#endif
#define QMK_LED B0
#define QMK_SPEAKER C6
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index 0f23bd9aa..bde959f5e 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -38,8 +38,8 @@ uint8_t last_osm;
) \
LAYOUT_wrapper( \
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
- KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, OS_RGUI, K16, K17, K18, K19, K1A, KC_QUOT, \
- KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, CTL_T(K2A), KC_MRSF \
+ KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, KC_QUOT, \
+ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \
)
#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
@@ -123,11 +123,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_init_keymap(void) {
- #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
setPinOutput(D5);
writePinHigh(D5);
setPinOutput(B0);
writePinHigh(B0);
- #endif
+#endif
}
diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk
index a826c664a..a122b9e0f 100644
--- a/keyboards/orthodox/keymaps/drashna/rules.mk
+++ b/keyboards/orthodox/keymaps/drashna/rules.mk
@@ -5,11 +5,14 @@ CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
TAP_DANCE_ENABLE = no
RGBLIGHT_ENABLE = yes
-AUDIO_ENABLE = yes
+AUDIO_ENABLE = no
NKRO_ENABLE = yes
+SPACE_CADET_ENABLE = no
INDICATOR_LIGHTS = yes
MACROS_ENABLED = no
RGBLIGHT_TWINKLE = no
+RGBLIGHT_STARTUP_ANIMATION = yes
+
BOOTLOADER = qmk-dfu
diff --git a/keyboards/plaid/plaid.h b/keyboards/plaid/plaid.h
index 4ebdcea11..e680c077c 100644
--- a/keyboards/plaid/plaid.h
+++ b/keyboards/plaid/plaid.h
@@ -60,4 +60,6 @@
#define KEYMAP LAYOUT_plaid_grid
#define LAYOUT_ortho_4x12 LAYOUT_plaid_grid
+#define LAYOUT_planck_mit LAYOUT_plaid_mit
+#define LAYOUT_kc_ortho_4x12 KC_KEYMAP
#define KC_LAYOUT_ortho_4x12 KC_KEYMAP
diff --git a/keyboards/plaid/rules.mk b/keyboards/plaid/rules.mk
index 3d66334b3..507f873ae 100644
--- a/keyboards/plaid/rules.mk
+++ b/keyboards/plaid/rules.mk
@@ -97,5 +97,5 @@ NO_UART = yes
NO_SUSPEND_POWER_DOWN = yes
-LAYOUTS = ortho_4x12 planck_mit planck_grid
+LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c
index b859af6c1..3ad694c4a 100644
--- a/keyboards/planck/ez/ez.c
+++ b/keyboards/planck/ez/ez.c
@@ -22,120 +22,84 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
* | | G location
* | | | B location
* | | | | */
- {0, A_12, B_12, C_12},
- {0, A_11, B_11, C_11},
- {0, A_10, B_10, C_10},
- {0, A_9, B_9, C_9},
- {0, A_8, B_8, C_8},
- {0, A_7, B_7, C_7},
-
- {0, G_12, H_12, I_12},
- {0, G_11, H_11, I_11},
- {0, G_10, H_10, I_10},
- {0, G_9, H_9, I_9},
- {0, G_8, H_8, I_8},
- {0, G_7, H_7, I_7},
-
- {0, A_6, B_6, C_6},
- {0, A_5, B_5, C_5},
- {0, A_4, B_4, C_4},
- {0, A_3, B_3, C_3},
- {0, A_2, B_2, C_2},
- {0, A_1, B_1, C_1},
-
- {0, G_6, H_6, I_6},
- {0, G_5, H_5, I_5},
- {0, G_4, H_4, I_4},
- {0, G_3, H_3, I_3},
- {0, G_2, H_2, I_2},
- {0, G_1, H_1, I_1},
-
- {0, D_12, E_12, F_12},
- {0, D_11, E_11, F_11},
- {0, D_10, E_10, F_10},
- {0, D_9, E_9, F_9},
- {0, D_8, E_8, F_8},
- {0, D_7, E_7, F_7},
-
- {0, J_12, K_12, L_12},
- {0, J_11, K_11, L_11},
- {0, J_10, K_10, L_10},
- {0, J_9, K_9, L_9},
- {0, J_8, K_8, L_8},
- {0, J_7, K_7, L_7},
-
- {0, D_6, E_6, F_6},
- {0, D_5, E_5, F_5},
- {0, D_4, E_4, F_4},
- {0, D_3, E_3, F_3},
- {0, D_2, E_2, F_2},
- {0, D_1, E_1, F_1},
-
- {0, J_6, K_6, L_6},
- {0, J_5, K_5, L_5},
- {0, J_4, K_4, L_4},
- {0, J_3, K_3, L_3},
- {0, J_2, K_2, L_2},
+ {0, B_12, A_12, C_12},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
- /*{row | col << 4}
- | {x=0..224, y=0..64}
- | | modifier
- | | | */
- {{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
- {{0|(1<<4)}, {20.36*1, 21.33*0}, 0},
- {{0|(2<<4)}, {20.36*2, 21.33*0}, 0},
- {{0|(3<<4)}, {20.36*3, 21.33*0}, 0},
- {{0|(4<<4)}, {20.36*4, 21.33*0}, 0},
- {{0|(5<<4)}, {20.36*5, 21.33*0}, 0},
- {{4|(0<<4)}, {20.36*6, 21.33*0}, 0},
- {{4|(1<<4)}, {20.36*7, 21.33*0}, 0},
- {{4|(2<<4)}, {20.36*8, 21.33*0}, 0},
- {{4|(3<<4)}, {20.36*9, 21.33*0}, 0},
- {{4|(4<<4)}, {20.36*10,21.33*0}, 0},
- {{4|(5<<4)}, {20.36*11,21.33*0}, 1},
-
- {{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
- {{1|(1<<4)}, {20.36*1, 21.33*1}, 0},
- {{1|(2<<4)}, {20.36*2, 21.33*1}, 0},
- {{1|(3<<4)}, {20.36*3, 21.33*1}, 0},
- {{1|(4<<4)}, {20.36*4, 21.33*1}, 0},
- {{1|(5<<4)}, {20.36*5, 21.33*1}, 0},
- {{5|(0<<4)}, {20.36*6, 21.33*1}, 0},
- {{5|(1<<4)}, {20.36*7, 21.33*1}, 0},
- {{5|(2<<4)}, {20.36*8, 21.33*1}, 0},
- {{5|(3<<4)}, {20.36*9, 21.33*1}, 0},
- {{5|(4<<4)}, {20.36*10,21.33*1}, 0},
- {{5|(5<<4)}, {20.36*11,21.33*1}, 1},
-
- {{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
- {{2|(1<<4)}, {20.36*1, 21.33*2}, 0},
- {{2|(2<<4)}, {20.36*2, 21.33*2}, 0},
- {{2|(3<<4)}, {20.36*3, 21.33*2}, 0},
- {{2|(4<<4)}, {20.36*4, 21.33*2}, 0},
- {{2|(5<<4)}, {20.36*5, 21.33*2}, 0},
- {{6|(0<<4)}, {20.36*6, 21.33*2}, 0},
- {{6|(1<<4)}, {20.36*7, 21.33*2}, 0},
- {{6|(2<<4)}, {20.36*8, 21.33*2}, 0},
- {{6|(3<<4)}, {20.36*9, 21.33*2}, 0},
- {{6|(4<<4)}, {20.36*10,21.33*2}, 0},
- {{6|(5<<4)}, {20.36*11,21.33*2}, 1},
-
- {{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
- {{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
- {{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
- {{7|(3<<4)}, {20.36*3, 21.33*3}, 1},
- {{7|(4<<4)}, {20.36*4, 21.33*3}, 1},
- {{7|(5<<4)}, {20.36*5.5,21.33*3}, 0},
- {{7|(0<<4)}, {20.36*7, 21.33*3}, 1},
- {{7|(1<<4)}, {20.36*8, 21.33*3}, 1},
- {{7|(2<<4)}, {20.36*9, 21.33*3}, 1},
- {{3|(3<<4)}, {20.36*10,21.33*3}, 1},
- {{3|(4<<4)}, {20.36*11,21.33*3}, 1}
-};
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5 },
+ { 12, 13, 14, 15, 16, 17 },
+ { 24, 25, 26, 27, 28, 29 },
+ { 36, 37, 38, 45, 46, NO_LED },
+ { 6, 7, 8, 9, 10, 11 },
+ { 18, 19, 20, 21, 22, 23 },
+ { 30, 31, 32, 33, 34, 35 },
+ { 42, 43, 44, 39, 40, 41 }
+}, {
+ { 0, 0 }, { 20, 0 }, { 40, 0 }, { 61, 0 }, { 81, 0 }, { 101, 0 }, { 122, 0 }, { 142, 0 }, { 162, 0 }, { 183, 0 }, { 203, 0 }, { 223, 0 },
+ { 0, 21 }, { 20, 21 }, { 40, 21 }, { 61, 21 }, { 81, 21 }, { 101, 21 }, { 122, 21 }, { 142, 21 }, { 162, 21 }, { 183, 21 }, { 203, 21 }, { 223, 21 },
+ { 0, 42 }, { 20, 42 }, { 40, 42 }, { 61, 42 }, { 81, 42 }, { 101, 42 }, { 122, 42 }, { 142, 42 }, { 162, 42 }, { 183, 42 }, { 203, 42 }, { 223, 42 },
+ { 0, 63 }, { 20, 63 }, { 40, 63 }, { 61, 63 }, { 81, 63 }, { 111, 63 }, { 142, 63 }, { 162, 63 }, { 183, 63 }, { 203, 63 }, { 223, 63 }
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1
+} };
+
void matrix_init_kb(void) {
matrix_init_user();
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index c6fb52d2b..4aa431fda 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -1,24 +1,36 @@
-# project specific files
-LAYOUTS += ortho_4x12
-
# Cortex version
MCU = STM32F303
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
# Build Options
-# comment out to disable the options.
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
#
-BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+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 = yes # 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.
+API_SYSEX_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
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+
CUSTOM_MATRIX = no # Custom matrix file
-AUDIO_ENABLE = yes
-RGBLIGHT_ENABLE = no
# SERIAL_LINK_ENABLE = yes
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = IS31FL3737
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/keymaps/callum/config.h b/keyboards/planck/keymaps/callum/config.h
index 49f61dee5..e66db1d7e 100644
--- a/keyboards/planck/keymaps/callum/config.h
+++ b/keyboards/planck/keymaps/callum/config.h
@@ -1,7 +1,7 @@
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_INTERVAL 16
-#define MOUSEKEY_MAX_SPEED 10
-#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 20
+#define MOUSEKEY_TIME_TO_MAX 100
#define MOUSEKEY_WHEEL_DELAY 0
-#define MOUSEKEY_WHEEL_MAX_SPEED 8
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 60
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index 02456aa7d..08d0c69b8 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -1,4 +1,3 @@
-#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"
#include "action_layer.h"
@@ -38,28 +37,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
* `-----------------------------------------------------------------------'
*/
- [_COLEMAK] = {
- {
- KC_TAB, KC_Q, KC_W, KC_F,
- KC_P, KC_G, KC_J, KC_L,
- KC_U, KC_Y, KC_SCLN, KC_MINS
- },
- {
- KC_BSPC, KC_A, KC_R, KC_S,
- KC_T, KC_D, KC_H, KC_N,
- KC_E, KC_I, KC_O, KC_QUOT
- },
- {
- KC_LSFT, KC_Z, KC_X, KC_C,
- KC_V, KC_B, KC_K, KC_M,
- KC_COMM, KC_DOT, KC_SLSH, KC_RSFT
- },
- {
- FUNC, KC_LCTL, KC_LALT, KC_LGUI,
- SYMB, KC_ENT, KC_SPC, MOVE,
- KC_RGUI, KC_RALT, KC_RCTL, FUNC
- }
- },
+ [_COLEMAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_F,
+ KC_P, KC_G, KC_J, KC_L,
+ KC_U, KC_Y, KC_SCLN, KC_MINS,
+
+ KC_BSPC, KC_A, KC_R, KC_S,
+ KC_T, KC_D, KC_H, KC_N,
+ KC_E, KC_I, KC_O, KC_QUOT,
+
+ KC_LSFT, KC_Z, KC_X, KC_C,
+ KC_V, KC_B, KC_K, KC_M,
+ KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+
+ FUNC, KC_LCTL, KC_LALT, KC_LGUI,
+ SYMB, KC_ENT, KC_SPC, MOVE,
+ KC_RGUI, KC_RALT, KC_RCTL, FUNC
+ ),
/* QWERTY
* ,-----------------------------------------------------------------------.
@@ -72,96 +66,81 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
* `-----------------------------------------------------------------------'
*/
- [_QWERTY] = {
- {
- KC_TAB, KC_Q, KC_W, KC_E,
- KC_R, KC_T, KC_Y, KC_U,
- KC_I, KC_O, KC_P, KC_MINS
- },
- {
- KC_BSPC, 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
- },
- {
- FUNC, KC_LCTL, KC_LALT, KC_LGUI,
- SYMB, KC_ENT, KC_SPC, MOVE,
- KC_RGUI, KC_RALT, KC_RCTL, FUNC
- }
- },
+ [_QWERTY] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_E,
+ KC_R, KC_T, KC_Y, KC_U,
+ KC_I, KC_O, KC_P, KC_MINS,
+
+ KC_BSPC, KC_A, KC_S, KC_D,
+ KC_F, KC_G, KC_H, KC_J,
+ KC_K, KC_L, KC_SCLN, KC_QUOT,
+
+ KC_LSFT, KC_Z, KC_X, KC_C,
+ KC_V, KC_B, KC_N, KC_M,
+ KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+
+ FUNC, KC_LCTL, KC_LALT, KC_LGUI,
+ SYMB, KC_ENT, KC_SPC, MOVE,
+ KC_RGUI, KC_RALT, KC_RCTL, FUNC
+ ),
/* SYMB
* ,-----------------------------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |ndash|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+ * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | |Mouse| | | | |
+ * | | | | | | | | | | | | |
* `-----------------------------------------------------------------------'
*/
- [_SYMB] = {
- {
- KC_ESC, KC_1, KC_2, KC_3,
- KC_4, KC_5, KC_6, KC_7,
- KC_8, KC_9, KC_0, _______
- },
- {
- KC_DEL, KC_EXLM, KC_AT, KC_HASH,
- KC_DLR, KC_PERC, KC_CIRC, KC_AMPR,
- KC_ASTR, KC_LPRN, KC_RPRN, _______
- },
- {
- _______, KC_TILD, KC_GRV, KC_PLUS,
- KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC,
- KC_RBRC, KC_LCBR, KC_RCBR, _______
- },
- {
- _______, _______, _______, _______,
- _______, _______, _______, MOUSE,
- _______, _______, _______, _______
- }
- },
+ [_SYMB] = LAYOUT_planck_grid(
+ KC_ESC, KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6, KC_7,
+ KC_8, KC_9, KC_0, A(KC_MINS),
+
+ KC_DEL, KC_EXLM, KC_AT, KC_HASH,
+ KC_DLR, KC_PERC, KC_CIRC, KC_AMPR,
+ KC_ASTR, KC_LPRN, KC_RPRN, A(KC_3),
+
+ _______, KC_TILD, KC_GRV, KC_PLUS,
+ KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC,
+ KC_RBRC, KC_LCBR, KC_RCBR, _______,
+
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
/* MOVE
* ,-----------------------------------------------------------------------.
- * | | | | | | |CtrUp|Home | Up | End |Caps | Esc |
+ * | | | | | | |CtrUp|Home | Up | End |Caps |Mouse|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | |SpaL |Left |Down |Right|SpaR | Del |
+ * | | | | | | |CtrL |Left |Down |Right|CtrR | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | | | | | | |CtrDn|PgDn |PgUp |TabL |TabR | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | |Mouse| | | | | | | |
+ * | | | | | | | | | | | | |
* `-----------------------------------------------------------------------'
*/
- [_MOVE] = {
- {
- AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
- AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
- KC_UP, KC_END, KC_CAPS, KC_ESC
- },
- {
- AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
- AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
- KC_DOWN, KC_RGHT, C(KC_RIGHT), KC_DEL
- },
- {
- _______, AC(KC_M), AC(KC_N), AC(KC_O),
- AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
- KC_PGUP, SC(KC_TAB), C(KC_TAB), _______
- },
- {
- _______, _______, _______, _______,
- MOUSE, _______, _______, _______,
- _______, _______, _______, _______
- }
- },
+ [_MOVE] = LAYOUT_planck_grid(
+ AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
+ AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
+ KC_UP, KC_END, KC_CAPS, MOUSE,
+
+ AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
+ AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
+ KC_DOWN, KC_RGHT, C(KC_RIGHT), XXXXXXX,
+
+ _______, AC(KC_M), AC(KC_N), AC(KC_O),
+ AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
+ KC_PGUP, SC(KC_TAB), C(KC_TAB), _______,
+
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
/* FUNC
* ,-----------------------------------------------------------------------.
@@ -169,67 +148,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | |Home |TabL |TabR |End | | | |Clmak|Qwrty| |
+ * | | | | | | | | | |Clmak|Qwrty| |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | | | | |Prev |Mute |Play |Next | | | | |
* `-----------------------------------------------------------------------'
*/
- [_FUNC] = {
- {
- RESET, KC_F1, KC_F2, KC_F3,
- KC_F4, KC_F5, KC_F6, KC_F7,
- KC_F8, KC_F9, KC_F10, KC_VOLU
- },
- {
- KC_POWER, KC_F11, KC_F12, KC_F13,
- KC_F14, KC_F15, KC_F16, KC_F17,
- KC_F18, KC_F19, KC_F20, KC_VOLD
- },
- {
- _______, XXXXXXX, KC_HOME, SC(KC_TAB),
- C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
- XXXXXXX, COLEMAK, QWERTY, _______
- },
- {
- _______, _______, _______, _______,
- KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
- _______, _______, _______, _______
- }
- },
+ [_FUNC] = LAYOUT_planck_grid(
+ RESET, KC_F1, KC_F2, KC_F3,
+ KC_F4, KC_F5, KC_F6, KC_F7,
+ KC_F8, KC_F9, KC_F10, KC_VOLU,
+
+ KC_POWER, KC_F11, KC_F12, KC_F13,
+ KC_F14, KC_F15, KC_F16, KC_F17,
+ KC_F18, KC_F19, KC_F20, KC_VOLD,
+
+ _______, XXXXXXX, KC_HOME, SC(KC_TAB),
+ C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
+ XXXXXXX, COLEMAK, QWERTY, _______,
+
+ _______, _______, _______, _______,
+ KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______
+ ),
/* MOUSE
* ,-----------------------------------------------------------------------.
- * | | | | | | | | ScL |Up | ScR | | |
+ * | | |CtrL |CtrU |CtrR | B5 |CtrU | ScL |Up | ScR | | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | B4 | B3 | B2 | B1 | | |Left |Down |Right| | |
+ * | | | Ac0 | Ac1 | Ac2 | B4 |CtrL |Left |Down |Right|CtrR | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | Ac0 | Ac1 | Ac2 | | | ScD | ScU | | | |
+ * | | | |Home | End | B3 |CtrD | ScD | ScU |TabL |TabR | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
+ * | | | | | | B2 | B1 | | | | | |
* `-----------------------------------------------------------------------'
*/
- [_MOUSE] = {
- {
- _______, _______, C(KC_LEFT), C(KC_UP),
- C(KC_RIGHT), _______, _______, KC_WH_L,
- KC_MS_U, KC_WH_R, _______, _______
- },
- {
- _______, KC_BTN4, KC_BTN3, KC_BTN2,
- KC_BTN1, _______, _______, KC_MS_L,
- KC_MS_D, KC_MS_R, _______, _______
- },
- {
- _______, _______, KC_ACL0, KC_ACL1,
- KC_ACL2, _______, _______, KC_WH_D,
- KC_WH_U, _______, _______, _______
- },
- {
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______, _______
- }
- }
+ [_MOUSE] = LAYOUT_planck_grid(
+ _______, XXXXXXX, C(KC_LEFT), C(KC_UP),
+ C(KC_RIGHT), KC_BTN5, C(KC_UP), KC_WH_R,
+ KC_MS_U, KC_WH_L, XXXXXXX, XXXXXXX,
+
+ _______, XXXXXXX, KC_ACL0, KC_ACL1,
+ KC_ACL2, KC_BTN4, C(KC_LEFT), KC_MS_L,
+ KC_MS_D, KC_MS_R, C(KC_RIGHT), XXXXXXX,
+
+ _______, XXXXXXX, XXXXXXX, KC_HOME,
+ KC_END, KC_BTN3, C(KC_DOWN), KC_WH_U,
+ KC_WH_D, SC(KC_TAB), C(KC_TAB), _______,
+
+ _______, _______, _______, _______,
+ _______, KC_BTN2, KC_BTN1, _______,
+ _______, _______, _______, _______
+ )
};
#ifdef AUDIO_ENABLE
@@ -267,6 +236,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case SYMB:
if (record->event.pressed) {
+ layer_off(_MOUSE);
layer_on(_SYMB);
} else {
layer_off(_SYMB);
@@ -274,6 +244,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case MOVE:
if (record->event.pressed) {
+ layer_off(_MOUSE);
layer_on(_MOVE);
} else {
layer_off(_MOVE);
@@ -281,6 +252,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case FUNC:
if (record->event.pressed) {
+ layer_off(_MOUSE);
layer_on(_FUNC);
} else {
layer_off(_FUNC);
@@ -289,8 +261,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case MOUSE:
if (record->event.pressed) {
layer_on(_MOUSE);
- } else {
- layer_off(_MOUSE);
}
return false;
diff --git a/keyboards/planck/keymaps/callum/rules.mk b/keyboards/planck/keymaps/callum/rules.mk
index 4774c2c41..182322ae2 100644
--- a/keyboards/planck/keymaps/callum/rules.mk
+++ b/keyboards/planck/keymaps/callum/rules.mk
@@ -17,4 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/planck/keymaps/motform/config.h b/keyboards/planck/keymaps/motform/config.h
new file mode 100644
index 000000000..6fa31cc8a
--- /dev/null
+++ b/keyboards/planck/keymaps/motform/config.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* 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
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/motform/keymap.c b/keyboards/planck/keymaps/motform/keymap.c
new file mode 100644
index 000000000..15f0e05fb
--- /dev/null
+++ b/keyboards/planck/keymaps/motform/keymap.c
@@ -0,0 +1,211 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "keymap_swedish.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _COLEMAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+/* These definitions can be removed once keymap_swe is properly vetted against MacOS */
+#define NO_DLR_MAC_V ALGR(LALT(KC_4))
+#define NO_AT_MAC_V ALGR(LALT(KC_2))
+
+/* Esc when pressed, ctrl when used as a modifier */
+#define KC_ECTL MT(MOD_LCTL, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Colemak_se
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | Ö | Å |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ECTR | A | R | S | T | D | H | N | E | I | O | Ä |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | SCSHE| Z | X | C | V | B | K | M | , | . | - |SCSHE |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | esc | CTRL | Alt | CMD |Lower |Space |Bksp |Raise | CMD | RALT | HYPER| MEH |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid
+(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, NO_OSLH, NO_AA,
+ KC_ECTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, NO_AE,
+ KC_SFTENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_SFTENT,
+ KC_ESC, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_RGUI, KC_RALT, KC_HYPR, KC_MEH
+ ),
+
+/* Lower
+* ,-----------------------------------------------------------------------------------.
+* | | PIPE | ' | @ | & | | DOWN | | RIGHT| ` | ´ | ~ |
+* |------+------+------+------+------+-------------+------+------+------+------+------|
+* | | ! | " | # | ? | % | LEFT | / | \ | = | + | * |
+* |------+------+------+------+------+------|------+------+------+------+------+------|
+* | | | | [ | { | | UP | } | ] | | | |
+* |------+------+------+------+------+------+------+------+------+------+------+------|
+* | | | | | | | DEL | | Next | Vol- | Vol+ | Play |
+* `-----------------------------------------------------------------------------------'
+*/
+[_LOWER] = LAYOUT_planck_grid
+(
+ _______, NO_PIPE_MAC, NO_APOS, NO_AT_MAC_V, NO_AMPR, _______, KC_DOWN, KC_NO, KC_RGHT, NO_GRV, NO_GRV, NO_TILD,
+ _______, KC_EXLM, NO_QUO2, KC_HASH, NO_QUES, KC_PERC, KC_LEFT, NO_SLSH, NO_BSLS_MAC, NO_EQL, KC_PPLS, KC_PAST,
+ _______, KC_NO, KC_NO, NO_LBRC, NO_LCBR_MAC, KC_NO, KC_UP, NO_RCBR_MAC, NO_RBRC, KC_NO, KC_NO, _______,
+ _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+/* Raise
+* ,-----------------------------------------------------------------------------------.
+* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+* |------+------+------+------+------+-------------+------+------+------+------+------|
+* | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | $ |
+* |------+------+------+------+------+------|------+------+------+------+------+------|
+* | | | | < | ( | | | ) | > |Pg Up |Pg Dn | |
+* |------+------+------+------+------+------+------+------+------+------+------+------|
+* | | | | | | | | Next | Vol- | Vol+ | Play |
+* `-----------------------------------------------------------------------------------'
+*/
+[_RAISE] = LAYOUT_planck_grid
+(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ NO_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, NO_DLR_MAC_V,
+ _______, KC_NO, KC_NO, NO_LESS_MAC, NO_LPRN, KC_NO, KC_NO, NO_RPRN, NO_GRTR_MAC, KC_PGUP, KC_PGDN, KC_NO,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| Debug| | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TRMon |TRMoff| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid
+(
+ _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+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(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ register_code(KC_MS_WH_DOWN);
+ unregister_code(KC_MS_WH_DOWN);
+ #else
+ register_code(KC_PGDN);
+ unregister_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ register_code(KC_MS_WH_UP);
+ unregister_code(KC_MS_WH_UP);
+ #else
+ register_code(KC_PGUP);
+ unregister_code(KC_PGUP);
+ #endif
+ }
+ }
+}
+
+void dip_update(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;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+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;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/motform/readme.md b/keyboards/planck/keymaps/motform/readme.md
new file mode 100644
index 000000000..47091c0aa
--- /dev/null
+++ b/keyboards/planck/keymaps/motform/readme.md
@@ -0,0 +1,11 @@
+# Motform Planck Layout
+
+This layout is based off the [colemak-se](github.com/motform/colemak-se)
+layout and features many tweaks to make working with Emacs and
+evil-mode more ergonomi. As with the colemak layout itself, the idea
+is to concentrate as much movement as possible to the home row.
+
+To properly use the layout in Emacs, set Super to LGUI and Meta to RGUI.
+Unless you are running a permutation of the MacOS Swedish QWERTY-layout,
+modifiers will probably not work. For future develoment, I’m planning
+to add support for MS Windows SE-QWERTY in the form of a secondary layer.
diff --git a/keyboards/planck/keymaps/motform/rules.mk b/keyboards/planck/keymaps/motform/rules.mk
new file mode 100644
index 000000000..dcf16bef3
--- /dev/null
+++ b/keyboards/planck/keymaps/motform/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/planck/keymaps/priyadi/config.h b/keyboards/planck/keymaps/priyadi/config.h
index 876d057bf..c85e8656e 100644
--- a/keyboards/planck/keymaps/priyadi/config.h
+++ b/keyboards/planck/keymaps/priyadi/config.h
@@ -21,7 +21,8 @@
#define DOUBLESPACE_LAYER_ENABLE
// #define TOLELOT_ENABLE
-#define KEYMAP_CUSTOM( \
+#ifdef __AVR__
+#define LAYOUT( \
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
@@ -34,5 +35,24 @@
{k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c}, \
{k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c} \
}
+#elif KEYBOARD_planck_rev6
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ tp1, tp2, tp3 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { k36, k37, k38, k33, k34, k35 } \
+}
+#endif
#endif
diff --git a/keyboards/planck/keymaps/priyadi/rules.mk b/keyboards/planck/keymaps/priyadi/rules.mk
index a999eb00f..17617b0b7 100644
--- a/keyboards/planck/keymaps/priyadi/rules.mk
+++ b/keyboards/planck/keymaps/priyadi/rules.mk
@@ -8,15 +8,22 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
UNICODEMAP_ENABLE = yes # Unicode map
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
API_SYSEX_ENABLE = no
+
+ifeq ($(strip $(KEYBOARD)), planck/rev4)
FAUXCLICKY_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+AUDIO_ENABLE = no
+endif
+
+ifeq ($(strip $(KEYBOARD)), planck/rev6)
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+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/planck/keymaps/roguepullrequest/keymap.c b/keyboards/planck/keymaps/roguepullrequest/keymap.c
index 51c740dc4..177cb2b67 100644
--- a/keyboards/planck/keymaps/roguepullrequest/keymap.c
+++ b/keyboards/planck/keymaps/roguepullrequest/keymap.c
@@ -4,6 +4,7 @@
float mushroom[][2] = SONG(MARIO_MUSHROOM);
#endif
+
extern keymap_config_t keymap_config;
// Complex Tapdance hoopla
@@ -26,7 +27,8 @@ enum {
X_AT_FUN = 0,
RSHIFT,
LSHIFT,
- TD_S
+ TD_S,
+ SLASH
};
int cur_dance (qk_tap_dance_state_t *state);
@@ -110,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Programmer Dvorak */
[_PDVORAK] = LAYOUT_planck_grid(
KC_GESC, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
- KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, TD(TD_S), KC_SLASH,
+ KC_LAST, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, TD(TD_S), TD(SLASH),
TD(LSHIFT), KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(RSHIFT),
TD(X_AT_FUN), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ALT_TAB, KC_SPACE, KC_ENTER, MT(MOD_LCTL | MOD_LSFT, KC_LGUI), KC_PGUP, KC_PGDN, LT(_LOWER, KC_PLUS)
),
@@ -245,6 +247,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[LSHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset),
[RSHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rshift_finished, rshift_reset),
[TD_S] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, s_finished, s_reset),
+ [SLASH] = ACTION_TAP_DANCE_DOUBLE(KC_SLASH, KC_BSLASH),
+
};
void shutdown_user(void) { clear_keyboard(); }
diff --git a/keyboards/planck/keymaps/roguepullrequest/readme.md b/keyboards/planck/keymaps/roguepullrequest/readme.md
index d3cae22ff..687a65fc9 100644
--- a/keyboards/planck/keymaps/roguepullrequest/readme.md
+++ b/keyboards/planck/keymaps/roguepullrequest/readme.md
@@ -1,12 +1,17 @@
# Programmer Dvorak for the Planck (Light)
-| Magic | | UPPER |
-|----------|---------|-------|
-| | DEFAULT | |
-| FUNCTION | | LOWER |
+| | | | | | | | | | | | |
+|----------|---------|-------|-----|------|-------|-------|------|------|------|------|------|
+| GRAVE_ESC | ; [u]; [l]7 | , [u]% [l]5 | . [l]3 | p [l]1 | y [u]= [l]9 | f [u]* [l]0 | g [l]2 | c [l]4 | r [u]! [l]6 | l [u]# [l]8 | BKSP |
+| LCTRL [TD]!$ | a | o | e | u | i | d | h | t | n | s [TD]- _ | / [TD]\ |
+| LSHFT [TD]( [ { | ' | q | j | k | x | b | m | w | v | z | LSHFT [TD]) ] } |
+| @ [TD]UPPER FUN RESET | LEFT | DOWN | UP | RIGHT | ALT_TAB | SPACE | ENTER | LGUI | PGUP | PGDOWN | = [TD]LOWER |
# Layout notes
+- [u] = UPPER symbol
+- [l] = LOWER symbol
+- [TD] = Tap Dances
- ALT_TAB = cycle through windows as long as you keep tapping it keeps alt tabbing
- LAST = "!$" = is useful for using the last parm in bash/zsh
- More to come
diff --git a/keyboards/planck/keymaps/tom/keymap.c b/keyboards/planck/keymaps/tom/keymap.c
index 6e3b08938..0ffff4e69 100644
--- a/keyboards/planck/keymaps/tom/keymap.c
+++ b/keyboards/planck/keymaps/tom/keymap.c
@@ -224,14 +224,16 @@ bool music_mask_user(uint16_t keycode) {
}
}
+#ifdef RGB_MATRIX_ENABLE
+extern led_config_t g_led_config;
+#endif
+
void rgb_matrix_indicators_user(void) {
#ifdef RGB_MATRIX_ENABLE
- rgb_led led;
switch (biton32(layer_state)) {
case _RAISE:
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if ( led.modifier ) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
rgb_matrix_set_color(i, 0x6B, 0x00, 0x80);
} else {
rgb_matrix_set_color(i, 0x00, 0xFF, 0x00);
@@ -241,8 +243,7 @@ void rgb_matrix_indicators_user(void) {
case _LOWER:
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- led = g_rgb_leds[i];
- if ( led.modifier ) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
rgb_matrix_set_color(i, 0xFF, 0xA5, 0x00);
} else {
rgb_matrix_set_color(i, 0x00, 0x67, 0xC7);
diff --git a/keyboards/planck/light/light.c b/keyboards/planck/light/light.c
index f463090dd..896ec4458 100644
--- a/keyboards/planck/light/light.c
+++ b/keyboards/planck/light/light.c
@@ -77,65 +77,24 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{1, C9_14, C8_14, C7_14}
};
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-
- /*{row | col << 4}
- | {x=0..224, y=0..64}
- | | modifier
- | | | */
- {{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
- {{0|(1<<4)}, {20.36*1, 21.33*0}, 0},
- {{0|(2<<4)}, {20.36*2, 21.33*0}, 0},
- {{0|(3<<4)}, {20.36*3, 21.33*0}, 0},
- {{0|(4<<4)}, {20.36*4, 21.33*0}, 0},
- {{0|(5<<4)}, {20.36*5, 21.33*0}, 0},
- {{0|(6<<4)}, {20.36*6, 21.33*0}, 0},
- {{0|(7<<4)}, {20.36*7, 21.33*0}, 0},
- {{0|(8<<4)}, {20.36*8, 21.33*0}, 0},
- {{0|(9<<4)}, {20.36*9, 21.33*0}, 0},
- {{0|(10<<4)}, {20.36*10,21.33*0}, 0},
- {{0|(11<<4)}, {20.36*11,21.33*0}, 1},
-
- {{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
- {{1|(1<<4)}, {20.36*1, 21.33*1}, 0},
- {{1|(2<<4)}, {20.36*2, 21.33*1}, 0},
- {{1|(3<<4)}, {20.36*3, 21.33*1}, 0},
- {{1|(4<<4)}, {20.36*4, 21.33*1}, 0},
- {{1|(5<<4)}, {20.36*5, 21.33*1}, 0},
- {{1|(6<<4)}, {20.36*6, 21.33*1}, 0},
- {{1|(7<<4)}, {20.36*7, 21.33*1}, 0},
- {{1|(8<<4)}, {20.36*8, 21.33*1}, 0},
- {{1|(9<<4)}, {20.36*9, 21.33*1}, 0},
- {{1|(10<<4)}, {20.36*10,21.33*1}, 0},
- {{1|(11<<4)}, {20.36*11,21.33*1}, 1},
-
- {{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
- {{2|(1<<4)}, {20.36*1, 21.33*2}, 0},
- {{2|(2<<4)}, {20.36*2, 21.33*2}, 0},
- {{2|(3<<4)}, {20.36*3, 21.33*2}, 0},
- {{2|(4<<4)}, {20.36*4, 21.33*2}, 0},
- {{2|(5<<4)}, {20.36*5, 21.33*2}, 0},
- {{2|(6<<4)}, {20.36*6, 21.33*2}, 0},
- {{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
- {{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
- {{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
- {{2|(10<<4)}, {20.36*10,21.33*2}, 0},
- {{2|(11<<4)}, {20.36*11,21.33*2}, 1},
-
- {{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
- {{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
- {{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
- {{3|(3<<4)}, {20.36*3, 21.33*3}, 1},
- {{3|(4<<4)}, {20.36*4, 21.33*3}, 1},
- {{3|(5<<4)}, {20.36*5, 21.33*3}, 0},
- {{3|(5<<4)}, {20.36*5.5,21.33*3}, 0},
- {{3|(6<<4)}, {20.36*6, 21.33*3}, 0},
- {{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
- {{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
- {{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
- {{3|(10<<4)}, {20.36*10,21.33*3}, 1},
- {{3|(11<<4)}, {20.36*11,21.33*3}, 1}
-};
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
+ { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },
+ { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 },
+ { 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48 }
+}, {
+ { 0, 0 }, { 20, 0 }, { 40, 0 }, { 61, 0 }, { 81, 0 }, { 101, 0 }, { 122, 0 }, { 142, 0 }, { 162, 0 }, { 183, 0 }, { 203, 0 }, { 223, 0 },
+ { 0, 21 }, { 20, 21 }, { 40, 21 }, { 61, 21 }, { 81, 21 }, { 101, 21 }, { 122, 21 }, { 142, 21 }, { 162, 21 }, { 183, 21 }, { 203, 21 }, { 223, 21 },
+ { 0, 42 }, { 20, 42 }, { 40, 42 }, { 61, 42 }, { 81, 42 }, { 101, 42 }, { 122, 42 }, { 142, 42 }, { 162, 42 }, { 183, 42 }, { 203, 42 }, { 223, 42 },
+ { 0, 63 }, { 20, 63 }, { 40, 63 }, { 61, 63 }, { 81, 63 }, { 101, 63 }, { 111, 63 }, { 122, 63 }, { 142, 63 }, { 162, 63 }, { 183, 63 }, { 203, 63 },
+ { 223, 63 }
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1,
+ 1
+} };
void matrix_init_kb(void) {
@@ -151,6 +110,16 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record)
return process_record_user(keycode, record);
}
+uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) {
+ // Spacebar has 2 leds 41 & 42, so add 42 to the array here, and 41 will be added
+ // by the default lookup code that runs after this
+ if (row == 3 && column == 5) {
+ led_i[0] = 42;
+ return 1;
+ }
+ return 0;
+}
+
void matrix_scan_kb(void)
{
matrix_scan_user();
diff --git a/keyboards/planck/light/rules.mk b/keyboards/planck/light/rules.mk
index c10b8fd1d..b621a9abb 100644
--- a/keyboards/planck/light/rules.mk
+++ b/keyboards/planck/light/rules.mk
@@ -1,5 +1,36 @@
-MIDI_ENABLE = yes
+# MCU name
+MCU = at90usb1286
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = atmel-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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 = yes # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGB_MATRIX_ENABLE = yes
+API_SYSEX_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
-MCU = at90usb1286 \ No newline at end of file
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/readme.md b/keyboards/planck/readme.md
index 083279e8a..94b256c74 100644
--- a/keyboards/planck/readme.md
+++ b/keyboards/planck/readme.md
@@ -6,7 +6,7 @@ Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
-Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, Teensy 2.0
+Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
@@ -15,6 +15,7 @@ Make example for this keyboard (after setting up your build environment):
Install examples:
- make planck/rev6:default:dfu-util
+ make planck/rev5:default:dfu # For Planck rev5 or earlier and Planck Light
+ make planck/rev6:default:dfu-util # For Planck rev6
-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).
diff --git a/keyboards/planck/rev1/rules.mk b/keyboards/planck/rev1/rules.mk
index e51af55c6..be03e4515 100644
--- a/keyboards/planck/rev1/rules.mk
+++ b/keyboards/planck/rev1/rules.mk
@@ -1 +1,29 @@
-AUDIO_ENABLE = no # Audio output on port C6
+# MCU name
+MCU = atmega32u4
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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.
+API_SYSEX_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
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev2/rules.mk b/keyboards/planck/rev2/rules.mk
index e51af55c6..be03e4515 100644
--- a/keyboards/planck/rev2/rules.mk
+++ b/keyboards/planck/rev2/rules.mk
@@ -1 +1,29 @@
-AUDIO_ENABLE = no # Audio output on port C6
+# MCU name
+MCU = atmega32u4
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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.
+API_SYSEX_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
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk
index e51af55c6..3de40a66c 100644
--- a/keyboards/planck/rev3/rules.mk
+++ b/keyboards/planck/rev3/rules.mk
@@ -1 +1,35 @@
-AUDIO_ENABLE = no # Audio output on port C6
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = atmel-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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.
+API_SYSEX_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
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk
index 7e64e7edc..390f58249 100644
--- a/keyboards/planck/rev4/rules.mk
+++ b/keyboards/planck/rev4/rules.mk
@@ -1 +1,35 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = atmel-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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 = yes # 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.
+API_SYSEX_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
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev5/rules.mk b/keyboards/planck/rev5/rules.mk
index 7e64e7edc..ca63b39ac 100644
--- a/keyboards/planck/rev5/rules.mk
+++ b/keyboards/planck/rev5/rules.mk
@@ -1 +1,35 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = qmk-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = 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 = yes # 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.
+API_SYSEX_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
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index 1f3d1dfe5..c58275002 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -5,20 +5,35 @@ LAYOUTS += ortho_4x12
# Cortex version
MCU = STM32F303
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
# Build Options
-# comment out to disable the options.
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
#
-BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+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 = yes # 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.
+API_SYSEX_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
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+
CUSTOM_MATRIX = yes # Custom matrix file
-AUDIO_ENABLE = yes
-RGBLIGHT_ENABLE = no
# SERIAL_LINK_ENABLE = yes
ENCODER_ENABLE = yes
+
+LAYOUTS = ortho_4x12 planck_mit
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk
deleted file mode 100644
index 520a2d5c7..000000000
--- a/keyboards/planck/rules.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
-ifeq ($(strip $(KEYBOARD)), planck/rev3)
- BOOTLOADER = atmel-dfu
-endif
-ifeq ($(strip $(KEYBOARD)), planck/rev4)
- BOOTLOADER = atmel-dfu
-endif
-ifeq ($(strip $(KEYBOARD)), planck/rev5)
- BOOTLOADER = qmk-dfu
-endif
-ifeq ($(strip $(KEYBOARD)), planck/light)
- BOOTLOADER = atmel-dfu
-endif
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # 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)
-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 = yes # 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.
-API_SYSEX_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
-
-LAYOUTS = ortho_4x12 planck_mit planck_grid
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/preonic/keymaps/mikethetiger/config.h b/keyboards/preonic/keymaps/mikethetiger/config.h
new file mode 100644
index 000000000..9e5eb83a6
--- /dev/null
+++ b/keyboards/preonic/keymaps/mikethetiger/config.h
@@ -0,0 +1,38 @@
+#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
+#define TAP_CODE_DELAY 10
+
+/* 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/mikethetiger/keymap.c b/keyboards/preonic/keymaps/mikethetiger/keymap.c
new file mode 100644
index 000000000..2f3963f71
--- /dev/null
+++ b/keyboards/preonic/keymaps/mikethetiger/keymap.c
@@ -0,0 +1,289 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+enum preonic_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ LOWER,
+ RAISE,
+ BACKLIT
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_preonic_grid(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = 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_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = 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_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_preonic_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_preonic_grid(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef __AVR__
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef __AVR__
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ }
+ return true;
+};
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+
+void dip_update(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;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+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;
+ }
+ #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/mikethetiger/readme.md b/keyboards/preonic/keymaps/mikethetiger/readme.md
new file mode 100644
index 000000000..6da54ebbb
--- /dev/null
+++ b/keyboards/preonic/keymaps/mikethetiger/readme.md
@@ -0,0 +1 @@
+# mikethetiger's Preonic layout - largely based on the Planck's \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/mikethetiger/rules.mk b/keyboards/preonic/keymaps/mikethetiger/rules.mk
new file mode 100644
index 000000000..dcf16bef3
--- /dev/null
+++ b/keyboards/preonic/keymaps/mikethetiger/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/preonic/readme.md b/keyboards/preonic/readme.md
index 5b3c0ec58..85adf635d 100644
--- a/keyboards/preonic/readme.md
+++ b/keyboards/preonic/readme.md
@@ -6,11 +6,16 @@ Preonic
A compact 50% (12x5) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/preonic/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
-Hardware Supported: Preonic PCB rev1, Teensy 2.0
+Hardware Supported: Preonic PCB rev1, rev2, rev3
Hardware Availability: [OLKB.com](https://olkb.com/preonic/), [Massdrop](https://www.massdrop.com/buy/preonic-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
- make preonic:default
+ make preonic/rev2: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. \ No newline at end of file
+Install examples:
+
+ make preonic/rev2:default:dfu # For Preonic rev1 or rev2
+ make preonic/rev3:default:dfu-util # For Preonic rev3
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.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/preonic/rev1/rules.mk b/keyboards/preonic/rev1/rules.mk
index e69de29bb..b0d44db82 100644
--- a/keyboards/preonic/rev1/rules.mk
+++ b/keyboards/preonic/rev1/rules.mk
@@ -0,0 +1,67 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = atmel-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+API_SYSEX_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
+
+LAYOUTS = ortho_5x12
diff --git a/keyboards/preonic/rev2/rules.mk b/keyboards/preonic/rev2/rules.mk
index e69de29bb..748979c79 100644
--- a/keyboards/preonic/rev2/rules.mk
+++ b/keyboards/preonic/rev2/rules.mk
@@ -0,0 +1,67 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+# This definition is optional, and if your keyboard supports multiple bootloaders of
+# different sizes, comment this out, and the correct address will be loaded
+# automatically (+60). See bootloader.mk for all options.
+BOOTLOADER = qmk-dfu
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+API_SYSEX_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
+
+LAYOUTS = ortho_5x12
diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk
index 0c171b2fb..39e69872c 100644
--- a/keyboards/preonic/rev3/rules.mk
+++ b/keyboards/preonic/rev3/rules.mk
@@ -1,24 +1,34 @@
# project specific files
SRC = matrix.c
-LAYOUTS += ortho_5x12
# Cortex version
MCU = STM32F303
# Build Options
-# comment out to disable the options.
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
#
-BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE = yes # 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
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+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 = yes # 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.
+API_SYSEX_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
+#SLEEP_LED_ENABLE = yes
+
CUSTOM_MATRIX = yes # Custom matrix file
-AUDIO_ENABLE = yes
-RGBLIGHT_ENABLE = no
# SERIAL_LINK_ENABLE = yes
ENCODER_ENABLE = yes
+
+LAYOUTS = ortho_5x12
diff --git a/keyboards/projectkb/alice/alice.c b/keyboards/projectkb/alice/alice.c
new file mode 100644
index 000000000..fada43681
--- /dev/null
+++ b/keyboards/projectkb/alice/alice.c
@@ -0,0 +1,27 @@
+#include "alice.h"
+
+void matrix_init_board(void){
+ setPinOutput(A0);
+ setPinOutput(A1);
+ setPinOutput(A2);
+}
+
+
+void led_set_kb(uint8_t usb_led) {
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ writePinLow(A0);
+ } else {
+ writePinHigh(A0);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ writePinLow(A1);
+ } else {
+ writePinHigh(A1);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ writePinLow(A2);
+ } else {
+ writePinHigh(A2);
+ }
+ led_set_user(usb_led);
+}
diff --git a/keyboards/projectkb/alice/alice.h b/keyboards/projectkb/alice/alice.h
new file mode 100644
index 000000000..907f020e4
--- /dev/null
+++ b/keyboards/projectkb/alice/alice.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "quantum.h"
+
+#define KNO KC_NO
+
+#define LAYOUT_default( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K32, K33, K34, K35, K36, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
+ K41, K43, K44, K46, K49, K4B, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, KNO, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, KNO, K28, K29, K2A, K2B, K2C, K2D, KNO, K2F }, \
+ { KNO, K31, K32, K33, K34, K35, K36, KNO, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { KNO, K41, KNO, K43, K44, KNO, K46, KNO, KNO, K49, KNO, K4B, KNO, KNO, KNO, K4F } \
+}
diff --git a/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.c b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.c
index 4331155df..9d10fbd75 100644
--- a/keyboards/dztech/boards/GENERIC_STM32_F303XC/board.c
+++ b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.c
@@ -14,6 +14,11 @@
limitations under the License.
*/
+/*
+ * This file has been automatically generated using ChibiStudio board
+ * generator plugin. Do not edit manually.
+ */
+
#include "hal.h"
#if HAL_USE_PAL || defined(__DOXYGEN__)
@@ -74,28 +79,6 @@ void __early_init(void) {
stm32_clock_init();
}
-#if HAL_USE_SDC || defined(__DOXYGEN__)
-/**
- * @brief SDC card detection.
- */
-bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
-
- (void)sdcp;
- /* TODO: Fill the implementation.*/
- return true;
-}
-
-/**
- * @brief SDC card write protection detection.
- */
-bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
-
- (void)sdcp;
- /* TODO: Fill the implementation.*/
- return false;
-}
-#endif /* HAL_USE_SDC */
-
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
/**
* @brief MMC_SPI card detection.
diff --git a/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.h b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.h
new file mode 100644
index 000000000..de3a93d1c
--- /dev/null
+++ b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.h
@@ -0,0 +1,922 @@
+/*
+ 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.
+*/
+
+/*
+ * This file has been automatically generated using ChibiStudio board
+ * generator plugin. Do not edit manually.
+ */
+
+#ifndef BOARD_H
+#define BOARD_H
+
+/*
+ * Setup for ST STM32F072B-Discovery board.
+ */
+
+/*
+ * Board identifier.
+ */
+#define BOARD_ST_STM32F072B_DISCOVERY
+#define BOARD_NAME "ST STM32F072B-Discovery"
+
+/*
+ * Board oscillators-related settings.
+ * NOTE: HSE not fitted.
+ */
+#if !defined(STM32_LSECLK)
+#define STM32_LSECLK 32768
+#endif
+
+#define STM32_LSEDRV (3U << 3U)
+
+#if !defined(STM32_HSECLK)
+#define STM32_HSECLK 0U
+#endif
+
+#define STM32_HSE_BYPASS
+
+/*
+ * MCU type as defined in the ST header.
+ */
+#define STM32F072xB
+
+/*
+ * IO pins assignments.
+ */
+#define GPIOA_BUTTON 0U
+#define GPIOA_PIN1 1U
+#define GPIOA_PIN2 2U
+#define GPIOA_PIN3 3U
+#define GPIOA_PIN4 4U
+#define GPIOA_PIN5 5U
+#define GPIOA_PIN6 6U
+#define GPIOA_PIN7 7U
+#define GPIOA_PIN8 8U
+#define GPIOA_PIN9 9U
+#define GPIOA_PIN10 10U
+#define GPIOA_USB_DM 11U
+#define GPIOA_USB_DP 12U
+#define GPIOA_SWDIO 13U
+#define GPIOA_SWCLK 14U
+#define GPIOA_PIN15 15U
+
+#define GPIOB_PIN0 0U
+#define GPIOB_PIN1 1U
+#define GPIOB_PIN2 2U
+#define GPIOB_PIN3 3U
+#define GPIOB_PIN4 4U
+#define GPIOB_PIN5 5U
+#define GPIOB_PIN6 6U
+#define GPIOB_PIN7 7U
+#define GPIOB_PIN8 8U
+#define GPIOB_PIN9 9U
+#define GPIOB_PIN10 10U
+#define GPIOB_PIN11 11U
+#define GPIOB_PIN12 12U
+#define GPIOB_SPI2_SCK 13U
+#define GPIOB_SPI2_MISO 14U
+#define GPIOB_SPI2_MOSI 15U
+
+#define GPIOC_MEMS_CS 0U
+#define GPIOC_PIN1 1U
+#define GPIOC_PIN2 2U
+#define GPIOC_PIN3 3U
+#define GPIOC_PIN4 4U
+#define GPIOC_PIN5 5U
+#define GPIOC_LED_RED 6U
+#define GPIOC_LED_BLUE 7U
+#define GPIOC_LED_ORANGE 8U
+#define GPIOC_LED_GREEN 9U
+#define GPIOC_PIN10 10U
+#define GPIOC_PIN11 11U
+#define GPIOC_PIN12 12U
+#define GPIOC_PIN13 13U
+#define GPIOC_OSC32_IN 14U
+#define GPIOC_OSC32_OUT 15U
+
+#define GPIOD_PIN0 0U
+#define GPIOD_PIN1 1U
+#define GPIOD_PIN2 2U
+#define GPIOD_PIN3 3U
+#define GPIOD_PIN4 4U
+#define GPIOD_PIN5 5U
+#define GPIOD_PIN6 6U
+#define GPIOD_PIN7 7U
+#define GPIOD_PIN8 8U
+#define GPIOD_PIN9 9U
+#define GPIOD_PIN10 10U
+#define GPIOD_PIN11 11U
+#define GPIOD_PIN12 12U
+#define GPIOD_PIN13 13U
+#define GPIOD_PIN14 14U
+#define GPIOD_PIN15 15U
+
+#define GPIOE_PIN0 0U
+#define GPIOE_PIN1 1U
+#define GPIOE_PIN2 2U
+#define GPIOE_PIN3 3U
+#define GPIOE_PIN4 4U
+#define GPIOE_PIN5 5U
+#define GPIOE_PIN6 6U
+#define GPIOE_PIN7 7U
+#define GPIOE_PIN8 8U
+#define GPIOE_PIN9 9U
+#define GPIOE_PIN10 10U
+#define GPIOE_PIN11 11U
+#define GPIOE_PIN12 12U
+#define GPIOE_PIN13 13U
+#define GPIOE_PIN14 14U
+#define GPIOE_PIN15 15U
+
+#define GPIOF_OSC_IN 0U
+#define GPIOF_OSC_OUT 1U
+#define GPIOF_PIN2 2U
+#define GPIOF_PIN3 3U
+#define GPIOF_PIN4 4U
+#define GPIOF_PIN5 5U
+#define GPIOF_PIN6 6U
+#define GPIOF_PIN7 7U
+#define GPIOF_PIN8 8U
+#define GPIOF_PIN9 9U
+#define GPIOF_PIN10 10U
+#define GPIOF_PIN11 11U
+#define GPIOF_PIN12 12U
+#define GPIOF_PIN13 13U
+#define GPIOF_PIN14 14U
+#define GPIOF_PIN15 15U
+
+/*
+ * IO lines assignments.
+ */
+#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
+#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
+#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
+#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
+#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
+
+#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
+#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
+#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
+
+#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
+#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
+#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
+#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U)
+#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
+#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
+#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
+
+
+
+#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
+#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
+
+/*
+ * I/O ports initial setup, this configuration is established soon after reset
+ * in the initialization code.
+ * Please refer to the STM32 Reference Manual for details.
+ */
+#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
+#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
+#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
+#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
+#define PIN_ODR_LOW(n) (0U << (n))
+#define PIN_ODR_HIGH(n) (1U << (n))
+#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
+#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
+#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
+#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
+#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
+#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
+#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
+#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
+#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
+#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
+
+/*
+ * GPIOA setup:
+ *
+ * PA0 - BUTTON (input floating).
+ * PA1 - PIN1 (input pullup).
+ * PA2 - PIN2 (input pullup).
+ * PA3 - PIN3 (input pullup).
+ * PA4 - PIN4 (input pullup).
+ * PA5 - PIN5 (input pullup).
+ * PA6 - PIN6 (input pullup).
+ * PA7 - PIN7 (input pullup).
+ * PA8 - PIN8 (input pullup).
+ * PA9 - PIN9 (input pullup).
+ * PA10 - PIN10 (input pullup).
+ * PA11 - USB_DM (input floating).
+ * PA12 - USB_DP (input floating).
+ * PA13 - SWDIO (alternate 0).
+ * PA14 - SWCLK (alternate 0).
+ * PA15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \
+ PIN_MODE_INPUT(GPIOA_PIN1) | \
+ PIN_MODE_INPUT(GPIOA_PIN2) | \
+ PIN_MODE_INPUT(GPIOA_PIN3) | \
+ PIN_MODE_INPUT(GPIOA_PIN4) | \
+ PIN_MODE_INPUT(GPIOA_PIN5) | \
+ PIN_MODE_INPUT(GPIOA_PIN6) | \
+ PIN_MODE_INPUT(GPIOA_PIN7) | \
+ PIN_MODE_INPUT(GPIOA_PIN8) | \
+ PIN_MODE_INPUT(GPIOA_PIN9) | \
+ PIN_MODE_INPUT(GPIOA_PIN10) | \
+ PIN_MODE_INPUT(GPIOA_USB_DM) | \
+ PIN_MODE_INPUT(GPIOA_USB_DP) | \
+ PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
+ PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
+ PIN_MODE_INPUT(GPIOA_PIN15))
+#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
+#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
+ PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \
+ PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \
+ PIN_OSPEED_HIGH(GPIOA_SWDIO) | \
+ PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
+ PIN_OSPEED_HIGH(GPIOA_PIN15))
+#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
+ PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
+ PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
+ PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
+ PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
+ PIN_PUPDR_PULLUP(GPIOA_PIN15))
+#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \
+ PIN_ODR_HIGH(GPIOA_PIN1) | \
+ PIN_ODR_HIGH(GPIOA_PIN2) | \
+ PIN_ODR_HIGH(GPIOA_PIN3) | \
+ PIN_ODR_HIGH(GPIOA_PIN4) | \
+ PIN_ODR_HIGH(GPIOA_PIN5) | \
+ PIN_ODR_HIGH(GPIOA_PIN6) | \
+ PIN_ODR_HIGH(GPIOA_PIN7) | \
+ PIN_ODR_HIGH(GPIOA_PIN8) | \
+ PIN_ODR_HIGH(GPIOA_PIN9) | \
+ PIN_ODR_HIGH(GPIOA_PIN10) | \
+ PIN_ODR_HIGH(GPIOA_USB_DM) | \
+ PIN_ODR_HIGH(GPIOA_USB_DP) | \
+ PIN_ODR_HIGH(GPIOA_SWDIO) | \
+ PIN_ODR_HIGH(GPIOA_SWCLK) | \
+ PIN_ODR_HIGH(GPIOA_PIN15))
+#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN1, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN6, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN7, 0U))
+#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN9, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \
+ PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \
+ PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \
+ PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \
+ PIN_AFIO_AF(GPIOA_PIN15, 0U))
+
+/*
+ * GPIOB setup:
+ *
+ * PB0 - PIN0 (input pullup).
+ * PB1 - PIN1 (input pullup).
+ * PB2 - PIN2 (input pullup).
+ * PB3 - PIN3 (input pullup).
+ * PB4 - PIN4 (input pullup).
+ * PB5 - PIN5 (input pullup).
+ * PB6 - PIN6 (input pullup).
+ * PB7 - PIN7 (input pullup).
+ * PB8 - PIN8 (input pullup).
+ * PB9 - PIN9 (input pullup).
+ * PB10 - PIN10 (input pullup).
+ * PB11 - PIN11 (input pullup).
+ * PB12 - PIN12 (input pullup).
+ * PB13 - SPI2_SCK (alternate 0).
+ * PB14 - SPI2_MISO (alternate 0).
+ * PB15 - SPI2_MOSI (alternate 0).
+ */
+#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
+ PIN_MODE_INPUT(GPIOB_PIN1) | \
+ PIN_MODE_INPUT(GPIOB_PIN2) | \
+ PIN_MODE_INPUT(GPIOB_PIN3) | \
+ PIN_MODE_INPUT(GPIOB_PIN4) | \
+ PIN_MODE_INPUT(GPIOB_PIN5) | \
+ PIN_MODE_INPUT(GPIOB_PIN6) | \
+ PIN_MODE_INPUT(GPIOB_PIN7) | \
+ PIN_MODE_INPUT(GPIOB_PIN8) | \
+ PIN_MODE_INPUT(GPIOB_PIN9) | \
+ PIN_MODE_INPUT(GPIOB_PIN10) | \
+ PIN_MODE_INPUT(GPIOB_PIN11) | \
+ PIN_MODE_INPUT(GPIOB_PIN12) | \
+ PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \
+ PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \
+ PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
+#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \
+ PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
+#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
+ PIN_OSPEED_HIGH(GPIOB_PIN2) | \
+ PIN_OSPEED_HIGH(GPIOB_PIN3) | \
+ PIN_OSPEED_HIGH(GPIOB_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
+ PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
+ PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \
+ PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \
+ PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI))
+#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
+ PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
+ PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \
+ PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \
+ PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
+#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
+ PIN_ODR_HIGH(GPIOB_PIN1) | \
+ PIN_ODR_HIGH(GPIOB_PIN2) | \
+ PIN_ODR_HIGH(GPIOB_PIN3) | \
+ PIN_ODR_HIGH(GPIOB_PIN4) | \
+ PIN_ODR_HIGH(GPIOB_PIN5) | \
+ PIN_ODR_HIGH(GPIOB_PIN6) | \
+ PIN_ODR_HIGH(GPIOB_PIN7) | \
+ PIN_ODR_HIGH(GPIOB_PIN8) | \
+ PIN_ODR_HIGH(GPIOB_PIN9) | \
+ PIN_ODR_HIGH(GPIOB_PIN10) | \
+ PIN_ODR_HIGH(GPIOB_PIN11) | \
+ PIN_ODR_HIGH(GPIOB_PIN12) | \
+ PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \
+ PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \
+ PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
+#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN1, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN6, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN7, 0U))
+#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN9, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN11, 0U) | \
+ PIN_AFIO_AF(GPIOB_PIN12, 0U) | \
+ PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \
+ PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \
+ PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U))
+
+/*
+ * GPIOC setup:
+ *
+ * PC0 - MEMS_CS (output pushpull maximum).
+ * PC1 - PIN1 (input pullup).
+ * PC2 - PIN2 (input pullup).
+ * PC3 - PIN3 (input pullup).
+ * PC4 - PIN4 (input pullup).
+ * PC5 - PIN5 (input pullup).
+ * PC6 - LED_RED (output pushpull maximum).
+ * PC7 - LED_BLUE (output pushpull maximum).
+ * PC8 - LED_ORANGE (output pushpull maximum).
+ * PC9 - LED_GREEN (output pushpull maximum).
+ * PC10 - PIN10 (input pullup).
+ * PC11 - PIN11 (input pullup).
+ * PC12 - PIN12 (input pullup).
+ * PC13 - PIN13 (input pullup).
+ * PC14 - OSC32_IN (input floating).
+ * PC15 - OSC32_OUT (input floating).
+ */
+#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \
+ PIN_MODE_INPUT(GPIOC_PIN1) | \
+ PIN_MODE_INPUT(GPIOC_PIN2) | \
+ PIN_MODE_INPUT(GPIOC_PIN3) | \
+ PIN_MODE_INPUT(GPIOC_PIN4) | \
+ PIN_MODE_INPUT(GPIOC_PIN5) | \
+ PIN_MODE_OUTPUT(GPIOC_LED_RED) | \
+ PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \
+ PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \
+ PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \
+ PIN_MODE_INPUT(GPIOC_PIN10) | \
+ PIN_MODE_INPUT(GPIOC_PIN11) | \
+ PIN_MODE_INPUT(GPIOC_PIN12) | \
+ PIN_MODE_INPUT(GPIOC_PIN13) | \
+ PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
+ PIN_MODE_INPUT(GPIOC_OSC32_OUT))
+#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
+#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
+ PIN_OSPEED_HIGH(GPIOC_LED_RED) | \
+ PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \
+ PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \
+ PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
+ PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
+ PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \
+ PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
+#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
+ PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \
+ PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \
+ PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \
+ PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
+ PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
+ PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \
+ PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
+#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \
+ PIN_ODR_HIGH(GPIOC_PIN1) | \
+ PIN_ODR_HIGH(GPIOC_PIN2) | \
+ PIN_ODR_HIGH(GPIOC_PIN3) | \
+ PIN_ODR_HIGH(GPIOC_PIN4) | \
+ PIN_ODR_HIGH(GPIOC_PIN5) | \
+ PIN_ODR_LOW(GPIOC_LED_RED) | \
+ PIN_ODR_LOW(GPIOC_LED_BLUE) | \
+ PIN_ODR_LOW(GPIOC_LED_ORANGE) | \
+ PIN_ODR_LOW(GPIOC_LED_GREEN) | \
+ PIN_ODR_HIGH(GPIOC_PIN10) | \
+ PIN_ODR_HIGH(GPIOC_PIN11) | \
+ PIN_ODR_HIGH(GPIOC_PIN12) | \
+ PIN_ODR_HIGH(GPIOC_PIN13) | \
+ PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
+ PIN_ODR_HIGH(GPIOC_OSC32_OUT))
+#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN1, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \
+ PIN_AFIO_AF(GPIOC_LED_BLUE, 0U))
+#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \
+ PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN11, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN12, 0U) | \
+ PIN_AFIO_AF(GPIOC_PIN13, 0U) | \
+ PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \
+ PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
+
+/*
+ * GPIOD setup:
+ *
+ * PD0 - PIN0 (input pullup).
+ * PD1 - PIN1 (input pullup).
+ * PD2 - PIN2 (input pullup).
+ * PD3 - PIN3 (input pullup).
+ * PD4 - PIN4 (input pullup).
+ * PD5 - PIN5 (input pullup).
+ * PD6 - PIN6 (input pullup).
+ * PD7 - PIN7 (input pullup).
+ * PD8 - PIN8 (input pullup).
+ * PD9 - PIN9 (input pullup).
+ * PD10 - PIN10 (input pullup).
+ * PD11 - PIN11 (input pullup).
+ * PD12 - PIN12 (input pullup).
+ * PD13 - PIN13 (input pullup).
+ * PD14 - PIN14 (input pullup).
+ * PD15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
+ PIN_MODE_INPUT(GPIOD_PIN1) | \
+ PIN_MODE_INPUT(GPIOD_PIN2) | \
+ PIN_MODE_INPUT(GPIOD_PIN3) | \
+ PIN_MODE_INPUT(GPIOD_PIN4) | \
+ PIN_MODE_INPUT(GPIOD_PIN5) | \
+ PIN_MODE_INPUT(GPIOD_PIN6) | \
+ PIN_MODE_INPUT(GPIOD_PIN7) | \
+ PIN_MODE_INPUT(GPIOD_PIN8) | \
+ PIN_MODE_INPUT(GPIOD_PIN9) | \
+ PIN_MODE_INPUT(GPIOD_PIN10) | \
+ PIN_MODE_INPUT(GPIOD_PIN11) | \
+ PIN_MODE_INPUT(GPIOD_PIN12) | \
+ PIN_MODE_INPUT(GPIOD_PIN13) | \
+ PIN_MODE_INPUT(GPIOD_PIN14) | \
+ PIN_MODE_INPUT(GPIOD_PIN15))
+#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
+#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
+ PIN_OSPEED_VERYLOW(GPIOD_PIN15))
+#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
+ PIN_PUPDR_PULLUP(GPIOD_PIN15))
+#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
+ PIN_ODR_HIGH(GPIOD_PIN1) | \
+ PIN_ODR_HIGH(GPIOD_PIN2) | \
+ PIN_ODR_HIGH(GPIOD_PIN3) | \
+ PIN_ODR_HIGH(GPIOD_PIN4) | \
+ PIN_ODR_HIGH(GPIOD_PIN5) | \
+ PIN_ODR_HIGH(GPIOD_PIN6) | \
+ PIN_ODR_HIGH(GPIOD_PIN7) | \
+ PIN_ODR_HIGH(GPIOD_PIN8) | \
+ PIN_ODR_HIGH(GPIOD_PIN9) | \
+ PIN_ODR_HIGH(GPIOD_PIN10) | \
+ PIN_ODR_HIGH(GPIOD_PIN11) | \
+ PIN_ODR_HIGH(GPIOD_PIN12) | \
+ PIN_ODR_HIGH(GPIOD_PIN13) | \
+ PIN_ODR_HIGH(GPIOD_PIN14) | \
+ PIN_ODR_HIGH(GPIOD_PIN15))
+#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN1, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN6, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN7, 0U))
+#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN9, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN11, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN12, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN13, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN14, 0U) | \
+ PIN_AFIO_AF(GPIOD_PIN15, 0U))
+
+/*
+ * GPIOE setup:
+ *
+ * PE0 - PIN0 (input pullup).
+ * PE1 - PIN1 (input pullup).
+ * PE2 - PIN2 (input pullup).
+ * PE3 - PIN3 (input pullup).
+ * PE4 - PIN4 (input pullup).
+ * PE5 - PIN5 (input pullup).
+ * PE6 - PIN6 (input pullup).
+ * PE7 - PIN7 (input pullup).
+ * PE8 - PIN8 (input pullup).
+ * PE9 - PIN9 (input pullup).
+ * PE10 - PIN10 (input pullup).
+ * PE11 - PIN11 (input pullup).
+ * PE12 - PIN12 (input pullup).
+ * PE13 - PIN13 (input pullup).
+ * PE14 - PIN14 (input pullup).
+ * PE15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \
+ PIN_MODE_INPUT(GPIOE_PIN1) | \
+ PIN_MODE_INPUT(GPIOE_PIN2) | \
+ PIN_MODE_INPUT(GPIOE_PIN3) | \
+ PIN_MODE_INPUT(GPIOE_PIN4) | \
+ PIN_MODE_INPUT(GPIOE_PIN5) | \
+ PIN_MODE_INPUT(GPIOE_PIN6) | \
+ PIN_MODE_INPUT(GPIOE_PIN7) | \
+ PIN_MODE_INPUT(GPIOE_PIN8) | \
+ PIN_MODE_INPUT(GPIOE_PIN9) | \
+ PIN_MODE_INPUT(GPIOE_PIN10) | \
+ PIN_MODE_INPUT(GPIOE_PIN11) | \
+ PIN_MODE_INPUT(GPIOE_PIN12) | \
+ PIN_MODE_INPUT(GPIOE_PIN13) | \
+ PIN_MODE_INPUT(GPIOE_PIN14) | \
+ PIN_MODE_INPUT(GPIOE_PIN15))
+#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \
+ PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
+#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \
+ PIN_OSPEED_VERYLOW(GPIOE_PIN15))
+#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN1) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN5) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN6) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN7) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN8) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN9) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN10) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN11) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN12) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN13) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN14) | \
+ PIN_PUPDR_PULLUP(GPIOE_PIN15))
+#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \
+ PIN_ODR_HIGH(GPIOE_PIN1) | \
+ PIN_ODR_HIGH(GPIOE_PIN2) | \
+ PIN_ODR_HIGH(GPIOE_PIN3) | \
+ PIN_ODR_HIGH(GPIOE_PIN4) | \
+ PIN_ODR_HIGH(GPIOE_PIN5) | \
+ PIN_ODR_HIGH(GPIOE_PIN6) | \
+ PIN_ODR_HIGH(GPIOE_PIN7) | \
+ PIN_ODR_HIGH(GPIOE_PIN8) | \
+ PIN_ODR_HIGH(GPIOE_PIN9) | \
+ PIN_ODR_HIGH(GPIOE_PIN10) | \
+ PIN_ODR_HIGH(GPIOE_PIN11) | \
+ PIN_ODR_HIGH(GPIOE_PIN12) | \
+ PIN_ODR_HIGH(GPIOE_PIN13) | \
+ PIN_ODR_HIGH(GPIOE_PIN14) | \
+ PIN_ODR_HIGH(GPIOE_PIN15))
+#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN1, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN6, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN7, 0U))
+#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN9, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN11, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN12, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN13, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN14, 0U) | \
+ PIN_AFIO_AF(GPIOE_PIN15, 0U))
+
+/*
+ * GPIOF setup:
+ *
+ * PF0 - OSC_IN (input floating).
+ * PF1 - OSC_OUT (input floating).
+ * PF2 - PIN2 (input pullup).
+ * PF3 - PIN3 (input pullup).
+ * PF4 - PIN4 (input pullup).
+ * PF5 - PIN5 (input pullup).
+ * PF6 - PIN6 (input pullup).
+ * PF7 - PIN7 (input pullup).
+ * PF8 - PIN8 (input pullup).
+ * PF9 - PIN9 (input pullup).
+ * PF10 - PIN10 (input pullup).
+ * PF11 - PIN11 (input pullup).
+ * PF12 - PIN12 (input pullup).
+ * PF13 - PIN13 (input pullup).
+ * PF14 - PIN14 (input pullup).
+ * PF15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \
+ PIN_MODE_INPUT(GPIOF_OSC_OUT) | \
+ PIN_MODE_INPUT(GPIOF_PIN2) | \
+ PIN_MODE_INPUT(GPIOF_PIN3) | \
+ PIN_MODE_INPUT(GPIOF_PIN4) | \
+ PIN_MODE_INPUT(GPIOF_PIN5) | \
+ PIN_MODE_INPUT(GPIOF_PIN6) | \
+ PIN_MODE_INPUT(GPIOF_PIN7) | \
+ PIN_MODE_INPUT(GPIOF_PIN8) | \
+ PIN_MODE_INPUT(GPIOF_PIN9) | \
+ PIN_MODE_INPUT(GPIOF_PIN10) | \
+ PIN_MODE_INPUT(GPIOF_PIN11) | \
+ PIN_MODE_INPUT(GPIOF_PIN12) | \
+ PIN_MODE_INPUT(GPIOF_PIN13) | \
+ PIN_MODE_INPUT(GPIOF_PIN14) | \
+ PIN_MODE_INPUT(GPIOF_PIN15))
+#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
+ PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
+#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \
+ PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
+ PIN_OSPEED_VERYLOW(GPIOF_PIN15))
+#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \
+ PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
+ PIN_PUPDR_PULLUP(GPIOF_PIN15))
+#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \
+ PIN_ODR_HIGH(GPIOF_OSC_OUT) | \
+ PIN_ODR_HIGH(GPIOF_PIN2) | \
+ PIN_ODR_HIGH(GPIOF_PIN3) | \
+ PIN_ODR_HIGH(GPIOF_PIN4) | \
+ PIN_ODR_HIGH(GPIOF_PIN5) | \
+ PIN_ODR_HIGH(GPIOF_PIN6) | \
+ PIN_ODR_HIGH(GPIOF_PIN7) | \
+ PIN_ODR_HIGH(GPIOF_PIN8) | \
+ PIN_ODR_HIGH(GPIOF_PIN9) | \
+ PIN_ODR_HIGH(GPIOF_PIN10) | \
+ PIN_ODR_HIGH(GPIOF_PIN11) | \
+ PIN_ODR_HIGH(GPIOF_PIN12) | \
+ PIN_ODR_HIGH(GPIOF_PIN13) | \
+ PIN_ODR_HIGH(GPIOF_PIN14) | \
+ PIN_ODR_HIGH(GPIOF_PIN15))
+#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \
+ PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN2, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN3, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN4, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN5, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN6, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN7, 0U))
+#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN9, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN10, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN11, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN12, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN13, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN14, 0U) | \
+ PIN_AFIO_AF(GPIOF_PIN15, 0U))
+
+
+#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/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.mk b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.mk
new file mode 100644
index 000000000..b98dcdd26
--- /dev/null
+++ b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/board.mk
@@ -0,0 +1,5 @@
+# List of all the board related files.
+BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c
+
+# Required include directories
+BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY
diff --git a/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg
new file mode 100644
index 000000000..9c7cf4fd7
--- /dev/null
+++ b/keyboards/projectkb/alice/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg
@@ -0,0 +1,703 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- STM32F0xx board Template -->
+<board
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.chibios.org/xml/schema/boards/stm32f0xx_board.xsd">
+ <configuration_settings>
+ <templates_path>resources/gencfg/processors/boards/stm32f0xx/templates</templates_path>
+ <output_path>..</output_path>
+ <hal_version>3.0.x</hal_version>
+ </configuration_settings>
+ <board_name>ST STM32F072B-Discovery</board_name>
+ <board_id>ST_STM32F072B_DISCOVERY</board_id>
+ <board_functions></board_functions>
+ <subtype>STM32F072xB</subtype>
+ <clocks HSEFrequency="0" HSEBypass="true" LSEFrequency="0"
+ LSEBypass="false" LSEDrive="3 High Drive (default)" />
+ <ports>
+ <GPIOA>
+ <pin0
+ ID="BUTTON"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin1
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin2
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin3
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin4
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin5
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin6
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin7
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin8
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin9
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin10
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin11
+ ID="USB_DM"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin12
+ ID="USB_DP"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin13
+ ID="SWDIO"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Alternate"
+ Alternate="0" />
+ <pin14
+ ID="SWCLK"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullDown"
+ Level="High"
+ Mode="Alternate"
+ Alternate="0" />
+ <pin15
+ ID=""
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ </GPIOA>
+ <GPIOB>
+ <pin0
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin1
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin2
+ ID=""
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin3
+ ID=""
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin4
+ ID=""
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin5
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin6
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin7
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin8
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin9
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin10
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin11
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin12
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin13
+ ID="SPI2_SCK"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Alternate"
+ Alternate="0" />
+ <pin14
+ ID="SPI2_MISO"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Alternate"
+ Alternate="0" />
+ <pin15
+ ID="SPI2_MOSI"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Alternate"
+ Alternate="0" />
+ </GPIOB>
+ <GPIOC>
+ <pin0
+ ID="MEMS_CS"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Output"
+ Alternate="0" />
+ <pin1
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin2
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin3
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin4
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin5
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin6
+ ID="LED_RED"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="Low"
+ Mode="Output"
+ Alternate="0" />
+ <pin7
+ ID="LED_BLUE"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="Low"
+ Mode="Output"
+ Alternate="0" />
+ <pin8
+ ID="LED_ORANGE"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="Low"
+ Mode="Output"
+ Alternate="0" ></pin8>
+ <pin9
+ ID="LED_GREEN"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="Low"
+ Mode="Output"
+ Alternate="0" />
+ <pin10
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin11
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin12
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin13
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin14
+ ID="OSC32_IN"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin15
+ ID="OSC32_OUT"
+ Type="PushPull"
+ Speed="Maximum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ </GPIOC>
+ <GPIOD>
+ <pin0
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin1
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin2
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin3
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin4
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin5
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin6
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin7
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin8
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin9
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin10
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin11
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin12
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin13
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin14
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin15
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ </GPIOD>
+ <GPIOE>
+ <pin0 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin1 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin2 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin3 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin4 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin5 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin6 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin7 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin8 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin9 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin10 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin11 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin12 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin13 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin14 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ <pin15 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
+ Level="High" Mode="Input" Alternate="0" />
+ </GPIOE>
+ <GPIOF>
+ <pin0
+ ID="OSC_IN"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin1
+ ID="OSC_OUT"
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="Floating"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin2
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin3
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin4
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin5
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin6
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin7
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin8
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin9
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin10
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin11
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin12
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin13
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin14
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ <pin15
+ ID=""
+ Type="PushPull"
+ Speed="Minimum"
+ Resistor="PullUp"
+ Level="High"
+ Mode="Input"
+ Alternate="0" />
+ </GPIOF>
+ </ports>
+</board>
diff --git a/keyboards/dztech/dz60rgb/bootloader_defs.h b/keyboards/projectkb/alice/bootloader_defs.h
index 3b0e9d20a..02c48c4e6 100644
--- a/keyboards/dztech/dz60rgb/bootloader_defs.h
+++ b/keyboards/projectkb/alice/bootloader_defs.h
@@ -1,7 +1,7 @@
/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
+/* It is chip dependent, the correct number can be looked up here (page 175):
* 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
*/
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
+#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
diff --git a/keyboards/dztech/dz60rgb/chconf.h b/keyboards/projectkb/alice/chconf.h
index 1d9f12ff1..99fa8ce39 100644
--- a/keyboards/dztech/dz60rgb/chconf.h
+++ b/keyboards/projectkb/alice/chconf.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ 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.
@@ -48,7 +48,7 @@
* @details Frequency of the system timer that drives the system ticks. This
* setting also defines the system tick time unit.
*/
-#define CH_CFG_ST_FREQUENCY 100000
+#define CH_CFG_ST_FREQUENCY 10000
/**
* @brief Time delta constant for the tick-less mode.
@@ -105,6 +105,10 @@
*/
#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
+
/** @} */
/*===========================================================================*/
@@ -122,7 +126,7 @@
* @note This is not related to the compiler optimization options.
* @note The default is @p TRUE.
*/
-#define CH_CFG_OPTIMIZE_SPEED TRUE
+#define CH_CFG_OPTIMIZE_SPEED FALSE
/** @} */
@@ -140,7 +144,7 @@
*
* @note The default is @p TRUE.
*/
-#define CH_CFG_USE_TM TRUE
+#define CH_CFG_USE_TM FALSE
/**
* @brief Threads registry APIs.
@@ -214,7 +218,7 @@
* @note The default is @p TRUE.
* @note Requires @p CH_CFG_USE_CONDVARS.
*/
-#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
/**
* @brief Events Flags APIs.
@@ -252,7 +256,7 @@
* requirements.
* @note Requires @p CH_CFG_USE_MESSAGES.
*/
-#define CH_CFG_USE_MESSAGES_PRIORITY TRUE
+#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
/**
* @brief Mailboxes APIs.
@@ -271,7 +275,7 @@
*
* @note The default is @p TRUE.
*/
-#define CH_CFG_USE_MEMCORE TRUE
+#define CH_CFG_USE_MEMCORE FALSE
/**
* @brief Heap Allocator APIs.
@@ -283,7 +287,7 @@
* @p CH_CFG_USE_SEMAPHORES.
* @note Mutexes are recommended.
*/
-#define CH_CFG_USE_HEAP TRUE
+#define CH_CFG_USE_HEAP FALSE
/**
* @brief Memory Pools Allocator APIs.
@@ -292,7 +296,7 @@
*
* @note The default is @p TRUE.
*/
-#define CH_CFG_USE_MEMPOOLS TRUE
+#define CH_CFG_USE_MEMPOOLS FALSE
/**
* @brief Dynamic Threads APIs.
@@ -303,7 +307,7 @@
* @note Requires @p CH_CFG_USE_WAITEXIT.
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
*/
-#define CH_CFG_USE_DYNAMIC TRUE
+#define CH_CFG_USE_DYNAMIC FALSE
/** @} */
@@ -374,7 +378,7 @@
* @note The default failure mode is to halt the system with the global
* @p panic_msg variable set to @p NULL.
*/
-#define CH_DBG_ENABLE_STACK_CHECK TRUE
+#define CH_DBG_ENABLE_STACK_CHECK FALSE
/**
* @brief Debug option, stacks initialization.
diff --git a/keyboards/projectkb/alice/config.h b/keyboards/projectkb/alice/config.h
new file mode 100644
index 000000000..2a6e81f1d
--- /dev/null
+++ b/keyboards/projectkb/alice/config.h
@@ -0,0 +1,92 @@
+/*
+Copyright 2015 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x0159
+#define PRODUCT_ID 0xA71C
+#define DEVICE_VER 0x0001
+/* in python2: list(u"whatever".encode('utf-16-le')) */
+/* at most 32 characters or the ugly hack in usb_main.c borks */
+#define MANUFACTURER ProjectKB
+#define PRODUCT Alice
+#define DESCRIPTION ProjectKB Alice
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+#define MATRIX_COL_PINS { B2, B10, B11, A9, A15, B3, B4, B5, B6, B7, B8, B9, C13, C14, C15, B12 }
+#define MATRIX_ROW_PINS { B1, B0, A7, A5, A4 }
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 6
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGBLIGHT_ANIMATIONS
+
+#define WS2812_LED_N 14
+#define RGBLED_NUM WS2812_LED_N
+#define PORT_WS2812 GPIOB
+#define PIN_WS2812 15
+#define WS2812_SPI SPID2
+
+
+// EEPROM usage
+// TODO: refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC_ADDR 32
+// Bump this every time we change what we store
+// This will automatically reset the EEPROM with defaults
+// and avoid loading invalid data from the EEPROM
+#define EEPROM_VERSION 0x01
+#define EEPROM_VERSION_ADDR 34
+
+#define EEPROM_CUSTOM_BACKLIGHT 804
+
+
+
+/*
+ * 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/dztech/dz40rgb/halconf.h b/keyboards/projectkb/alice/halconf.h
index eda293c49..da08cdbae 100644
--- a/keyboards/dztech/dz40rgb/halconf.h
+++ b/keyboards/projectkb/alice/halconf.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ 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.
@@ -25,8 +25,7 @@
* @{
*/
-#ifndef HALCONF_H
-#define HALCONF_H
+#pragma once
#include "mcuconf.h"
@@ -55,7 +54,7 @@
* @brief Enables the DAC subsystem.
*/
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
-#define HAL_USE_DAC TRUE
+#define HAL_USE_DAC FALSE
#endif
/**
@@ -69,7 +68,7 @@
* @brief Enables the GPT subsystem.
*/
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
-#define HAL_USE_GPT TRUE
+#define HAL_USE_GPT FALSE
#endif
/**
@@ -111,14 +110,7 @@
* @brief Enables the PWM subsystem.
*/
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
-#define HAL_USE_PWM FALSE
-#endif
-
-/**
- * @brief Enables the QSPI subsystem.
- */
-#if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
-#define HAL_USE_QSPI FALSE
+#define HAL_USE_PWM TRUE
#endif
/**
@@ -153,7 +145,7 @@
* @brief Enables the SPI subsystem.
*/
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
-#define HAL_USE_SPI FALSE
+#define HAL_USE_SPI TRUE
#endif
/**
@@ -301,7 +293,7 @@
* @brief Serial buffers size.
* @details Configuration parameter, you can change the depth of the queue
* buffers depending on the requirements of your application.
- * @note The default is 16 bytes for both the transmission and receive
+ * @note The default is 64 bytes for both the transmission and receive
* buffers.
*/
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
@@ -316,21 +308,13 @@
* @brief Serial over USB buffers size.
* @details Configuration parameter, the buffer size must be a multiple of
* the USB data endpoint maximum packet size.
- * @note The default is 256 bytes for both the transmission and receive
+ * @note The default is 64 bytes for both the transmission and receive
* buffers.
*/
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
#define SERIAL_USB_BUFFERS_SIZE 1
#endif
-/**
- * @brief Serial over USB number of buffers.
- * @note The default is 2 buffers.
- */
-#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
-#define SERIAL_USB_BUFFERS_NUMBER 2
-#endif
-
/*===========================================================================*/
/* SPI driver related settings. */
/*===========================================================================*/
@@ -351,25 +335,6 @@
#define SPI_USE_MUTUAL_EXCLUSION TRUE
#endif
-/*===========================================================================*/
-/* UART driver related settings. */
-/*===========================================================================*/
-
-/**
- * @brief Enables synchronous APIs.
- * @note Disabling this option saves both code and data space.
- */
-#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
-#define UART_USE_WAIT FALSE
-#endif
-
-/**
- * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
- * @note Disabling this option saves both code and data space.
- */
-#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define UART_USE_MUTUAL_EXCLUSION FALSE
-#endif
/*===========================================================================*/
/* USB driver related settings. */
@@ -383,6 +348,4 @@
#define USB_USE_WAIT TRUE
#endif
-#endif /* HALCONF_H */
-
/** @} */
diff --git a/keyboards/projectkb/alice/keymaps/default/keymap.c b/keyboards/projectkb/alice/keymaps/default/keymap.c
new file mode 100644
index 000000000..bad22f9ae
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BASE 0
+#define _FN1 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ KC_ESC, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI,
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ [_FN1] = LAYOUT_default(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
+ RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______,
+ RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______,
+ _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RESET
+ )
+};
+
diff --git a/keyboards/projectkb/alice/mcuconf.h b/keyboards/projectkb/alice/mcuconf.h
new file mode 100644
index 000000000..048eb4df6
--- /dev/null
+++ b/keyboards/projectkb/alice/mcuconf.h
@@ -0,0 +1,176 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef _MCUCONF_H_
+#define _MCUCONF_H_
+
+/*
+ * STM32F0xx drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+#define STM32F0xx_MCUCONF
+// #define STM32F070xB
+
+/*
+ * HAL driver system settings.
+ */
+#define STM32_NO_INIT FALSE
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
+#define STM32_HSI_ENABLED TRUE
+#define STM32_HSI14_ENABLED TRUE
+#define STM32_HSI48_ENABLED FALSE
+#define STM32_LSI_ENABLED TRUE
+#define STM32_HSE_ENABLED FALSE
+#define STM32_LSE_ENABLED FALSE
+#define STM32_SW STM32_SW_PLL
+#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
+#define STM32_PREDIV_VALUE 1
+#define STM32_PLLMUL_VALUE 12
+#define STM32_HPRE STM32_HPRE_DIV1
+#define STM32_PPRE STM32_PPRE_DIV1
+#define STM32_ADCSW STM32_ADCSW_HSI14
+#define STM32_ADCPRE STM32_ADCPRE_DIV4
+#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
+#define STM32_ADCPRE STM32_ADCPRE_DIV4
+#define STM32_ADCSW STM32_ADCSW_HSI14
+#define STM32_USBSW STM32_USBSW_HSI48
+#define STM32_CECSW STM32_CECSW_HSI
+#define STM32_I2C1SW STM32_I2C1SW_HSI
+#define STM32_USART1SW STM32_USART1SW_PCLK
+#define STM32_RTCSEL STM32_RTCSEL_LSI
+
+/*
+ * ADC driver system settings.
+ */
+#define STM32_ADC_USE_ADC1 FALSE
+#define STM32_ADC_ADC1_DMA_PRIORITY 2
+#define STM32_ADC_IRQ_PRIORITY 2
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
+
+/*
+ * EXT driver system settings.
+ */
+#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
+
+/*
+ * GPT driver system settings.
+ */
+#define STM32_GPT_USE_TIM1 FALSE
+#define STM32_GPT_USE_TIM2 FALSE
+#define STM32_GPT_USE_TIM3 FALSE
+#define STM32_GPT_USE_TIM14 FALSE
+#define STM32_GPT_TIM1_IRQ_PRIORITY 2
+#define STM32_GPT_TIM2_IRQ_PRIORITY 2
+#define STM32_GPT_TIM3_IRQ_PRIORITY 2
+#define STM32_GPT_TIM14_IRQ_PRIORITY 2
+
+/*
+ * I2C driver system settings.
+ */
+#define STM32_I2C_USE_I2C1 TRUE
+#define STM32_I2C_USE_I2C2 FALSE
+#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_I2C1_IRQ_PRIORITY 3
+#define STM32_I2C_I2C2_IRQ_PRIORITY 3
+#define STM32_I2C_USE_DMA TRUE
+#define STM32_I2C_I2C1_DMA_PRIORITY 1
+#define STM32_I2C_I2C2_DMA_PRIORITY 1
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define STM32_ICU_USE_TIM1 FALSE
+#define STM32_ICU_USE_TIM2 FALSE
+#define STM32_ICU_USE_TIM3 FALSE
+#define STM32_ICU_TIM1_IRQ_PRIORITY 3
+#define STM32_ICU_TIM2_IRQ_PRIORITY 3
+#define STM32_ICU_TIM3_IRQ_PRIORITY 3
+
+/*
+ * PWM driver system settings.
+ */
+#define STM32_PWM_USE_ADVANCED FALSE
+#define STM32_PWM_USE_TIM1 FALSE
+#define STM32_PWM_USE_TIM2 FALSE
+#define STM32_PWM_USE_TIM3 TRUE
+#define STM32_PWM_TIM1_IRQ_PRIORITY 3
+#define STM32_PWM_TIM2_IRQ_PRIORITY 3
+#define STM32_PWM_TIM3_IRQ_PRIORITY 3
+
+/*
+ * SERIAL driver system settings.
+ */
+#define STM32_SERIAL_USE_USART1 FALSE
+#define STM32_SERIAL_USE_USART2 FALSE
+#define STM32_SERIAL_USART1_PRIORITY 3
+#define STM32_SERIAL_USART2_PRIORITY 3
+
+/*
+ * SPI driver system settings.
+ */
+#define STM32_SPI_USE_SPI1 FALSE
+#define STM32_SPI_USE_SPI2 TRUE
+#define STM32_SPI_SPI1_DMA_PRIORITY 1
+#define STM32_SPI_SPI2_DMA_PRIORITY 1
+#define STM32_SPI_SPI1_IRQ_PRIORITY 2
+#define STM32_SPI_SPI2_IRQ_PRIORITY 2
+#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define STM32_ST_IRQ_PRIORITY 2
+#define STM32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define STM32_UART_USE_USART1 FALSE
+#define STM32_UART_USE_USART2 FALSE
+#define STM32_UART_USART1_IRQ_PRIORITY 3
+#define STM32_UART_USART2_IRQ_PRIORITY 3
+#define STM32_UART_USART1_DMA_PRIORITY 0
+#define STM32_UART_USART2_DMA_PRIORITY 0
+#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define STM32_USB_USE_USB1 TRUE
+#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
+#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/projectkb/alice/readme.md b/keyboards/projectkb/alice/readme.md
new file mode 100644
index 000000000..cc9f22685
--- /dev/null
+++ b/keyboards/projectkb/alice/readme.md
@@ -0,0 +1,12 @@
+# ProjectKeyboard Alice PCB
+
+ProjectKeyboard Alice Keyboard Replacement PCB
+
+Keyboard Maintainer: onefiftynine
+
+Hardware Supported: STM32F072CBT6
+Make example for this keyboard (after setting up your build environment):
+
+ make projectkb/alice: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/projectkb/alice/rules.mk b/keyboards/projectkb/alice/rules.mk
new file mode 100644
index 000000000..cd366c76a
--- /dev/null
+++ b/keyboards/projectkb/alice/rules.mk
@@ -0,0 +1,56 @@
+# project specific files
+# SRC = ssd1306.c
+## chip/board settings
+# the next two should match the directories in
+# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F0xx
+# linker script to use
+# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+# or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F072xB
+# startup code to use
+# is should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f0xx
+# it should exist either in <chibios>/os/hal/boards/
+# or <this_dir>/boards
+BOARD = ST_STM32F072B_DISCOVERY
+# Cortex version
+# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
+MCU = cortex-m0
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 6
+# If you want to be able to jump to bootloader from firmware on STM32 MCUs,
+# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in
+# ./bootloader_defs.h or in ./boards/<FOO>/bootloader_defs.h (if you have
+# a custom board definition that you plan to reuse).
+# If you're not setting it here, leave it commented out.
+# It is chip dependent, the correct number can be looked up here (page 175):
+# 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
+
+# Build Options
+# comment out to disable the options.
+#
+
+# project specific files
+VPATH += keyboards/cannonkeys/stm32f072
+SRC = keyboard.c \
+ led.c
+
+#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
+CUSTOM_MATRIX = no # Custom matrix file
+# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
+RGBLIGHT_ENABLE = yes
+
+# RAW_ENABLE = yes
+# DYNAMIC_KEYMAP_ENABLE = yes
+
diff --git a/keyboards/satan/keymaps/no_caps_lock/keymap.c b/keyboards/satan/keymaps/no_caps_lock/keymap.c
new file mode 100644
index 000000000..48659bb66
--- /dev/null
+++ b/keyboards/satan/keymaps/no_caps_lock/keymap.c
@@ -0,0 +1,55 @@
+#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 {
+ _BL,
+ _FL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-----------------------------------------------------------.
+ * | ~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
+ * |-----------------------------------------------------------|
+ * |ESC | A| S| D| F| G| H| J| K| L| ;| '|Return |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |FL |Gui |FL(tgl)|
+ * `-----------------------------------------------------------'
+ */
+ [_BL] = LAYOUT_60_ansi(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RGUI, TG(_FL)
+ ),
+
+ /* Keymap _FL: Function Layer
+ * ,-----------------------------------------------------------.
+ * | | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| DEL |
+ * |-----------------------------------------------------------|
+ * | |Home|PgUp| | | | | | | | |BR- |BR+ | |
+ * |-----------------------------------------------------------|
+ * | |End|PgDn| | | |Left|Down|Up|Right|Prv|Nxt|Ply |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |Vdn|Vup|Mute| |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ * hjkl for arrows because vim
+ */
+ [_FL] = LAYOUT_60_ansi(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
+ KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, \
+ KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MPRV, KC_MNXT, KC_MPLY, \
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/satan/keymaps/no_caps_lock/readme.md b/keyboards/satan/keymaps/no_caps_lock/readme.md
new file mode 100644
index 000000000..b3bfe7988
--- /dev/null
+++ b/keyboards/satan/keymaps/no_caps_lock/readme.md
@@ -0,0 +1 @@
+Standard layout with caps lock replaced by esc. Navigation and multimedia keys are on the second layer.
diff --git a/keyboards/satan/keymaps/olligranlund_iso/keymap.c b/keyboards/satan/keymaps/olligranlund_iso/keymap.c
index 6979092cd..789543b56 100644
--- a/keyboards/satan/keymaps/olligranlund_iso/keymap.c
+++ b/keyboards/satan/keymaps/olligranlund_iso/keymap.c
@@ -48,6 +48,9 @@
#define CALC KC_CALC // Open default calculator app
#define MYCM KC_MYCM // Open default file manager
+// increase readability
+#define XXXXX KC_NO
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap BASE: (Base Layer) Default Layer
diff --git a/keyboards/satan/keymaps/olligranlund_iso/rules.mk b/keyboards/satan/keymaps/olligranlund_iso/rules.mk
index 73106b674..3d886f14f 100644
--- a/keyboards/satan/keymaps/olligranlund_iso/rules.mk
+++ b/keyboards/satan/keymaps/olligranlund_iso/rules.mk
@@ -13,5 +13,5 @@ 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_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/sentraq/s60_x/default/config.h b/keyboards/sentraq/s60_x/default/config.h
index f6b7f8d68..d7fb79625 100644
--- a/keyboards/sentraq/s60_x/default/config.h
+++ b/keyboards/sentraq/s60_x/default/config.h
@@ -1,15 +1,43 @@
-#ifndef DEFAULT_CONFIG_H
-#define DEFAULT_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 Sentraq
#define PRODUCT S60-X
-#define DESCRIPTION q.m.k. keyboard firmware for S60-X
+#define DESCRIPTION QMK keyboard firmware for S60-X
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 }
#define UNUSED_PINS { F0 }
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
@@ -17,4 +45,3 @@
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-#endif
diff --git a/keyboards/sentraq/s60_x/default/default.h b/keyboards/sentraq/s60_x/default/default.h
index f3646f155..e330d99bb 100644
--- a/keyboards/sentraq/s60_x/default/default.h
+++ b/keyboards/sentraq/s60_x/default/default.h
@@ -17,16 +17,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 DEFAULT_H
-#define DEFAULT_H
+#pragma once
#include "quantum.h"
-#ifdef __INTELLISENSE__
-#define PROGMEM
-#include "../config.h"
-#endif
-
/* S60-X keymap definition macro
* K31 is the extra key next to short left ISO shift
* K2C is the moved key next to enter on ISO boards
@@ -67,6 +61,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, XXX, } \
}
+#define LAYOUT_60_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K41, K42, K46, K4B, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX, }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { XXX, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, XXX, XXX, } \
+}
#define LAYOUT_60_ansi_split_bs_rshift( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
@@ -114,5 +121,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E }, \
{ KC_##K40, KC_##K41, KC_##K42, XXX, XXX, XXX, KC_##K46, XXX, XXX, XXX, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, XXX } \
}
-
-#endif
diff --git a/keyboards/sentraq/s60_x/default/rules.mk b/keyboards/sentraq/s60_x/default/rules.mk
index ce4064d1c..af43bf6c5 100644
--- a/keyboards/sentraq/s60_x/default/rules.mk
+++ b/keyboards/sentraq/s60_x/default/rules.mk
@@ -1,5 +1,68 @@
-CONSOLE_ENABLE = no # Console for debug(+400)
-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
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no
+
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+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)
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+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
+
+
+LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb \ No newline at end of file
diff --git a/keyboards/sentraq/s60_x/default/info.json b/keyboards/sentraq/s60_x/info.json
index 1aa2dbf3e..1e4514ac8 100644
--- a/keyboards/sentraq/s60_x/default/info.json
+++ b/keyboards/sentraq/s60_x/info.json
@@ -11,6 +11,9 @@
"LAYOUT_60_ansi": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
},
+ "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":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}]
+ },
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
},
diff --git a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/config.h b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/config.h
index aee65690f..e960f8c5b 100644
--- a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/config.h
+++ b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/config.h
@@ -1,9 +1,5 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
+#pragma once
// keymap needs oneshot functionality
#undef NO_ACTION_ONESHOT
-#endif
diff --git a/keyboards/sentraq/s60_x/readme.md b/keyboards/sentraq/s60_x/readme.md
index 09ad068e7..927a2f040 100644
--- a/keyboards/sentraq/s60_x/readme.md
+++ b/keyboards/sentraq/s60_x/readme.md
@@ -1,16 +1,16 @@
-S60-x
-=====
+# S60-x
+
DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps are based on GH60 code. This is a port from TMK to QMK based on the [original S60-X Repo](https://github.com/VinnyCordeiro/tmk_keyboard).
Keyboard Maintainer: QMK Community
Hardware Supported: S60-x PCB
Hardware Availability: https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open
-There are two versions of this keyboard, an RGB and a non RGB one.
+There are two versions of this keyboard, an RGB and a non RGB one. Firmware built for one, will not work on the other.
Make example for this keyboard (after setting up your build environment):
- make sentraq/s60_x:default
+ make sentraq/s60_x/default:default
Make example for rgb version of this keyboard:
diff --git a/keyboards/sentraq/s60_x/rgb/config.h b/keyboards/sentraq/s60_x/rgb/config.h
index d9c26658d..0e231a722 100644
--- a/keyboards/sentraq/s60_x/rgb/config.h
+++ b/keyboards/sentraq/s60_x/rgb/config.h
@@ -1,22 +1,43 @@
-#ifndef RBG_CONFIG_H
-#define RBG_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 Sentraq
#define PRODUCT S60-X-RGB
-#define DESCRIPTION q.m.k. keyboard firmware for S60-X RGB
+#define DESCRIPTION QMK keyboard firmware for S60-X RGB
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
#define UNUSED_PINS
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#endif
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
#define RGB_DI_PIN F6
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
@@ -26,4 +47,3 @@
#define RGBLIGHT_VAL_STEP 8
#endif
-#endif
diff --git a/keyboards/sentraq/s60_x/rgb/info.json b/keyboards/sentraq/s60_x/rgb/info.json
deleted file mode 100644
index 1aa2dbf3e..000000000
--- a/keyboards/sentraq/s60_x/rgb/info.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "keyboard_name": "S60-X",
- "url": "",
- "maintainer": "qmk",
- "width": 15,
- "height": 5,
- "layouts": {
- "LAYOUT": {
- "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
- },
- "LAYOUT_60_ansi": {
- "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
- },
- "LAYOUT_60_ansi_split_bs_rshift": {
- "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.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": {
- "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}]
- }
- }
-} \ No newline at end of file
diff --git a/keyboards/sentraq/s60_x/rgb/rgb.h b/keyboards/sentraq/s60_x/rgb/rgb.h
index d70473eea..59ffdfbbf 100644
--- a/keyboards/sentraq/s60_x/rgb/rgb.h
+++ b/keyboards/sentraq/s60_x/rgb/rgb.h
@@ -1,5 +1,4 @@
-#ifndef S60XRGB_H
-#define S60XRGB_H
+#pragma once
#include "quantum.h"
@@ -35,6 +34,19 @@
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, XXX, } \
}
+#define LAYOUT_60_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K41, K42, K46, K4B, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX, }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { XXX, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, XXX, XXX, } \
+}
#define LAYOUT_60_ansi_split_bs_rshift( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
@@ -82,5 +94,3 @@
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E }, \
{ KC_##K40, KC_##K41, KC_##K42, XXX, XXX, XXX, KC_##K46, XXX, XXX, XXX, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, XXX } \
}
-
-#endif
diff --git a/keyboards/sentraq/s60_x/rgb/rules.mk b/keyboards/sentraq/s60_x/rgb/rules.mk
index 42d45c332..409d60abf 100644
--- a/keyboards/sentraq/s60_x/rgb/rules.mk
+++ b/keyboards/sentraq/s60_x/rgb/rules.mk
@@ -1,5 +1,73 @@
+
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+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)
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+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)
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
-RGBLIGHT_ENABLE = yes # Enable RGB light \ No newline at end of file
+RGBLIGHT_ENABLE = yes # Enable RGB light
+
+
+LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb \ No newline at end of file
diff --git a/keyboards/sentraq/s60_x/s60_x.c b/keyboards/sentraq/s60_x/s60_x.c
deleted file mode 100644
index 595418bfa..000000000
--- a/keyboards/sentraq/s60_x/s60_x.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "s60_x.h" \ No newline at end of file
diff --git a/keyboards/sentraq/s60_x/s60_x.h b/keyboards/sentraq/s60_x/s60_x.h
deleted file mode 100644
index 59c9741b5..000000000
--- a/keyboards/sentraq/s60_x/s60_x.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef S60X_H
-#define S60X_H
-
-#ifdef KEYBOARD_sentraq_s60_x_default
- #include "default.h"
-#endif
-#ifdef KEYBOARD_sentraq_s60_x_rgb
- #include "rgb.h"
-#endif
-
-#include "quantum.h"
-
-#endif
diff --git a/keyboards/signum/3_0/elitec/info.json b/keyboards/signum/3_0/elitec/info.json
index e414d1596..53b88d553 100644
--- a/keyboards/signum/3_0/elitec/info.json
+++ b/keyboards/signum/3_0/elitec/info.json
@@ -2,74 +2,64 @@
"keyboard_name": "Signum 3.0",
"url": "http://troyfletcher.net/",
"maintainer": "jceb",
- "width": 17,
- "height": 8,
+ "width": 15,
+ "height": 6,
"layouts": {
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
- { "x": 1.25, "y": 0.75, "r": 15 },
- { "x": 1.25, "y": 1.75, "r": 15 },
- { "x": 1.25, "y": 2.75, "r": 15 },
- { "x": 1.25, "y": 4.25, "r": 15 },
+ { "x": 0, "y": 0.5, "r": 15 },
+ { "x": 1, "y": 0.5, "r": 15 },
+ { "x": 2, "y": 0.25, "r": 15 },
+ { "x": 3, "y": 0, "r": 15 },
+ { "x": 4, "y": 0.25, "r": 15 },
+ { "x": 5, "y": 0.5, "r": 15 },
+ { "x": 9, "y": 0.5, "r": -15 },
+ { "x": 10, "y": 0.25, "r": -15 },
+ { "x": 11, "y": 0, "r": -15 },
+ { "x": 12, "y": 0.25, "r": -15 },
+ { "x": 13, "y": 0.5, "r": -15 },
+ { "x": 14, "y": 0.5, "r": -15 },
- { "x": 2.25, "y": 0.75, "r": 15 },
- { "x": 2.25, "y": 1.75, "r": 15 },
- { "x": 2.25, "y": 2.75, "r": 15 },
- { "x": 2.25, "y": 3.75, "r": 15 },
+ { "x": 0, "y": 1.5, "r": 15 },
+ { "x": 1, "y": 1.5, "r": 15 },
+ { "x": 2, "y": 1.25, "r": 15 },
+ { "x": 3, "y": 1, "r": 15 },
+ { "x": 4, "y": 1.25, "r": 15 },
+ { "x": 5, "y": 1.5, "r": 15 },
+ { "x": 9, "y": 1.5, "r": -15 },
+ { "x": 10, "y": 1.25, "r": -15 },
+ { "x": 11, "y": 1, "r": -15 },
+ { "x": 12, "y": 1.25, "r": -15 },
+ { "x": 13, "y": 1.5, "r": -15 },
+ { "x": 14, "y": 1.5, "r": -15 },
- { "x": 3.25, "y": 0.5, "r": 15 },
- { "x": 3.25, "y": 1.5, "r": 15 },
- { "x": 3.25, "y": 2.5, "r": 15 },
- { "x": 3.25, "y": 3.5, "r": 15 },
+ { "x": 0, "y": 2.5, "r": 15 },
+ { "x": 1, "y": 2.5, "r": 15 },
+ { "x": 2, "y": 2.25, "r": 15 },
+ { "x": 3, "y": 2, "r": 15 },
+ { "x": 4, "y": 2.25, "r": 15 },
+ { "x": 5, "y": 2.5, "r": 15 },
+ { "x": 9, "y": 2.5, "r": -15 },
+ { "x": 10, "y": 2.25, "r": -15 },
+ { "x": 11, "y": 2, "r": -15 },
+ { "x": 12, "y": 2.25, "r": -15 },
+ { "x": 13, "y": 2.5, "r": -15 },
+ { "x": 14, "y": 2.5, "r": -15 },
- { "x": 4.25, "y": 0.25, "r": 15 },
- { "x": 4.25, "y": 1.25, "r": 15 },
- { "x": 4.25, "y": 2.25, "r": 15 },
-
- { "x": 5.25, "y": 0.5, "r": 15 },
- { "x": 5.25, "y": 1.5, "r": 15 },
- { "x": 5.25, "y": 2.5, "r": 15 },
- { "x": 5.25, "y": 4.5, "r": 15, "h": 1.5 },
-
- { "x": 6.25, "y": 0.75, "r": 15 },
- { "x": 6.25, "y": 1.75, "r": 15 },
- { "x": 6.25, "y": 2.75, "r": 15 },
- { "x": 6.25, "y": 4.25, "r": 15, "h": 2 },
-
- { "x": 7.25, "y": 4.5, "r": 15, "h": 1.5 },
-
- { "x": 8.25, "y": 4.5, "r": -15, "h": 1.5 },
-
- { "x": 9.25, "y": 0.75, "r": -15 },
- { "x": 9.25, "y": 1.75, "r": -15 },
- { "x": 9.25, "y": 2.75, "r": -15 },
- { "x": 9.25, "y": 4.25, "r": -15, "h": 2 },
-
- { "x": 10.25, "y": 0.5, "r": -15 },
- { "x": 10.25, "y": 1.5, "r": -15 },
- { "x": 10.25, "y": 2.5, "r": -15 },
- { "x": 10.25, "y": 4.5, "r": -15, "h": 1.5 },
-
- { "x": 11.25, "y": 0.25, "r": -15 },
- { "x": 11.25, "y": 1.25, "r": -15 },
- { "x": 11.25, "y": 2.25, "r": -15 },
-
- { "x": 12.25, "y": 0.5, "r": -15 },
- { "x": 12.25, "y": 1.5, "r": -15 },
- { "x": 12.25, "y": 2.5, "r": -15 },
- { "x": 12.25, "y": 3.5, "r": -15 },
-
- { "x": 13.25, "y": 0.75, "r": -15 },
- { "x": 13.25, "y": 1.75, "r": -15 },
- { "x": 13.25, "y": 2.75, "r": -15 },
- { "x": 13.25, "y": 3.75, "r": -15 },
-
- { "x": 14.25, "y": 0.75, "r": -15 },
- { "x": 14.25, "y": 1.75, "r": -15 },
- { "x": 14.25, "y": 2.75, "r": -15 },
- { "x": 14.25, "y": 4.25, "r": -15 }
+ { "x": 0, "y": 4, "r": 15 },
+ { "x": 1, "y": 3.5, "r": 15 },
+ { "x": 2, "y": 3.25, "r": 15 },
+ { "x": 4, "y": 4.25, "r": 15, "h": 1.5 },
+ { "x": 5, "y": 4, "r": 15, "h": 2 },
+ { "x": 6, "y": 4.25, "r": 15, "h": 1.5 },
+ { "x": 8, "y": 4.25, "r": -15, "h": 1.5 },
+ { "x": 9, "y": 4, "r": -15, "h": 2 },
+ { "x": 10, "y": 4.25, "r": -15, "h": 1.5 },
+ { "x": 12, "y": 3.25, "r": -15 },
+ { "x": 13, "y": 3.5, "r": -15 },
+ { "x": 14, "y": 4, "r": -15 }
]
}
diff --git a/keyboards/signum/3_0/elitec/keymaps/default/generate_km.py b/keyboards/signum/3_0/elitec/keymaps/default/generate_km.py
index 7778da8f5..cfa8edf57 100755
--- a/keyboards/signum/3_0/elitec/keymaps/default/generate_km.py
+++ b/keyboards/signum/3_0/elitec/keymaps/default/generate_km.py
@@ -1,17 +1,15 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-from sortedcontainers import SortedDict
+import json
import layout
+import os
import re
-# TODO: auto-generate mutex layers
-# TODO: auto-generate update_tri_layer (_state)
-
def gen_uc_iter():
length = len(layout.uc_dict)
- for key, value in layout.uc_dict.items():
+ for key, value in sorted(layout.uc_dict.items()):
length -= 1
if length:
yield (key, value, False)
@@ -19,7 +17,7 @@ def gen_uc_iter():
yield (key, value, True)
-def translate(s):
+def _translate(s):
if re.match("^[0-9]$", s):
return ("KC_{0}".format(s), " {0} ".format(s))
elif re.match("^[a-z]$", s):
@@ -51,80 +49,146 @@ def translate(s):
def toKC(s):
- (kc, lgd) = translate(s)
- return kc
+ return _translate(s)[0]
def toLgd(s):
- (kc, lgd) = translate(s)
- return lgd
+ return _translate(s)[1]
-if __name__ == "__main__":
+def quoteC(text):
+ yield "/*"
+ for line in text:
+ yield " * " + line
+ yield " */\n"
+
+
+def getKeymapText(id, layer, columns, rows):
+ keymap = []
+ keymap.append("Layer %d" % id)
+ keymap.append("------------------------------------------------- -------------------------------------------------")
+ keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[:12])))
+ keymap.append("------------------------------------------------- -------------------------------------------------")
+ keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[12:24])))
+ keymap.append("------------------------------------------------- -------------------------------------------------")
+ keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[24:36])))
+ keymap.append("-----------------------------------------------------------------------------------------------------------------")
+ keymap.append(" {0} {1} {2} |{3}|{4}|{5}|{6}|{7}|{8}| {9} {10} {11}".format(*map(toLgd, layer[36:48])).rstrip())
+ keymap.append(" -------------------------------------------------")
+ return keymap
- template = open("km_template.txt", mode="r")
- output = open("keymap.c", mode="w", encoding='utf-8')
+def writeKeymap(f_template, f_keymap, layers, columns, rows):
doCopy = False
- for line in template:
+ for line in f_template:
doCopy = True
if line.startswith("//<enum/>"):
doCopy = False
-# output.write(str(layout.uc_dict))
+ # f_keymap.write(str(layout.uc_dict))
for k, v, isLast in gen_uc_iter():
if isLast:
- output.write(k + "\n")
+ f_keymap.write(k + "\n")
else:
- output.write(k + ",\n")
- if line.startswith("//<uc_map/>"):
+ f_keymap.write(k + ",\n")
+ elif line.startswith("//<uc_map/>"):
doCopy = False
for k, v, isLast in gen_uc_iter():
if isLast:
- output.write(u"\t[{0}] = {1} // {2}\n".format(k, v, chr(int(v, 0))))
+ f_keymap.write(u"\t[{0}] = {1} // {2}\n".format(k, v, chr(int(v, 0))))
else:
- output.write(u"\t[{0}] = {1}, // {2}\n".format(k, v, chr(int(v, 0))))
- if line.startswith("//<keymaps/>"):
+ f_keymap.write(u"\t[{0}] = {1}, // {2}\n".format(k, v, chr(int(v, 0))))
+ elif line.startswith("//<keymaps/>"):
doCopy = False
- counter = len(layout.layers)
- layer = 0
- S = layout.static
- for L in layout.layers:
- counter -= 1
- r_counter = 4
- output.write("/* Layer %d\n" % layer)
- output.write(" * ------------------------------------------------- -------------------------------------------------\n")
- output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[0][0]), toLgd(L[0][1]), toLgd(L[0][2]), toLgd(L[0][3]), toLgd(L[0][4]), toLgd(L[0][5]), toLgd(L[0][6]), toLgd(L[0][7]), toLgd(L[0][8]), toLgd(L[0][9]), toLgd(L[0][10]), toLgd(L[0][11])))
- output.write(" * ------------------------------------------------- -------------------------------------------------\n")
- output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[1][0]), toLgd(L[1][1]), toLgd(L[1][2]), toLgd(L[1][3]), toLgd(L[1][4]), toLgd(L[1][5]), toLgd(L[1][6]), toLgd(L[1][7]), toLgd(L[1][8]), toLgd(L[1][9]), toLgd(L[1][10]), toLgd(L[1][11])))
- output.write(" * ------------------------------------------------- -------------------------------------------------\n")
- output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[2][0]), toLgd(L[2][1]), toLgd(L[2][2]), toLgd(L[2][3]), toLgd(L[2][4]), toLgd(L[2][5]), toLgd(L[2][6]), toLgd(L[2][7]), toLgd(L[2][8]), toLgd(L[2][9]), toLgd(L[2][10]), toLgd(L[2][11])))
- output.write(" * -----------------------------------------------------------------------------------------------------------------\n")
- output.write(" * {0} {1} {2} |{3}|{4}|{5}|{6}|{7}|{8}| {9} {10} {11}".format(toLgd(L[3][0]), toLgd(L[3][1]), toLgd(L[3][2]), toLgd(L[3][3]), toLgd(L[3][4]), toLgd(L[3][5]), toLgd(L[3][6]), toLgd(L[3][7]), toLgd(L[3][8]), toLgd(L[3][9]), toLgd(L[3][10]), toLgd(L[3][11])).rstrip()+"\n")
- output.write(" * -------------------------------------------------\n")
- output.write(" */\n")
+ for layer, L in enumerate(layers):
+ r_counter = rows
+ f_keymap.write('\n'.join(quoteC(getKeymapText(layer, L, columns, rows))))
l_code = '\tLAYOUT_ortho_4x12(\n'
for r in range(r_counter):
r_counter -= 1
- c_counter = 12
+ c_counter = columns
l_code += '\t\t'
for c in range(c_counter):
c_counter -= 1
if c != 0:
l_code += " "
- l_code += "%s" % toKC(L[r][c])
+ l_code += "%s" % toKC(L[r*columns + columns-c_counter-1])
if r_counter or c_counter:
l_code += ","
l_code += '\n'
- if counter:
+ if layer + 1 != len(layout.layers):
l_code += "\t),\n\n"
else:
l_code += "\t)\n"
- output.write(l_code)
- layer += 1
+ f_keymap.write(l_code)
if doCopy:
- output.write(line)
+ f_keymap.write(line)
+
+
+def getKeymapJSON(keyboard, keymap, layout, layers):
+ return json.dumps({
+ 'keyboard': keyboard,
+ 'keymap': keymap,
+ 'layout': layout,
+ 'layers': layers
+ }, sort_keys=True, indent=4)
+
+
+def getKeymapAsciidoc(title, layers, columns, rows):
+ yield '= ' + title
+ yield ''
+ for id, layer in enumerate(layers):
+ keymap = getKeymapText(id, layer, columns, rows)
+ if len(keymap):
+ yield '.' + keymap[0]
+ yield '--------------------------'
+ for line in keymap[1:]:
+ yield ' ' + line
+ yield '--------------------------'
+ yield ''
- template.close()
- output.close()
+
+def layersToKC(layers):
+ return [list(map(toKC, layer)) for layer in layers]
+
+
+def pathToKeymap(path):
+ head, keymap = os.path.split(path)
+ _, keymapsdir = os.path.split(head)
+ if keymapsdir == 'keymaps':
+ return keymap
+
+
+def pathToKeyboard(path):
+ head, keymap = os.path.split(path)
+ head, keymapsdir = os.path.split(head)
+ if keymapsdir == 'keymaps':
+ head, dir = os.path.split(head)
+ while dir not in ('/', 'keyboards'):
+ yield dir
+ head, dir = os.path.split(head)
+
+
+if __name__ == "__main__":
+ with open("km_template.txt", mode="r") as f_template:
+ with open("keymap.c", mode="w", encoding='utf-8') as f_keymap:
+ writeKeymap(f_template, f_keymap, layout.layers, columns=12, rows=4)
+
+ abspath = os.path.dirname(os.path.abspath(__file__))
+ keyboard = list(reversed(list(pathToKeyboard(abspath))))
+ keymap = pathToKeymap(abspath)
+ keyboard_layout = 'LAYOUT_ortho_4x12'
+ with open("%s_%s.json" % ('_'.join(keyboard), keymap), mode="w") as f_keymapjson:
+ f_keymapjson.write(
+ getKeymapJSON(
+ '/'.join(keyboard),
+ keymap,
+ keyboard_layout,
+ layersToKC(layout.layers))
+ )
+
+ with open("keymap.adoc", mode="w") as f_keymapasciidoc:
+ f_keymapasciidoc.write('\n'.join(getKeymapAsciidoc('Signum 3.0 %s_%s' % ('_'.join(keyboard), keymap), layout.layers, columns=12, rows=4)))
+ print("Run the following command to generate a PDF from the keymap")
+ print("a2x -f pdf --xsltproc-opts '--stringparam page.orientation landscape --stringparam body.font.master 12' --fop -v keymap.adoc")
diff --git a/keyboards/signum/3_0/elitec/keymaps/default/keymap.c b/keyboards/signum/3_0/elitec/keymaps/default/keymap.c
index 22d60085f..511be8c0d 100644
--- a/keyboards/signum/3_0/elitec/keymaps/default/keymap.c
+++ b/keyboards/signum/3_0/elitec/keymaps/default/keymap.c
@@ -623,119 +623,126 @@ const uint32_t PROGMEM unicode_map[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layer 0
+/*
+ * Layer 0
* ------------------------------------------------- -------------------------------------------------
* | Tab | q | w | e | r | t | | y | u | i | o | p | [ |
* ------------------------------------------------- -------------------------------------------------
- * | LCtrl | a | s | d | f | g | | h | j | k | l | ; | ' |
+ * |LCtTEsc| a | s | d | f | g | | h | j | k | l | ; | ' |
* ------------------------------------------------- -------------------------------------------------
* |LShift(| z | x | c | v | b | | n | m | , | . | / |RShift)|
* -----------------------------------------------------------------------------------------------------------------
- * MO2 LGui LAlt | TT2 |LT6_SPC| TT4 | Enter | Space | TT2 | RAlt RGui RCtrl
+ * LCtrl LAlt LGui | TT2 |LT6_SPC|LT4_DEL|LT4_ENT| Space |LT2_BSP| RGui RAlt RCtrl
* -------------------------------------------------
*/
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_LBRC,
- KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
- MO(2), KC_LGUI, KC_LALT, TT(2), LT(6, KC_SPC), TT(4), KC_ENT, KC_SPC, TT(2), KC_RALT, KC_RGUI, KC_RCTRL
+ KC_LCTL, KC_LALT, KC_LGUI, TT(2), LT(6,KC_SPC), LT(4,KC_DEL), LT(4,KC_ENT), KC_SPC, LT(2,KC_BSPC), KC_RGUI, KC_RALT, KC_RCTL
),
-/* Layer 1
+/*
+ * Layer 1
* ------------------------------------------------- -------------------------------------------------
* | Tab | q | w | f | p | g | | j | l | u | y | ; | [ |
* ------------------------------------------------- -------------------------------------------------
- * | LCtrl | a | r | s | t | d | | h | n | e | i | o | ' |
+ * |LCtTEsc| a | r | s | t | d | | h | n | e | i | o | ' |
* ------------------------------------------------- -------------------------------------------------
* |LShift(| z | x | c | v | b | | k | m | , | . | / |RShift)|
* -----------------------------------------------------------------------------------------------------------------
- * MO2 LGui LAlt | TT2 |LT6_SPC| TT4 | Enter | Space | TT2 | RAlt RGui RCtrl
+ * LCtrl LAlt LGui | TT2 |LT6_SPC|LT4_DEL|LT4_ENT| Space |LT2_BSP| RGui RAlt RCtrl
* -------------------------------------------------
*/
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_LBRC,
- KC_LCTRL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ LCTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
- MO(2), KC_LGUI, KC_LALT, TT(2), LT(6, KC_SPC), TT(4), KC_ENT, KC_SPC, TT(2), KC_RALT, KC_RGUI, KC_RCTRL
+ KC_LCTL, KC_LALT, KC_LGUI, TT(2), LT(6,KC_SPC), LT(4,KC_DEL), LT(4,KC_ENT), KC_SPC, LT(2,KC_BSPC), KC_RGUI, KC_RALT, KC_RCTL
),
-/* Layer 2
+/*
+ * Layer 2
* ------------------------------------------------- -------------------------------------------------
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ] |
* ------------------------------------------------- -------------------------------------------------
- * | | DF0 | DF1 | XXX | XXX | MO3 | | 4 | 4 | 5 | 6 | - | = |
+ * | | DF0 | DF1 | XXX | MO3 | XXX | | 4 | 4 | 5 | 6 | - | = |
* ------------------------------------------------- -------------------------------------------------
- * | | XXX | XXX | XXX | XXX | MO5 | | 1 | 1 | 2 | 3 | \ | |
+ * | | MO5 | XXX | XXX | XXX | XXX | | 1 | 1 | 2 | 3 | \ | |
* -----------------------------------------------------------------------------------------------------------------
* TG2 | | Del | | |BSpace | 0 |
* -------------------------------------------------
*/
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_RBRC,
- KC_TRNS, DF(0), DF(1), XXXXXXX, XXXXXXX, MO(3), KC_4, KC_4, KC_5, KC_6, KC_MINS, KC_EQL,
- KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(5), KC_1, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS, DF(0), DF(1), KC_NO, MO(3), KC_NO, KC_4, KC_4, KC_5, KC_6, KC_MINS, KC_EQL,
+ KC_TRNS, MO(5), KC_NO, KC_NO, KC_NO, KC_NO, KC_1, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
TG(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_0, KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Layer 3
+/*
+ * Layer 3
* ------------------------------------------------- -------------------------------------------------
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | XXX |
* ------------------------------------------------- -------------------------------------------------
- * | | XXX | XXX | XXX | XXX | MO3 | | F4 | F4 | F5 | F6 | XXX | XXX |
+ * | | XXX | XXX | XXX | MO3 | XXX | | F4 | F4 | F5 | F6 | F11 | XXX |
* ------------------------------------------------- -------------------------------------------------
- * | | XXX | XXX | XXX | XXX | XXX | | F1 | F1 | F2 | F3 | XXX | |
+ * | | XXX | XXX | XXX | XXX | XXX | | F1 | F1 | F2 | F3 | F12 | |
* -----------------------------------------------------------------------------------------------------------------
- * TG3 | | | | F10 | F11 | F12 |
+ * TG3 | | | | | | |
* -------------------------------------------------
*/
LAYOUT_ortho_4x12(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
- KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(3), KC_F4, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX,
- KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F1, KC_F2, KC_F3, XXXXXXX, KC_TRNS,
- TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_F4, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS,
+ TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Layer 4
+/*
+ * Layer 4
* ------------------------------------------------- -------------------------------------------------
* | Esc | Esc | Tab x | Tab n |CPg Dn |CPg Dn | |Pg Down| Home |^ Arrow|Insert |SInsert| Esc |
* ------------------------------------------------- -------------------------------------------------
* | | Caps | < Gui |Gui Tab| > Gui | > Gui | |< Arrow|< Arrow|v Arrow|> Arrow| End |Pr Scr |
* ------------------------------------------------- -------------------------------------------------
- * | | XXX | XXX | XXX |CPg Up |CPg Up | | Pg Up | XXX |v Arrow| XXX | App | |
+ * | | XXX | XXX | XXX |CPg Up |CPg Up | | Pg Up | |v Arrow| XXX | App | |
* -----------------------------------------------------------------------------------------------------------------
* TG4 | | Del | | |BSpace | |
* -------------------------------------------------
*/
LAYOUT_ortho_4x12(
- KC_ESC, KC_ESC, LCTL(KC_W), LCTL(KC_T), CTL_T(KC_PGDN), CTL_T(KC_PGDN), KC_PGDN, KC_HOME, KC_UP, KC_INS, SFT_T(KC_INS), KC_ESC,
- KC_TRNS, KC_CAPS, LGUI_T(KC_LEFT), LGUI_T(KC_TAB), LGUI_T(KC_RIGHT), LGUI_T(KC_RIGHT), KC_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_PSCR,
- KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, CTL_T(KC_PGUP), CTL_T(KC_PGUP), KC_PGUP, XXXXXXX, KC_DOWN, XXXXXXX, KC_APP, KC_TRNS,
+ KC_ESC, KC_ESC, LCTL(KC_W), LCTL(KC_T), LCTL(KC_PGDN), LCTL(KC_PGDN), KC_PGDN, KC_HOME, KC_UP, KC_INS, LSFT(KC_INS), KC_ESC,
+ KC_TRNS, KC_CAPS, LGUI(KC_LEFT), LGUI(KC_TAB), LGUI(KC_RGHT), LGUI(KC_RGHT), KC_LEFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PSCR,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, LCTL(KC_PGUP), LCTL(KC_PGUP), KC_PGUP, KC_TRNS, KC_DOWN, KC_NO, KC_APP, KC_TRNS,
TG(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Layer 5
+/*
+ * Layer 5
* ------------------------------------------------- -------------------------------------------------
* | | XXX |play/ps| Vol + | Vol + | XXX | | XXX | XXX | XXX | XXX |_reset | Power |
* ------------------------------------------------- -------------------------------------------------
* | | XXX | |<< | Vol 0 | >>| | XXX | | XXX | XXX | XXX | XXX | XXX | Sleep |
* ------------------------------------------------- -------------------------------------------------
- * | | XXX | XXX | Vol - | Vol - | MO5 | | XXX | XXX | XXX | XXX | XXX | XXX |
+ * | | MO5 | XXX | Vol - | Vol - | XXX | | XXX | XXX | XXX | XXX | XXX | XXX |
* -----------------------------------------------------------------------------------------------------------------
* TG5 | | | | | | |
* -------------------------------------------------
*/
LAYOUT_ortho_4x12(
- KC_TRNS, XXXXXXX, KC_MPLY, KC_VOLU, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_PWR,
- KC_TRNS, XXXXXXX, KC_MPRV, KC_MUTE, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP,
- KC_TRNS, XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLD, MO(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_TRNS, KC_NO, KC_MPLY, KC_VOLU, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_PWR,
+ KC_TRNS, KC_NO, KC_MPRV, KC_MUTE, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP,
+ KC_TRNS, MO(5), KC_NO, KC_VOLD, KC_VOLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
TG(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Layer 6
+/*
+ * Layer 6
* ------------------------------------------------- -------------------------------------------------
* | | acc1 | XXX | XXX | XXX | XXX | |^ Wheel|< Wheel|^ Mouse|> Wheel| XXX | XXX |
* ------------------------------------------------- -------------------------------------------------
- * | | acc2 |Mouse 3|Mouse 2|Mouse 1|Mouse 1| |< Mouse|< Mouse|v Mouse|> Mouse| XXX | XXX |
+ * | | acc2 |Mouse 2|Mouse 3|Mouse 1|Mouse 1| |< Mouse|< Mouse|v Mouse|> Mouse| XXX | XXX |
* ------------------------------------------------- -------------------------------------------------
* | | acc0 | XXX | XXX | XXX | XXX | |v Wheel| XXX |v Mouse| XXX | XXX | |
* -----------------------------------------------------------------------------------------------------------------
@@ -743,9 +750,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* -------------------------------------------------
*/
LAYOUT_ortho_4x12(
- KC_TRNS, KC_ACL1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX,
- KC_TRNS, KC_ACL2, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX,
- KC_TRNS, KC_ACL0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, KC_MS_D, XXXXXXX, XXXXXXX, KC_TRNS,
+ KC_TRNS, KC_ACL1, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, KC_NO, KC_NO,
+ KC_TRNS, KC_ACL2, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
+ KC_TRNS, KC_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_MS_D, KC_NO, KC_NO, KC_TRNS,
TG(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/signum/3_0/elitec/keymaps/default/layout.py b/keyboards/signum/3_0/elitec/keymaps/default/layout.py
index 323a58321..dd5fd3334 100644
--- a/keyboards/signum/3_0/elitec/keymaps/default/layout.py
+++ b/keyboards/signum/3_0/elitec/keymaps/default/layout.py
@@ -1,11 +1,11 @@
-from sortedcontainers import SortedDict
+# -*- coding: utf-8 -*-
# Add all used Unicode symbols to this list.
# The key (e.g. "SNEK") is used in keymap.c for "enum", "unicode_map" and "keymaps", so it needs to be a valid C variable name.
# The key is also used in this file to define the layout, so use recognizeable names.
# The value (e.g. "0x1f40d") is used in keymap.c for "unicode_map" and to automatically generate the "ASCII"-art comments.
# When adding new Unicode names, use "0x1f40d" until you looked up the correct Unicode code point.
-uc_dict = SortedDict({
+uc_dict = {
"SNEK": "0x1f40d", ## Error
## qwertz
"ACUTE": "0x00b4",
@@ -329,7 +329,7 @@ uc_dict = SortedDict({
"NOT_PARA": "0x2226",
"TIMES_OP": "0x2297",
"NOT_DIV": "0x2224"
-})
+}
# Add all used Keycodes to this list.
# The key (e.g. "a") is used in keymap.c to automatically generate the comments. The first 7 chars will show as a keycap legend.
@@ -338,7 +338,7 @@ qmk_dict = {
# If you find "BAD" in your keymaps, then something went wrong.)
"a": "BAD", "A": "BAD", "0": "BAD",
# Basic Keycodes
- "XXX": "XXXXXXX", "": "KC_TRNS",
+ "XXX": "KC_NO", "": "KC_TRNS",
"!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
"^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
"Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
@@ -348,19 +348,20 @@ qmk_dict = {
":": "S(KC_SCLN)", "'": "KC_QUOT", "\"": "S(KC_QUOT)", "`": "KC_GRV",
"~": "S(KC_GRV)", ",": "KC_COMM", "<": "S(KC_COMM)", ".": "KC_DOT",
">": "S(KC_DOT)", "/": "KC_SLSH", "?": "S(KC_SLSH)", "Caps": "KC_CAPS",
- "Pr Scr": "KC_PSCR", "Scr Lck": "KC_SLCK", "Pause": "KC_BRK", "Insert": "KC_INS", "SInsert": "SFT_T(KC_INS)",
+ "Pr Scr": "KC_PSCR", "Scr Lck": "KC_SLCK", "Pause": "KC_BRK", "Insert": "KC_INS", "SInsert": "LSFT(KC_INS)",
"Home": "KC_HOME", "Pg Up": "KC_PGUP", "Del": "KC_DEL", "End": "KC_END",
- "Pg Down": "KC_PGDN", "> Arrow": "KC_RIGHT", "< Arrow": "KC_LEFT",
+ "Pg Down": "KC_PGDN", "> Arrow": "KC_RGHT", "< Arrow": "KC_LEFT",
"v Arrow": "KC_DOWN", "^ Arrow": "KC_UP",
# Keypad keycodes missing
"App": "KC_APP", "Menu": "KC_MENU",
# Command keycodes missing (Execute, Help, ..., Find)
# Basic Keycodes missing from Print Screen onwards, included as fallback
# random Keycodes
- "RGui": "KC_RGUI", "LGui": "KC_LGUI", "LAlt": "KC_LALT", "RAlt": "KC_RALT", "LShift": "KC_LSFT", "LCtrl": "KC_LCTRL", "RCtrl": "KC_RCTRL",
+ "RGui": "KC_RGUI", "LGui": "KC_LGUI", "LAlt": "KC_LALT", "RAlt": "KC_RALT", "LShift": "KC_LSFT", "LCtrl": "KC_LCTL", "LCtTEsc": "LCTL_T(KC_ESC)", "RCtrl": "KC_RCTL",
"LShift(": "KC_LSPO", "RShift)": "KC_RSPC",
- "L1_ENT": "LT(1, KC_ENT)", "LT6_SPC": "LT(6, KC_SPC)",
- "CPg Dn": "CTL_T(KC_PGDN)", "CPg Up": "CTL_T(KC_PGUP)",
+ # "LShift(": "LSFT_T(KC_9)", "RShift)": "RSFT_T(RSFT(KC_0))",
+ "L1_ENT": "LT(1, KC_ENT)", "LT2_BSP": "LT(2,KC_BSPC)", "LT4_DEL": "LT(4,KC_DEL)", "LT4_ENT": "LT(4,KC_ENT)", "LT6_SPC": "LT(6,KC_SPC)",
+ "CPg Dn": "LCTL(KC_PGDN)", "CPg Up": "LCTL(KC_PGUP)",
"S_Enter": "S(KC_ENT)", "S_Tab": "S(KC_TAB)", "Compose": "KC_ALGR",
"RShift": "KC_RSFT",
"Vol 0": "KC_MUTE", "Vol +": "KC_VOLU", "Vol -": "KC_VOLD",
@@ -402,7 +403,7 @@ qmk_dict = {
"Undo": "LCTL(KC_Z)", "Cut": "LCTL(KC_X)", "Copy": "LCTL(KC_C)", "Paste": "LCTL(KC_V)",
"< Tab": "LCTL(S(KC_TAB))", "> Tab": "LCTL(KC_TAB)",
"Tab x": "LCTL(KC_W)", "Tab n": "LCTL(KC_T)",
- "Gui Tab": "LGUI_T(KC_TAB)", "< Gui": "LGUI_T(KC_LEFT)", "> Gui": "LGUI_T(KC_RIGHT)",
+ "Gui Tab": "LGUI(KC_TAB)", "< Gui": "LGUI(KC_LEFT)", "> Gui": "LGUI(KC_RGHT)",
"C+A+Del": "LCTL(LALT(KC_DEL))", "Mic 0": "LCTL(KC_M)",
"Power": "KC_PWR", "Sleep": "KC_SLEP",
@@ -428,58 +429,58 @@ static = ["NEO", "GREEK", "GREEK", "GREEK", "GREEK", "MOUSE"]
# 0
qwerty = [
- ["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "["],
- ["LCtrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'"],
- ["LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)"],
- ["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
+ "Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[",
+ "LCtTEsc", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'",
+ "LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)",
+ "LCtrl", "LAlt", "LGui", "TT2", "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space", "LT2_BSP", "RGui", "RAlt", "RCtrl",
]
# 1
colemak = [
- ["Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "["],
- ["LCtrl", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'"],
- ["LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)"],
- ["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
+ "Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "[",
+ "LCtTEsc", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'",
+ "LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)",
+ "LCtrl", "LAlt", "LGui", "TT2", "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space", "LT2_BSP", "RGui", "RAlt", "RCtrl",
]
# 2
numpad = [
- ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]"],
- ["", "DF0", "DF1", "XXX", "XXX", "MO3", "4", "4", "5", "6", "-", "="],
- ["", "XXX", "XXX", "XXX", "XXX", "MO5", "1", "1", "2", "3", "\\", ""],
- ["TG2", "", "", "", "Del", "", "", "BSpace", "0", "", "", ""],
+ "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]",
+ "", "DF0", "DF1", "XXX", "MO3", "XXX", "4", "4", "5", "6", "-", "=",
+ "", "MO5", "XXX", "XXX", "XXX", "XXX", "1", "1", "2", "3", "\\", "",
+ "TG2", "", "", "", "Del", "", "", "BSpace", "0", "", "", "",
]
# 3
fpad = [
- ["", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX"],
- ["", "XXX", "XXX", "XXX", "XXX", "MO3", "F4", "F4", "F5", "F6", "XXX", "XXX"],
- ["", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "XXX", ""],
- ["TG3", "", "", "", "", "", "F10", "F11", "F12", "", "", ""],
+ "", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX",
+ "", "XXX", "XXX", "XXX", "MO3", "XXX", "F4", "F4", "F5", "F6", "F11", "XXX",
+ "", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "F12", "",
+ "TG3", "", "", "", "", "", "", "", "", "", "", "",
]
# 4
movement = [
- ["Esc", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc"],
- ["", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr"],
- ["", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "XXX", "v Arrow", "XXX", "App", ""],
- ["TG4", "", "", "", "Del", "", "", "BSpace", "", "", "", ""],
+ "Esc", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc",
+ "", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr",
+ "", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "", "v Arrow", "XXX", "App", "",
+ "TG4", "", "", "", "Del", "", "", "BSpace", "", "", "", "",
]
# 5
media = [
- ["", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power"],
- ["", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep"],
- ["", "XXX", "XXX", "Vol -", "Vol -", "MO5", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX"],
- ["TG5", "", "", "", "", "", "", "", "", "", "", ""],
+ "", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power",
+ "", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep",
+ "", "MO5", "XXX", "Vol -", "Vol -", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX",
+ "TG5", "", "", "", "", "", "", "", "", "", "", "",
]
# 6
mouse = [
- ["", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX"],
- ["", "acc2", "Mouse 3", "Mouse 2", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX"],
- ["", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", ""],
- ["TG6", "", "", "", "", "", "", "", "", "", "", ""],
+ "", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX",
+ "", "acc2", "Mouse 2", "Mouse 3", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX",
+ "", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", "",
+ "TG6", "", "", "", "", "", "", "", "", "", "", "",
]
layers = [
diff --git a/keyboards/signum/3_0/elitec/keymaps/default/readme.md b/keyboards/signum/3_0/elitec/keymaps/default/readme.md
index efd43a9bf..be8cc30e8 100644
--- a/keyboards/signum/3_0/elitec/keymaps/default/readme.md
+++ b/keyboards/signum/3_0/elitec/keymaps/default/readme.md
@@ -11,10 +11,6 @@ starting point to create your own layouts for the Signum 3.0 with
# Customization
-- Install `python3` and [Sorted Containers
- Library](http://www.grantjenks.com/docs/sortedcontainers/), `pip
- install sortedcontainers`.
-
- Customize `layout.py` to your liking.
- Attention 1: keycodes are either translated into symbols and
function calls via the `translate()` function in `generate_km.py`
@@ -24,4 +20,5 @@ starting point to create your own layouts for the Signum 3.0 with
- Attention 2: additional C functions need to be put into
`km_template.txt`
-Run `./generate_km.py` to regenerate `keymap.c`.
+Run `./generate_km.py` to regenerate `keymap.c` and the JSON keymap
+definition that should be copied to `qmk_configurator/public/keymaps`.
diff --git a/keyboards/singa/singa.c b/keyboards/singa/singa.c
index 26a7e4637..ee49ba65c 100644
--- a/keyboards/singa/singa.c
+++ b/keyboards/singa/singa.c
@@ -34,6 +34,25 @@ void rgblight_set(void) {
}
#endif
+void matrix_init_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ if (rgblight_config.enable) {
+ i2c_init();
+ i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
+ }
+#endif
+ // call user level keymaps, if any
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_task();
+#endif
+ matrix_scan_user();
+ /* Nothing else for now. */
+}
+
__attribute__ ((weak))
void matrix_scan_user(void) {
}
@@ -45,7 +64,7 @@ void backlight_init_ports(void) {
setPinOutput(D4);
setPinOutput(D6);
- // turn RGB LEDs on
+ // turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
@@ -54,13 +73,13 @@ void backlight_init_ports(void) {
void backlight_set(uint8_t level) {
if (level == 0) {
- // turn RGB LEDs off
+ // turn backlight LEDs off
writePinLow(D0);
writePinLow(D1);
writePinLow(D4);
writePinLow(D6);
} else {
- // turn RGB LEDs on
+ // turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
diff --git a/keyboards/sol/common/knob_v2.c b/keyboards/sol/common/knob_v2.c
deleted file mode 100644
index f22f7c5d8..000000000
--- a/keyboards/sol/common/knob_v2.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include "knob_v2.h"
-
-bool knob_prev_a = false;
-static knob_report_t knob_report = {.dir = 0, .phase = 0};
-
-void knob_init(void) {
- // I use pins D1 (ISR1) & D4 for a knob.
-
- // Set pin mode for D4 as input.
- DDRD &= ~(0UL << ENCODER_PIN_2);
-
- // Enable internal pull-up for D4.
- // This is done by "writing" 1 to a pin that has its mode set to input.
- PORTD |= (1 << ENCODER_PIN_2);
-
- // Enable interrupt for D1
- // For more info on the below flags see this awesome section 11.1 (pages 89-90) here:
- // https://cdn-shop.adafruit.com/datasheets/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf
- // Set pin mode & pull-up.
- DDRD &= ~(0UL << ENCODER_PIN_1);
- PORTD |= (1UL << ENCODER_PIN_1);
-
- // INT: 33221100
- EICRA |= 0b00010000; // 0b01 - any edge
- // INT: 6 3210
- EIMSK |= 0b00000100;
-}
-
-ISR(ENCODER_INT) {
- bool a = PIND & (1 << ENCODER_PIN_1);
-
- if (knob_prev_a != a) {
- // "A" channel has REALLY changed.
- knob_report.phase = a;
- knob_prev_a = a;
- bool b = PIND & (1 << ENCODER_PIN_2);
- if (a == b) {
- // Halfway through CCW rotation (A == B)
- //
- // +---YOU ARE HERE (A=1, B=1)
- // | +---OR HERE (A=0, B=0)
- // | |
- // v v
- // A: _____/^^^^^\__
- // B: __/^^^^^\_____
- knob_report.dir++;
- } else {
- // Halfway through CW rotation (A != B)
- //
- // +---YOU ARE HERE (A=1, B=0)
- // | +---OR HERE (A=0, B=1)
- // | |
- // v v
- // A: _____/^^^^^\_____
- // B: ________/^^^^^\__
- knob_report.dir--;
- }
- }
-}
-
-knob_report_t knob_report_read(void) {
- // Return knob report.
- return knob_report;
-}
-
-void knob_report_reset(void) {
- // Call this ASAP once you've processed the previous knob report.
- // TODO: This should probably be called within `knob_report_read`.
- knob_report.dir = 0;
- knob_report.phase = 0;
-}
diff --git a/keyboards/sol/common/knob_v2.h b/keyboards/sol/common/knob_v2.h
deleted file mode 100644
index 45196eb1a..000000000
--- a/keyboards/sol/common/knob_v2.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Rotary knob implementation - Version 2.
-// Uses 2 digital pins - D2 (via interrupt) & D6.
-// #include "rev1.h"
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <stdbool.h>
-
-#ifndef ENCODER_PIN_1
- #define ENCODER_PIN_1 PD2
-#endif
-#ifndef ENCODER_PIN_2
- #define ENCODER_PIN_2 PD6
-#endif
-#ifndef ENCODER_INT
- #define ENCODER_INT INT2_vect
-#endif
-
-typedef struct knob_report_t {
- int8_t dir; // Contains number of rotations that happened
- int8_t phase; // Contains 0 if last rotation happened on 90 degrees, 1 if on 270
-} knob_report_t;
-
-void knob_init(void);
-knob_report_t knob_report_read(void);
-void knob_report_reset(void);
-
-bool knob_prev_a;
-int8_t knob_dir;
diff --git a/keyboards/sol/config.h b/keyboards/sol/config.h
index 93fd2261b..a7317d9d9 100644
--- a/keyboards/sol/config.h
+++ b/keyboards/sol/config.h
@@ -20,3 +20,73 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
+#define TAPPING_TERM 150
+
+/* Select hand configuration */
+#define SOFT_SERIAL_PIN D3
+#define EE_HANDS
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, E6}
+
+// wiring of each half
+#define MATRIX_COLS 7
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
+
+// Encoder support
+#define NUMBER_OF_ENCODERS 1
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D6 }
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN B3
+
+#ifdef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 40
+#elif RGBLIGHT_FULL_POWER
+ #define RGBLIGHT_LIMIT_VAL 255
+#else
+ #define RGBLIGHT_LIMIT_VAL 120
+#endif
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS RGBLIGHT_LIMIT_VAL
+
+#define LED_HITS_TO_REMEMBER 5
+
+#define RGBLIGHT_ANIMATIONS
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 500
+#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/sol/keymaps/brianweyer/keymap.c b/keyboards/sol/keymaps/brianweyer/keymap.c
index 87d603d81..3ba52081d 100755
--- a/keyboards/sol/keymaps/brianweyer/keymap.c
+++ b/keyboards/sol/keymaps/brianweyer/keymap.c
@@ -11,8 +11,6 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif
-extern uint8_t is_master;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -59,8 +57,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------+--+--------| |--------+--+--------+--------+--------+--------+--------+--------|
LCTL, LALT, FN, LGUI, RGB_MOD, SPC, DEL, BSPC, SPC, ADJ, LGUI, FN, LALT, LCTL,
//|--------+--------+--------+--------+--------+--+--------+--------| |--------+--+--------+--------+--------+--------+--------+--------|
- VOLD, VOLU, SPC, ENT, ENT, SPC, DOWN, UP
- // Rotary Left |--------+--------| |--------+-----------+ Rotary Right
+ SPC, ENT, ENT, SPC
+ // |--------+--------| |--------+-----------+
),
/* FN
@@ -90,8 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------+--+--------| |--------+--+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--+--------+--------| |--------+--+--------+--------+--------+--------+--------+--------|
- VOLD, VOLU, _______, _______, _______, _______, UP, DOWN
- // Rotary Left |--------+--------| |--------+-----------+ Rotary Right
+ _______, _______, _______, _______
+ // |--------+--------| |--------+-----------+
),
/* ADJ
@@ -122,8 +120,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------+--+--------| |--------+--+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
//|--------+--------+--------+--------+--------+--+--------+--------| |--------+--------+--+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______ \
- // Rotary Left |--------+--------| |--------+--------+ Rotary Right
+ _______, _______, _______, _______ \
+ // |--------+--------| |--------+--------+
)
};
@@ -132,6 +130,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool TOG_STATUS = false;
int RGB_current_mode;
+#ifdef ENCODER_ENABLE
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) { /* Second encoder*/
+ if (clockwise) {
+ tap_code(KC_UP);
+ } else {
+ tap_code(KC_DOWN);
+ }
+ }
+}
+#endif
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
@@ -182,7 +198,7 @@ void matrix_init_user(void) {
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (!has_usb())
+ if (!is_keyboard_master())
return OLED_ROTATION_180; // flip 180 for offhand
return rotation;
}
@@ -244,7 +260,7 @@ static void render_status(void) {
}
void oled_task_user(void) {
- if (is_master)
+ if (is_keyboard_master())
render_status();
else
render_logo();
diff --git a/keyboards/sol/keymaps/brianweyer/rules.mk b/keyboards/sol/keymaps/brianweyer/rules.mk
index 15b0c8fd2..12c877946 100755
--- a/keyboards/sol/keymaps/brianweyer/rules.mk
+++ b/keyboards/sol/keymaps/brianweyer/rules.mk
@@ -17,18 +17,12 @@ RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-ENCODER_ENABLE_CUSTOM = yes # Enable rotary encoder (+90)
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
- OPT_DEFS += -DENCODER_ENABLE_CUSTOM
- SRC += common/knob_v2.c
-endif
-
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
diff --git a/keyboards/sol/keymaps/danielhklein/keymap.c b/keyboards/sol/keymaps/danielhklein/keymap.c
index 9bcc5761a..860361e81 100644
--- a/keyboards/sol/keymaps/danielhklein/keymap.c
+++ b/keyboards/sol/keymaps/danielhklein/keymap.c
@@ -11,8 +11,6 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif
-extern uint8_t is_master;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -64,7 +62,7 @@ LAYOUT( \
KC_CAPS, _10, _11, _12, _13, _14, KC_LCBR, KC_RCBR, _15, _16, _17, _18, _19, KC_QUOT, \
KC_LSFT, _20, _21, _22, _23, _24, KC_GRV, KC_BSLS, _25, _26, _27, _28, _29, KC_RSFT, \
KC_LEFT, KC_DOWN, KC_LCTRL, KC_LALT, KC_LGUI, KC_BSPC, FN, ADJ, KC_SPC, KC_RGUI, KC_RALT, KC_RCTRL, KC_UP, KC_RIGHT, \
- KC_VOLU, KC_VOLD, KC_BSPC, FN, ADJ, KC_SPC, KC_VOLU, KC_VOLD \
+ KC_BSPC, FN, ADJ, KC_SPC \
)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -132,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+ XXXXXXX, _______, XXXXXXX, XXXXXXX \
),
/* ADJ
@@ -157,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, RGB_SAD, RGB_VAI, RGB_SAI, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PENT, XXXXXXX, XXXXXXX, \
XXXXXXX, RGB_HUD, RGB_VAD, RGB_HUI, XXXXXXX, XXXXXXX, QWERTY, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_SPC, XXXXXXX, XXXXXXX, \
XXXXXXX, RGBRST, RGB_TOG, RGB_MOD, RGB_RMOD, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_P0, KC_PDOT, KC_BSPC, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX \
+ XXXXXXX, XXXXXXX, _______, XXXXXXX \
)
};
@@ -165,6 +163,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool TOG_STATUS = false;
int RGB_current_mode;
+#ifdef ENCODER_ENABLE
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) { /* Second encoder*/
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+}
+#endif
+
// Setting ADJ layer RGB back to default
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
@@ -308,7 +324,7 @@ static void render_status(void) {
}
void oled_task_user(void) {
- if (is_master)
+ if (is_keyboard_master())
render_status();
else
render_logo();
diff --git a/keyboards/sol/keymaps/danielhklein/rules.mk b/keyboards/sol/keymaps/danielhklein/rules.mk
index 526b72fe7..09b0e201d 100644
--- a/keyboards/sol/keymaps/danielhklein/rules.mk
+++ b/keyboards/sol/keymaps/danielhklein/rules.mk
@@ -17,18 +17,12 @@ RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-ENCODER_ENABLE_CUSTOM = yes # Enable rotary encoder (+90)
OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
- OPT_DEFS += -DENCODER_ENABLE_CUSTOM
- SRC += common/knob_v2.c
-endif
-
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
diff --git a/keyboards/sol/keymaps/default/keymap.c b/keyboards/sol/keymaps/default/keymap.c
index a40bc40b7..c101a9bd8 100644
--- a/keyboards/sol/keymaps/default/keymap.c
+++ b/keyboards/sol/keymaps/default/keymap.c
@@ -12,8 +12,6 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif
-extern uint8_t is_master;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -70,7 +68,7 @@ LAYOUT( \
FN_CAPS, _10, _11, _12, _13, _14, KC_LPRN, KC_RPRN, _15, _16, _17, _18, _19, KC_QUOT, \
KC_LSFT, _20, _21, _22, _23, _24, KC_LCBR, KC_RCBR, _25, _26, _27, _28, _29, KC_ENT, \
KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, \
- KC_VOLU, KC_VOLD, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_VOLU, KC_VOLD \
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC \
)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -138,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
- KC_VOLU, KC_VOLD, _______, _______, _______, _______, KC_VOLU, KC_VOLD \
+ _______, _______, _______, _______ \
),
/* ADJ
@@ -163,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
- KC_VOLU, KC_VOLD, _______, _______, _______, _______, KC_VOLU, KC_VOLD \
+ _______, _______, _______, _______ \
)
};
@@ -173,6 +171,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool TOG_STATUS = false;
int RGB_current_mode;
+#ifdef ENCODER_ENABLE
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) { /* Second encoder*/
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+}
+#endif
+
// Setting ADJ layer RGB back to default
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
@@ -316,7 +332,7 @@ static void render_status(void) {
}
void oled_task_user(void) {
- if (is_master)
+ if (is_keyboard_master())
render_status();
else
render_logo();
diff --git a/keyboards/sol/keymaps/default/rules.mk b/keyboards/sol/keymaps/default/rules.mk
index 40167b375..09b0e201d 100644
--- a/keyboards/sol/keymaps/default/rules.mk
+++ b/keyboards/sol/keymaps/default/rules.mk
@@ -17,18 +17,12 @@ RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-ENCODER_ENABLE_CUSTOM = yes # Enable rotary encoder (+90)
-OLED_ENABLE = no # OLED_ENABLE (+5000)
+OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
- OPT_DEFS += -DENCODER_ENABLE_CUSTOM
- SRC += common/knob_v2.c
-endif
-
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
diff --git a/keyboards/sol/keymaps/kageurufu/keymap.c b/keyboards/sol/keymaps/kageurufu/keymap.c
index 9ea89db05..b587ef2b3 100644
--- a/keyboards/sol/keymaps/kageurufu/keymap.c
+++ b/keyboards/sol/keymaps/kageurufu/keymap.c
@@ -35,7 +35,7 @@ EXPAND_LAYOUT( \
FN_ESC, _10, _11, _12, _13, _14, RGB_SAI, RGB_VAI, _15, _16, _17, _18, _19, KC_QUOT, \
KC_LSPO, _20, _21, _22, _23, _24, RGB_SAD, RGB_VAD, _25, _26, _27, _28, _29, KC_RSPC, \
KC_LCTL, KC_LGUI, KC_LGUI, KC_LALT, FN, KC_SPC, FN, FN, KC_SPC, KC_MINS, KC_EQL, KC_DOWN, KC_PGUP, KC_PGDN, \
- KC_VOLD, KC_VOLU, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, KC_VOLD, KC_VOLU \
+ KC_SPC, KC_BSPC, KC_ENT, KC_SPC \
)
#define BASE_LAYOUT(...) _BASE_LAYOUT(__VA_ARGS__)
@@ -65,15 +65,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
________________FUNCTION_L3________________, _______, _______, ________________FUNCTION_R3________________, \
________________FUNCTION_L4________________, _______, _______, ________________FUNCTION_R4________________, \
________________FUNCTION_L5________________, ADJ, ADJ, ________________FUNCTION_R5________________, \
- KC_VOLD, KC_VOLU, _______, KC_DEL, _______, _______, KC_VOLD, KC_VOLU \
+ _______, KC_DEL, _______, _______ \
),
- [_ADJ] = EXPAND_LAYOUT( \
+ [_ADJ] = EXPAND_LAYOUT( \
_________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, \
_________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, \
_________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, \
_________________ADJUST_L4_________________, _______, _______, _________________ADJUST_R4_________________, \
_________________ADJUST_L5_________________, _______, _______, _________________ADJUST_R5_________________, \
- KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_VOLD, KC_VOLU \
+ _______, _______, _______, _______ \
)
};
+
+#ifdef ENCODER_ENABLE
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) { /* Second encoder*/
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+}
+#endif
diff --git a/keyboards/sol/keymaps/kageurufu/rules.mk b/keyboards/sol/keymaps/kageurufu/rules.mk
index 82816f960..21dca0b11 100644
--- a/keyboards/sol/keymaps/kageurufu/rules.mk
+++ b/keyboards/sol/keymaps/kageurufu/rules.mk
@@ -17,18 +17,12 @@ RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-ENCODER_ENABLE_CUSTOM = yes # Enable rotary encoder (+90)
OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
- OPT_DEFS += -DENCODER_ENABLE_CUSTOM
- SRC += common/knob_v2.c
-endif
-
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
diff --git a/keyboards/sol/keymaps/xulkal/keymap.c b/keyboards/sol/keymaps/xulkal/keymap.c
index be64d9e7c..111e8aa32 100644
--- a/keyboards/sol/keymaps/xulkal/keymap.c
+++ b/keyboards/sol/keymaps/xulkal/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_________________QWERTY_L3_________________, KC_GRV, KC_QUOT, _________________QWERTY_R3_________________, \
_________________QWERTY_L4_________________, RGB_TOG, RGBRST, _________________QWERTY_R4_________________, \
_________________QWERTY_L5_________________, RGB_RMOD, RGB_MOD, _________________QWERTY_R5_________________, \
- KC_VOLU, KC_VOLD, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_VOLU, KC_VOLD \
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC \
),
#ifndef GAMELAYER_DISABLE
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
___________________GAME_L3_________________, KC_GRV, KC_QUOT, ___________________GAME_R3_________________, \
___________________GAME_L4_________________, RGB_TOG, RGBRST, ___________________GAME_R4_________________, \
___________________GAME_L5_________________, RGB_RMOD, RGB_MOD, ___________________GAME_R5_________________, \
- KC_VOLU, KC_VOLD, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_VOLU, KC_VOLD \
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC \
),
#endif
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
__________________LOWER_L3_________________, _______, _______, __________________LOWER_R3_________________, \
__________________LOWER_L4_________________, _______, _______, __________________LOWER_R4_________________, \
__________________LOWER_L5_________________, _______, _______, __________________LOWER_R5_________________, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______ \
),
[_RAISE] = EXPAND_LAYOUT( \
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
__________________RAISE_L3_________________, _______, _______, __________________RAISE_R3_________________, \
__________________RAISE_L4_________________, _______, _______, __________________RAISE_R4_________________, \
__________________RAISE_L5_________________, _______, _______, __________________RAISE_R5_________________, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______ \
),
#ifdef TRILAYER_ENABLED
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, \
_________________ADJUST_L4_________________, _______, _______, _________________ADJUST_R4_________________, \
_________________ADJUST_L5_________________, _______, _______, _________________ADJUST_R5_________________, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______ \
),
#endif
};
@@ -92,15 +92,29 @@ static void render_logo(void) {
oled_write_P(sol_logo, false);
}
+extern rgb_config_t rgb_matrix_config;
+
static void render_status(void) {
// Render to mode icon
- static const char PROGMEM mode_logo[2][4] = {
- {0x97,0x98,0x0a,0},
- {0xb7,0xb8,0x0a,0} };
+ static const char PROGMEM mode_logo[2][3] = {
+ {0x97,0x98,0},
+ {0xb7,0xb8,0} };
oled_write_P(mode_logo[0], false);
+
+#if defined(RGB_MATRIX_ENABLE)
+ static char buffer[20] = {0};
+ snprintf(buffer, sizeof(buffer), " h%3d s%3d v%3d\n", rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val);
+ oled_write(buffer, false);
+#endif
+
oled_write_P(mode_logo[1], false);
+#if defined(RGB_MATRIX_ENABLE)
+ snprintf(buffer, sizeof(buffer), " s%3d m%3d\n", rgb_matrix_config.speed, rgb_matrix_config.mode);
+ oled_write(buffer, false);
+#endif
+
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
oled_write_P(PSTR("Layer: "), false);
switch (biton32(layer_state)) {
@@ -144,7 +158,7 @@ static void render_status(void) {
}
void oled_task_user(void) {
- if (has_usb()) {
+ if (is_keyboard_master()) {
render_status();
} else {
render_logo();
diff --git a/keyboards/sol/keymaps/xulkal/rules.mk b/keyboards/sol/keymaps/xulkal/rules.mk
index 685b8ced9..c3ed98edb 100644
--- a/keyboards/sol/keymaps/xulkal/rules.mk
+++ b/keyboards/sol/keymaps/xulkal/rules.mk
@@ -16,17 +16,12 @@ RGB_MATRIX_KEYPRESSES = yes # Enable reactive per-key effects. Can be very l
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
UNICODE_ENABLE = no # Unicode
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-ENCODER_ENABLE_CUSTOM = no # Enable rotary encoder (+90)
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
+ENCODER_ENABLE = no # Enable rotary encoder (+90)
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(ENCODER_ENABLE_CUSTOM)), yes)
- OPT_DEFS += -DENCODER_ENABLE_CUSTOM
- SRC += common/knob_v2.c
-endif
-
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
diff --git a/keyboards/sol/rev1/config.h b/keyboards/sol/rev1/config.h
index 1d8391f64..056869daa 100644
--- a/keyboards/sol/rev1/config.h
+++ b/keyboards/sol/rev1/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -27,117 +26,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT Sol
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
-#define PREVENT_STUCK_MODIFIERS
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 150
-
-#define USE_I2C
-#define USE_SERIAL
-#define USE_SERIAL_PD3
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-/* Select rows configuration */
-// Rows are 4 or 5
-// #define HELIX_ROWS 5 see ./rules.mk
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 12
-#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, E6}
-
-// wiring of each half
-#define MATRIX_COLS 7
-#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
-// #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCING_DELAY 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 B3
-#define RGBLIGHT_TIMER
-//#define RGBLED_NUM 12 // Number of LEDs. see ./keymaps/default/config.h
-#define ws2812_PORTREG PORTD
-#define ws2812_DDRREG DDRD
-
-#define DRIVER_COUNT 1
-// #define RGB_MATRIX_KEYPRESSES
-#define BACKLIGHT_PIN B7
-#define BACKLIGHT_LEVELS 5
-
#ifdef LED_MIRRORED
#define RGBLED_NUM 35
#else
#define RGBLED_NUM 70
#endif
#define DRIVER_LED_TOTAL RGBLED_NUM
-
-#define RGBLIGHT_RAINBOW_SWIRL_RANGE 1950
-
-#ifdef IOS_DEVICE_ENABLE
- #define RGBLIGHT_LIMIT_VAL 40
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 40
-#elif RGBLIGHT_FULL_POWER
- #define RGBLIGHT_LIMIT_VAL 255
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#else
- #define RGBLIGHT_LIMIT_VAL 120
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-#endif
-
-#define RGBLIGHT_VAL_STEP (RGBLIGHT_LIMIT_VAL / 10)
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-
-#define RGBLIGHT_ANIMATIONS
-
-#define LED_HITS_TO_REMEMBER 5
-
-#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
-// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-// 120 RGBoff, OLEDoff
-// 120 OLED
-// 330 RGB 6
-// 300 RGB 32
-// 310 OLED & RGB 32
- #define USB_MAX_POWER_CONSUMPTION 500
-#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
-
-#endif
diff --git a/keyboards/sol/rev1/matrix.c b/keyboards/sol/rev1/matrix.c
deleted file mode 100644
index 804d8b980..000000000
--- a/keyboards/sol/rev1/matrix.c
+++ /dev/null
@@ -1,304 +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 <drivers/avr/pro_micro.h>
-
-#include "serial.h"
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#ifdef ENCODER_ENABLE_CUSTOM
- #include "common/knob_v2.h"
-#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();
-
- #ifdef ENCODER_ENABLE_CUSTOM
- knob_init(); //FOR ENCODER
- #endif
- 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];
- }
- }
- }
-
- #ifdef ENCODER_ENABLE_CUSTOM
- knob_report_t knob_report = knob_report_read();
-
- knob_report_reset();
-
- matrix[5 + offset] &= 0b11111100;
- if (knob_report.phase) { // I check for phase to avoid handling the rotation twice (on 90 and 270 degrees).
- if (knob_report.dir > 0) {
- matrix[5 + offset] |= 0b00000001;
- } else if (knob_report.dir < 0) {
- matrix[5 + offset] |= 0b00000010;
- }
- }
- #endif
-
- return 1;
-}
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- int ret=serial_update_buffers();
- if (ret ) {
- return 1;
- }
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-
-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();
-
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_master_buffer[i] = matrix[offset+i];
- }
-
- if( serial_transaction() ) {
- // 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;
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-}
-
-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/sol/rev1/rev1.c b/keyboards/sol/rev1/rev1.c
index 049b5c218..68e64af79 100644
--- a/keyboards/sol/rev1/rev1.c
+++ b/keyboards/sol/rev1/rev1.c
@@ -1,87 +1,46 @@
-#include "sol.h"
+#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6 },
+ { 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20 },
+ { 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
+ { 35, 36, 37, 38, 39, 40, 41 },
+ { 42, 43, 44, 45, 46, 47, 48 },
+ { 49, 50, 51, 52, 53, 54, 55 },
+ { 56, 57, 58, 59, 60, 61, 62 },
+ { 63, 64, 65, 66, 67, 68, 68 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
+}, {
// Left Hand Mapped Left to Right
- { { 0 | (0 << 4) }, { 0, 0 }, 1},
- { { 0 | (1 << 4) }, { 22, 0 }, 0},
- { { 0 | (2 << 4) }, { 37, 0 }, 0},
- { { 0 | (3 << 4) }, { 37, 0 }, 0},
- { { 0 | (4 << 4) }, { 67, 0 }, 0},
- { { 0 | (5 << 4) }, { 82, 0 }, 0},
- { { 0 | (6 << 4) }, { 104, 0 }, 1},
- { { 1 | (0 << 4) }, { 0, 16 }, 1},
- { { 1 | (1 << 4) }, { 22, 16 }, 0},
- { { 1 | (2 << 4) }, { 37, 16 }, 0},
- { { 1 | (3 << 4) }, { 37, 16 }, 0},
- { { 1 | (4 << 4) }, { 67, 16 }, 0},
- { { 1 | (5 << 4) }, { 82, 16 }, 0},
- { { 1 | (6 << 4) }, { 104, 16 }, 1},
- { { 2 | (0 << 4) }, { 0, 32 }, 1},
- { { 2 | (1 << 4) }, { 22, 32 }, 0},
- { { 2 | (2 << 4) }, { 37, 32 }, 0},
- { { 2 | (3 << 4) }, { 37, 32 }, 0},
- { { 2 | (4 << 4) }, { 67, 32 }, 0},
- { { 2 | (5 << 4) }, { 82, 32 }, 0},
- { { 2 | (6 << 4) }, { 104, 32 }, 1},
- { { 3 | (0 << 4) }, { 0, 48 }, 1},
- { { 3 | (1 << 4) }, { 22, 48 }, 0},
- { { 3 | (2 << 4) }, { 37, 48 }, 0},
- { { 3 | (3 << 4) }, { 37, 48 }, 0},
- { { 3 | (4 << 4) }, { 67, 48 }, 0},
- { { 3 | (5 << 4) }, { 82, 48 }, 0},
- { { 3 | (6 << 4) }, { 104, 48 }, 1},
- { { 4 | (0 << 4) }, { 0, 64 }, 1},
- { { 4 | (1 << 4) }, { 22, 64 }, 1},
- { { 4 | (2 << 4) }, { 37, 64 }, 1},
- { { 4 | (3 << 4) }, { 37, 64 }, 1},
- { { 4 | (4 << 4) }, { 67, 64 }, 1},
- // These two control the 4 LEDs in the thumb cluster
- // Top keys are { 4 | (5 << 4) & { 4 | (6 << 4)
- { { 5 | (5 << 4) }, { 89, 45 }, 1},
- { { 5 | (6 << 4) }, { 97, 55 }, 1},
+ { 0, 0 }, { 22, 0 }, { 37, 0 }, { 37, 0 }, { 67, 0 }, { 82, 0 }, { 104, 0 },
+ { 0, 16 }, { 22, 16 }, { 37, 16 }, { 37, 16 }, { 67, 16 }, { 82, 16 }, { 104, 16 },
+ { 0, 32 }, { 22, 32 }, { 37, 32 }, { 37, 32 }, { 67, 32 }, { 82, 32 }, { 104, 32 },
+ { 0, 48 }, { 22, 48 }, { 37, 48 }, { 37, 48 }, { 67, 48 }, { 82, 48 }, { 104, 48 },
+ { 0, 64 }, { 22, 64 }, { 37, 64 }, { 37, 64 }, { 67, 64 }, { 89, 45 }, { 97, 55 },
// Left Hand Mapped Right to Left
- { { 6 | (0 << 4) }, { 224, 0 }, 1},
- { { 6 | (1 << 4) }, { 202, 0 }, 0},
- { { 6 | (2 << 4) }, { 187, 0 }, 0},
- { { 6 | (3 << 4) }, { 172, 0 }, 0},
- { { 6 | (4 << 4) }, { 157, 0 }, 0},
- { { 6 | (5 << 4) }, { 142, 0 }, 0},
- { { 6 | (6 << 4) }, { 120, 0 }, 1},
- { { 7 | (0 << 4) }, { 224, 16 }, 1},
- { { 7 | (1 << 4) }, { 202, 16 }, 0},
- { { 7 | (2 << 4) }, { 187, 16 }, 0},
- { { 7 | (3 << 4) }, { 172, 16 }, 0},
- { { 7 | (4 << 4) }, { 157, 16 }, 0},
- { { 7 | (5 << 4) }, { 142, 16 }, 0},
- { { 7 | (6 << 4) }, { 120, 16 }, 1},
- { { 8 | (0 << 4) }, { 224, 32 }, 1},
- { { 8 | (1 << 4) }, { 202, 32 }, 0},
- { { 8 | (2 << 4) }, { 187, 32 }, 0},
- { { 8 | (3 << 4) }, { 172, 32 }, 0},
- { { 8 | (4 << 4) }, { 157, 32 }, 0},
- { { 8 | (5 << 4) }, { 142, 32 }, 0},
- { { 8 | (6 << 4) }, { 120, 32 }, 1},
- { { 9 | (0 << 4) }, { 224, 48 }, 1},
- { { 9 | (1 << 4) }, { 202, 48 }, 0},
- { { 9 | (2 << 4) }, { 187, 48 }, 0},
- { { 9 | (3 << 4) }, { 172, 48 }, 0},
- { { 9 | (4 << 4) }, { 157, 48 }, 0},
- { { 9 | (5 << 4) }, { 142, 48 }, 0},
- { { 9 | (6 << 4) }, { 120, 48 }, 1},
- { { 10 | (0 << 4) }, { 224, 64 }, 1},
- { { 10 | (1 << 4) }, { 202, 64 }, 1},
- { { 10 | (2 << 4) }, { 187, 64 }, 1},
- { { 10 | (3 << 4) }, { 172, 64 }, 1},
- { { 10 | (4 << 4) }, { 157, 64 }, 1},
- // These two control the 4 LEDs in the thumb cluster
- // Top keys are { 10 | (5 << 4) & { 10 | (6 << 4)
- { { 11 | (5 << 4) }, { 135, 45 }, 1},
- { { 11 | (6 << 4) }, { 127, 55 }, 1}
- };
-#endif
+ { 224, 0 }, { 202, 0 }, { 187, 0 }, { 172, 0 }, { 157, 0 }, { 142, 0 }, { 120, 0 },
+ { 224, 16 }, { 202, 16 }, { 187, 16 }, { 172, 16 }, { 157, 16 }, { 142, 16 }, { 120, 16 },
+ { 224, 32 }, { 202, 32 }, { 187, 32 }, { 172, 32 }, { 157, 32 }, { 142, 32 }, { 120, 32 },
+ { 224, 48 }, { 202, 48 }, { 187, 48 }, { 172, 48 }, { 157, 48 }, { 142, 48 }, { 120, 48 },
+ { 224, 64 }, { 202, 64 }, { 187, 64 }, { 172, 64 }, { 157, 64 }, { 135, 45 }, { 127, 55 }
+}, {
+ // Left Hand Mapped Left to Right
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1,
+ // Left Hand Mapped Right to Left
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1
+} };
-void matrix_init_kb(void) {
- matrix_init_user();
-};
+#endif
diff --git a/keyboards/sol/rev1/rev1.h b/keyboards/sol/rev1/rev1.h
index 27b5ac896..6f70f09be 100644
--- a/keyboards/sol/rev1/rev1.h
+++ b/keyboards/sol/rev1/rev1.h
@@ -1,70 +1 @@
-#ifndef REV1_H
-#define REV1_H
-
-#include "sol.h"
-
-//void promicro_bootloader_jmp(bool program);
-#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
-
-//void promicro_bootloader_jmp(bool program);
-// LEL/LER/REL/RER are
-// LeftEncoderLeft, LeftEncoderRight, RightEncoderLeft, and RightEncoderRight
-
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R06, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, L16, R16, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, L26, R26, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
- L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45, \
- LEL, LER, L55, L56, R56, R50, REL, RER \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { LEL, LER, KC_NO, KC_NO, KC_NO, L55, L56 }, \
- { R05, R04, R03, R02, R01, R00, R06 }, \
- { R15, R14, R13, R12, R11, R10, R16 }, \
- { R25, R24, R23, R22, R21, R20, R26 }, \
- { R35, R34, R33, R32, R31, R30, R36 }, \
- { R45, R44, R43, R42, R41, R40, R46 }, \
- { REL, RER, KC_NO, KC_NO, KC_NO, R50, R56 } \
- }
-
-#define KC________ KC_TRNS
-#define KC_RGB_MOD RGB_MOD
-#define KC_FN FN
-#define KC_ADJ ADJ
-#define LAYOUT_kc( \
- L00, L01, L02, L03, L04, L05, L06, R06, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, L16, R16, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, L26, R26, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
- L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45, \
- LEL, LER, L55, L56, R56, R50, REL, RER \
- ) \
- LAYOUT( \
- KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
- KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
- KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
- KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \
- KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, \
- KC_##LEL, KC_##LER, KC_##L55, KC_##L56, KC_##R56, KC_##R50, KC_##REL, KC_##RER \
- )
-
-#endif
+#pragma once
diff --git a/keyboards/sol/rev1/rules.mk b/keyboards/sol/rev1/rules.mk
index 99f4dd896..e69de29bb 100644
--- a/keyboards/sol/rev1/rules.mk
+++ b/keyboards/sol/rev1/rules.mk
@@ -1,2 +0,0 @@
-SRC += rev1/matrix.c \
- rev1/split_util.c
diff --git a/keyboards/sol/rev1/split_util.c b/keyboards/sol/rev1/split_util.c
deleted file mode 100644
index c645bbdfe..000000000
--- a/keyboards/sol/rev1/split_util.c
+++ /dev/null
@@ -1,54 +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 "serial.h"
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
- #ifdef EE_HANDS
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
- #else
- #if defined(MASTER_RIGHT)
- isLeftHand = !has_usb();
- #else
- isLeftHand = has_usb();
- #endif
- #endif
-}
-
-static void keyboard_master_setup(void) {
- serial_master_init();
-}
-
-static void keyboard_slave_setup(void) {
- serial_slave_init();
-}
-
-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/sol/rev1/split_util.h b/keyboards/sol/rev1/split_util.h
deleted file mode 100644
index 442163896..000000000
--- a/keyboards/sol/rev1/split_util.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-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);
-
-#endif
diff --git a/keyboards/sol/rules.mk b/keyboards/sol/rules.mk
index bafdd9c52..b7d689c03 100644
--- a/keyboards/sol/rules.mk
+++ b/keyboards/sol/rules.mk
@@ -1,5 +1,3 @@
-SRC += serial.c
-
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@@ -48,6 +46,9 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Custom local font file
OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
+SPLIT_KEYBOARD = yes
+ENCODER_ENABLE = yes
+
# 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
@@ -62,6 +63,4 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-CUSTOM_MATRIX = yes
-
DEFAULT_FOLDER = sol/rev1
diff --git a/keyboards/sol/serial.c b/keyboards/sol/serial.c
deleted file mode 100644
index 169b4b176..000000000
--- a/keyboards/sol/serial.c
+++ /dev/null
@@ -1,288 +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();
-
-
-// Enable INT3
-EIMSK |= _BV(INT3);
-// Trigger on falling edge of INT3
-EICRA &= ~(_BV(ISC30) | _BV(ISC31));
-
-}
-
-// 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/sol/serial.h b/keyboards/sol/serial.h
deleted file mode 100644
index cd6bcc76b..000000000
--- a/keyboards/sol/serial.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef MY_SERIAL_H
-#define MY_SERIAL_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(PD3) //SErial pin goes here, D0-D3
-#define SERIAL_PIN_INTERRUPT INT3_vect //"INT#" of your serial pin
-
-
-#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
diff --git a/keyboards/sol/sol.h b/keyboards/sol/sol.h
index 8f451ce56..8a41702df 100644
--- a/keyboards/sol/sol.h
+++ b/keyboards/sol/sol.h
@@ -1,7 +1,53 @@
-#ifndef SOL_H
-#define SOL_H
+#pragma once
-#include "rev1.h"
#include "quantum.h"
-
+#ifdef KEYBOARD_sol_rev1
+#include "rev1.h"
+#elif KEYBOARD_sol_rev2
+#include "rev2.h"
#endif
+
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, L16, R16, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L26, R26, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45, \
+ L55, L56, R56, R50 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, L55, L56 }, \
+ { R05, R04, R03, R02, R01, R00, R06 }, \
+ { R15, R14, R13, R12, R11, R10, R16 }, \
+ { R25, R24, R23, R22, R21, R20, R26 }, \
+ { R35, R34, R33, R32, R31, R30, R36 }, \
+ { R45, R44, R43, R42, R41, R40, R46 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50, R56 } \
+ }
+
+#define KC________ KC_TRNS
+#define KC_RGB_MOD RGB_MOD
+#define KC_FN FN
+#define KC_ADJ ADJ
+#define LAYOUT_kc( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, L16, R16, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L26, R26, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45, \
+ L55, L56, R56, R50 \
+ ) \
+ LAYOUT( \
+ KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
+ KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
+ KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
+ KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \
+ KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45, \
+ KC_##L55, KC_##L56, KC_##R56, KC_##R50 \
+ )
diff --git a/keyboards/tada68/keymaps/mattgemmell/keymap.c b/keyboards/tada68/keymaps/mattgemmell/keymap.c
index 1a8021ea4..f2afd3cd4 100644
--- a/keyboards/tada68/keymaps/mattgemmell/keymap.c
+++ b/keyboards/tada68/keymaps/mattgemmell/keymap.c
@@ -29,20 +29,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------.
* | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |BR↑ |
* |----------------------------------------------------------------|
- * | | | | | | | | | | | | | | |BR↓ |
+ * | | | | | | | | |Prn|Scl|Pau|Up | | |BR↓ |
* |------------------------------------------------------- -----|
- * | | | | | | | | | | | | | | |Home|
+ * | | V+| V-|Mut| | | | |Hom|PgU|Lft|Rig| | |Home|
* |----------------------------------------------------------------|
- * | | | | | L+|LED| L-| | | V↓| V↑|Mut| | ↑ | End|
+ * | | | | | L+|LED| L-| | |End|PgDn|Dow| | ↑ | End|
* |----------------------------------------------------------------|
* | | | | | | | | ← | ↓ | → |
* `----------------------------------------------------------------'
*/
[_FL] = LAYOUT_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_BRMU, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMD, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, \
- _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_MS_U, KC_END, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_BRMD, \
+ _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, KC_HOME, \
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_MS_U, KC_END, \
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
};
diff --git a/keyboards/tada68/keymaps/mattgemmell/readme.md b/keyboards/tada68/keymaps/mattgemmell/readme.md
index a67e25ae2..de8e0c498 100644
--- a/keyboards/tada68/keymaps/mattgemmell/readme.md
+++ b/keyboards/tada68/keymaps/mattgemmell/readme.md
@@ -1,9 +1,8 @@
-# Custom Tada68 layout for ISO UK with Apple-y tweaks
+# Custom TADA68 layout for ISO UK with Apple-specific tweaks
-This layout is based on the [ISO UK](../iso-uk) layout, with the following
-changes:
+This layout is based on the [ISO UK](../iso-uk) layout, with changes to make it
+more user friendly when used on Apple devices, like iPads and the Mac.
-Swap Win and Alt on the left side (Option and Command on macOS)
## Installation
diff --git a/keyboards/sentraq/s60_x/config.h b/keyboards/ut472/config.h
index bb2602dca..8f0d76271 100644
--- a/keyboards/sentraq/s60_x/config.h
+++ b/keyboards/ut472/config.h
@@ -1,7 +1,5 @@
/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2016 Julien Pecqueur <julien@peclu.net>
-Copyright 2016 Felix Uhl <ifreilicht@gmail.com>
+Copyright 2018 Carlos Filoteo
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,39 +14,47 @@ GNU General Public License for more details.
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 PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER Massdrop
+#define MANUFACTURER Keyhive
+#define PRODUCT UT47.2
+#define DESCRIPTION An awesome 40% keyboard
/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 15
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D1, D2, D3, D4 }
+#define MATRIX_COL_PINS { C4, C5, B7, B6, B5, B4, B3, B2, B1, B0, D6, D5 }
+#define UNUSED_PINS
-/* number of backlight levels */
-#define BACKLIGHT_PIN B7
-#ifdef BACKLIGHT_PIN
-#define BACKLIGHT_LEVELS 3
-#endif
-/* COL2ROW or ROW2COL */
+/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
-#ifdef SUBPROJECT_default
- #include "default/config.h"
-#endif
-#ifdef SUBPROJECT_rgb
- #include "rgb/config.h"
-#endif
-
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DI_PIN C6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 8
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
#endif
diff --git a/keyboards/ut472/info.json b/keyboards/ut472/info.json
new file mode 100644
index 000000000..40f769ae2
--- /dev/null
+++ b/keyboards/ut472/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "UT47.2",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 12.5,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 47,
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Backspace", "x":11, "y":0, "w":1.5}, {"label":"LT(3) / Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.25}, {"label":"Shift", "x":0, "y":2, "w":1.5}, {"label":"Z", "x":1.5, "y":2}, {"label":"X", "x":2.5, "y":2}, {"label":"C", "x":3.5, "y":2}, {"label":"V", "x":4.5, "y":2}, {"label":"B", "x":5.5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":"<", "x":8.5, "y":2}, {"label":">", "x":9.5, "y":2}, {"label":"?", "x":10.5, "y":2}, {"label":"Shift / Enter", "x":11.5, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Alt", "x":1, "y":3}, {"label":"GUI", "x":2, "y":3}, {"label":"Menu", "x":3, "y":3}, {"label":"MO(2)", "x":4, "y":3, "w":1.25}, {"x":5.25, "y":3, "w":2}, {"label":"MO(1)", "x":7.25, "y":3, "w":1.25}, {"label":"\u2190", "x":8.5, "y":3}, {"label":"\u2193", "x":9.5, "y":3}, {"label":"\u2191", "x":10.5, "y":3}, {"label":"\u2192", "x":11.5, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/ut472/keymaps/default/config.h b/keyboards/ut472/keymaps/default/config.h
new file mode 100644
index 000000000..f88ebf7e8
--- /dev/null
+++ b/keyboards/ut472/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2018 Carlos Filoteo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+// place overrides here
diff --git a/keyboards/ut472/keymaps/default/keymap.c b/keyboards/ut472/keymaps/default/keymap.c
new file mode 100644
index 000000000..883eb5a22
--- /dev/null
+++ b/keyboards/ut472/keymaps/default/keymap.c
@@ -0,0 +1,100 @@
+/* Copyright 2018 Carlos Filoteo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define LT3_TAB LT(3, KC_TAB)
+
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * ,-------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P |Bspace |
+ * |-------------------------------------------------------------------------+
+ * |Tab/L3| A | S | D | F | G | H | J | K | L | ; | ' |
+ * |-------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / |Sh/En|
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Alt | Gui | App | L2 | Space | L1 | Left| Down| Up |Right|
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_APP, MO(2), KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+ /* FN Layer 1
+ * ,-------------------------------------------------------------------------.
+ * | ` ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Delete|
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | - | = | [ | ] | \ |
+ * |-------------------------------------------------------------------------+
+ * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | |
+ * |-------------------------------------------------------------------------+
+ * | | | |Capsl| | | | Home| PgDn| PgUp| End |
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* Right */
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______,
+ _______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
+
+ /* FN Layer 2
+ * ,-------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) |Delete|
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | _ | + | { | } | | |
+ * |-------------------------------------------------------------------------+
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
+ * |-------------------------------------------------------------------------+
+ * | | | |Capsl| | | | Home| PgDn| PgUp| End |
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* Left */
+ KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_DELETE,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDERSCORE, KC_PLUS, KC_LEFT_CURLY_BRACE, KC_RIGHT_CURLY_BRACE, KC_PIPE,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
+
+ /* FN Layer 2
+ * ,-------------------------------------------------------------------------.
+ * | Esc | Calc|Webhm| Mail| Comp| | | | | |PrtSc| |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | |MousL|MousD|MousU|MousR|
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* Tab */
+ KC_ESC, KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, _______, _______, _______, _______, _______, KC_PSCR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
+),
+};
diff --git a/keyboards/ut472/keymaps/default/readme.md b/keyboards/ut472/keymaps/default/readme.md
new file mode 100644
index 000000000..e3dcee467
--- /dev/null
+++ b/keyboards/ut472/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# UT47 default keymap
+
+![UT47 layout image](https://i.imgur.com/Tsz5qsF.png)
+
+[KLE](http://www.keyboard-layout-editor.com/##@@_y:0%3B&=Esc&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&_w:1.5%3B&=Back%20Space&_x:0.25&a:4&f:4&w:4&h:4&d:true%3B&=%3Cb%3EGNAP!%3C%2F%2Fb%3E%3Cp%3E%3Cp%3EMinimum%20stagger%3Cp%3E47%20key%20layout%3B&@_a:7&f:3&w:1.25%3B&=Tab&=A&=S&=D&=F&=G&=H&=J&=K&=L&=%2F%3B&_w:1.25%3B&=%27%3B&@_w:1.5%3B&=Shift&=Z&=X&=C&=V&=B&=N&=M&=,&=.&=%2F%2F&=Return%3B&@=Ctrl&=Alt&=Super&=Menu&_w:1.25%3B&=%2F&dArr%2F%3B&_w:2%3B&=&_w:1.25%3B&=%2F&uArr%2F%3B&=%2F&larr%2F%3B&=%2F&darr%2F%3B&=%2F&uarr%2F%3B&=%2F&rarr%2F%3B%3B&=undefined)
diff --git a/keyboards/ut472/readme.md b/keyboards/ut472/readme.md
new file mode 100644
index 000000000..25f40d783
--- /dev/null
+++ b/keyboards/ut472/readme.md
@@ -0,0 +1,20 @@
+# ut47.2
+
+Somewhere between ortholinear and standard offset. Created to have all the same functions on a Planck in a keyboard but with a more conventional keyboard row stagger.
+
+Keyboard Maintainer: [filoxo](https://github.com/filoxo), [network_operations](https://www.keyhive.xyz)
+
+The keyboard files can be found here: https://github.com/ai03-2725/UT47.2
+or purchased at keyhive.xyz
+
+## Instructions
+
+To create a hex file for the UT47.2, run:
+
+ make ut472:default
+
+## Layout
+
+Go to the [default layout README](keymaps/default/readme.md) 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).
diff --git a/keyboards/sentraq/s60_x/rules.mk b/keyboards/ut472/rules.mk
index 31de8ba39..c7b2efedc 100644
--- a/keyboards/sentraq/s60_x/rules.mk
+++ b/keyboards/ut472/rules.mk
@@ -1,8 +1,5 @@
-
-
# MCU name
-#MCU = at90usb1287
-MCU = atmega32u4
+MCU = atmega32u2
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
@@ -40,14 +37,15 @@ F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
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
+BOOTLOADER = atmel-dfu
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
@@ -56,14 +54,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
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)
+COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-MIDI_ENABLE = no # MIDI controls
+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)
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-
-DEFAULT_FOLDER = sentraq/s60_x/default
-
-LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ut472/ut472.c b/keyboards/ut472/ut472.c
new file mode 100644
index 000000000..c0686d661
--- /dev/null
+++ b/keyboards/ut472/ut472.c
@@ -0,0 +1,13 @@
+#include "ut472.h"
+
+void matrix_init_kb(void) {
+ // Keyboard start-up code goes here
+ // Runs once when the firmware starts up
+ matrix_init_user();
+};
+
+void matrix_scan_kb(void) {
+ // Looping keyboard code goes here
+ // This runs every cycle (a lot)
+ matrix_scan_user();
+};
diff --git a/keyboards/ut472/ut472.h b/keyboards/ut472/ut472.h
new file mode 100644
index 000000000..1068dd704
--- /dev/null
+++ b/keyboards/ut472/ut472.h
@@ -0,0 +1,34 @@
+/* Copyright 2018 Carlos Filoteo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
+ K30, K31, K32, K33, K34, K35, K37, K38, K39, K3a, K3b \
+) \
+ { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b }, \
+ { K30, K31, K32, K33, K34, K35, K35, K37, K38, K39, K3a, K3b } \
+ }
+
+
diff --git a/keyboards/vinta/rules.mk b/keyboards/vinta/rules.mk
index 9d89d9663..3ddb8d5bc 100644
--- a/keyboards/vinta/rules.mk
+++ b/keyboards/vinta/rules.mk
@@ -33,6 +33,7 @@ OPT_DEFS =
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+DFU_SUFFIX_ARGS = -p DF11 -v 0483
# Build Options
# comment out to disable the options.
diff --git a/keyboards/westfoxtrot/aanzee/aanzee.h b/keyboards/westfoxtrot/aanzee/aanzee.h
index b2a04a9d2..aa1b91656 100644
--- a/keyboards/westfoxtrot/aanzee/aanzee.h
+++ b/keyboards/westfoxtrot/aanzee/aanzee.h
@@ -33,30 +33,30 @@
#define LAYOUT_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0F, 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, K2C, K2D, K2E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
) \
{ \
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F}, \
{K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, ___}, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, ___, K2C, K2D, K2E, ___}, \
+ {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, K2E, ___}, \
{K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___}, \
- {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E, ___} \
+ {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D, K4E, ___} \
}
#define LAYOUT_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, K1E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
) \
{ \
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, ___}, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, ___, K1D, K1E, ___}, \
+ {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E, ___}, \
{K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, ___}, \
{K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___}, \
- {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E, ___} \
+ {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D, K4E, ___} \
}
void matrix_init_user(void);
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
index 4b7a9f208..e2b75bc86 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
@@ -25,14 +25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1),KC_RCTL,KC_LEFT,KC_DOWN, KC_RGHT),
+ KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT),
[_F1] = LAYOUT_ansi(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______, \
_______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______, _______, _______,_______,_______,_______,_______, _______)
+ _______,_______,_______, _______, _______,_______,_______,_______, _______)
};
void matrix_init_user(void) {
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
index 79628eb90..4ea027958 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
@@ -25,14 +25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_END, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, KC_PGUP, \
KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1),KC_RCTL,KC_LEFT,KC_DOWN, KC_RGHT),
+ KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1), KC_LEFT,KC_DOWN, KC_RGHT),
[_F1] = LAYOUT_iso(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______,_______,_______, _______, _______,_______,_______,_______,_______,_______)
+ _______,_______,_______, _______, _______,_______,_______,_______,_______)
};
void matrix_init_user(void) {
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
index 4b7a9f208..1ac5c77ff 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
@@ -25,14 +25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1),KC_RCTL,KC_LEFT,KC_DOWN, KC_RGHT),
+ KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1) ,KC_LEFT,KC_DOWN, KC_RGHT),
[_F1] = LAYOUT_ansi(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______, \
_______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______, _______, _______,_______,_______,_______,_______, _______)
+ _______,_______,_______, _______, _______,_______ ,_______,_______, _______)
};
void matrix_init_user(void) {
diff --git a/keyboards/westfoxtrot/cyclops/cyclops.h b/keyboards/westfoxtrot/cyclops/cyclops.h
index f32d2fd44..d82c56744 100644
--- a/keyboards/westfoxtrot/cyclops/cyclops.h
+++ b/keyboards/westfoxtrot/cyclops/cyclops.h
@@ -29,9 +29,9 @@
#define LAYOUT( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K4D, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4E, K2E \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
diff --git a/keyboards/whitefox/keymaps/konstantin/keymap.c b/keyboards/whitefox/keymaps/konstantin/keymap.c
index dddfb274e..c8c8c790c 100644
--- a/keyboards/whitefox/keymaps/konstantin/keymap.c
+++ b/keyboards/whitefox/keymaps/konstantin/keymap.c
@@ -2,66 +2,66 @@
#include "konstantin.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Base layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │PSc│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RCtRSf│ ↑ │PgD│
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │LCtl│LGui│LAlt│ Space │RAlG│FnLk│ │ ← │ ↓ │ → │
- * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
- */
- [L_BASE] = LAYOUT_truefox( \
- KC_ESC, KC_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_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_BSPC, KC_DEL, \
- FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCT_RSF, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT \
- ),
+ /* Base layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │PSc│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RCtRSf│ ↑ │PgD│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │LCtl│LGui│LAlt│ Space │RAlG│FnLk│ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [L_BASE] = LAYOUT_truefox(
+ KC_ESC, KC_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_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_BSPC, KC_DEL,
+ FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCT_RSF, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
- /* Function layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│SLk│Pau│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
- * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ App │PgU│Btm│
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │ │DtPR│DtNA│ MW↓ │ │ │ │Hom│PgD│End│
- * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
- */
- [L_FN] = LAYOUT_truefox( \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SLCK, KC_PAUS, \
- KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS, \
- _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP, \
- _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, BOTTOM, \
- _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_HOME, KC_PGDN, KC_END \
- ),
+ /* Function layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│SLk│Pau│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│ App │PgU│Btm│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │DtPR│DtNA│ MW↓ │ │ │ │Hom│PgD│End│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [L_FN] = LAYOUT_truefox(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SLCK, KC_PAUS,
+ KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS,
+ _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP,
+ _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, BOTTOM,
+ _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
- /* Numpad layer
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │Num│ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
- * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ PEnter │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │ │ │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
- */
- [L_NUMPAD] = LAYOUT_truefox( \
- _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, NUMPAD, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, KC_PENT, _______, \
- _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______ \
- ),
+ /* Numpad layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │Num│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ PEnter │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [L_NUMPAD] = LAYOUT_truefox(
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, NUMPAD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, KC_PENT, _______,
+ _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
};
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 9f222bf4f..d9aa911c5 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -55,6 +55,7 @@ ARMV = 7
OPT_DEFS =
DFU_ARGS = -d 1c11:b007
+DFU_SUFFIX_ARGS = -p b007 -v 1c11
# Build Options
# comment out to disable the options.
diff --git a/keyboards/wilba_tech/wt60_a/readme.md b/keyboards/wilba_tech/wt60_a/readme.md
index d7a73165d..bf9da9ada 100644
--- a/keyboards/wilba_tech/wt60_a/readme.md
+++ b/keyboards/wilba_tech/wt60_a/readme.md
@@ -1,6 +1,6 @@
# WILBA.TECH WT60-A
-![WILBA.TECH WT60-A](https://wilba.tech)
+![WILBA.TECH WT60-A](https://cdn.shopify.com/s/files/1/0015/5084/3975/products/no.160_PCB_1_of_1_2d7414ed-7cc5-46a5-b245-6fb7a197232d_720x.jpg?v=1546475122)
WT60-A is a keyboard PCB supporting 60% layout. [More info at wilba.tech](https://wilba.tech/)
diff --git a/keyboards/wilba_tech/wt65_a/readme.md b/keyboards/wilba_tech/wt65_a/readme.md
index 1551b55b5..9e0c630c0 100644
--- a/keyboards/wilba_tech/wt65_a/readme.md
+++ b/keyboards/wilba_tech/wt65_a/readme.md
@@ -1,8 +1,8 @@
# WILBA.TECH WT65-A
-![WILBA.TECH WT65-A](https://wilba.tech)
+![WILBA.TECH WT65-A](https://cdn.shopify.com/s/files/1/0015/5084/3975/products/no.165_PCB_1_of_1_a85e9af1-174f-497a-aadb-bb53ce74ef8c_720x.jpg?v=1546475185)
-WT65-A is a keyboard PCB supporting 65% layout with 0.25U blocker. [More info at wilba.tech](https://wilba.tech/)
+WT65-A is a keyboard PCB supporting 65% layout with 0.5U blocker. [More info at wilba.tech](https://wilba.tech/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: WILBA.TECH WT65-A
diff --git a/keyboards/wilba_tech/wt69_a/config.h b/keyboards/wilba_tech/wt69_a/config.h
new file mode 100644
index 000000000..69425e8e4
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/config.h
@@ -0,0 +1,203 @@
+/* Copyright 2018 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 0x069A // 69-A
+#define DEVICE_VER 0x0001
+#define MANUFACTURER wilba.tech
+#define PRODUCT wilba.tech WT69-A
+#define DESCRIPTION wilba.tech WT69-A
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
+#define MATRIX_COL_PINS { B7, B0, F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+// #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 DEBOUNCING_DELAY 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.
+ *
+ */
+
+/* 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_HELP1 H
+//#define MAGIC_KEY_HELP2 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_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#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 PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#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
+
+// Does not use WT_MONO_BACKLIGHT
+//#define WT_MONO_BACKLIGHT
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// EEPROM usage
+
+// TODO: refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC_ADDR 32
+// Bump this every time we change what we store
+// This will automatically reset the EEPROM with defaults
+// and avoid loading invalid data from the EEPROM
+#define EEPROM_VERSION 0x08
+#define EEPROM_VERSION_ADDR 34
+
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
+// Dynamic macro starts after dynamic keymaps (35+(4*5*17*2)) = (35+680)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 715
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 309
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt69_a/info.json b/keyboards/wilba_tech/wt69_a/info.json
new file mode 100644
index 000000000..df7af63c2
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "wilba.tech WT69-A",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "bootloader": "atmel-dfu",
+ "width": 18.25,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"BkSp", "x":15.25, "y":0}, {"label":"BkSp", "x":16.25, "y":0}, {"label":"Home", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Control", "x":2.25, "y":4, "w":1.5}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Fn", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/wilba_tech/wt69_a/keymaps/default/keymap.c b/keyboards/wilba_tech/wt69_a/keymaps/default/keymap.c
new file mode 100644
index 000000000..c9fc5dd07
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+}; \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt69_a/keymaps/via/keymap.c b/keyboards/wilba_tech/wt69_a/keymaps/via/keymap.c
new file mode 100644
index 000000000..c9fc5dd07
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+}; \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk
new file mode 100644
index 000000000..f072c6719
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk
@@ -0,0 +1,68 @@
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c
+
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section
+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)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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)
+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
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt69_a/readme.md b/keyboards/wilba_tech/wt69_a/readme.md
new file mode 100644
index 000000000..03ab90d09
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/readme.md
@@ -0,0 +1,15 @@
+# WILBA.TECH WT69-A
+
+![WILBA.TECH WT69-A](https://images.squarespace-cdn.com/content/5b267e429772ae4372e3b65f/1556352502542-AKHBF9R6CP5HVHOZYJHM/i69_g.png?content-type=image%2Fpng)
+
+WT69-A is a keyboard PCB supporting 65% layout with 0.5U blocker and left side function keys. [More info at wilba.tech](https://wilba.tech/)
+
+Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
+Hardware Supported: WILBA.TECH WT69-A
+Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt69_a:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/wilba_tech/wt69_a/rules.mk b/keyboards/wilba_tech/wt69_a/rules.mk
new file mode 100644
index 000000000..f1c632289
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/rules.mk
@@ -0,0 +1,65 @@
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c
+
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section
+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)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# 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)
+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
diff --git a/keyboards/wilba_tech/wt69_a/wt69_a.c b/keyboards/wilba_tech/wt69_a/wt69_a.c
new file mode 100644
index 000000000..ccff6d62c
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/wt69_a.c
@@ -0,0 +1,17 @@
+/* Copyright 2018 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/>.
+ */
+
+// Nothing to see here, move along... ;-)
diff --git a/keyboards/wilba_tech/wt69_a/wt69_a.h b/keyboards/wilba_tech/wt69_a/wt69_a.h
new file mode 100644
index 000000000..057936094
--- /dev/null
+++ b/keyboards/wilba_tech/wt69_a/wt69_a.h
@@ -0,0 +1,36 @@
+/* Copyright 2018 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"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K215, K016, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K216, \
+ K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, \
+ K400, K401, K402, K403, K404, K408, K413, K414, K415, K416 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
+ { K300, K301, K302, ____, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316 }, \
+ { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, ____, K413, K414, K415, K416 } \
+}
+
diff --git a/keyboards/ymd96/info.json b/keyboards/ymd96/info.json
new file mode 100644
index 000000000..73edfd894
--- /dev/null
+++ b/keyboards/ymd96/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "ymd96",
+ "url": "",
+ "maintainer": "sparkyman215",
+
+ "width": 19,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_default": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"Page Up", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3},{"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":2.75}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Fn", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"\u2190", "x":12, "y":5}, {"label":"\u2193", "x":13, "y":5}, {"label":"\u2191", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}]
+ },
+ "LAYOUT_custom": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"Page Up", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"-", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Fn", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Menu", "x":11, "y":5}, {"label":"Prnt Scr", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"Scroll Lock", "x":14, "y":5}, {"label":"0", "x":15, "y":5, "w":2}, {"label":".", "x":17, "y":5}]
+ },
+ "LAYOUT_iso": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"PgUp", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"-", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"AltGr", "x":10, "y":5, "w":1.5}, {"label":"Win", "x":11.5, "y":5, "w":1.5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/ymd96/keymaps/default/keymap.c b/keyboards/ymd96/keymaps/default/keymap.c
index 3d54c7395..c540972f1 100644
--- a/keyboards/ymd96/keymaps/default/keymap.c
+++ b/keyboards/ymd96/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define _DEFLT 0
#define _RAISE 1
-#define KEYMAP KEYMAP_DEFAULT
+#define KEYMAP LAYOUT_default
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/ymd96/keymaps/epx/keymap.c b/keyboards/ymd96/keymaps/epx/keymap.c
index b9d3f6df2..09ec665a3 100644
--- a/keyboards/ymd96/keymaps/epx/keymap.c
+++ b/keyboards/ymd96/keymaps/epx/keymap.c
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define _AR 1
#define _RAISE 2
-#define KEYMAP KEYMAP_DEFAULT
+#define KEYMAP LAYOUT_default
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0, default layer
diff --git a/keyboards/ymd96/keymaps/hgoel89/keymap.c b/keyboards/ymd96/keymaps/hgoel89/keymap.c
index 81addf69f..f612f79ba 100644
--- a/keyboards/ymd96/keymaps/hgoel89/keymap.c
+++ b/keyboards/ymd96/keymaps/hgoel89/keymap.c
@@ -27,7 +27,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
#define _DEFLT 0
#define _RAISE 1
-#define KEYMAP KEYMAP_CUSTOM
+#define KEYMAP LAYOUT_custom
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -45,8 +45,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, 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_NO, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RGUI , KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, MO(_RAISE), KC_P0, KC_PDOT \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,MO(_RAISE), KC_P1, KC_P2, KC_P3, KC_PENT, \
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RGUI , KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, KC_PDOT \
),
/* Layer 1, raise layer
* | | | | | | | | | | | | | | | | | | | |
diff --git a/keyboards/ymd96/ymd96.h b/keyboards/ymd96/ymd96.h
index 9c25f2219..ebf01b1d6 100644
--- a/keyboards/ymd96/ymd96.h
+++ b/keyboards/ymd96/ymd96.h
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
-#define KEYMAP_DEFAULT( \
+#define LAYOUT_default( \
K500, K502, K503, K504, K505, K600, K610, K710, K700, K511, K512, K513, K514, K113, K214, K013, K706, K709, K708, \
K400, K401, K402, K403, K404, K405, K601, K611, K711, K701, K410, K411, K412, K414, K406, K407, K408, K409, \
K300, K301, K302, K303, K304, K305, K602, K612, K712, K702, K310, K311, K312, K313, K306, K307, K308, K309, \
@@ -44,13 +44,13 @@ void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
{ K700, K701, K702, K703, K704, K705, K706, KC_NO, K708, K709, K710, K711, K712, K713, K714 } \
}
-#define KEYMAP_CUSTOM( \
+#define LAYOUT_custom( \
K500, K502, K503, K504, K505, K600, K610, K710, K700, K511, K512, K513, K514, K113, K214, K013, K706, K709, K708, \
K400, K401, K402, K403, K404, K405, K601, K611, K711, K701, K410, K411, K412, K414, K406, K407, K408, K409, \
K300, K301, K302, K303, K304, K305, K602, K612, K712, K702, K310, K311, K312, K313, K306, K307, K308, K309, \
K200, K201, K202, K203, K204, K205, K603, K613, K713, K703, K210, K211, K213, K206, K207, K208, K209, \
- K100, K101, K102, K103, K104, K105, K604, K614, K714, K704, K110, K111, K106, K107, K108, K009, \
- K000, K001, K002, K605, K705, K010, K011, K606, K607, KC_NO, K006, K008 \
+ K100, K101, K102, K103, K104, K105, K604, K614, K714, K704, K110, K111, K608,K106, K107, K108, K009, \
+ K000, K001, K002, K605, K705, K010, K011, K606, K607, K006, K008 \
) { \
{ K000, K001, K002, KC_NO, KC_NO, KC_NO, K006, KC_NO, K008, K009, K010, K011, KC_NO, K013, KC_NO, }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, KC_NO, K110, K111, KC_NO, K113, KC_NO, }, \
@@ -58,7 +58,7 @@ void matrix_init_user(void); // TODO port this to other PS2AVRGB boards
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, }, \
{ K500, KC_NO, K502, K503, K504, K505, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K511, K512, K513, K514, }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, KC_NO, KC_NO, K610, K611, K612, K613, K614, }, \
+ { K600, K601, K602, K603, K604, K605, K606, K607, K608, KC_NO, K610, K611, K612, K613, K614, }, \
{ K700, K701, K702, K703, K704, K705, K706, KC_NO, K708, K709, K710, K711, K712, K713, K714 } \
}
diff --git a/keyboards/zen/rev1/rules.mk b/keyboards/zen/rev1/rules.mk
index e69de29bb..58e9a76b2 100644
--- a/keyboards/zen/rev1/rules.mk
+++ b/keyboards/zen/rev1/rules.mk
@@ -0,0 +1 @@
+BOOTLOADER = caterina
diff --git a/keyboards/zen/rev2/config.h b/keyboards/zen/rev2/config.h
index 5fa262760..c56956108 100644
--- a/keyboards/zen/rev2/config.h
+++ b/keyboards/zen/rev2/config.h
@@ -65,6 +65,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGBLED_NUM 34 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
/*
* Feature disable options
diff --git a/keyboards/zen/rev2/rev2.c b/keyboards/zen/rev2/rev2.c
index 7bd8efbdd..28a5a9f20 100644
--- a/keyboards/zen/rev2/rev2.c
+++ b/keyboards/zen/rev2/rev2.c
@@ -24,7 +24,7 @@ const char* layer_name_user(uint32_t layer) {
__attribute__((weak))
void render_status(void) {
- // Setup for 90 degree rendering because it's awesome!
+ // Setup for 270 degree rendering because it's awesome!
// It can house 16 lines of text, with 5 letters each line
// Render to mode icon
static const char PROGMEM mode_logo[2][4] = {
@@ -41,7 +41,7 @@ void render_status(void) {
// Host Keyboard LED Status
uint8_t led_usb_state = host_keyboard_leds();
- oled_set_cursor(0, OLED_MAX_LINES - 4); // Line 13
+ oled_set_cursor(0, oled_max_lines() - 4); // Line 13
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLK") : PSTR(" "), false); // Line 14
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPLK") : PSTR(" "), false); // Line 15
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCRLK") : PSTR(" "), false); // Line 16
@@ -49,7 +49,7 @@ void render_status(void) {
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master())
- return OLED_ROTATION_90; // flips the display 90 degrees if mainhand
+ return OLED_ROTATION_270; // flips the display 270 degrees if mainhand
return rotation;
}