]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Creates a layouts/ folder for keymaps shared between keyboards (#1609)
authorJack Humbert <jack.humb@gmail.com>
Thu, 24 Aug 2017 02:29:07 +0000 (22:29 -0400)
committerGitHub <noreply@github.com>
Thu, 24 Aug 2017 02:29:07 +0000 (22:29 -0400)
* include variables and .h files as pp directives

* start layout compilation

* split ergodoxes up

* don't compile all layouts for everything

* might seg fault

* reset layouts variable

* actually reset layouts

* include rules.mk instead

* remove includes from rules.mk

* update variable setting

* load visualizer from path

* adds some more examples

* adds more layouts

* more boards added

* more boards added

* adds documentation for layouts

* use lowercase names for LAYOUT_

* add layout.json files for each layout

* add community folder, default keymaps for layouts

* touch-up default layouts

* touch-up layouts, some keyboard rules.mk

* update documentation for layouts

* fix up serial/i2c switches

762 files changed:
Makefile
build_keyboard.mk
build_layout.mk [new file with mode: 0644]
docs/_summary.md
docs/feature_layouts.md [new file with mode: 0644]
keyboards/alps64/alps64.h
keyboards/alps64/keymaps/default/keymap.c
keyboards/amj60/amj60.h
keyboards/amj60/rules.mk
keyboards/atomic/atomic.h
keyboards/atomic/rules.mk
keyboards/atreus/rules.mk
keyboards/chibios_test/stm32_f072_onekey/rules.mk
keyboards/chibios_test/stm32_f103_onekey/rules.mk
keyboards/chibios_test/teensy_lc_onekey/rules.mk
keyboards/clueboard/rev1/rules.mk
keyboards/clueboard/rev2/rules.mk
keyboards/eco/rev1/rules.mk
keyboards/eco/rev2/rules.mk
keyboards/ergodone/Makefile [new file with mode: 0644]
keyboards/ergodone/config.h [new file with mode: 0644]
keyboards/ergodone/ergodone.c [new file with mode: 0644]
keyboards/ergodone/ergodone.h [new file with mode: 0644]
keyboards/ergodone/expander.c [new file with mode: 0644]
keyboards/ergodone/expander.h [new file with mode: 0644]
keyboards/ergodone/i2cmaster.h [new file with mode: 0644]
keyboards/ergodone/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/ergodone/keymaps/default/readme.md [new file with mode: 0644]
keyboards/ergodone/matrix.c [new file with mode: 0644]
keyboards/ergodone/readme.md [new file with mode: 0644]
keyboards/ergodone/rules.mk [new file with mode: 0644]
keyboards/ergodone/twimaster.c [new file with mode: 0644]
keyboards/ergodox/Makefile [deleted file]
keyboards/ergodox/config.h [deleted file]
keyboards/ergodox/ergodone/Makefile [deleted file]
keyboards/ergodox/ergodone/config.h [deleted file]
keyboards/ergodox/ergodone/ergodone.c [deleted file]
keyboards/ergodox/ergodone/ergodone.h [deleted file]
keyboards/ergodox/ergodone/expander.c [deleted file]
keyboards/ergodox/ergodone/expander.h [deleted file]
keyboards/ergodox/ergodone/i2cmaster.h [deleted file]
keyboards/ergodox/ergodone/matrix.c [deleted file]
keyboards/ergodox/ergodone/readme.md [deleted file]
keyboards/ergodox/ergodone/rules.mk [deleted file]
keyboards/ergodox/ergodone/twimaster.c [deleted file]
keyboards/ergodox/ergodox.c [deleted file]
keyboards/ergodox/ergodox.h [deleted file]
keyboards/ergodox/ez/190hotfix.sh [deleted file]
keyboards/ergodox/ez/Makefile [deleted file]
keyboards/ergodox/ez/config.h [deleted file]
keyboards/ergodox/ez/ez.c [deleted file]
keyboards/ergodox/ez/ez.h [deleted file]
keyboards/ergodox/ez/i2cmaster.h [deleted file]
keyboards/ergodox/ez/keymaps/blakedietz/keymap.c [deleted file]
keyboards/ergodox/ez/keymaps/drashna-custom/Makefile [deleted file]
keyboards/ergodox/ez/keymaps/drashna-custom/config.h [deleted file]
keyboards/ergodox/ez/keymaps/drashna-custom/keymap.c [deleted file]
keyboards/ergodox/ez/keymaps/drashna/Makefile [deleted file]
keyboards/ergodox/ez/keymaps/drashna/config.h [deleted file]
keyboards/ergodox/ez/keymaps/drashna/keymap.c [deleted file]
keyboards/ergodox/ez/keymaps/drashna/readme.md [deleted file]
keyboards/ergodox/ez/keymaps/profet_80/keymap.c [deleted file]
keyboards/ergodox/ez/keymaps/profet_80/readme.md [deleted file]
keyboards/ergodox/ez/keymaps/steno/Makefile [deleted file]
keyboards/ergodox/ez/keymaps/steno/keymap.c [deleted file]
keyboards/ergodox/ez/keymaps/steno/readme.md [deleted file]
keyboards/ergodox/ez/matrix.c [deleted file]
keyboards/ergodox/ez/rules.mk [deleted file]
keyboards/ergodox/ez/twimaster.c [deleted file]
keyboards/ergodox/ez/util/compile_keymap.py [deleted file]
keyboards/ergodox/ez/util/readme.md [deleted file]
keyboards/ergodox/infinity/MEMO.txt [deleted file]
keyboards/ergodox/infinity/Makefile [deleted file]
keyboards/ergodox/infinity/board_is31fl3731c.h [deleted file]
keyboards/ergodox/infinity/board_st7565.h [deleted file]
keyboards/ergodox/infinity/bootloader_defs.h [deleted file]
keyboards/ergodox/infinity/chconf.h [deleted file]
keyboards/ergodox/infinity/config.h [deleted file]
keyboards/ergodox/infinity/gfxconf.h [deleted file]
keyboards/ergodox/infinity/halconf.h [deleted file]
keyboards/ergodox/infinity/infinity.c [deleted file]
keyboards/ergodox/infinity/infinity.h [deleted file]
keyboards/ergodox/infinity/led.c [deleted file]
keyboards/ergodox/infinity/matrix.c [deleted file]
keyboards/ergodox/infinity/mcuconf.h [deleted file]
keyboards/ergodox/infinity/rules.mk [deleted file]
keyboards/ergodox/infinity/simple_visualizer.h [deleted file]
keyboards/ergodox/infinity/visualizer.c [deleted file]
keyboards/ergodox/keymaps/333fred/Makefile [deleted file]
keyboards/ergodox/keymaps/333fred/README.md [deleted file]
keyboards/ergodox/keymaps/333fred/config.h [deleted file]
keyboards/ergodox/keymaps/333fred/keymap.c [deleted file]
keyboards/ergodox/keymaps/333fred/visualizer.c [deleted file]
keyboards/ergodox/keymaps/ab/Makefile [deleted file]
keyboards/ergodox/keymaps/ab/keyboard-layout.json [deleted file]
keyboards/ergodox/keymaps/ab/keymap.c [deleted file]
keyboards/ergodox/keymaps/ab/readme.md [deleted file]
keyboards/ergodox/keymaps/absenth/keymap.c [deleted file]
keyboards/ergodox/keymaps/absenth/readme.md [deleted file]
keyboards/ergodox/keymaps/adam/config.h [deleted file]
keyboards/ergodox/keymaps/adam/keymap.c [deleted file]
keyboards/ergodox/keymaps/adam/readme.md [deleted file]
keyboards/ergodox/keymaps/adnw_k_o_y/keymap.c [deleted file]
keyboards/ergodox/keymaps/adnw_k_o_y/readme.md [deleted file]
keyboards/ergodox/keymaps/albert/Makefile [deleted file]
keyboards/ergodox/keymaps/albert/config.h [deleted file]
keyboards/ergodox/keymaps/albert/keymap.c [deleted file]
keyboards/ergodox/keymaps/albert/readme.md [deleted file]
keyboards/ergodox/keymaps/alexjj/keymap.c [deleted file]
keyboards/ergodox/keymaps/alexjj/readme.md [deleted file]
keyboards/ergodox/keymaps/algernon/COPYING [deleted file]
keyboards/ergodox/keymaps/algernon/Makefile [deleted file]
keyboards/ergodox/keymaps/algernon/NEWS.md [deleted file]
keyboards/ergodox/keymaps/algernon/config.h [deleted file]
keyboards/ergodox/keymaps/algernon/keymap.c [deleted file]
keyboards/ergodox/keymaps/algernon/readme.md [deleted file]
keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json [deleted file]
keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json [deleted file]
keyboards/ergodox/keymaps/algernon/tools/hid-commands [deleted file]
keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py [deleted file]
keyboards/ergodox/keymaps/algernon/tools/text-to-log.py [deleted file]
keyboards/ergodox/keymaps/alphadox/Makefile [deleted file]
keyboards/ergodox/keymaps/alphadox/config.h [deleted file]
keyboards/ergodox/keymaps/alphadox/keymap.c [deleted file]
keyboards/ergodox/keymaps/andrew_osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/belak/LICENSE [deleted file]
keyboards/ergodox/keymaps/belak/Makefile [deleted file]
keyboards/ergodox/keymaps/belak/README.md [deleted file]
keyboards/ergodox/keymaps/belak/keymap.c [deleted file]
keyboards/ergodox/keymaps/belak/visualizer.c [deleted file]
keyboards/ergodox/keymaps/bepo/Makefile [deleted file]
keyboards/ergodox/keymaps/bepo/keymap.c [deleted file]
keyboards/ergodox/keymaps/bepo/readme.md [deleted file]
keyboards/ergodox/keymaps/bepo_csa/keymap.c [deleted file]
keyboards/ergodox/keymaps/bepo_csa/readme.md [deleted file]
keyboards/ergodox/keymaps/bryan/keymap.c [deleted file]
keyboards/ergodox/keymaps/coderkun_neo2/Makefile [deleted file]
keyboards/ergodox/keymaps/coderkun_neo2/keymap.c [deleted file]
keyboards/ergodox/keymaps/coderkun_neo2/readme.md [deleted file]
keyboards/ergodox/keymaps/colemak/keymap.c [deleted file]
keyboards/ergodox/keymaps/colemak/readme.md [deleted file]
keyboards/ergodox/keymaps/colemak_osx_pc_no/keymap.c [deleted file]
keyboards/ergodox/keymaps/colemak_osx_pc_no/readme.md [deleted file]
keyboards/ergodox/keymaps/colemak_programmer/Makefile [deleted file]
keyboards/ergodox/keymaps/colemak_programmer/keymap.c [deleted file]
keyboards/ergodox/keymaps/colemak_programmer/readme.md [deleted file]
keyboards/ergodox/keymaps/common-nighthawk/Makefile [deleted file]
keyboards/ergodox/keymaps/common-nighthawk/keymap.c [deleted file]
keyboards/ergodox/keymaps/csharp_dev/keymap.c [deleted file]
keyboards/ergodox/keymaps/csharp_dev/readme.md [deleted file]
keyboards/ergodox/keymaps/dave/keymap.c [deleted file]
keyboards/ergodox/keymaps/dave/readme.md [deleted file]
keyboards/ergodox/keymaps/deadcyclo/Makefile [deleted file]
keyboards/ergodox/keymaps/deadcyclo/keymap.c [deleted file]
keyboards/ergodox/keymaps/deadcyclo/readme.md [deleted file]
keyboards/ergodox/keymaps/default/default.png.md [deleted file]
keyboards/ergodox/keymaps/default/default_highres.png.md [deleted file]
keyboards/ergodox/keymaps/default/keymap.c [deleted file]
keyboards/ergodox/keymaps/default/readme.md [deleted file]
keyboards/ergodox/keymaps/default/visualizer.c [deleted file]
keyboards/ergodox/keymaps/default_osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/default_osx/readme.md [deleted file]
keyboards/ergodox/keymaps/dragon788/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak/dvorak.png.md [deleted file]
keyboards/ergodox/keymaps/dvorak/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_emacs/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_emacs/readme.md [deleted file]
keyboards/ergodox/keymaps/dvorak_emacs_software/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_emacs_software/readme.md [deleted file]
keyboards/ergodox/keymaps/dvorak_intl_squisher/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_intl_squisher/readme.md [deleted file]
keyboards/ergodox/keymaps/dvorak_plover/README.md [deleted file]
keyboards/ergodox/keymaps/dvorak_plover/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_programmer/Makefile [deleted file]
keyboards/ergodox/keymaps/dvorak_programmer/README.md [deleted file]
keyboards/ergodox/keymaps/dvorak_programmer/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md [deleted file]
keyboards/ergodox/keymaps/dvorak_spanish/keymap.c [deleted file]
keyboards/ergodox/keymaps/dvorak_spanish/readme.md [deleted file]
keyboards/ergodox/keymaps/emacs_osx_dk/keymap.c [deleted file]
keyboards/ergodox/keymaps/emacs_osx_dk/readme.md [deleted file]
keyboards/ergodox/keymaps/erez_experimental/Makefile [deleted file]
keyboards/ergodox/keymaps/erez_experimental/config.h [deleted file]
keyboards/ergodox/keymaps/erez_experimental/keymap.c [deleted file]
keyboards/ergodox/keymaps/erez_experimental/readme.md [deleted file]
keyboards/ergodox/keymaps/familiar/Makefile [deleted file]
keyboards/ergodox/keymaps/familiar/README.md [deleted file]
keyboards/ergodox/keymaps/familiar/keymap.c [deleted file]
keyboards/ergodox/keymaps/french_hacker/keymap.c [deleted file]
keyboards/ergodox/keymaps/french_hacker/readme.md [deleted file]
keyboards/ergodox/keymaps/galson/Makefile [deleted file]
keyboards/ergodox/keymaps/galson/keymap.c [deleted file]
keyboards/ergodox/keymaps/galson/readme.md [deleted file]
keyboards/ergodox/keymaps/german-kinergo/keymap.c [deleted file]
keyboards/ergodox/keymaps/german-kinergo/readme.md [deleted file]
keyboards/ergodox/keymaps/german-lukas/README.md [deleted file]
keyboards/ergodox/keymaps/german-lukas/keymap.c [deleted file]
keyboards/ergodox/keymaps/german-manuneo/compile_keymap.py [deleted file]
keyboards/ergodox/keymaps/german-manuneo/keymap.c [deleted file]
keyboards/ergodox/keymaps/german-manuneo/keymap.md [deleted file]
keyboards/ergodox/keymaps/german/keymap.c [deleted file]
keyboards/ergodox/keymaps/guni/keymap.c [deleted file]
keyboards/ergodox/keymaps/guni/readme.txt [deleted file]
keyboards/ergodox/keymaps/ishigoya-jp/keymap.c [deleted file]
keyboards/ergodox/keymaps/ishigoya-jp/readme.md [deleted file]
keyboards/ergodox/keymaps/italian/keymap.c [deleted file]
keyboards/ergodox/keymaps/italian/readme.md [deleted file]
keyboards/ergodox/keymaps/j3rn/keymap.c [deleted file]
keyboards/ergodox/keymaps/j3rn/readme.md [deleted file]
keyboards/ergodox/keymaps/jack/Makefile [deleted file]
keyboards/ergodox/keymaps/jack/config.h [deleted file]
keyboards/ergodox/keymaps/jack/keymap.c [deleted file]
keyboards/ergodox/keymaps/jacobono/keymap.c [deleted file]
keyboards/ergodox/keymaps/jacobono/readme.md [deleted file]
keyboards/ergodox/keymaps/jafo/jafo-Notes [deleted file]
keyboards/ergodox/keymaps/jafo/jafo-layout.pdf [deleted file]
keyboards/ergodox/keymaps/jafo/keymap.c [deleted file]
keyboards/ergodox/keymaps/jafo/readme.md [deleted file]
keyboards/ergodox/keymaps/jgarr/keymap.c [deleted file]
keyboards/ergodox/keymaps/josh/keymap.c [deleted file]
keyboards/ergodox/keymaps/josh/readme.md [deleted file]
keyboards/ergodox/keymaps/kastyle/keymap.c [deleted file]
keyboards/ergodox/keymaps/kastyle/readme.md [deleted file]
keyboards/ergodox/keymaps/kines-ish/keymap.c [deleted file]
keyboards/ergodox/keymaps/kines-ish/readme.md [deleted file]
keyboards/ergodox/keymaps/kristian/keymap.c [deleted file]
keyboards/ergodox/keymaps/maz/keymap.c [deleted file]
keyboards/ergodox/keymaps/maz/readme.md [deleted file]
keyboards/ergodox/keymaps/mclennon_osx/README.md [deleted file]
keyboards/ergodox/keymaps/mclennon_osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/mpiechotka/keymap.c [deleted file]
keyboards/ergodox/keymaps/mpiechotka/readme.md [deleted file]
keyboards/ergodox/keymaps/msc/keymap.c [deleted file]
keyboards/ergodox/keymaps/msc/readme.md [deleted file]
keyboards/ergodox/keymaps/naps62/keymap.c [deleted file]
keyboards/ergodox/keymaps/naps62/readme.md [deleted file]
keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c [deleted file]
keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md [deleted file]
keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c [deleted file]
keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md [deleted file]
keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c [deleted file]
keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md [deleted file]
keyboards/ergodox/keymaps/ordinary/keymap.c [deleted file]
keyboards/ergodox/keymaps/ordinary/ordinary-base.txt [deleted file]
keyboards/ergodox/keymaps/ordinary/ordinary-media.txt [deleted file]
keyboards/ergodox/keymaps/ordinary/ordinary-special.txt [deleted file]
keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt [deleted file]
keyboards/ergodox/keymaps/ordinary/readme.md [deleted file]
keyboards/ergodox/keymaps/osx_de/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_de/osx_de_highres.png.md [deleted file]
keyboards/ergodox/keymaps/osx_de/readme.md [deleted file]
keyboards/ergodox/keymaps/osx_de_adnw_koy/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md [deleted file]
keyboards/ergodox/keymaps/osx_de_experimental/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_de_experimental/osx_de_experimental_highres.png.md [deleted file]
keyboards/ergodox/keymaps/osx_de_experimental/readme.md [deleted file]
keyboards/ergodox/keymaps/osx_fr/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_kinesis_pnut/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/keymap.c [deleted file]
keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/readme.md [deleted file]
keyboards/ergodox/keymaps/phoenix/keymap.c [deleted file]
keyboards/ergodox/keymaps/phoenix/readme.md [deleted file]
keyboards/ergodox/keymaps/plover/keymap.c [deleted file]
keyboards/ergodox/keymaps/plums/keymap.c [deleted file]
keyboards/ergodox/keymaps/plums/readme.md [deleted file]
keyboards/ergodox/keymaps/pvinis/Changelog.md [deleted file]
keyboards/ergodox/keymaps/pvinis/Makefile [deleted file]
keyboards/ergodox/keymaps/pvinis/Readme.md [deleted file]
keyboards/ergodox/keymaps/pvinis/keymap.c [deleted file]
keyboards/ergodox/keymaps/replicaJunction/config.h [deleted file]
keyboards/ergodox/keymaps/replicaJunction/keymap.c [deleted file]
keyboards/ergodox/keymaps/replicaJunction/readme.md [deleted file]
keyboards/ergodox/keymaps/reset_eeprom/keymap.c [deleted file]
keyboards/ergodox/keymaps/robot_test_layout/keymap.c [deleted file]
keyboards/ergodox/keymaps/robot_test_layout/readme.md [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/readme.md [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/readme.md [deleted file]
keyboards/ergodox/keymaps/sethbc/Makefile [deleted file]
keyboards/ergodox/keymaps/sethbc/keymap.c [deleted file]
keyboards/ergodox/keymaps/sethbc/readme.md [deleted file]
keyboards/ergodox/keymaps/siroken3/default.png.md [deleted file]
keyboards/ergodox/keymaps/siroken3/default_highres.png.md [deleted file]
keyboards/ergodox/keymaps/siroken3/keymap.c [deleted file]
keyboards/ergodox/keymaps/siroken3/readme.md [deleted file]
keyboards/ergodox/keymaps/sneako/keymap.c [deleted file]
keyboards/ergodox/keymaps/sneako/readme.md [deleted file]
keyboards/ergodox/keymaps/software_neo2/keymap.c [deleted file]
keyboards/ergodox/keymaps/supercoder/config.h [deleted file]
keyboards/ergodox/keymaps/supercoder/keymap.c [deleted file]
keyboards/ergodox/keymaps/supercoder/makefile.mk [deleted file]
keyboards/ergodox/keymaps/supercoder/readme.md [deleted file]
keyboards/ergodox/keymaps/swedish-lindhe/keymap.c [deleted file]
keyboards/ergodox/keymaps/swedish-lindhe/readme.md [deleted file]
keyboards/ergodox/keymaps/swedish/keymap.c [deleted file]
keyboards/ergodox/keymaps/swedish/readme.md [deleted file]
keyboards/ergodox/keymaps/swissgerman/keyboard-layout.json [deleted file]
keyboards/ergodox/keymaps/swissgerman/keyboard-layout_1_2.json [deleted file]
keyboards/ergodox/keymaps/swissgerman/keymap.c [deleted file]
keyboards/ergodox/keymaps/swissgerman/readme.md [deleted file]
keyboards/ergodox/keymaps/techtomas/keymap.c [deleted file]
keyboards/ergodox/keymaps/techtomas/readme.md [deleted file]
keyboards/ergodox/keymaps/teckinesis/keymap.c [deleted file]
keyboards/ergodox/keymaps/teckinesis/ordinary-special.png.md [deleted file]
keyboards/ergodox/keymaps/teckinesis/ordinary-special.txt [deleted file]
keyboards/ergodox/keymaps/teckinesis/readme.md [deleted file]
keyboards/ergodox/keymaps/teckinesis/teckinesis-base.json [deleted file]
keyboards/ergodox/keymaps/teckinesis/teckinesis-media.json [deleted file]
keyboards/ergodox/keymaps/teckinesis/teckinesis-symbol.json [deleted file]
keyboards/ergodox/keymaps/tkuichooseyou/README.md [deleted file]
keyboards/ergodox/keymaps/tkuichooseyou/keymap.c [deleted file]
keyboards/ergodox/keymaps/tm2030/keymap.c [deleted file]
keyboards/ergodox/keymaps/tm2030/readme.md [deleted file]
keyboards/ergodox/keymaps/tonyabra_osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/tonyabra_osx/readme.md [deleted file]
keyboards/ergodox/keymaps/townk_osx/config.h [deleted file]
keyboards/ergodox/keymaps/townk_osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/townk_osx/makefile.mk [deleted file]
keyboards/ergodox/keymaps/townk_osx/readme.md [deleted file]
keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/keymap.c [deleted file]
keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/readme.md [deleted file]
keyboards/ergodox/keymaps/twey/keymap.c [deleted file]
keyboards/ergodox/keymaps/twey/readme.md [deleted file]
keyboards/ergodox/keymaps/videck/Makefile [deleted file]
keyboards/ergodox/keymaps/videck/config.h [deleted file]
keyboards/ergodox/keymaps/videck/keymap.c [deleted file]
keyboards/ergodox/keymaps/videck/readme.md [deleted file]
keyboards/ergodox/keymaps/videck/videck.json [deleted file]
keyboards/ergodox/keymaps/win10_writers-block/Makefile [deleted file]
keyboards/ergodox/keymaps/win10_writers-block/config.h [deleted file]
keyboards/ergodox/keymaps/win10_writers-block/keymap.c [deleted file]
keyboards/ergodox/keymaps/win10_writers-block/readme.md [deleted file]
keyboards/ergodox/keymaps/workman_osx_mdw/keymap.c [deleted file]
keyboards/ergodox/keymaps/xyverz/keymap.c [deleted file]
keyboards/ergodox/keymaps/xyverz/readme.md [deleted file]
keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf [deleted file]
keyboards/ergodox/keymaps/yoruian/Makefile [deleted file]
keyboards/ergodox/keymaps/yoruian/README [deleted file]
keyboards/ergodox/keymaps/yoruian/ergodox_yoruian [deleted file]
keyboards/ergodox/keymaps/yoruian/keymap.c [deleted file]
keyboards/ergodox/keymaps/yoruian/yoruian.h [deleted file]
keyboards/ergodox/keymaps/zweihander-osx/Makefile [deleted file]
keyboards/ergodox/keymaps/zweihander-osx/keymap.c [deleted file]
keyboards/ergodox/keymaps/zweihander-osx/readme.markdown [deleted file]
keyboards/ergodox/readme.md [deleted file]
keyboards/ergodox/rules.mk [deleted file]
keyboards/ergodox_ez/190hotfix.sh [new file with mode: 0644]
keyboards/ergodox_ez/Makefile [new file with mode: 0644]
keyboards/ergodox_ez/config.h [new file with mode: 0644]
keyboards/ergodox_ez/ergodox_ez.c [new file with mode: 0644]
keyboards/ergodox_ez/ergodox_ez.h [new file with mode: 0644]
keyboards/ergodox_ez/i2cmaster.h [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/blakedietz/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default/default.png.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default/default_highres.png.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default_osx/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/default_osx/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna-custom/Makefile [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna-custom/config.h [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna/Makefile [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna/config.h [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/drashna/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/profet_80/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/profet_80/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/steno/Makefile [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/steno/keymap.c [new file with mode: 0644]
keyboards/ergodox_ez/keymaps/steno/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/matrix.c [new file with mode: 0644]
keyboards/ergodox_ez/readme.md [new file with mode: 0644]
keyboards/ergodox_ez/rules.mk [new file with mode: 0644]
keyboards/ergodox_ez/twimaster.c [new file with mode: 0644]
keyboards/ergodox_ez/util/compile_keymap.py [new file with mode: 0644]
keyboards/ergodox_ez/util/readme.md [new file with mode: 0644]
keyboards/ergodox_infinity/MEMO.txt [new file with mode: 0644]
keyboards/ergodox_infinity/Makefile [new file with mode: 0644]
keyboards/ergodox_infinity/board_is31fl3731c.h [new file with mode: 0644]
keyboards/ergodox_infinity/board_st7565.h [new file with mode: 0644]
keyboards/ergodox_infinity/bootloader_defs.h [new file with mode: 0644]
keyboards/ergodox_infinity/chconf.h [new file with mode: 0644]
keyboards/ergodox_infinity/config.h [new file with mode: 0644]
keyboards/ergodox_infinity/ergodox_infinity.c [new file with mode: 0644]
keyboards/ergodox_infinity/ergodox_infinity.h [new file with mode: 0644]
keyboards/ergodox_infinity/gfxconf.h [new file with mode: 0644]
keyboards/ergodox_infinity/halconf.h [new file with mode: 0644]
keyboards/ergodox_infinity/led.c [new file with mode: 0644]
keyboards/ergodox_infinity/matrix.c [new file with mode: 0644]
keyboards/ergodox_infinity/mcuconf.h [new file with mode: 0644]
keyboards/ergodox_infinity/readme.md [new file with mode: 0644]
keyboards/ergodox_infinity/rules.mk [new file with mode: 0644]
keyboards/ergodox_infinity/simple_visualizer.h [new file with mode: 0644]
keyboards/ergodox_infinity/visualizer.c [new file with mode: 0644]
keyboards/gh60/gh60.h
keyboards/gh60/keymaps/unxmaal/Makefile [deleted file]
keyboards/gh60/keymaps/unxmaal/README.md [deleted file]
keyboards/gh60/keymaps/unxmaal/config.h [deleted file]
keyboards/gh60/keymaps/unxmaal/keymap.c [deleted file]
keyboards/gh60/keymaps/xyverz/keymap.c
keyboards/gh60/rules.mk
keyboards/hadron/ver0/rules.mk
keyboards/hadron/ver2/rules.mk
keyboards/handwired/CMD60/rules.mk
keyboards/handwired/MS_sculpt_mobile/rules.mk
keyboards/handwired/fivethirteen/rules.mk
keyboards/handwired/gamenum/rules.mk
keyboards/handwired/magicforce61/rules.mk
keyboards/handwired/magicforce68/rules.mk
keyboards/handwired/numpad20/rules.mk
keyboards/handwired/onekey/rules.mk
keyboards/handwired/ortho5x13/rules.mk
keyboards/handwired/reddot/rules.mk
keyboards/handwired/trackpoint/rules.mk
keyboards/hhkb/rules.mk
keyboards/kc60/kc60.h
keyboards/kc60/rules.mk
keyboards/kinesis/alvicstep/rules.mk
keyboards/lets_split/keymaps/ergodoxish/Makefile [deleted file]
keyboards/lets_split/keymaps/ergodoxish/config.h [deleted file]
keyboards/lets_split/keymaps/ergodoxish/keymap.c [deleted file]
keyboards/lets_split/lets_split.h
keyboards/lets_split/rev1/rules.mk
keyboards/lets_split/rev2/rules.mk
keyboards/lets_split/rules.mk
keyboards/lets_split/serial.c
keyboards/mitosis/rules.mk
keyboards/nyquist/config.h
keyboards/nyquist/nyquist.h
keyboards/nyquist/rev1/config.h
keyboards/nyquist/rev1/rev1.c
keyboards/nyquist/rev1/rev1.h
keyboards/nyquist/rev1/rules.mk
keyboards/nyquist/rules.mk
keyboards/nyquist/serial.c
keyboards/planck/config.h
keyboards/planck/planck.c
keyboards/planck/planck.h
keyboards/planck/rev3/config.h
keyboards/planck/rev3/rev3.h
keyboards/planck/rev3/rules.mk
keyboards/planck/rev4/config.h
keyboards/planck/rev4/rev4.h
keyboards/planck/rev4/rules.mk
keyboards/planck/rules.mk
keyboards/preonic/preonic.c
keyboards/preonic/preonic.h
keyboards/preonic/rules.mk
keyboards/roadkit/roadkit.h
keyboards/roadkit/rules.mk
keyboards/s60_x/default/rules.mk
keyboards/s60_x/rgb/rules.mk
keyboards/satan/rules.mk
keyboards/satan/satan.h
keyboards/xd75/keymaps/default/Makefile
keyboards/xd75/keymaps/fabian/config.h
keyboards/xd75/keymaps/fabian/keymap.c
keyboards/xd75/rules.mk
keyboards/xd75/xd75.h
layouts/community/60_ansi/layout.json [new file with mode: 0644]
layouts/community/60_ansi/readme.md [new file with mode: 0644]
layouts/community/60_iso/layout.json [new file with mode: 0644]
layouts/community/60_iso/readme.md [new file with mode: 0644]
layouts/community/60_iso/unxmaal/README.md [new file with mode: 0644]
layouts/community/60_iso/unxmaal/config.h [new file with mode: 0644]
layouts/community/60_iso/unxmaal/keymap.c [new file with mode: 0644]
layouts/community/60_iso/unxmaal/rules.mk [new file with mode: 0644]
layouts/community/ergodox/333fred/README.md [new file with mode: 0644]
layouts/community/ergodox/333fred/config.h [new file with mode: 0644]
layouts/community/ergodox/333fred/keymap.c [new file with mode: 0644]
layouts/community/ergodox/333fred/rules.mk [new file with mode: 0644]
layouts/community/ergodox/333fred/visualizer.c [new file with mode: 0644]
layouts/community/ergodox/ab/keyboard-layout.json [new file with mode: 0644]
layouts/community/ergodox/ab/keymap.c [new file with mode: 0644]
layouts/community/ergodox/ab/readme.md [new file with mode: 0644]
layouts/community/ergodox/ab/rules.mk [new file with mode: 0644]
layouts/community/ergodox/absenth/keymap.c [new file with mode: 0644]
layouts/community/ergodox/absenth/readme.md [new file with mode: 0644]
layouts/community/ergodox/adam/config.h [new file with mode: 0644]
layouts/community/ergodox/adam/keymap.c [new file with mode: 0644]
layouts/community/ergodox/adam/readme.md [new file with mode: 0644]
layouts/community/ergodox/adnw_k_o_y/keymap.c [new file with mode: 0644]
layouts/community/ergodox/adnw_k_o_y/readme.md [new file with mode: 0644]
layouts/community/ergodox/albert/config.h [new file with mode: 0644]
layouts/community/ergodox/albert/keymap.c [new file with mode: 0644]
layouts/community/ergodox/albert/readme.md [new file with mode: 0644]
layouts/community/ergodox/albert/rules.mk [new file with mode: 0644]
layouts/community/ergodox/alexjj/keymap.c [new file with mode: 0644]
layouts/community/ergodox/alexjj/readme.md [new file with mode: 0644]
layouts/community/ergodox/algernon/COPYING [new file with mode: 0644]
layouts/community/ergodox/algernon/NEWS.md [new file with mode: 0644]
layouts/community/ergodox/algernon/config.h [new file with mode: 0644]
layouts/community/ergodox/algernon/keymap.c [new file with mode: 0644]
layouts/community/ergodox/algernon/readme.md [new file with mode: 0644]
layouts/community/ergodox/algernon/rules.mk [new file with mode: 0644]
layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json [new file with mode: 0644]
layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json [new file with mode: 0644]
layouts/community/ergodox/algernon/tools/hid-commands [new file with mode: 0644]
layouts/community/ergodox/algernon/tools/log-to-heatmap.py [new file with mode: 0644]
layouts/community/ergodox/algernon/tools/text-to-log.py [new file with mode: 0644]
layouts/community/ergodox/alphadox/config.h [new file with mode: 0644]
layouts/community/ergodox/alphadox/keymap.c [new file with mode: 0644]
layouts/community/ergodox/alphadox/rules.mk [new file with mode: 0644]
layouts/community/ergodox/andrew_osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/belak/LICENSE [new file with mode: 0644]
layouts/community/ergodox/belak/README.md [new file with mode: 0644]
layouts/community/ergodox/belak/keymap.c [new file with mode: 0644]
layouts/community/ergodox/belak/rules.mk [new file with mode: 0644]
layouts/community/ergodox/belak/visualizer.c [new file with mode: 0644]
layouts/community/ergodox/bepo/keymap.c [new file with mode: 0644]
layouts/community/ergodox/bepo/readme.md [new file with mode: 0644]
layouts/community/ergodox/bepo/rules.mk [new file with mode: 0644]
layouts/community/ergodox/bepo_csa/keymap.c [new file with mode: 0644]
layouts/community/ergodox/bepo_csa/readme.md [new file with mode: 0644]
layouts/community/ergodox/bryan/keymap.c [new file with mode: 0644]
layouts/community/ergodox/coderkun_neo2/keymap.c [new file with mode: 0644]
layouts/community/ergodox/coderkun_neo2/readme.md [new file with mode: 0644]
layouts/community/ergodox/coderkun_neo2/rules.mk [new file with mode: 0644]
layouts/community/ergodox/colemak/keymap.c [new file with mode: 0644]
layouts/community/ergodox/colemak/readme.md [new file with mode: 0644]
layouts/community/ergodox/colemak_osx_pc_no/keymap.c [new file with mode: 0644]
layouts/community/ergodox/colemak_osx_pc_no/readme.md [new file with mode: 0644]
layouts/community/ergodox/colemak_programmer/keymap.c [new file with mode: 0644]
layouts/community/ergodox/colemak_programmer/readme.md [new file with mode: 0644]
layouts/community/ergodox/colemak_programmer/rules.mk [new file with mode: 0644]
layouts/community/ergodox/common_nighthawk/keymap.c [new file with mode: 0644]
layouts/community/ergodox/common_nighthawk/rules.mk [new file with mode: 0644]
layouts/community/ergodox/csharp_dev/keymap.c [new file with mode: 0644]
layouts/community/ergodox/csharp_dev/readme.md [new file with mode: 0644]
layouts/community/ergodox/dave/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dave/readme.md [new file with mode: 0644]
layouts/community/ergodox/deadcyclo/keymap.c [new file with mode: 0644]
layouts/community/ergodox/deadcyclo/readme.md [new file with mode: 0644]
layouts/community/ergodox/deadcyclo/rules.mk [new file with mode: 0644]
layouts/community/ergodox/dragon788/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak/dvorak.png.md [new file with mode: 0644]
layouts/community/ergodox/dvorak/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_emacs/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_emacs/readme.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_emacs_software/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_emacs_software/readme.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_intl_squisher/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_intl_squisher/readme.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_plover/README.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_plover/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_programmer/README.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_programmer/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_programmer/rules.mk [new file with mode: 0644]
layouts/community/ergodox/dvorak_programmer_swe/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_programmer_swe/readme.md [new file with mode: 0644]
layouts/community/ergodox/dvorak_spanish/keymap.c [new file with mode: 0644]
layouts/community/ergodox/dvorak_spanish/readme.md [new file with mode: 0644]
layouts/community/ergodox/emacs_osx_dk/keymap.c [new file with mode: 0644]
layouts/community/ergodox/emacs_osx_dk/readme.md [new file with mode: 0644]
layouts/community/ergodox/erez_experimental/config.h [new file with mode: 0644]
layouts/community/ergodox/erez_experimental/keymap.c [new file with mode: 0644]
layouts/community/ergodox/erez_experimental/readme.md [new file with mode: 0644]
layouts/community/ergodox/erez_experimental/rules.mk [new file with mode: 0644]
layouts/community/ergodox/familiar/README.md [new file with mode: 0644]
layouts/community/ergodox/familiar/keymap.c [new file with mode: 0644]
layouts/community/ergodox/familiar/rules.mk [new file with mode: 0644]
layouts/community/ergodox/french_hacker/keymap.c [new file with mode: 0644]
layouts/community/ergodox/french_hacker/readme.md [new file with mode: 0644]
layouts/community/ergodox/galson/keymap.c [new file with mode: 0644]
layouts/community/ergodox/galson/readme.md [new file with mode: 0644]
layouts/community/ergodox/galson/rules.mk [new file with mode: 0644]
layouts/community/ergodox/german-kinergo/keymap.c [new file with mode: 0644]
layouts/community/ergodox/german-kinergo/readme.md [new file with mode: 0644]
layouts/community/ergodox/german-lukas/README.md [new file with mode: 0644]
layouts/community/ergodox/german-lukas/keymap.c [new file with mode: 0644]
layouts/community/ergodox/german-manuneo/compile_keymap.py [new file with mode: 0644]
layouts/community/ergodox/german-manuneo/keymap.c [new file with mode: 0644]
layouts/community/ergodox/german-manuneo/keymap.md [new file with mode: 0644]
layouts/community/ergodox/german/keymap.c [new file with mode: 0644]
layouts/community/ergodox/guni/keymap.c [new file with mode: 0644]
layouts/community/ergodox/guni/readme.txt [new file with mode: 0644]
layouts/community/ergodox/ishigoya-jp/keymap.c [new file with mode: 0644]
layouts/community/ergodox/ishigoya-jp/readme.md [new file with mode: 0644]
layouts/community/ergodox/italian/keymap.c [new file with mode: 0644]
layouts/community/ergodox/italian/readme.md [new file with mode: 0644]
layouts/community/ergodox/j3rn/keymap.c [new file with mode: 0644]
layouts/community/ergodox/j3rn/readme.md [new file with mode: 0644]
layouts/community/ergodox/jack/config.h [new file with mode: 0644]
layouts/community/ergodox/jack/keymap.c [new file with mode: 0644]
layouts/community/ergodox/jacobono/keymap.c [new file with mode: 0644]
layouts/community/ergodox/jacobono/readme.md [new file with mode: 0644]
layouts/community/ergodox/jafo/jafo-Notes [new file with mode: 0644]
layouts/community/ergodox/jafo/jafo-layout.pdf [new file with mode: 0644]
layouts/community/ergodox/jafo/keymap.c [new file with mode: 0644]
layouts/community/ergodox/jafo/readme.md [new file with mode: 0644]
layouts/community/ergodox/jgarr/keymap.c [new file with mode: 0644]
layouts/community/ergodox/josh/keymap.c [new file with mode: 0644]
layouts/community/ergodox/josh/readme.md [new file with mode: 0644]
layouts/community/ergodox/kastyle/keymap.c [new file with mode: 0644]
layouts/community/ergodox/kastyle/readme.md [new file with mode: 0644]
layouts/community/ergodox/kines-ish/keymap.c [new file with mode: 0644]
layouts/community/ergodox/kines-ish/readme.md [new file with mode: 0644]
layouts/community/ergodox/kristian/keymap.c [new file with mode: 0644]
layouts/community/ergodox/layout.json [new file with mode: 0644]
layouts/community/ergodox/maz/keymap.c [new file with mode: 0644]
layouts/community/ergodox/maz/readme.md [new file with mode: 0644]
layouts/community/ergodox/mclennon_osx/README.md [new file with mode: 0644]
layouts/community/ergodox/mclennon_osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/mpiechotka/keymap.c [new file with mode: 0644]
layouts/community/ergodox/mpiechotka/readme.md [new file with mode: 0644]
layouts/community/ergodox/msc/keymap.c [new file with mode: 0644]
layouts/community/ergodox/msc/readme.md [new file with mode: 0644]
layouts/community/ergodox/naps62/keymap.c [new file with mode: 0644]
layouts/community/ergodox/naps62/readme.md [new file with mode: 0644]
layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c [new file with mode: 0644]
layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.md [new file with mode: 0644]
layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c [new file with mode: 0644]
layouts/community/ergodox/norwegian_programmer_osx_pc/readme.md [new file with mode: 0644]
layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c [new file with mode: 0644]
layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/readme.md [new file with mode: 0644]
layouts/community/ergodox/ordinary/keymap.c [new file with mode: 0644]
layouts/community/ergodox/ordinary/ordinary-base.txt [new file with mode: 0644]
layouts/community/ergodox/ordinary/ordinary-media.txt [new file with mode: 0644]
layouts/community/ergodox/ordinary/ordinary-special.txt [new file with mode: 0644]
layouts/community/ergodox/ordinary/ordinary-symbol.txt [new file with mode: 0644]
layouts/community/ergodox/ordinary/readme.md [new file with mode: 0644]
layouts/community/ergodox/osx_de/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_de/osx_de_highres.png.md [new file with mode: 0644]
layouts/community/ergodox/osx_de/readme.md [new file with mode: 0644]
layouts/community/ergodox/osx_de_adnw_koy/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md [new file with mode: 0644]
layouts/community/ergodox/osx_de_experimental/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_de_experimental/osx_de_experimental_highres.png.md [new file with mode: 0644]
layouts/community/ergodox/osx_de_experimental/readme.md [new file with mode: 0644]
layouts/community/ergodox/osx_fr/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_kinesis_pnut/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c [new file with mode: 0644]
layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/readme.md [new file with mode: 0644]
layouts/community/ergodox/phoenix/keymap.c [new file with mode: 0644]
layouts/community/ergodox/phoenix/readme.md [new file with mode: 0644]
layouts/community/ergodox/plover/keymap.c [new file with mode: 0644]
layouts/community/ergodox/plums/keymap.c [new file with mode: 0644]
layouts/community/ergodox/plums/readme.md [new file with mode: 0644]
layouts/community/ergodox/pvinis/Changelog.md [new file with mode: 0644]
layouts/community/ergodox/pvinis/Readme.md [new file with mode: 0644]
layouts/community/ergodox/pvinis/keymap.c [new file with mode: 0644]
layouts/community/ergodox/pvinis/rules.mk [new file with mode: 0644]
layouts/community/ergodox/readme.md [new file with mode: 0644]
layouts/community/ergodox/replicaJunction/config.h [new file with mode: 0644]
layouts/community/ergodox/replicaJunction/keymap.c [new file with mode: 0644]
layouts/community/ergodox/replicaJunction/readme.md [new file with mode: 0644]
layouts/community/ergodox/reset_eeprom/keymap.c [new file with mode: 0644]
layouts/community/ergodox/robot_test_layout/keymap.c [new file with mode: 0644]
layouts/community/ergodox/robot_test_layout/readme.md [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-osx/readme.md [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/readme.md [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-plover-osx/readme.md [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/readme.md [new file with mode: 0644]
layouts/community/ergodox/sethbc/keymap.c [new file with mode: 0644]
layouts/community/ergodox/sethbc/readme.md [new file with mode: 0644]
layouts/community/ergodox/sethbc/rules.mk [new file with mode: 0644]
layouts/community/ergodox/siroken3/default.png.md [new file with mode: 0644]
layouts/community/ergodox/siroken3/default_highres.png.md [new file with mode: 0644]
layouts/community/ergodox/siroken3/keymap.c [new file with mode: 0644]
layouts/community/ergodox/siroken3/readme.md [new file with mode: 0644]
layouts/community/ergodox/sneako/keymap.c [new file with mode: 0644]
layouts/community/ergodox/sneako/readme.md [new file with mode: 0644]
layouts/community/ergodox/software_neo2/keymap.c [new file with mode: 0644]
layouts/community/ergodox/supercoder/config.h [new file with mode: 0644]
layouts/community/ergodox/supercoder/keymap.c [new file with mode: 0644]
layouts/community/ergodox/supercoder/makefile.mk [new file with mode: 0644]
layouts/community/ergodox/supercoder/readme.md [new file with mode: 0644]
layouts/community/ergodox/swedish-lindhe/keymap.c [new file with mode: 0644]
layouts/community/ergodox/swedish-lindhe/readme.md [new file with mode: 0644]
layouts/community/ergodox/swedish/keymap.c [new file with mode: 0644]
layouts/community/ergodox/swedish/readme.md [new file with mode: 0644]
layouts/community/ergodox/swissgerman/keyboard-layout.json [new file with mode: 0644]
layouts/community/ergodox/swissgerman/keyboard-layout_1_2.json [new file with mode: 0644]
layouts/community/ergodox/swissgerman/keymap.c [new file with mode: 0644]
layouts/community/ergodox/swissgerman/readme.md [new file with mode: 0644]
layouts/community/ergodox/techtomas/keymap.c [new file with mode: 0644]
layouts/community/ergodox/techtomas/readme.md [new file with mode: 0644]
layouts/community/ergodox/teckinesis/keymap.c [new file with mode: 0644]
layouts/community/ergodox/teckinesis/ordinary-special.png.md [new file with mode: 0644]
layouts/community/ergodox/teckinesis/ordinary-special.txt [new file with mode: 0644]
layouts/community/ergodox/teckinesis/readme.md [new file with mode: 0644]
layouts/community/ergodox/teckinesis/teckinesis-base.json [new file with mode: 0644]
layouts/community/ergodox/teckinesis/teckinesis-media.json [new file with mode: 0644]
layouts/community/ergodox/teckinesis/teckinesis-symbol.json [new file with mode: 0644]
layouts/community/ergodox/tkuichooseyou/README.md [new file with mode: 0644]
layouts/community/ergodox/tkuichooseyou/keymap.c [new file with mode: 0644]
layouts/community/ergodox/tm2030/keymap.c [new file with mode: 0644]
layouts/community/ergodox/tm2030/readme.md [new file with mode: 0644]
layouts/community/ergodox/tonyabra_osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/tonyabra_osx/readme.md [new file with mode: 0644]
layouts/community/ergodox/townk_osx/config.h [new file with mode: 0644]
layouts/community/ergodox/townk_osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/townk_osx/makefile.mk [new file with mode: 0644]
layouts/community/ergodox/townk_osx/readme.md [new file with mode: 0644]
layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c [new file with mode: 0644]
layouts/community/ergodox/twentylives_dvorak_with_hebrew/readme.md [new file with mode: 0644]
layouts/community/ergodox/twey/keymap.c [new file with mode: 0644]
layouts/community/ergodox/twey/readme.md [new file with mode: 0644]
layouts/community/ergodox/videck/config.h [new file with mode: 0644]
layouts/community/ergodox/videck/keymap.c [new file with mode: 0644]
layouts/community/ergodox/videck/readme.md [new file with mode: 0644]
layouts/community/ergodox/videck/rules.mk [new file with mode: 0644]
layouts/community/ergodox/videck/videck.json [new file with mode: 0644]
layouts/community/ergodox/win10_writers-block/config.h [new file with mode: 0644]
layouts/community/ergodox/win10_writers-block/keymap.c [new file with mode: 0644]
layouts/community/ergodox/win10_writers-block/readme.md [new file with mode: 0644]
layouts/community/ergodox/win10_writers-block/rules.mk [new file with mode: 0644]
layouts/community/ergodox/workman_osx_mdw/keymap.c [new file with mode: 0644]
layouts/community/ergodox/xyverz/keymap.c [new file with mode: 0644]
layouts/community/ergodox/xyverz/readme.md [new file with mode: 0644]
layouts/community/ergodox/yoruian/90-ergodox-yoruian.conf [new file with mode: 0644]
layouts/community/ergodox/yoruian/README [new file with mode: 0644]
layouts/community/ergodox/yoruian/ergodox_yoruian [new file with mode: 0644]
layouts/community/ergodox/yoruian/keymap.c [new file with mode: 0644]
layouts/community/ergodox/yoruian/rules.mk [new file with mode: 0644]
layouts/community/ergodox/yoruian/yoruian.h [new file with mode: 0644]
layouts/community/ergodox/zweihander-osx/keymap.c [new file with mode: 0644]
layouts/community/ergodox/zweihander-osx/readme.markdown [new file with mode: 0644]
layouts/community/ergodox/zweihander-osx/rules.mk [new file with mode: 0644]
layouts/community/ortho_4x12/ergodoxish/config.h [new file with mode: 0644]
layouts/community/ortho_4x12/ergodoxish/keymap.c [new file with mode: 0644]
layouts/community/ortho_4x12/layout.json [new file with mode: 0644]
layouts/community/ortho_4x12/readme.md [new file with mode: 0644]
layouts/community/ortho_4x4/layout.json [new file with mode: 0644]
layouts/community/ortho_4x4/readme.md [new file with mode: 0644]
layouts/community/ortho_5x12/layout.json [new file with mode: 0644]
layouts/community/ortho_5x12/readme.md [new file with mode: 0644]
layouts/community/ortho_5x15/layout.json [new file with mode: 0644]
layouts/community/ortho_5x15/readme.md [new file with mode: 0644]
layouts/default/60_ansi/default_60_ansi/keymap.c [new file with mode: 0644]
layouts/default/60_ansi/layout.json [new file with mode: 0644]
layouts/default/60_ansi/readme.md [new file with mode: 0644]
layouts/default/60_iso/default_60_iso/keymap.c [new file with mode: 0644]
layouts/default/60_iso/layout.json [new file with mode: 0644]
layouts/default/60_iso/readme.md [new file with mode: 0644]
layouts/default/ergodox/default_ergodox/keymap.c [new file with mode: 0644]
layouts/default/ergodox/layout.json [new file with mode: 0644]
layouts/default/ergodox/readme.md [new file with mode: 0644]
layouts/default/ortho_4x12/default_ortho_4x12/keymap.c [new file with mode: 0644]
layouts/default/ortho_4x12/layout.json [new file with mode: 0644]
layouts/default/ortho_4x12/readme.md [new file with mode: 0644]
layouts/default/ortho_4x4/default_ortho_4x4/keymap.c [new file with mode: 0644]
layouts/default/ortho_4x4/layout.json [new file with mode: 0644]
layouts/default/ortho_4x4/readme.md [new file with mode: 0644]
layouts/default/ortho_5x12/default_ortho_5x12/keymap.c [new file with mode: 0644]
layouts/default/ortho_5x12/layout.json [new file with mode: 0644]
layouts/default/ortho_5x12/readme.md [new file with mode: 0644]
layouts/default/ortho_5x15/default_ortho_5x15/keymap.c [new file with mode: 0644]
layouts/default/ortho_5x15/layout.json [new file with mode: 0644]
layouts/default/ortho_5x15/readme.md [new file with mode: 0644]
quantum/visualizer/visualizer.mk

index ebad723bee888f16e0e4b5083fa28aa6bde713f3..59c2fa7b4f77f0dd60190ce69da3891284fbb47c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -314,11 +314,21 @@ define PARSE_SUBPROJECT
     ifneq ($$(CURRENT_SP),allsp)
         # get a list of all keymaps
         KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
+        LAYOUTS :=
+        $$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
+        KEYBOARD_LAYOUTS := $$(LAYOUTS)
         ifneq ($$(CURRENT_SP),)
             # if the subproject is defined, then also look for keymaps inside the subproject folder
             SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
             KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
+               # $$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/rules.mk)
+               # KEYBOARD_LAYOUTS := $$(sort $$(KEYBOARD_LAYOUTS) $$(LAYOUTS))
         endif
+
+        LAYOUT_KEYMAPS :=
+        $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
+        
+        KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
         # if the rule after removing the start of it is empty (we haven't specified a kemap or target)
         # compile all the keymaps
         ifeq ($$(RULE),)
index 3ec389ac9f5afc296070579642d6952421b03a8b..e8e21f2ba1685800ef73cb1dcc7739bd4150fe70 100644 (file)
@@ -39,6 +39,7 @@ ifneq ("$(wildcard $(KEYBOARD_C))","")
 else
     $(error "$(KEYBOARD_C)" does not exist)
 endif
+OPT_DEFS += -DKEYBOARD_$(KEYBOARD)
 
 ifneq ($(SUBPROJECT),)
     SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
@@ -97,11 +98,13 @@ else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
     -include $(MAIN_KEYMAP_PATH)/Makefile
     KEYMAP_C := $(MAIN_KEYMAP_C)
     KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
+else ifneq ($(LAYOUTS),)
+    include build_layout.mk
 else
-    $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
+    $(error Could not find keymap)
+    # this state should never be reached
 endif
 
-
 # Object files directory
 #     To put object files in current directory, use a dot (.), do NOT make
 #     this an empty or blank macro!
@@ -157,7 +160,10 @@ endif
 
 OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
 $(KEYMAP_OUTPUT)_SRC := $(SRC)
-$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
+$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
+-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH)/config.h\" \
+-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
+-DQMK_SUBPROJECT=\"$(SUBPROJECT)\" -DQMK_SUBPROJECT_H=\"$(SUBPROJECT).h\" -DQMK_SUBPROJECT_CONFIG_H=\"$(SUBPROJECT_PATH)/config.h\"
 $(KEYMAP_OUTPUT)_INC :=  $(VPATH) $(EXTRAINCDIRS)
 $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
 $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
diff --git a/build_layout.mk b/build_layout.mk
new file mode 100644 (file)
index 0000000..beb1cb6
--- /dev/null
@@ -0,0 +1,18 @@
+LAYOUTS_PATH := layouts
+LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
+
+define SEARCH_LAYOUTS_REPO
+    LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
+    LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
+    ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
+        -include $$(LAYOUT_KEYMAP_PATH)/rules.mk
+        KEYMAP_C := $$(LAYOUT_KEYMAP_C)
+        KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
+    endif
+endef
+
+define SEARCH_LAYOUTS
+    $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
+endef
+
+$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
\ No newline at end of file
index e32548f5b1149852ad6eb482d2082659612af05e..77d208fc3cd0ae611c12472e22aef704f53c0730 100644 (file)
@@ -12,6 +12,7 @@
   * [Keymap](faq_keymap.md)
 
 * [Features](features.md)
+  * [Layouts](feature_layouts.md)
   * [Common Shortcuts](feature_common_shortcuts.md)
   * [Backlight](feature_backlight.md)
   * [Bootmagic](feature_bootmagic.md)
diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md
new file mode 100644 (file)
index 0000000..4d75270
--- /dev/null
@@ -0,0 +1,77 @@
+# Layouts: Using a keymap with multiple keyboards
+
+The `layouts/` folder contains different physical key layouts that can apply to different keyboards. 
+
+```
+layouts/
++ default/
+| + 60_ansi/
+| | + readme.md
+| | + layout.json
+| | + a_good_keymap/
+| | | + keymap.c
+| | | + readme.md
+| | | + config.h
+| | | + rules.mk
+| | + <keymap folder>/
+| | + ...
+| + <layout folder>/
++ community/
+| + <layout folder>/
+| + ...
+```
+
+The `layouts/default/` and `layouts/community/` are two examples of layout "repositories" - currently `default` will contain all of the information concerning the layout, and one default keymap named `default_<layout>`, for users to use as a reference. `community` contains all of the community keymaps, with the eventual goal of being split-off into a separate repo for users to clone into `layouts/`. QMK searches through all folders in `layouts/`, so it's possible to have multiple reposistories here. 
+
+Each layout folder is named (`[a-z0-9_]`) after the physical aspects of the layout, in the most generic way possible, and contains a `readme.md` with the layout to be defined by the keyboard:
+
+```md
+# 60_ansi
+
+   LAYOUT_60_ansi
+```
+
+New names should try to stick to the standards set by existing layouts, and can be discussed in the PR/Issue.
+
+## Supporting a layout
+
+For a keyboard to support a layout, the variable (`[a-z0-9_]`) must be defined in it's `<keyboard>.h`, and match the number of arguments/keys (and preferrably the physical layout):
+
+    #define LAYOUT_60_ansi KEYMAP_ANSI
+
+The folder name must be added to the keyboard's `rules.mk`:
+
+    LAYOUTS = 60_ansi
+
+`LAYOUTS` can be appended in the subproject's `rules.mk`:
+
+    LAYOUTS += 60_iso
+
+but the `LAYOUT_<layout>` variable must be defined in `<subproject>.h` as well.
+
+## Tips for making layouts keyboard-agnostic
+
+Instead of using `#include "planck.h"`, you can use this line to include whatever `<keyboard>.h` (`<subproject>.h` should not be included here) file that is being compiled:
+
+    #include QMK_KEYBOARD_H
+
+In your config.h, you can also use this variable to include the keyboard's `config.h`:
+
+    #include QMK_KEYBOARD_CONFIG_H
+
+If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement:
+
+* `KEYBOARD_<keyboard>`
+* `SUBPROJECT_<subproject>`
+
+For example:
+
+```c
+#ifdef KEYBOARD_planck
+    #ifdef SUBPROJECT_rev4
+        planck_rev4_function();
+    #endif
+#endif
+```
+
+Note that the names are lowercase and match the folder/file names for the keyboard/subproject exactly.
\ No newline at end of file
index f265c3358e68b0b89fc6e0eabe64c886352757ce..83af132dfc6282ff512ef43da4f3f3c1fae4a00a 100644 (file)
@@ -20,12 +20,30 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "quantum.h"
 
 /* Alps64 keymap definition macro */
+
 #define KEYMAP( \
     K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
     K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
     K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
     K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
     K30, K40, K50,           K60,                     K70, K00, K10, K20  \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+    { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+    { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+    { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+    { K70, K71, K72, K73, K74, K75, K76, K77 } \
+}
+
+#define KC_KEYMAP( \
+    K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
+    K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
+    K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
+    K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
+    K30, K40, K50,           K60,                     K70, K00, K10, K20  \
 ) { \
     { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
     { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
index 2c45dc7f342dd5698264eaf6901370af1ea8ca94..49ef9b2bf3ab8ca3cd0de8d6ad254932695e020f 100644 (file)
@@ -2,7 +2,7 @@
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     /* 0: qwerty */
-    KEYMAP( \
+    KC_KEYMAP( \
         GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, NUHS, BSPC, \
         TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
         CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,  \
index c508e479ca6b41ff64b13d3668edb219e3983835..b6aa6b7d3c04b586863a3f6c88a4ea2ed758c9b6 100644 (file)
@@ -63,6 +63,8 @@
     {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d}  \
 }
 
+#define LAYOUT_60_ansi KEYMAP_ANSI
+
 /* AMJ60 HHKB matrix layout
    * ,------------------------------------------------------------.
    * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 |
     {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX}, \
     {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d}  \
 }
+
 /* ISO w/ split right shift key matrix layout
    * ,-----------------------------------------------------------.
    * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d    |
index a1b4f8a618daffb0f09371640cba0688c9c4455e..0df13d3062f641c3d4bcc2dd308598b2143d4547 100644 (file)
@@ -64,3 +64,5 @@ MIDI_ENABLE      = no  # MIDI controls
 AUDIO_ENABLE     = no
 UNICODE_ENABLE   = no  # Unicode
 BLUETOOTH_ENABLE = no  # Enable Bluetooth with the Adafruit EZ-Key HID
+
+LAYOUTS = 60_ansi
\ No newline at end of file
index 88e11fadff12ea2dd33d3d8fc78f021cc10914b9..b7ceb68d07ba11fffa094c4bd522442e2525b082 100644 (file)
     { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B,   K4C,   K4D,   K4E }  \
 }
 
+#define KEYMAP_GRID( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E,\
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
+    K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+    { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }  \
+}
+
+#define LAYOUT_ortho_5x15 KEYMAP_GRID
+
 #endif
\ No newline at end of file
index 0bedc6f5c853c0b168012841e475bc76d3b3e4f2..3bd04a00a73e958caab52444531e1794b1548804 100644 (file)
@@ -66,4 +66,6 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
\ No newline at end of file
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+LAYOUTS = ortho_5x15
\ No newline at end of file
index 12d3ca6c56de6a8891ba147995c8e0e0640cc096..2362395569c7ffc21166a1aba2203d749da80189 100644 (file)
@@ -78,5 +78,5 @@ UNICODE_ENABLE = YES          # Unicode
 
 USB = /dev/cu.usbmodem1411
 
-upload: build
-       $(ATREUS_UPLOAD_COMMAND)
+upload: build
+#      $(ATREUS_UPLOAD_COMMAND)
index eae38c4b2bcdbccab742299d693940a5bc4e0dc0..91c17c0244c985d80984f98105502d45fcc67276 100644 (file)
@@ -35,7 +35,4 @@ ARMV = 6
 
 # Build Options
 #   comment out to disable the options.
-#
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
+#
\ No newline at end of file
index 307ca5b198ef28222c00f8f3b4b1cc357f9776fa..c75738338ab45320a0a335bb4fb5ceb1e7118903 100644 (file)
@@ -44,9 +44,4 @@ ARMV = 7
 # http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
 # This also requires a patch to chibios:
 #   <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
-#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
-
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
+#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
\ No newline at end of file
index 43ea9d82d93830d3786e57b76160a2fea1401135..4deee1f5792cd2fb426c0cb6e635970367d37c42 100644 (file)
@@ -42,8 +42,4 @@ MCU  = cortex-m0plus
 
 # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
 # I.e. 6 for Teensy LC; 7 for Teensy 3.x
-ARMV = 6
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+ARMV = 6
\ No newline at end of file
index 80a942d06f7cc35dc8abf7a43d371a2381a84204..f845616741c20fcb5871515df81dc74fd351d20f 100644 (file)
@@ -1,5 +1 @@
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
+BACKLIGHT_ENABLE = no
\ No newline at end of file
index cea967b7955c7958daea51ae2380494d782922fc..54a2685bf634e9ff1dfafd06deb12d0e2568dc9b 100644 (file)
@@ -1,5 +1 @@
-BACKLIGHT_ENABLE = yes
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
+BACKLIGHT_ENABLE = yes
\ No newline at end of file
index a0825b4ef64065fedfe5042ccc7f24f4f0ef71bc..f845616741c20fcb5871515df81dc74fd351d20f 100644 (file)
@@ -1,5 +1 @@
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+BACKLIGHT_ENABLE = no
\ No newline at end of file
index a0825b4ef64065fedfe5042ccc7f24f4f0ef71bc..f845616741c20fcb5871515df81dc74fd351d20f 100644 (file)
@@ -1,5 +1 @@
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+BACKLIGHT_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/ergodone/Makefile b/keyboards/ergodone/Makefile
new file mode 100644 (file)
index 0000000..bd09e58
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+       include ../../../Makefile
+endif
diff --git a/keyboards/ergodone/config.h b/keyboards/ergodone/config.h
new file mode 100644 (file)
index 0000000..d3e0f80
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef ERGODOX_ERGODONE_CONFIG_H
+#define ERGODOX_ERGODONE_CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x1307
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    ErgoDone
+#define PRODUCT         ErgoDone
+#define DESCRIPTION     QMK keyboard firmware for ErgoDone
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_DELAY          0
+#define MOUSEKEY_TIME_TO_MAX    60
+#define MOUSEKEY_MAX_SPEED      7
+#define MOUSEKEY_WHEEL_DELAY 0
+
+#define TAPPING_TOGGLE  1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+#define TAPPING_TERM    200
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+#define LED_BRIGHTNESS_LO       15
+#define LED_BRIGHTNESS_HI       255
+
+/* fix space cadet rollover issue */
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE    5
+
+#define PREVENT_STUCK_MODIFIERS
+
+#define USB_MAX_POWER_CONSUMPTION 500
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+//#define DEBUG_MATRIX_SCAN_RATE
+
+#endif
diff --git a/keyboards/ergodone/ergodone.c b/keyboards/ergodone/ergodone.c
new file mode 100644 (file)
index 0000000..6b8d8a0
--- /dev/null
@@ -0,0 +1,5 @@
+#include "ergodone.h"
+
+void matrix_init_kb(void) {
+  matrix_init_user();
+}
diff --git a/keyboards/ergodone/ergodone.h b/keyboards/ergodone/ergodone.h
new file mode 100644 (file)
index 0000000..9f6c8f8
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef ERGODOX_ERGODONE_H
+#define ERGODOX_ERGODONE_H
+
+#include "quantum.h"
+#include <stdint.h>
+#include <stdbool.h>
+
+#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
+#define CPU_16MHz       0x00
+
+void init_ergodox(void);
+
+inline void ergodox_right_led_1_off(void)               {}
+inline void ergodox_right_led_1_on(void)                {}
+inline void ergodox_right_led_2_off(void)               {}
+inline void ergodox_right_led_2_on(void)                {}
+inline void ergodox_right_led_3_off(void)               {}
+inline void ergodox_right_led_3_on(void)                {}
+inline void ergodox_right_led_on(uint8_t l)             {}
+inline void ergodox_right_led_off(uint8_t l)            {}
+inline void ergodox_board_led_off(void)                 {}
+inline void ergodox_board_led_on(void)                  {}
+inline void ergodox_led_all_on(void)                    {}
+inline void ergodox_led_all_off(void)                   {}
+inline void ergodox_right_led_1_set(uint8_t n)          {}
+inline void ergodox_right_led_2_set(uint8_t n)          {}
+inline void ergodox_right_led_3_set(uint8_t n)          {}
+inline void ergodox_right_led_set(uint8_t l, uint8_t n) {}
+inline void ergodox_led_all_set(uint8_t n)              {}
+
+#define KEYMAP(                                                 \
+                                                                \
+    /* left hand, spatial positions */                          \
+    k00,k01,k02,k03,k04,k05,k06,                                \
+    k10,k11,k12,k13,k14,k15,k16,                                \
+    k20,k21,k22,k23,k24,k25,                                    \
+    k30,k31,k32,k33,k34,k35,k36,                                \
+    k40,k41,k42,k43,k44,                                        \
+                            k55,k56,                            \
+                                k54,                            \
+                        k53,k52,k51,                            \
+                                                                \
+    /* right hand, spatial positions */                         \
+        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
+        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
+            k28,k29,k2A,k2B,k2C,k2D,                            \
+        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
+                k49,k4A,k4B,k4C,k4D,                            \
+    k57,k58,                                                    \
+    k59,                                                        \
+    k5C,k5B,k5A )                                               \
+                                                                \
+   /* matrix positions */                                       \
+   {                                                            \
+    { k00,   k01, k02, k03, k04, k05,   k06,      k07,   k08,   k09, k0A, k0B, k0C, k0D    }, \
+    { k10,   k11, k12, k13, k14, k15,   k16,      k17,   k18,   k19, k1A, k1B, k1C, k1D    }, \
+    { k20,   k21, k22, k23, k24, k25,   KC_NO,    KC_NO, k28,   k29, k2A, k2B, k2C, k2D    }, \
+    { k30,   k31, k32, k33, k34, k35,   k36,      k37,   k38,   k39, k3A, k3B, k3C, k3D    }, \
+    { k40,   k41, k42, k43, k44, KC_NO, KC_NO,    KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D    }, \
+    { KC_NO, k51, k52, k53, k54, k55,   k56,      k57,   k58,   k59, k5A, k5B, k5C, KC_NO  } \
+   }
+
+#define LAYOUT_ergodox KEYMAP
+
+#endif
diff --git a/keyboards/ergodone/expander.c b/keyboards/ergodone/expander.c
new file mode 100644 (file)
index 0000000..0c8a228
--- /dev/null
@@ -0,0 +1,120 @@
+#include <stdbool.h>
+#include "action.h"
+#include "i2cmaster.h"
+#include "expander.h"
+#include "debug.h"
+
+static uint8_t expander_status = 0;
+static uint8_t expander_input = 0;
+
+void expander_config(void);
+uint8_t expander_write(uint8_t reg, uint8_t data);
+uint8_t expander_read(uint8_t reg, uint8_t *data);
+
+void expander_init(void)
+{
+  i2c_init();
+  expander_scan();
+}
+
+void expander_scan(void)
+{
+  dprintf("expander status: %d ... ", expander_status);
+  uint8_t ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
+  if (ret == 0) {
+    i2c_stop();
+    if (expander_status == 0) {
+      dprintf("attached\n");
+      expander_status = 1;
+      expander_config();
+      clear_keyboard();
+    }
+  }
+  else {
+    if (expander_status == 1) {
+      dprintf("detached\n");
+      expander_status = 0;
+      clear_keyboard();
+    }
+  }
+  dprintf("%d\n", expander_status);
+}
+
+void expander_read_cols(void)
+{
+  expander_read(EXPANDER_REG_GPIOA, &expander_input);
+}
+
+uint8_t expander_get_col(uint8_t col)
+{
+  if (col > 4) {
+    col++;
+  }
+  return expander_input & (1<<col) ? 1 : 0;
+}
+
+matrix_row_t expander_read_row(void)
+{
+  expander_read_cols();
+
+  /* make cols */
+  matrix_row_t cols = 0;
+  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+    if (expander_get_col(col)) {
+      cols |= (1UL << (MATRIX_COLS - 1 - col));
+    }
+  }
+
+  return cols;
+}
+
+void expander_unselect_rows(void)
+{
+  expander_write(EXPANDER_REG_IODIRB, 0xFF);
+}
+
+void expander_select_row(uint8_t row)
+{
+  expander_write(EXPANDER_REG_IODIRB, ~(1<<(row+1)));
+}
+
+void expander_config(void)
+{
+  expander_write(EXPANDER_REG_IPOLA, 0xFF);
+  expander_write(EXPANDER_REG_GPPUA, 0xFF);
+  expander_write(EXPANDER_REG_IODIRB, 0xFF);
+}
+
+uint8_t expander_write(uint8_t reg, uint8_t data)
+{
+  if (expander_status == 0) {
+    return 0;
+  }
+  uint8_t ret;
+  ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
+  if (ret) goto stop;
+  ret = i2c_write(reg);
+  if (ret) goto stop;
+  ret = i2c_write(data);
+ stop:
+  i2c_stop();
+  return ret;
+}
+
+uint8_t expander_read(uint8_t reg, uint8_t *data)
+{
+  if (expander_status == 0) {
+    return 0;
+  }
+  uint8_t ret;
+  ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
+  if (ret) goto stop;
+  ret = i2c_write(reg);
+  if (ret) goto stop;
+  ret = i2c_rep_start(EXPANDER_ADDR | I2C_READ);
+  if (ret) goto stop;
+  *data = i2c_readNak();
+ stop:
+  i2c_stop();
+  return ret;
+}
diff --git a/keyboards/ergodone/expander.h b/keyboards/ergodone/expander.h
new file mode 100644 (file)
index 0000000..8676fed
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef EXPANDER_H
+#define EXPANDER_H
+
+#include <stdint.h>
+#include "matrix.h"
+
+#define MCP23017
+#define MCP23017_A0 0
+#define MCP23017_A1 0
+#define MCP23017_A2 0
+
+#ifdef MCP23017
+#define EXPANDER_ADDR ((0x20|(MCP23017_A0<<0)|(MCP23017_A1<<1)|(MCP23017_A2<<2)) << 1)
+enum EXPANDER_REG_BANK0 {
+  EXPANDER_REG_IODIRA = 0,
+  EXPANDER_REG_IODIRB,
+  EXPANDER_REG_IPOLA,
+  EXPANDER_REG_IPOLB,
+  EXPANDER_REG_GPINTENA,
+  EXPANDER_REG_GPINTENB,
+  EXPANDER_REG_DEFVALA,
+  EXPANDER_REG_DEFVALB,
+  EXPANDER_REG_INTCONA,
+  EXPANDER_REG_INTCONB,
+  EXPANDER_REG_IOCONA,
+  EXPANDER_REG_IOCONB,
+  EXPANDER_REG_GPPUA,
+  EXPANDER_REG_GPPUB,
+  EXPANDER_REG_INTFA,
+  EXPANDER_REG_INTFB,
+  EXPANDER_REG_INTCAPA,
+  EXPANDER_REG_INTCAPB,
+  EXPANDER_REG_GPIOA,
+  EXPANDER_REG_GPIOB,
+  EXPANDER_REG_OLATA,
+  EXPANDER_REG_OLATB
+};
+#endif
+
+void expander_init(void);
+void expander_scan(void);
+void expander_read_cols(void);
+uint8_t expander_get_col(uint8_t col);
+matrix_row_t expander_read_row(void);
+void expander_unselect_rows(void);
+void expander_select_row(uint8_t row);
+
+#endif
diff --git a/keyboards/ergodone/i2cmaster.h b/keyboards/ergodone/i2cmaster.h
new file mode 100644 (file)
index 0000000..3917b9e
--- /dev/null
@@ -0,0 +1,178 @@
+#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/ergodone/keymaps/default/keymap.c b/keyboards/ergodone/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..cbc180d
--- /dev/null
@@ -0,0 +1,223 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,  KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,  KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,  KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,  KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP, KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | EPRM  |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Animat|      |       |Toggle|Solid |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
+ *                                 |ness- |ness+ |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       RGB_MOD,KC_TRNS,
+                                               KC_TRNS,
+                               RGB_VAD,RGB_VAI,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       RGB_TOG, RGB_SLD,
+       KC_TRNS,
+       KC_TRNS, RGB_HUD, RGB_HUI
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodone/keymaps/default/readme.md b/keyboards/ergodone/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..1150a4f
--- /dev/null
@@ -0,0 +1,15 @@
+# ErgoDox EZ Default Configuration
+
+## Changelog
+
+* Dec 2016:
+  * Added LED keys
+  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
+* Sep 22, 2016:
+  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
+* Feb 2, 2016 (V1.1): 
+  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
+
+This is what we ship with out of the factory. :) The image says it all:
+
+![Default](https://i.imgur.com/Be53jH7.png)
\ No newline at end of file
diff --git a/keyboards/ergodone/matrix.c b/keyboards/ergodone/matrix.c
new file mode 100644 (file)
index 0000000..2eb8f24
--- /dev/null
@@ -0,0 +1,295 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include "wait.h"
+#include "action_layer.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "ergodone.h"
+#include "expander.h"
+#ifdef DEBUG_MATRIX_SCAN_RATE
+#include  "timer.h"
+#endif
+
+/*
+ * This constant define not debouncing time in msecs, but amount of matrix
+ * scan loops which should be made to get stable debounced results.
+ *
+ * On Ergodox matrix scan rate is relatively low, because of slow I2C.
+ * Now it's only 317 scans/second, or about 3.15 msec/scan.
+ * According to Cherry specs, debouncing time is 5 msec.
+ *
+ * And so, there is no sense to have DEBOUNCE higher than 2.
+ */
+
+#ifndef DEBOUNCE
+#   define DEBOUNCE    5
+#endif
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t 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);
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+uint32_t matrix_timer;
+uint32_t matrix_scan_count;
+#endif
+
+
+__attribute__ ((weak))
+void matrix_init_user(void) {}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {}
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+  matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+  matrix_scan_user();
+}
+
+inline
+uint8_t matrix_rows(void)
+{
+  return MATRIX_ROWS;
+}
+
+inline
+uint8_t matrix_cols(void)
+{
+  return MATRIX_COLS;
+}
+
+void matrix_init(void)
+{
+  // disable JTAG
+  MCUCR = (1<<JTD);
+  MCUCR = (1<<JTD);
+
+  unselect_rows();
+  init_cols();
+
+  // initialize matrix state: all keys off
+  for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+    matrix[i] = 0;
+    for (uint8_t j=0; j < MATRIX_COLS; ++j) {
+      debounce_matrix[i * MATRIX_COLS + j] = 0;
+    }
+  }
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+  matrix_timer = timer_read32();
+  matrix_scan_count = 0;
+#endif
+
+  matrix_init_quantum();
+
+}
+
+void matrix_power_up(void) {
+  unselect_rows();
+  init_cols();
+
+  // initialize matrix state: all keys off
+  for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+    matrix[i] = 0;
+  }
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+  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(uint8_t row) {
+  matrix_row_t result = 0;
+  for (uint8_t j=0; j < MATRIX_COLS; ++j) {
+    if (debounce_matrix[row * MATRIX_COLS + j]) {
+      --debounce_matrix[row * MATRIX_COLS + j];
+    } else {
+      result |= (1 << j);
+    }
+  }
+  return result;
+}
+
+// Report changed keys in the given row.  Resets the debounce countdowns
+// corresponding to each set bit in 'change' to DEBOUNCE.
+void debounce_report(matrix_row_t change, uint8_t row) {
+  for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
+    if (change & (1 << i)) {
+      debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
+    }
+  }
+}
+
+uint8_t matrix_scan(void)
+{
+  expander_scan();
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+  matrix_scan_count++;
+
+  uint32_t timer_now = timer_read32();
+  if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
+    print("matrix scan frequency: ");
+    pdec(matrix_scan_count);
+    print("\n");
+    matrix_print();
+
+    matrix_timer = timer_now;
+    matrix_scan_count = 0;
+  }
+#endif
+
+  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+    select_row(i);
+    wait_us(30);  // without this wait read unstable value.
+    matrix_row_t mask = debounce_mask(i);
+    matrix_row_t cols = (read_cols(i) & mask) | (matrix[i] & ~mask);
+    debounce_report(cols ^ matrix[i], i);
+    matrix[i] = cols;
+
+    unselect_rows();
+  }
+
+  matrix_scan_quantum();
+
+  return 1;
+}
+
+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;
+}
+
+/* Column pin configuration
+ *
+ * Pro Micro: 6    5    4    3    2    1    0
+ *            PD3  PD2  PD4  PC6  PD7  PE6  PB4
+ *
+ * Expander:  13   12   11   10   9    8    7
+ */
+static void  init_cols(void)
+{
+  // Pro Micro
+  DDRE  &= ~(1<<PE6);
+  PORTE |=  (1<<PE6);
+  DDRD  &= ~(1<<PD2 | 1<<PD3 | 1<<PD4 | 1<<PD7);
+  PORTD |=  (1<<PD2 | 1<<PD3 | 1<<PD4 | 1<<PD7);
+  DDRC  &= ~(1<<PC6);
+  PORTC |=  (1<<PC6);
+  DDRB  &= ~(1<<PB4);
+  PORTB |=  (1<<PB4);
+
+  // MCP23017
+  expander_init();
+}
+
+static matrix_row_t read_cols(uint8_t row)
+{
+  return expander_read_row() |
+    (PIND&(1<<PD3) ? 0 : (1<<6)) |
+    (PIND&(1<<PD2) ? 0 : (1<<5)) |
+    (PIND&(1<<PD4) ? 0 : (1<<4)) |
+    (PINC&(1<<PC6) ? 0 : (1<<3)) |
+    (PIND&(1<<PD7) ? 0 : (1<<2)) |
+    (PINE&(1<<PE6) ? 0 : (1<<1)) |
+    (PINB&(1<<PB4) ? 0 : (1<<0)) ;
+}
+
+/* Row pin configuration
+ *
+ * Pro Micro: 0   1   2   3   4   5
+ *            F4  F5  F6  F7  B1  B2
+ *
+ * Expander:  0   1   2   3   4   5
+ */
+static void unselect_rows(void)
+{
+  // Pro Micro
+  DDRF  &= ~(1<<PF4 | 1<<PF5 | 1<<PF6 | 1<<PF7);
+  PORTF &= ~(1<<PF4 | 1<<PF5 | 1<<PF6 | 1<<PF7);
+  DDRB  &= ~(1<<PB1 | 1<<PB2);
+  PORTB &= ~(1<<PB1 | 1<<PB2);
+
+  // Expander
+  expander_unselect_rows();
+}
+
+static void select_row(uint8_t row)
+{
+  // Pro Micro
+  switch (row) {
+  case 0:
+    DDRF  |=  (1<<PF4);
+    PORTF &= ~(1<<PF4);
+    break;
+  case 1:
+    DDRF  |=  (1<<PF5);
+    PORTF &= ~(1<<PF5);
+    break;
+  case 2:
+    DDRF  |=  (1<<PF6);
+    PORTF &= ~(1<<PF6);
+    break;
+  case 3:
+    DDRF  |=  (1<<PF7);
+    PORTF &= ~(1<<PF7);
+    break;
+  case 4:
+    DDRB  |=  (1<<PB1);
+    PORTB &= ~(1<<PB1);
+    break;
+  case 5:
+    DDRB  |=  (1<<PB2);
+    PORTB &= ~(1<<PB2);
+    break;
+  }
+
+  expander_select_row(row);
+}
+
diff --git a/keyboards/ergodone/readme.md b/keyboards/ergodone/readme.md
new file mode 100644 (file)
index 0000000..789819e
--- /dev/null
@@ -0,0 +1,26 @@
+ErgoDone
+===
+
+![ErgoDone](https://i.imgur.com/QERsQGQ.jpg)
+
+ErgoDone is a modified ErgoDox with pre-soldered components made by K.T.E.C. It has different wiring and uses a Pro Micro instead of Teensy.
+
+  - Keyboard Maintainer: [Yu He](http://github.com/yuhe00)
+  - Hardware Supported: 
+    - ErgoDone ver. 1.3 (tested)
+  - Hardware Availability: [KBDFans](https://kbdfans.myshopify.com/collections/pcb/products/ergodone-keyboard-pcb-1pcs-free-shipping?variant=37178300237)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make ergodox-ergodone-default
+
+See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+
+# Flashing the keyboard
+
+The ErgoDone uses an HID bootloader rather than the Teensy one, and requires a different way of flashing the firmware.
+
+1. While plugging in the USB cable, hold the two right-most keys on the left half of the ErgoDone to enter FLASH mode.
+2. Use the `hid_bootloader_cli` utlity from [TKG Toolkit](https://github.com/kairyu/tkg-toolkit):
+   
+        hid_bootloader_cli -mmcu=atmega32u4 ergodox_ergodone_default
diff --git a/keyboards/ergodone/rules.mk b/keyboards/ergodone/rules.mk
new file mode 100644 (file)
index 0000000..bbad0ae
--- /dev/null
@@ -0,0 +1,95 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make = Make software.
+#
+# make clean = Clean out built project files.
+#
+# That's pretty much all you need. To compile, always go make clean, 
+# followed by make.
+#
+# For advanced users only:
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+#----------------------------------------------------------------------------
+
+# # project specific files
+SRC = \
+    twimaster.c \
+         matrix.c    \
+    expander.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 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
+#   comment out to disable the options.
+#
+CUSTOM_MATRIX           = yes # Custom matrix file for the ErgoDone
+UNICODE_ENABLE          = yes # Unicode
+BOOTMAGIC_ENABLE        = yes  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE         = yes  # Mouse keys(+4700)
+EXTRAKEY_ENABLE         = yes  # Audio control and System control(+450)
+CONSOLE_ENABLE          = no   # Console for debug(+400)
+COMMAND_ENABLE          = no  # Commands for debug and configuration
+SLEEP_LED_ENABLE        = no  # Breathing sleep LED during USB suspend
+NKRO_ENABLE             = yes  # USB Nkey Rollover - not yet supported in LUFA
+USB_6KRO_ENABLE         = no  # USB 6key Rollover
+BACKLIGHT_ENABLE        = no   # Enable keyboard backlight functionality
+KEYMAP_IN_EEPROM_ENABLE = no   # External keymap in eeprom
+KEYMAP_SECTION_ENABLE   = no   # Fixed address keymap for keymap editor
+SOFTPWM_LED_ENABLE      = no  # Enable SoftPWM to drive backlight
+FADING_LED_ENABLE       = no  # Enable fading backlight
+BREATHING_LED_ENABLE    = no  # Enable breathing backlight
+LEDMAP_ENABLE           = no   # Enable LED mapping
+LEDMAP_IN_EEPROM_ENABLE = no  # Read LED mapping from eeprom
+ONEHAND_ENABLE          = no  # Disable Onehand
+RGBLIGHT_ENABLE         = no
+MIDI_ENABLE             = no
+
+LAYOUTS = ergodox ergodox_80
\ No newline at end of file
diff --git a/keyboards/ergodone/twimaster.c b/keyboards/ergodone/twimaster.c
new file mode 100644 (file)
index 0000000..f91c08e
--- /dev/null
@@ -0,0 +1,208 @@
+/*************************************************************************
+* 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/ergodox/Makefile b/keyboards/ergodox/Makefile
deleted file mode 100644 (file)
index 7165350..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-SUBPROJECT_DEFAULT = ez
-
-ifndef MAKEFILE_INCLUDED
-       include ../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h
deleted file mode 100644 (file)
index 0e461e5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
-#define KEYBOARDS_ERGODOX_CONFIG_H_
-
-#define MOUSEKEY_INTERVAL       20
-#define MOUSEKEY_DELAY          0
-#define MOUSEKEY_TIME_TO_MAX    60
-#define MOUSEKEY_MAX_SPEED      7
-#define MOUSEKEY_WHEEL_DELAY 0
-
-#define TAPPING_TOGGLE  1
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-#define TAPPING_TERM    200
-#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
-    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
-)
-
-#ifdef SUBPROJECT_ez
-    #include "ez/config.h"
-#endif
-#ifdef SUBPROJECT_infinity
-    #include "infinity/config.h"
-#endif
-#ifdef SUBPROJECT_ergodone
-    #include "ergodone/config.h"
-#endif
-
-
-#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/keyboards/ergodox/ergodone/Makefile b/keyboards/ergodox/ergodone/Makefile
deleted file mode 100644 (file)
index bd09e58..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef MAKEFILE_INCLUDED
-       include ../../../Makefile
-endif
diff --git a/keyboards/ergodox/ergodone/config.h b/keyboards/ergodox/ergodone/config.h
deleted file mode 100644 (file)
index 52ae2d5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef ERGODOX_ERGODONE_CONFIG_H
-#define ERGODOX_ERGODONE_CONFIG_H
-
-#include "../config.h"
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x1307
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    ErgoDone
-#define PRODUCT         ErgoDone
-#define DESCRIPTION     QMK keyboard firmware for ErgoDone
-
-/* key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 14
-
-/* number of backlight levels */
-#define BACKLIGHT_LEVELS 3
-
-#define LED_BRIGHTNESS_LO       15
-#define LED_BRIGHTNESS_HI       255
-
-/* fix space cadet rollover issue */
-#define DISABLE_SPACE_CADET_ROLLOVER
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE    5
-
-#define PREVENT_STUCK_MODIFIERS
-
-#define USB_MAX_POWER_CONSUMPTION 500
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-//#define DEBUG_MATRIX_SCAN_RATE
-
-#endif
diff --git a/keyboards/ergodox/ergodone/ergodone.c b/keyboards/ergodox/ergodone/ergodone.c
deleted file mode 100644 (file)
index 6b8d8a0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "ergodone.h"
-
-void matrix_init_kb(void) {
-  matrix_init_user();
-}
diff --git a/keyboards/ergodox/ergodone/ergodone.h b/keyboards/ergodox/ergodone/ergodone.h
deleted file mode 100644 (file)
index cddc1fb..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef ERGODOX_ERGODONE_H
-#define ERGODOX_ERGODONE_H
-
-#include "quantum.h"
-#include <stdint.h>
-#include <stdbool.h>
-
-#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
-#define CPU_16MHz       0x00
-
-void init_ergodox(void);
-
-inline void ergodox_right_led_1_off(void)               {}
-inline void ergodox_right_led_1_on(void)                {}
-inline void ergodox_right_led_2_off(void)               {}
-inline void ergodox_right_led_2_on(void)                {}
-inline void ergodox_right_led_3_off(void)               {}
-inline void ergodox_right_led_3_on(void)                {}
-inline void ergodox_right_led_on(uint8_t l)             {}
-inline void ergodox_right_led_off(uint8_t l)            {}
-inline void ergodox_board_led_off(void)                 {}
-inline void ergodox_board_led_on(void)                  {}
-inline void ergodox_led_all_on(void)                    {}
-inline void ergodox_led_all_off(void)                   {}
-inline void ergodox_right_led_1_set(uint8_t n)          {}
-inline void ergodox_right_led_2_set(uint8_t n)          {}
-inline void ergodox_right_led_3_set(uint8_t n)          {}
-inline void ergodox_right_led_set(uint8_t l, uint8_t n) {}
-inline void ergodox_led_all_set(uint8_t n)              {}
-
-#define KEYMAP(                                                 \
-                                                                \
-    /* left hand, spatial positions */                          \
-    k00,k01,k02,k03,k04,k05,k06,                                \
-    k10,k11,k12,k13,k14,k15,k16,                                \
-    k20,k21,k22,k23,k24,k25,                                    \
-    k30,k31,k32,k33,k34,k35,k36,                                \
-    k40,k41,k42,k43,k44,                                        \
-                            k55,k56,                            \
-                                k54,                            \
-                        k53,k52,k51,                            \
-                                                                \
-    /* right hand, spatial positions */                         \
-        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
-        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
-            k28,k29,k2A,k2B,k2C,k2D,                            \
-        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
-                k49,k4A,k4B,k4C,k4D,                            \
-    k57,k58,                                                    \
-    k59,                                                        \
-    k5C,k5B,k5A )                                               \
-                                                                \
-   /* matrix positions */                                       \
-   {                                                            \
-    { k00,   k01, k02, k03, k04, k05,   k06,      k07,   k08,   k09, k0A, k0B, k0C, k0D    }, \
-    { k10,   k11, k12, k13, k14, k15,   k16,      k17,   k18,   k19, k1A, k1B, k1C, k1D    }, \
-    { k20,   k21, k22, k23, k24, k25,   KC_NO,    KC_NO, k28,   k29, k2A, k2B, k2C, k2D    }, \
-    { k30,   k31, k32, k33, k34, k35,   k36,      k37,   k38,   k39, k3A, k3B, k3C, k3D    }, \
-    { k40,   k41, k42, k43, k44, KC_NO, KC_NO,    KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D    }, \
-    { KC_NO, k51, k52, k53, k54, k55,   k56,      k57,   k58,   k59, k5A, k5B, k5C, KC_NO  } \
-   }
-
-#endif
diff --git a/keyboards/ergodox/ergodone/expander.c b/keyboards/ergodox/ergodone/expander.c
deleted file mode 100644 (file)
index 0c8a228..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <stdbool.h>
-#include "action.h"
-#include "i2cmaster.h"
-#include "expander.h"
-#include "debug.h"
-
-static uint8_t expander_status = 0;
-static uint8_t expander_input = 0;
-
-void expander_config(void);
-uint8_t expander_write(uint8_t reg, uint8_t data);
-uint8_t expander_read(uint8_t reg, uint8_t *data);
-
-void expander_init(void)
-{
-  i2c_init();
-  expander_scan();
-}
-
-void expander_scan(void)
-{
-  dprintf("expander status: %d ... ", expander_status);
-  uint8_t ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
-  if (ret == 0) {
-    i2c_stop();
-    if (expander_status == 0) {
-      dprintf("attached\n");
-      expander_status = 1;
-      expander_config();
-      clear_keyboard();
-    }
-  }
-  else {
-    if (expander_status == 1) {
-      dprintf("detached\n");
-      expander_status = 0;
-      clear_keyboard();
-    }
-  }
-  dprintf("%d\n", expander_status);
-}
-
-void expander_read_cols(void)
-{
-  expander_read(EXPANDER_REG_GPIOA, &expander_input);
-}
-
-uint8_t expander_get_col(uint8_t col)
-{
-  if (col > 4) {
-    col++;
-  }
-  return expander_input & (1<<col) ? 1 : 0;
-}
-
-matrix_row_t expander_read_row(void)
-{
-  expander_read_cols();
-
-  /* make cols */
-  matrix_row_t cols = 0;
-  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-    if (expander_get_col(col)) {
-      cols |= (1UL << (MATRIX_COLS - 1 - col));
-    }
-  }
-
-  return cols;
-}
-
-void expander_unselect_rows(void)
-{
-  expander_write(EXPANDER_REG_IODIRB, 0xFF);
-}
-
-void expander_select_row(uint8_t row)
-{
-  expander_write(EXPANDER_REG_IODIRB, ~(1<<(row+1)));
-}
-
-void expander_config(void)
-{
-  expander_write(EXPANDER_REG_IPOLA, 0xFF);
-  expander_write(EXPANDER_REG_GPPUA, 0xFF);
-  expander_write(EXPANDER_REG_IODIRB, 0xFF);
-}
-
-uint8_t expander_write(uint8_t reg, uint8_t data)
-{
-  if (expander_status == 0) {
-    return 0;
-  }
-  uint8_t ret;
-  ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
-  if (ret) goto stop;
-  ret = i2c_write(reg);
-  if (ret) goto stop;
-  ret = i2c_write(data);
- stop:
-  i2c_stop();
-  return ret;
-}
-
-uint8_t expander_read(uint8_t reg, uint8_t *data)
-{
-  if (expander_status == 0) {
-    return 0;
-  }
-  uint8_t ret;
-  ret = i2c_start(EXPANDER_ADDR | I2C_WRITE);
-  if (ret) goto stop;
-  ret = i2c_write(reg);
-  if (ret) goto stop;
-  ret = i2c_rep_start(EXPANDER_ADDR | I2C_READ);
-  if (ret) goto stop;
-  *data = i2c_readNak();
- stop:
-  i2c_stop();
-  return ret;
-}
diff --git a/keyboards/ergodox/ergodone/expander.h b/keyboards/ergodox/ergodone/expander.h
deleted file mode 100644 (file)
index 8676fed..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef EXPANDER_H
-#define EXPANDER_H
-
-#include <stdint.h>
-#include "matrix.h"
-
-#define MCP23017
-#define MCP23017_A0 0
-#define MCP23017_A1 0
-#define MCP23017_A2 0
-
-#ifdef MCP23017
-#define EXPANDER_ADDR ((0x20|(MCP23017_A0<<0)|(MCP23017_A1<<1)|(MCP23017_A2<<2)) << 1)
-enum EXPANDER_REG_BANK0 {
-  EXPANDER_REG_IODIRA = 0,
-  EXPANDER_REG_IODIRB,
-  EXPANDER_REG_IPOLA,
-  EXPANDER_REG_IPOLB,
-  EXPANDER_REG_GPINTENA,
-  EXPANDER_REG_GPINTENB,
-  EXPANDER_REG_DEFVALA,
-  EXPANDER_REG_DEFVALB,
-  EXPANDER_REG_INTCONA,
-  EXPANDER_REG_INTCONB,
-  EXPANDER_REG_IOCONA,
-  EXPANDER_REG_IOCONB,
-  EXPANDER_REG_GPPUA,
-  EXPANDER_REG_GPPUB,
-  EXPANDER_REG_INTFA,
-  EXPANDER_REG_INTFB,
-  EXPANDER_REG_INTCAPA,
-  EXPANDER_REG_INTCAPB,
-  EXPANDER_REG_GPIOA,
-  EXPANDER_REG_GPIOB,
-  EXPANDER_REG_OLATA,
-  EXPANDER_REG_OLATB
-};
-#endif
-
-void expander_init(void);
-void expander_scan(void);
-void expander_read_cols(void);
-uint8_t expander_get_col(uint8_t col);
-matrix_row_t expander_read_row(void);
-void expander_unselect_rows(void);
-void expander_select_row(uint8_t row);
-
-#endif
diff --git a/keyboards/ergodox/ergodone/i2cmaster.h b/keyboards/ergodox/ergodone/i2cmaster.h
deleted file mode 100644 (file)
index 3917b9e..0000000
+++ /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/ergodox/ergodone/matrix.c b/keyboards/ergodox/ergodone/matrix.c
deleted file mode 100644 (file)
index 2eb8f24..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include "wait.h"
-#include "action_layer.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "ergodone.h"
-#include "expander.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include  "timer.h"
-#endif
-
-/*
- * This constant define not debouncing time in msecs, but amount of matrix
- * scan loops which should be made to get stable debounced results.
- *
- * On Ergodox matrix scan rate is relatively low, because of slow I2C.
- * Now it's only 317 scans/second, or about 3.15 msec/scan.
- * According to Cherry specs, debouncing time is 5 msec.
- *
- * And so, there is no sense to have DEBOUNCE higher than 2.
- */
-
-#ifndef DEBOUNCE
-#   define DEBOUNCE    5
-#endif
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t 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);
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
-__attribute__ ((weak))
-void matrix_init_user(void) {}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {}
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
-  matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
-  matrix_scan_user();
-}
-
-inline
-uint8_t matrix_rows(void)
-{
-  return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
-  return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
-  // disable JTAG
-  MCUCR = (1<<JTD);
-  MCUCR = (1<<JTD);
-
-  unselect_rows();
-  init_cols();
-
-  // initialize matrix state: all keys off
-  for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-    matrix[i] = 0;
-    for (uint8_t j=0; j < MATRIX_COLS; ++j) {
-      debounce_matrix[i * MATRIX_COLS + j] = 0;
-    }
-  }
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-  matrix_timer = timer_read32();
-  matrix_scan_count = 0;
-#endif
-
-  matrix_init_quantum();
-
-}
-
-void matrix_power_up(void) {
-  unselect_rows();
-  init_cols();
-
-  // initialize matrix state: all keys off
-  for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-    matrix[i] = 0;
-  }
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-  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(uint8_t row) {
-  matrix_row_t result = 0;
-  for (uint8_t j=0; j < MATRIX_COLS; ++j) {
-    if (debounce_matrix[row * MATRIX_COLS + j]) {
-      --debounce_matrix[row * MATRIX_COLS + j];
-    } else {
-      result |= (1 << j);
-    }
-  }
-  return result;
-}
-
-// Report changed keys in the given row.  Resets the debounce countdowns
-// corresponding to each set bit in 'change' to DEBOUNCE.
-void debounce_report(matrix_row_t change, uint8_t row) {
-  for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
-    if (change & (1 << i)) {
-      debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
-    }
-  }
-}
-
-uint8_t matrix_scan(void)
-{
-  expander_scan();
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-  matrix_scan_count++;
-
-  uint32_t timer_now = timer_read32();
-  if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
-    print("matrix scan frequency: ");
-    pdec(matrix_scan_count);
-    print("\n");
-    matrix_print();
-
-    matrix_timer = timer_now;
-    matrix_scan_count = 0;
-  }
-#endif
-
-  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-    select_row(i);
-    wait_us(30);  // without this wait read unstable value.
-    matrix_row_t mask = debounce_mask(i);
-    matrix_row_t cols = (read_cols(i) & mask) | (matrix[i] & ~mask);
-    debounce_report(cols ^ matrix[i], i);
-    matrix[i] = cols;
-
-    unselect_rows();
-  }
-
-  matrix_scan_quantum();
-
-  return 1;
-}
-
-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;
-}
-
-/* Column pin configuration
- *
- * Pro Micro: 6    5    4    3    2    1    0
- *            PD3  PD2  PD4  PC6  PD7  PE6  PB4
- *
- * Expander:  13   12   11   10   9    8    7
- */
-static void  init_cols(void)
-{
-  // Pro Micro
-  DDRE  &= ~(1<<PE6);
-  PORTE |=  (1<<PE6);
-  DDRD  &= ~(1<<PD2 | 1<<PD3 | 1<<PD4 | 1<<PD7);
-  PORTD |=  (1<<PD2 | 1<<PD3 | 1<<PD4 | 1<<PD7);
-  DDRC  &= ~(1<<PC6);
-  PORTC |=  (1<<PC6);
-  DDRB  &= ~(1<<PB4);
-  PORTB |=  (1<<PB4);
-
-  // MCP23017
-  expander_init();
-}
-
-static matrix_row_t read_cols(uint8_t row)
-{
-  return expander_read_row() |
-    (PIND&(1<<PD3) ? 0 : (1<<6)) |
-    (PIND&(1<<PD2) ? 0 : (1<<5)) |
-    (PIND&(1<<PD4) ? 0 : (1<<4)) |
-    (PINC&(1<<PC6) ? 0 : (1<<3)) |
-    (PIND&(1<<PD7) ? 0 : (1<<2)) |
-    (PINE&(1<<PE6) ? 0 : (1<<1)) |
-    (PINB&(1<<PB4) ? 0 : (1<<0)) ;
-}
-
-/* Row pin configuration
- *
- * Pro Micro: 0   1   2   3   4   5
- *            F4  F5  F6  F7  B1  B2
- *
- * Expander:  0   1   2   3   4   5
- */
-static void unselect_rows(void)
-{
-  // Pro Micro
-  DDRF  &= ~(1<<PF4 | 1<<PF5 | 1<<PF6 | 1<<PF7);
-  PORTF &= ~(1<<PF4 | 1<<PF5 | 1<<PF6 | 1<<PF7);
-  DDRB  &= ~(1<<PB1 | 1<<PB2);
-  PORTB &= ~(1<<PB1 | 1<<PB2);
-
-  // Expander
-  expander_unselect_rows();
-}
-
-static void select_row(uint8_t row)
-{
-  // Pro Micro
-  switch (row) {
-  case 0:
-    DDRF  |=  (1<<PF4);
-    PORTF &= ~(1<<PF4);
-    break;
-  case 1:
-    DDRF  |=  (1<<PF5);
-    PORTF &= ~(1<<PF5);
-    break;
-  case 2:
-    DDRF  |=  (1<<PF6);
-    PORTF &= ~(1<<PF6);
-    break;
-  case 3:
-    DDRF  |=  (1<<PF7);
-    PORTF &= ~(1<<PF7);
-    break;
-  case 4:
-    DDRB  |=  (1<<PB1);
-    PORTB &= ~(1<<PB1);
-    break;
-  case 5:
-    DDRB  |=  (1<<PB2);
-    PORTB &= ~(1<<PB2);
-    break;
-  }
-
-  expander_select_row(row);
-}
-
diff --git a/keyboards/ergodox/ergodone/readme.md b/keyboards/ergodox/ergodone/readme.md
deleted file mode 100644 (file)
index 789819e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-ErgoDone
-===
-
-![ErgoDone](https://i.imgur.com/QERsQGQ.jpg)
-
-ErgoDone is a modified ErgoDox with pre-soldered components made by K.T.E.C. It has different wiring and uses a Pro Micro instead of Teensy.
-
-  - Keyboard Maintainer: [Yu He](http://github.com/yuhe00)
-  - Hardware Supported: 
-    - ErgoDone ver. 1.3 (tested)
-  - Hardware Availability: [KBDFans](https://kbdfans.myshopify.com/collections/pcb/products/ergodone-keyboard-pcb-1pcs-free-shipping?variant=37178300237)
-
-Make example for this keyboard (after setting up your build environment):
-
-    make ergodox-ergodone-default
-
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-
-# Flashing the keyboard
-
-The ErgoDone uses an HID bootloader rather than the Teensy one, and requires a different way of flashing the firmware.
-
-1. While plugging in the USB cable, hold the two right-most keys on the left half of the ErgoDone to enter FLASH mode.
-2. Use the `hid_bootloader_cli` utlity from [TKG Toolkit](https://github.com/kairyu/tkg-toolkit):
-   
-        hid_bootloader_cli -mmcu=atmega32u4 ergodox_ergodone_default
diff --git a/keyboards/ergodox/ergodone/rules.mk b/keyboards/ergodox/ergodone/rules.mk
deleted file mode 100644 (file)
index e7fd4e0..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean, 
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-
-# # project specific files
-SRC = \
-    twimaster.c \
-         matrix.c    \
-    expander.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 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
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE        = yes  # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE         = yes  # Mouse keys(+4700)
-EXTRAKEY_ENABLE         = yes  # Audio control and System control(+450)
-CONSOLE_ENABLE          = no   # Console for debug(+400)
-COMMAND_ENABLE          = no  # Commands for debug and configuration
-SLEEP_LED_ENABLE        = no  # Breathing sleep LED during USB suspend
-NKRO_ENABLE             = yes  # USB Nkey Rollover - not yet supported in LUFA
-USB_6KRO_ENABLE         = no  # USB 6key Rollover
-BACKLIGHT_ENABLE        = no   # Enable keyboard backlight functionality
-KEYMAP_IN_EEPROM_ENABLE = no   # External keymap in eeprom
-KEYMAP_SECTION_ENABLE   = no   # Fixed address keymap for keymap editor
-SOFTPWM_LED_ENABLE      = no  # Enable SoftPWM to drive backlight
-FADING_LED_ENABLE       = no  # Enable fading backlight
-BREATHING_LED_ENABLE    = no  # Enable breathing backlight
-LEDMAP_ENABLE           = no   # Enable LED mapping
-LEDMAP_IN_EEPROM_ENABLE = no  # Read LED mapping from eeprom
-ONEHAND_ENABLE          = no  # Disable Onehand
-RGBLIGHT_ENABLE         = no
-MIDI_ENABLE             = no
diff --git a/keyboards/ergodox/ergodone/twimaster.c b/keyboards/ergodox/ergodone/twimaster.c
deleted file mode 100644 (file)
index f91c08e..0000000
+++ /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/ergodox/ergodox.c b/keyboards/ergodox/ergodox.c
deleted file mode 100644 (file)
index 648ec8a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
diff --git a/keyboards/ergodox/ergodox.h b/keyboards/ergodox/ergodox.h
deleted file mode 100644 (file)
index f060c8f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_
-#define KEYBOARDS_ERGODOX_ERGODOX_H_
-#ifdef SUBPROJECT_ez
-    #include "ez.h"
-#endif
-#ifdef SUBPROJECT_infinity
-    #include "infinity.h"
-#endif
-#ifdef SUBPROJECT_ergodone
-    #include "ergodone.h"
-#endif
-
-#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */
diff --git a/keyboards/ergodox/ez/190hotfix.sh b/keyboards/ergodox/ez/190hotfix.sh
deleted file mode 100755 (executable)
index bdc3adc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-#a tool to fix broken keymaps as a result of pull request #190 
-#changing the declaration of matrix_scan_user() and matrix_init_user()
-#
-#This script will save a copy of the specified keymap as keymap.c.bak
-#and then create a new keymap.c with the definion corrected.
-#this script must be run from the ergodox_ez directory
-if [ $# -ne 1 ]; then
-    echo $0: usage: ./190hotfix keymap_name
-    exit 1
-fi
-
-echo Saving backup as ./keymaps/$1/keymap.c.bak ...
-mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak
-
-echo Modifying ./keymaps/$1/keymap.c ...
-cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c
-
-echo Complete!
diff --git a/keyboards/ergodox/ez/Makefile b/keyboards/ergodox/ez/Makefile
deleted file mode 100644 (file)
index 663e09b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-RGBLIGHT_ENABLE = yes
-MIDI_ENABLE = no
-
-ifndef MAKEFILE_INCLUDED
-       include ../../../Makefile
-endif
diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
deleted file mode 100644 (file)
index cc8aa3d..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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 ERGODOX_EZ_CONFIG_H
-#define ERGODOX_EZ_CONFIG_H
-
-#include "../config.h"
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x1307
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    ErgoDox EZ
-#define PRODUCT         ErgoDox EZ
-#define DESCRIPTION     QMK keyboard firmware for Ergodox EZ
-
-/* key matrix size */
-#define MATRIX_ROWS 14
-#define MATRIX_COLS 6
-
-/* number of backlight levels */
-#define BACKLIGHT_LEVELS 3
-
-#define LED_BRIGHTNESS_LO       15
-#define LED_BRIGHTNESS_HI       255
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D7
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 15     // Number of LEDs
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 255
-#define RGBLIGHT_VAL_STEP 12
-
-/* fix space cadet rollover issue */
-#define DISABLE_SPACE_CADET_ROLLOVER
-
-// #define RGB_MIDI
-#define RGBW_BB_TWI
-
-#define RGBW 1
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE    15
-
-#define PREVENT_STUCK_MODIFIERS
-
-#define USB_MAX_POWER_CONSUMPTION 500
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-//#define DEBUG_MATRIX_SCAN_RATE
-
-#endif
diff --git a/keyboards/ergodox/ez/ez.c b/keyboards/ergodox/ez/ez.c
deleted file mode 100644 (file)
index d502249..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#include "ez.h"
-#include "i2cmaster.h"
-
-
-extern inline void ergodox_board_led_on(void);
-extern inline void ergodox_right_led_1_on(void);
-extern inline void ergodox_right_led_2_on(void);
-extern inline void ergodox_right_led_3_on(void);
-extern inline void ergodox_right_led_on(uint8_t led);
-
-extern inline void ergodox_board_led_off(void);
-extern inline void ergodox_right_led_1_off(void);
-extern inline void ergodox_right_led_2_off(void);
-extern inline void ergodox_right_led_3_off(void);
-extern inline void ergodox_right_led_off(uint8_t led);
-
-extern inline void ergodox_led_all_on(void);
-extern inline void ergodox_led_all_off(void);
-
-extern inline void ergodox_right_led_1_set(uint8_t n);
-extern inline void ergodox_right_led_2_set(uint8_t n);
-extern inline void ergodox_right_led_3_set(uint8_t n);
-extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
-
-extern inline void ergodox_led_all_set(uint8_t n);
-
-
-bool i2c_initialized = 0;
-uint8_t mcp23018_status = 0x20;
-
-void matrix_init_kb(void) {
-   // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
-    TCCR1A = 0b10101001;  // set and configure fast PWM
-    TCCR1B = 0b00001001;  // set and configure fast PWM
-
-    // (tied to Vcc for hardware convenience)
-    DDRB  &= ~(1<<4);  // set B(4) as input
-    PORTB &= ~(1<<4);  // set B(4) internal pull-up disabled
-
-    // unused pins - C7, D4, D5, D7, E6
-    // set as input with internal pull-ip enabled
-    DDRC  &= ~(1<<7);
-    DDRD  &= ~(1<<5 | 1<<4);
-    DDRE  &= ~(1<<6);
-    PORTC |=  (1<<7);
-    PORTD |=  (1<<5 | 1<<4);
-    PORTE |=  (1<<6);
-
-    ergodox_blink_all_leds();
-
-    matrix_init_user();
-}
-
-void ergodox_blink_all_leds(void)
-{
-    ergodox_led_all_off();
-    ergodox_led_all_set(LED_BRIGHTNESS_HI);
-    ergodox_right_led_1_on();
-    _delay_ms(50);
-    ergodox_right_led_2_on();
-    _delay_ms(50);
-    ergodox_right_led_3_on();
-    _delay_ms(50);
-    ergodox_right_led_1_off();
-    _delay_ms(50);
-    ergodox_right_led_2_off();
-    _delay_ms(50);
-    ergodox_right_led_3_off();
-    //ergodox_led_all_on();
-    //_delay_ms(333);
-    ergodox_led_all_off();
-}
-
-uint8_t init_mcp23018(void) {
-    mcp23018_status = 0x20;
-
-    // I2C subsystem
-
-    // uint8_t sreg_prev;
-    // sreg_prev=SREG;
-    // cli();
-    if (i2c_initialized == 0) {
-        i2c_init();  // on pins D(1,0)
-        i2c_initialized = true;
-        _delay_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;
-    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;
-
-out:
-    i2c_stop();
-
-    // SREG=sreg_prev;
-
-    return mcp23018_status;
-}
-
-#ifdef ONEHAND_ENABLE
-__attribute__ ((weak))
-// swap-hands action needs a matrix to define the swap
-const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
-    /* Left hand, matrix positions */
-    {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
-    {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
-    {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
-    {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
-    {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
-    {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
-    {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
-    /* Right hand, matrix positions */
-    {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
-    {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
-    {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
-    {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
-    {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
-    {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
-    {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
-};
-#endif
diff --git a/keyboards/ergodox/ez/ez.h b/keyboards/ergodox/ez/ez.h
deleted file mode 100644 (file)
index 124bf85..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-#ifndef ERGODOX_EZ_H
-#define ERGODOX_EZ_H
-
-#include "quantum.h"
-#include <stdint.h>
-#include <stdbool.h>
-#include "i2cmaster.h"
-#include <util/delay.h>
-
-#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
-#define CPU_16MHz       0x00
-
-// I2C aliases and register addresses (see "mcp23018.md")
-#define I2C_ADDR        0b0100000
-#define I2C_ADDR_WRITE  ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ   ( (I2C_ADDR<<1) | I2C_READ  )
-#define IODIRA          0x00            // i/o direction register
-#define IODIRB          0x01
-#define GPPUA           0x0C            // GPIO pull-up resistor register
-#define GPPUB           0x0D
-#define GPIOA           0x12            // general purpose i/o port register (write modifies OLAT)
-#define GPIOB           0x13
-#define OLATA           0x14            // output latch register
-#define OLATB           0x15
-
-extern uint8_t mcp23018_status;
-
-void init_ergodox(void);
-void ergodox_blink_all_leds(void);
-uint8_t init_mcp23018(void);
-uint8_t ergodox_left_leds_update(void);
-
-#define LED_BRIGHTNESS_LO       15
-#define LED_BRIGHTNESS_HI       255
-
-
-inline void ergodox_board_led_on(void)      { DDRD |=  (1<<6); PORTD |=  (1<<6); }
-inline void ergodox_right_led_1_on(void)    { DDRB |=  (1<<5); PORTB |=  (1<<5); }
-inline void ergodox_right_led_2_on(void)    { DDRB |=  (1<<6); PORTB |=  (1<<6); }
-inline void ergodox_right_led_3_on(void)    { DDRB |=  (1<<7); PORTB |=  (1<<7); }
-inline void ergodox_right_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); }
-
-inline void ergodox_board_led_off(void)     { DDRD &= ~(1<<6); PORTD &= ~(1<<6); }
-inline void ergodox_right_led_1_off(void)   { DDRB &= ~(1<<5); PORTB &= ~(1<<5); }
-inline void ergodox_right_led_2_off(void)   { DDRB &= ~(1<<6); PORTB &= ~(1<<6); }
-inline void ergodox_right_led_3_off(void)   { DDRB &= ~(1<<7); PORTB &= ~(1<<7); }
-inline void ergodox_right_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); }
-
-inline void ergodox_led_all_on(void)
-{
-    ergodox_board_led_on();
-    ergodox_right_led_1_on();
-    ergodox_right_led_2_on();
-    ergodox_right_led_3_on();
-}
-
-inline void ergodox_led_all_off(void)
-{
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-}
-
-inline void ergodox_right_led_1_set(uint8_t n)    { OCR1A = n; }
-inline void ergodox_right_led_2_set(uint8_t n)    { OCR1B = n; }
-inline void ergodox_right_led_3_set(uint8_t n)    { OCR1C = n; }
-inline void ergodox_right_led_set(uint8_t led, uint8_t n)  {
-    (led == 1) ? (OCR1A = n) :
-    (led == 2) ? (OCR1B = n) :
-                 (OCR1C = n);
-}
-
-inline void ergodox_led_all_set(uint8_t n)
-{
-    ergodox_right_led_1_set(n);
-    ergodox_right_led_2_set(n);
-    ergodox_right_led_3_set(n);
-}
-
-#define KEYMAP(                                                 \
-                                                                \
-    /* left hand, spatial positions */                          \
-    k00,k01,k02,k03,k04,k05,k06,                                \
-    k10,k11,k12,k13,k14,k15,k16,                                \
-    k20,k21,k22,k23,k24,k25,                                    \
-    k30,k31,k32,k33,k34,k35,k36,                                \
-    k40,k41,k42,k43,k44,                                        \
-                            k55,k56,                            \
-                                k54,                            \
-                        k53,k52,k51,                            \
-                                                                \
-    /* right hand, spatial positions */                         \
-        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
-        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
-            k28,k29,k2A,k2B,k2C,k2D,                            \
-        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
-                k49,k4A,k4B,k4C,k4D,                            \
-    k57,k58,                                                    \
-    k59,                                                        \
-    k5C,k5B,k5A )                                               \
-                                                                \
-   /* matrix positions */                                       \
-   {                                                            \
-    { k00, k10, k20, k30, k40, KC_NO },   \
-    { k01, k11, k21, k31, k41, k51 },   \
-    { k02, k12, k22, k32, k42, k52 },   \
-    { k03, k13, k23, k33, k43, k53 },   \
-    { k04, k14, k24, k34, k44, k54 },   \
-    { k05, k15, k25, k35, KC_NO, k55 },   \
-    { k06, k16, KC_NO, k36, KC_NO, k56 },   \
-                                                                 \
-    { k07, k17, KC_NO, k37,KC_NO, k57 },   \
-    { k08, k18, k28, k38,KC_NO, k58 },   \
-    { k09, k19, k29, k39, k49, k59 },   \
-    { k0A, k1A, k2A, k3A, k4A, k5A },   \
-    { k0B, k1B, k2B, k3B, k4B, k5B },   \
-    { k0C, k1C, k2C, k3C, k4C, k5C },   \
-    { k0D, k1D, k2D, k3D, k4D, KC_NO }    \
-   }
-
-#define KEYMAP_80(                                              \
-                                                                \
-    /* left hand, spatial positions */                          \
-    k00,k01,k02,k03,k04,k05,k06,                                \
-    k10,k11,k12,k13,k14,k15,k16,                                \
-    k20,k21,k22,k23,k24,k25,                                    \
-    k30,k31,k32,k33,k34,k35,k36,                                \
-    k40,k41,k42,k43,k44,                                        \
-                            k55,k56,                            \
-                        k45,k46,k54,                            \
-                        k53,k52,k51,                            \
-                                                                \
-    /* right hand, spatial positions */                         \
-        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
-        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
-            k28,k29,k2A,k2B,k2C,k2D,                            \
-        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
-                k49,k4A,k4B,k4C,k4D,                            \
-    k57,k58,                                                    \
-    k59,k47,k48,                                                \
-    k5C,k5B,k5A )                                               \
-                                                                \
-   /* matrix positions */                                       \
-   {                                                            \
-    { k00, k10, k20, k30, k40, KC_NO },   \
-    { k01, k11, k21, k31, k41, k51 },   \
-    { k02, k12, k22, k32, k42, k52 },   \
-    { k03, k13, k23, k33, k43, k53 },   \
-    { k04, k14, k24, k34, k44, k54 },   \
-    { k05, k15, k25, k35, k45, k55 },   \
-    { k06, k16, KC_NO, k36, k46, k56 },   \
-                                                                 \
-    { k07, k17, KC_NO, k37, k47, k57 },   \
-    { k08, k18, k28, k38, k48, k58 },   \
-    { k09, k19, k29, k39, k49, k59 },   \
-    { k0A, k1A, k2A, k3A, k4A, k5A },   \
-    { k0B, k1B, k2B, k3B, k4B, k5B },   \
-    { k0C, k1C, k2C, k3C, k4C, k5C },   \
-    { k0D, k1D, k2D, k3D, k4D, KC_NO }    \
-   }
-
-#endif
diff --git a/keyboards/ergodox/ez/i2cmaster.h b/keyboards/ergodox/ez/i2cmaster.h
deleted file mode 100644 (file)
index 3917b9e..0000000
+++ /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/ergodox/ez/keymaps/blakedietz/keymap.c b/keyboards/ergodox/ez/keymaps/blakedietz/keymap.c
deleted file mode 100644 (file)
index a88e679..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-/**
- * This section of macros is for tap or hold functionality. Keys will fire off the second symbol in the name if tapped
- * or fire the first symbol in the name if held. For example
- * GUI_Z
- *
- * - will fire z if tapped
- * - will fire cmd/super/win if held
- */
-#define ALT_DOT     ALT_T(KC_DOT)
-#define ALT_X       ALT_T(KC_X)
-#define CTL_SLSH    CTL_T(KC_SLSH)
-#define CTL_Z       CTL_T(KC_Z)
-#define GUI_C       GUI_T(KC_C)
-#define GUI_COMM    GUI_T(KC_COMM)
-#define HPR_ESC     ALL_T(KC_ESC)
-#define HPR_QUO     ALL_T(KC_QUOT)
-
-#define BASE 0
-#define SYMB 1
-#define MDIA 2
-#define MOUSE 3
-#define DEV 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '"   |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|X/Alt |C/GUI |   V  |   B  |      |           |      |   N  |   M  |,/GUI |./ALT |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,------------.
- *                                        |MOUSE | Home |       | PgDn | PgUp|
- *                                 ,------|------|------|       |------+-----+------.
- *                                 |      |      | ESC  |       | ESC  |     |      |
- *                                 | Space|Backsp|------|       |------| Tab |Enter |
- *                                 |      |ace   | LGui |       | LGui |     |      |
- *                                 `--------------------'       `-------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,          KC_1,        KC_2,   KC_3,   KC_4,        KC_5,   KC_LEFT,
-        KC_DELT,         KC_Q,        KC_W,   KC_E,   KC_R,        KC_T,   TG(DEV),
-        KC_BSPC,         KC_A,        KC_S,   KC_D,   KC_F,        KC_G,
-        KC_LSFT,         CTL_T(KC_Z), ALT_T(KC_X),    GUI_T(KC_C), KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV), KC_QUOT,     LALT(KC_LSFT),  KC_LEFT,     KC_RGHT,
-
-                                                                                    TG(MOUSE), KC_HOME,
-                                                                                               KC_ESC,
-                                                                            KC_SPC, KC_BSPC,   KC_LGUI,
-
-        // right hand
-        KC_RGHT,      KC_6, KC_7,    KC_8,     KC_9,    KC_0,              KC_MINS,
-        TG(SYMB),     KC_Y, KC_U,    KC_I,     KC_O,    KC_P,              KC_BSLS,
-                      KC_H, KC_J,    KC_K,     KC_L,    LT(MDIA, KC_SCLN), KC_QUOT,
-        MEH_T(KC_NO), KC_N, KC_M,    GUI_COMM, ALT_DOT, CTL_SLSH,          KC_RSFT,
-                            KC_DOWN, KC_UP,    KC_LBRC, KC_RBRC,           KC_FN1,
-
-        KC_PGDN,       KC_PGUP,
-        KC_ESC,
-        KC_LGUI,       KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      | Prev | Next | Mute |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | VolDn| VolUp|      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA
-[MDIA] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_MPRV, KC_MNXT, KC_MUTE, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-[MOUSE] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-[DEV] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_TRNS,
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
-       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-// MACRODOWN only works in this function
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case SYMB:
-            // Binary 1 represented by the leds
-            // --*
-            ergodox_right_led_3_on();
-            break;
-        case MDIA:
-            // Binary 2 represented by the leds
-            // -*-
-            ergodox_right_led_2_on();
-            break;
-        case MOUSE:
-            // Binary 3 represented by the leds
-            // -**
-            ergodox_right_led_3_on();
-            ergodox_right_led_2_on();
-            break;
-        case DEV:
-            // Binary 4 represented by the leds
-            // *--
-            ergodox_right_led_1_on();
-            break;
-        default:
-            // none
-            break;
-    }
-};
-
-//bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-//  switch (keycode) {
-//    case 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;
-//  }
-//  return true;
-//}
-
diff --git a/keyboards/ergodox/ez/keymaps/drashna-custom/Makefile b/keyboards/ergodox/ez/keymaps/drashna-custom/Makefile
deleted file mode 100644 (file)
index 21da248..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TAP_DANCE_ENABLE = yes
-LAYER_UNDERGLOW_LIGHTING = yes
-SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-RGBLIGHT_ENABLE = yes
-MIDI_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/ez/keymaps/drashna-custom/config.h b/keyboards/ergodox/ez/keymaps/drashna-custom/config.h
deleted file mode 100644 (file)
index fe33552..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include "../../config.h"
-
-
-#define TAPPING_TERM 200
-
-
-#define LAYER_UNDERGLOW_LIGHTING
diff --git a/keyboards/ergodox/ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox/ez/keymaps/drashna-custom/keymap.c
deleted file mode 100644 (file)
index 1825447..0000000
+++ /dev/null
@@ -1,867 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-
-#include "keymap_german.h"
-
-#include "keymap_nordic.h"
-
-// Define layer names 
-#define BASE 0
-#define COLEMAK 1
-#define DVORAK 2
-#define SYMB 3
-#define OVERWATCH 4
-#define DIABLO 5
-#define MOUS 6
-
-//define modifiers
-#define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
-#define MODS_ALT_MASK  (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
-
-//define macro keycodes
-#define M_VERSION M(0)
-#define M_SYMM M(1)
-#define M_SALT M(2)
-#define M_HARD M(3)
-#define M_MAKE M(4)
-#define M_COVECUBE M(5)
-#define M_MORESALT M(6)
-#define M_DOOMFIST M(7)
-
-
-//define layer change stuff for underglow indicator
-bool skip_leds = false;
-bool has_layer_changed = false;
-static uint8_t current_layer;
-
-static uint16_t key_timer;
-//define diablo macro timer variables
-static uint16_t diablo_timer[4];
-static uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30};
-static uint8_t diablo_key_time[4];
-
-bool check_dtimer(uint8_t dtimer) {
-    // has the correct number of seconds elapsed (as defined by diablo_times)
-    return (timer_elapsed(diablo_timer[dtimer]) < ( diablo_key_time[dtimer] * 1000 ) ) ? false : true;
-};
-
-bool checktime(void){
-    return (timer_elapsed(key_timer) < 150) ? true : false;
-};
-
-
-enum custom_keycodes {
-       PLACEHOLDER = SAFE_RANGE, // can always be here
-       EPRM,
-       VRSN,
-       RGB_SLD,
-       RGB_0000FF,
-       RGB_008000,
-       RGB_FF0000,
-       RGB_800080,
-       RGB_00FF90,
-    KC_DIABLO_CLEAR
-};
-
-#ifdef TAP_DANCE_ENABLE
-enum {
-       SFT_CAP = 0,
-       TD_DIABLO_J,
-       TD_CLN,
-       TD_EGG,
-       TD_FLSH,
-       TD_DIABLO_1,
-       TD_DIABLO_2,
-       TD_DIABLO_3,
-       TD_DIABLO_4
-};
-
-
-
-void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) {
-       if (state->count == 1) {
-               register_code (KC_RSFT);
-               register_code (KC_SCLN);
-       } else {
-               register_code (KC_SCLN);
-       }
-}
-
-void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
-       if (state->count == 1) {
-               unregister_code (KC_RSFT);
-               unregister_code (KC_SCLN);
-       } else {
-               unregister_code (KC_SCLN);
-       }
-}
-
-void dance_egg (qk_tap_dance_state_t *state, void *user_data) {
-       if (state->count >= 10) {
-               SEND_STRING ("Safety dance!");
-               reset_tap_dance (state);
-       }
-}
-
-// on each tap, light up one led, from right to left
-// on the forth tap, turn them off from right to left
-void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
-       if (!skip_leds) {
-               ergodox_board_led_off();
-               ergodox_right_led_1_off();
-               ergodox_right_led_2_off();
-               ergodox_right_led_3_off();
-               skip_leds = true;
-       }
-       switch (state->count) {
-               case 1:
-                       ergodox_right_led_3_on();
-            break;
-        case 2:
-                       ergodox_right_led_2_on();
-                       break;
-               case 3:
-                       ergodox_right_led_1_on();
-                       break;
-               case 4:
-                       ergodox_right_led_3_off();
-                       _delay_ms(50);
-                       ergodox_right_led_2_off();
-                       _delay_ms(50);
-                       ergodox_right_led_1_off();
-
-       }
-}
-
-// on the fourth tap, set the keyboard on flash state
-void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
-       if (state->count >= 4) {
-#ifdef LAYER_UNDERGLOW_LIGHTING
-        rgblight_enable();
-        rgblight_mode(1);
-        rgblight_setrgb(0xff,0x00,0x00);
-#endif
-               reset_keyboard();
-               reset_tap_dance(state);
-       }
-}
-
-void diablo_tapdance_master (qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
-    if (state->count >= 7) {
-        diablo_key_time[diablo_key] = diablo_times[0];
-        reset_tap_dance(state);
-    } else {
-        diablo_key_time[diablo_key] = diablo_times[state->count - 1];
-    }
-}
-
-void diablo_tapdance1 (qk_tap_dance_state_t *state, void *user_data) {
-    diablo_tapdance_master (state, user_data, 0);
-}
-
-void diablo_tapdance2 (qk_tap_dance_state_t *state, void *user_data) {
-    diablo_tapdance_master (state, user_data, 1);
-}
-
-void diablo_tapdance3 (qk_tap_dance_state_t *state, void *user_data) {
-    diablo_tapdance_master (state, user_data, 2);
-}
-
-void diablo_tapdance4 (qk_tap_dance_state_t *state, void *user_data) {
-    diablo_tapdance_master (state, user_data, 3);
-}
-
-
-// if the flash state didnt happen, then turn off leds, left to right
-void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
-       _delay_ms(200);
-       ergodox_right_led_1_off();
-       _delay_ms(200);
-       ergodox_right_led_2_off();
-       _delay_ms(200);
-       ergodox_right_led_3_off();
-       _delay_ms(500);
-       skip_leds = false;
-}
-
-//Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
-       //Tap one for Space, and twice for Enter
-       [SFT_CAP]     = ACTION_TAP_DANCE_DOUBLE(KC_LSHIFT, KC_CAPS),
-       // Special Z
-       [TD_DIABLO_J]  = ACTION_TAP_DANCE_DOUBLE(KC_J, S(KC_J)),
-       // Once for colin, twice for semi-colin
-       [TD_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset),
-       // Tap until you get a surprise
-       [TD_EGG] = ACTION_TAP_DANCE_FN (dance_egg),
-       //Once for Blue, Twice for Green, Thrice for Red, and four to flash
-       [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset),
-    
-    [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
-    [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
-    [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
-    [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
-
-};
-#endif
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- * 
- * 
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   = +  |  1 ! | 2 @  | 3 #  | 4 $  | 5 %  | TG(4)|           | TG(4)| 6 ^  | 7 &  |  8 * | 9 (  |  0 ) |  - _   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   TAB  |   Q  |   W  |   E  |   R  |   T  | TG(3)|           |TG(3) |   Y  |   U  |   I  |   O  |   P  |  \ |   |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Bksp  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  ' "   |
- * |--------+------+------+------+------+------| TG(2)|           | TG(2)|------+------+------+------+------+--------|
- * | Shift  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |  , < |  . > |  UP  | Shift  |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | `/SYM|  ' " | LGUI |  [ { | ] }  |                                       | SYMB |  ? / | LEFT | DOWN |RIGHT |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,--------------.       ,--------------.
- *                                        |Alt/Ap|  Win  |       | Alt  |Ctl/Esc|
- *                                 ,------|------|-------|       |------+-------+------.
- *                                 |      |      | Home  |       | PgUp |       |      |
- *                                 | Space| Bksp |-------|       |------|  DEL  |Enter |
- *                                 |      |      | End   |       | PgDn |       |      |
- *                                 `---------------------'       `---------------------'
- */
-  [BASE] = KEYMAP(
-                               KC_EQUAL,       KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       TG(MOUS),
-                               KC_TAB,         KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       TG(DIABLO),
-                               KC_BSPACE,      KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
-                KC_LSHIFT,      CTL_T(KC_Z),KC_X,       KC_C,       KC_V,       KC_B,       TG(OVERWATCH),
-                               LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
-                
-                                                                       ALT_T(KC_APPLICATION),  KC_LGUI,
-                                                            KC_HOME,
-                                                                       KC_SPACE,   KC_BSPACE,  KC_END,
-                                                                       
-                               TG(SYMB),       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,           KC_MINUS,
-                               TG(DVORAK),     KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,           KC_BSLASH,
-                                KC_H,       KC_J,       KC_K,       KC_L,       KC_SCOLON,      GUI_T(KC_QUOTE),
-                               TG(COLEMAK),    KC_N,       KC_M,       KC_COMMA,   KC_DOT,     CTL_T(KC_SLASH),KC_RSHIFT,
-                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
-                               KC_LALT,    CTL_T(KC_ESCAPE),
-                               KC_PGUP,
-                               KC_PGDOWN,  KC_DELETE,  KC_ENTER
-                       ),
-/* Keymap 1: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |O / L2|   '    |
- * |--------+------+------+------+------+------| OVER |           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[COLEMAK] = KEYMAP(  
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(MOUS),
-        KC_DELT,        KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(DIABLO),
-        KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,   KC_D,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(OVERWATCH),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LBRACKET,KC_RBRACKET,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_TRANSPARENT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             KC_NO,    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
-                          KC_H,   KC_N,   KC_E,   KC_I,   LT(MOUS, KC_O),   KC_QUOTE,
-             KC_TRANSPARENT,KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT,
-                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 2: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1  |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |S / L2|   -    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[DVORAK] = KEYMAP(  
-        // left hand
-        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   TG(MOUS),
-        KC_DELT,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(DIABLO),
-        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(OVERWATCH),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LBRACKET,KC_RBRACKET,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_TRANSPARENT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
-             KC_TRANSPARENT,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MOUS, KC_S),   KC_MINS,
-             KC_NO,KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSHIFT,
-                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-
-    /* Keymap 3: Symbol Layer
-*
-* ,--------------------------------------------------.           ,--------------------------------------------------.
-* |   ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  | F10  |   F11  |
-* |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-* | VERSION|   !  |   @  |  {   |   }  |  |   |      |           |      |  +   |   7  |   8  |   9  |  *   |   F12  |
-* |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-* |  MAKE  |   #  |   $  |  (   |   )  |  `   |------|           |------|  -   |   4  |   5  |   6  |  /   | PrtSc  |
-* |--------+------+------+------+------+------| COVE |           |      |------+------+------+------+------+--------|
-* |  RESET |   %  |   ^  |  [   |   ]  |  ~   | CUBE |           |      | NUM  |   1  |   2  |   3  |  =   |  PAUSE |
-* `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-*   |  LT0 |   &  |   *  |  :   |   ;  |                                       |   0  |   0  | NUM. | ENT  |  ENT |
-*   `----------------------------------'                                       `----------------------------------'
-*                                        ,-------------.       ,-------------.
-*                                        | RGBM | RED  |       | OFF  | SOLID|
-*                                 ,------|------|------|       |------+------+------.
-*                                 |      |      | GREEN|       |      |      |      |
-*                                 | RGB  | RGB  |------|       |------| NUM. | NUM0 |
-*                                 | DARK |BRITE | BLUE |       |      |      |      |
-*                                 `--------------------'       `--------------------'
-*/
-  [SYMB] = KEYMAP(
-                               KC_ESCAPE,KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_TRANSPARENT,
-                               M_VERSION,      KC_EXLM,    KC_AT,      KC_LCBR,    KC_RCBR,    KC_PIPE,    KC_TRANSPARENT,
-                               M_MAKE,         KC_HASH,    KC_DLR,     KC_LPRN,    KC_RPRN,    KC_GRAVE,
-                               TD(TD_FLSH),    KC_PERC,    KC_CIRC,    KC_LBRACKET,KC_RBRACKET,KC_TILD,    M_COVECUBE,
-                               KC_NO,          KC_AMPR,    KC_ASTR,    KC_COLN,    KC_SCOLON,
-                                        RGB_MOD,    RGB_0000FF,
-                                                    RGB_008000,
-                                                       RGB_VAD,    RGB_VAI,    RGB_FF0000,
-                               
-                               KC_TRANSPARENT, KC_F6,      KC_F7,      KC_F8,      KC_F9,      KC_F10,         KC_F11,
-                               KC_TRANSPARENT, KC_KP_PLUS, KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_KP_ASTERISK, KC_F12,
-                               KC_KP_MINUS,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_KP_SLASH,KC_PSCREEN,
-                               KC_TRANSPARENT, KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_EQUAL,       KC_PAUSE,
-                                            KC_KP_0,    KC_KP_0,    KC_KP_DOT,  KC_KP_ENTER,    KC_KP_ENTER,
-                               RGB_TOG,    RGB_SLD,
-                               RGB_HUI,
-                               RGB_HUD,    KC_KP_DOT,  KC_KP_0
-                       ),
-
-/* Keymap 4: Customized Overwatch Layout
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ESC  | SALT | SYMM | MORE | DOOM |      |      |           |      |  F9  | F10  | F11  |  F12 |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   F1   |  K   |  Q   |  W   |  E   |  R   |  T   |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   TAB  |  G   |  A   |  S   |  D   |  F   |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  LCTR  | LSHFT|  Z   |  X   |  C   |  M   |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |   J  |  U   |  I   |  Y   |  T   |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  O   |  P   |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | LGUI |       |      |      |      |
- *                                 |  V   | SPACE|------        |------|      | Enter|
- *                                 |      |      |  H   |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-  [OVERWATCH] = KEYMAP(
-                               KC_ESCAPE,      M_SALT,     M_SYMM,     M_MORESALT, M_DOOMFIST, KC_NO,      KC_NO,
-                               KC_F1,          KC_K,       KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,
-                               KC_TAB,         KC_G,       KC_A,       KC_S,       KC_D,       KC_F,
-                               KC_LCTL,        KC_LSHIFT,    KC_Z,       KC_X,       KC_C,       KC_M,       KC_TRANSPARENT,
-                               KC_G,           KC_U,       KC_I,       KC_Y,       KC_T,
-                                            KC_O,   KC_P,
-                                                    KC_LGUI,
-                                KC_V,   KC_SPACE,   KC_H,
-                                                                       
-                               KC_NO,          KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_NO,      KC_NO,
-                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO, KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                                            KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                               KC_NO,  KC_NO,
-                               KC_NO,
-                               KC_NO,  KC_NO,  KC_ENTER
-                       ),
-
-/* Keymap 3:
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ESC  |  V   |  D   | ALT  |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   TAB  |  S   |  I   |  F   |  M   |  T   |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |    Q   |  1   |  2   |  3   |  4   |  G   |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | NUMLOCK| NUM1 | NUM2 | NUM3 | NUM4 |  Z   |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LCTL | MAC1 | MAC2 | MAC3 | MAC4 |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |   L  |  J   |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |  G   |       |      |      |      |
- *                                 | SPACE|  Q   |------        |------|      |      |
- *                                 | SHIFT| ALT  | 0MAC |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-  [DIABLO] = KEYMAP(
-                               KC_ESCAPE,  KC_V,       KC_D,       KC_LALT,    KC_NO,      KC_NO,      KC_NO,
-                               KC_TAB,     KC_S,       KC_I,       KC_F,       KC_M,       KC_T,       KC_TRANSPARENT,
-                               KC_Q,       KC_1,       KC_2,       KC_3,       KC_4,       KC_G,
-                               KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_KP_4,    KC_Z,       KC_NO,
-                               KC_LCTL,    TD(TD_DIABLO_1),    TD(TD_DIABLO_2),    TD(TD_DIABLO_3),    TD(TD_DIABLO_4),
-                                                KC_L,   KC_J,
-                                                        KC_F,
-                    SFT_T(KC_SPACE),    ALT_T(KC_Q),    KC_DIABLO_CLEAR,
-                                                                       
-                                                                       
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                               KC_NO,  KC_NO,
-                               KC_NO,
-                               KC_NO,  KC_NO,  KC_NO
-                       ),
-
-/* Keymap 4: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | MsUp |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |MsLeft|MsDown|MsRght|      |      |------|           |------|      |      | Acc0 | Acc1 | Acc2 |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      | Play | Stop | Mute |VolDn |VolUp |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | MWUp |       |      |      |      |
- *                                 | Lclk | Rclk |------|       |------| MBn4 | MBn4 |
- *                                 |      |      | MWDn |       | Mclk |      |      |
- *                                 `--------------------'       `--------------------'
- */
-  [MOUS] = KEYMAP(
-                               KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_TRANSPARENT,
-                               KC_NO,      KC_NO,      KC_MS_UP,   KC_NO,      KC_NO,      KC_NO,      KC_TRANSPARENT,
-                               KC_NO,      KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT,KC_NO,      KC_NO,
-                               KC_NO,      KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,   KC_NO,      KC_TRANSPARENT,
-                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
-                                                                       KC_NO,KC_NO,
-                                                                       KC_MS_WH_UP,
-                                                                       KC_MS_BTN1,KC_MS_BTN2,KC_MS_WH_DOWN,
-                               
-                               KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_NO,KC_NO,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,KC_NO,
-                               KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_STOP,KC_AUDIO_MUTE,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_NO,
-                               KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
-                               KC_NO,KC_NO,
-                               KC_NO,
-                               KC_MS_BTN3,KC_MS_BTN4,KC_MS_BTN5
-                       ),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
-    // FN1 - Momentary Layer 1 (Symbols)
-    [2] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_UP),
-    [3] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_LEFT),
-    [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_DOWN),
-    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RIGHT),  
-};
-
-void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
-{
-   
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch(id) {
-        case 0:
-            if (record->event.pressed) {
-                // Output Keyboard Firmware info
-                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-                return false;
-            }
-        case 1:
-            if (record->event.pressed) {
-                // Symmentra "Left Click to win" salt
-                return MACRO( I(50),  T(ENTER), I(5), D(LSFT), T(L), U(LSFT), T(E), T(F), T(T), T(SPACE), T(C), T(L), T(I), T(C), T(K), T(SPACE), T(T), T(O), T(SPACE), T(W), T(I), T(N), D(LSFT), T(1), U(LSFT), T(ENTER), END );
-            }
-        case 2:
-            if (record->event.pressed) {
-                //salt salt salt
-                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(S), U(LSFT), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(DOT), T(DOT), T(DOT), T(ENTER), END );
-            }
-        case 3:
-            if (record->event.pressed) {
-                // your saltiness makes me hard
-                return MACRO( I(50),  T(ENTER), I(5), D(LSFT), T(Y), U(LSFT), T(O), T(U), T(R), T(SPACE), T(S), T(A), T(L), T(T), T(SPACE), T(O), T(N), T(L), T(Y), T(SPACE), T(M), T(A), T(K), T(E), T(S), T(SPACE), T(M), T(Y), T(SPACE), T(P), T(E), T(N), T(I), T(S), T(SPACE), T(T), T(H), T(A), T(T), T(SPACE), T(M), T(U), T(C), T(H), T(SPACE), T(H), T(A), T(R), T(D), T(E), T(R), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), T(E), T(V), T(E), T(N), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(A), T(G), T(G), T(R), T(E), T(S), T(S), T(I), T(V), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
-            }
-        case 4:
-            if (record->event.pressed) {
-                // make ergodox-ez-drashna-custom-teensy
-                return MACRO( I(5), T(M), T(A), T(K), T(E), T(SPACE), T(E), T(R), T(G), T(O), T(D), T(O), T(X), T(MINUS), T(E), T(Z), T(MINUS), T(D), T(R), T(A), T(S), T(H), T(N), T(A), T(MINUS), T(C), T(U), T(S), T(T), T(O), T(M), T(MINUS), T(T), T(E), T(E), T(N), T(S), T(Y), T(ENTER), END );
-            }
-        case 5:
-            if (record->event.pressed) {
-                //super secret hash
-                SEND_STRING("supersecrethash");
-                return MACRO_NONE;
-            }
-        case 6:
-            if (record->event.pressed) {
-                // Please sir, can I have some more salt
-                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(P), U(LSFT), T(L), T(E), T(A), T(S), T(E), T(SPACE), T(S), T(I), T(R), T(COMMA), T(SPACE), T(C), T(A), T(N), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(H), T(A), T(V), T(E), T(SPACE), T(S), T(O), T(M), T(E), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(S), T(A), T(L), T(T), D(LSFT), T(SLASH), U(LSFT), D(LSFT), T(1), U(LSFT), T(ENTER), END );
-            }
-            break;
-        case 7:
-        if (record->event.pressed) {
-                // DoomFisted
-                // Hey, look at me.  I'm Doomfist, and I'm overpowered!  
-                // All I do is spam punches all day!   I'm DPS, tank and 
-                // defense, rolled into one! All I need is team healing to be complete!
-                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(H), U(LSFT), T(E), T(Y), T(COMMA), T(SPACE), T(L), T(O), T(O), T(K), T(SPACE), T(A), T(T), T(SPACE), T(M), T(E), T(DOT), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), T(O), T(O), T(M), T(F), T(I), T(S), T(T), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), T(O), T(V), T(E), T(R), T(P), T(O), T(W), T(E), T(R), T(E), T(D), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(D), T(O), T(SPACE), T(I), T(S), T(SPACE), T(S), T(P), T(A), T(M), T(SPACE), T(P), T(U), T(N), T(C), T(H), T(E), T(S), T(SPACE), T(A), T(L), T(L), T(SPACE), T(D), T(A), T(Y), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), D(LSFT), T(P), U(LSFT), D(LSFT), T(S), U(LSFT), T(COMMA), T(SPACE), T(T), T(A), T(N), T(K), T(SPACE), T(A), T(N), T(D), T(SPACE), T(D), T(E), T(F), T(E), T(N), T(S), T(E), T(COMMA), T(SPACE), T(R), T(O), T(L), T(L), T(E), T(D), T(SPACE), T(I), T(N), T(T), T(O), T(SPACE), T(O), T(N), T(E), D(LSFT), T(1), U(LSFT), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(N), T(E), T(E), T(D), T(SPACE), T(I), T(S), T(SPACE), T(T), T(E), T(A), T(M), T(SPACE), T(H), T(E), T(A), T(L), T(I), T(N), T(G), T(SPACE), T(T), T(O), T(SPACE), T(B), T(E), T(SPACE), T(C), T(O), T(M), T(P), T(L), T(E), T(T), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
-            }
-        case 8: //MAC1 - Hold for rshift and } on tap
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                return MACRO(D(LSFT), END );
-            } else {
-                return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
-            }; break;
-        case 9:        //MAC1 - Hold for rshift and } on tap
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                return MACRO(D(RSFT), END );
-            } else {
-                return checktime()  ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
-            }; break;
-        case 10: //MAC2 - Hold for lctrl and [ on tap
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                return MACRO(D(LCTL), END );
-            } else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
-            }; break;
-        case 11: //MAC3 - Hold for rctrl and ] on tap
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                return MACRO(D(RCTL), END );
-            } else {
-                return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
-            }; break;
-    }
-    return MACRO_NONE;
-};
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-       switch (keycode) {
-               // dynamically generate these.
-               case EPRM:
-                       if (record->event.pressed) {
-                eeconfig_init();
-                       }
-                       return false;
-                       break;
-               case VRSN:
-                       if (record->event.pressed) {
-                               SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-                       }
-                       return false;
-                       break;
-               case RGB_SLD:
-                       if (record->event.pressed) {
-                               rgblight_mode(1);
-                       }
-                       return false;
-                       break;
-
-               case RGB_0000FF:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0x00,0xff);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_008000:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0x80,0x00);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_FF0000:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0xff,0x00,0x00);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_800080:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x80,0x00,0x80);
-                               #endif
-                       }
-                       return false;
-                       break;
-
-               case RGB_00FF90:
-                       if (record->event.pressed) {
-                               #ifdef RGBLIGHT_ENABLE
-                               rgblight_enable();
-                               rgblight_mode(1);
-                               rgblight_setrgb(0x00,0xff,0x90);
-                               #endif
-                       }
-                       return false;
-                       break;
-        case KC_DIABLO_CLEAR:
-            if (record->event.pressed) {
-                uint8_t dtime;
-                
-                for (dtime = 0; dtime < 4; dtime++) {
-                    diablo_key_time[dtime] = diablo_times[0];
-                }
-            }
-            return false;
-            break;
-            
-       }
-       return true;
-}
-
-void send_diablo_keystroke (uint8_t diablo_key) {
-    if (current_layer == DIABLO) {
-        switch (diablo_key) {
-            case 0:
-                SEND_STRING("1");
-                break;
-            case 1:
-                SEND_STRING("2");
-                break;
-            case 2:
-                SEND_STRING("3");
-                break;
-            case 3:
-                SEND_STRING("4");
-                break;
-        }
-    }
-}
-
-void run_diablo_macro_check(void) {
-    uint8_t dtime;
-    
-    for (dtime = 0; dtime < 4; dtime++) {
-        if (check_dtimer(dtime) && diablo_key_time[dtime]) {
-            diablo_timer[dtime] = timer_read();
-            send_diablo_keystroke(dtime);
-        } 
-    }
-    
-}
-
-void matrix_init_user(void) { // Runs boot tasks for keyboard
-    wait_ms(500);
-    ergodox_board_led_on();
-    wait_ms(200);
-    ergodox_right_led_1_on();
-    wait_ms(200);
-    ergodox_right_led_2_on();
-    wait_ms(200);
-    ergodox_right_led_3_on();
-    wait_ms(200);
-    ergodox_board_led_off();
-    wait_ms(200);
-    ergodox_right_led_1_off();
-    wait_ms(200);
-    ergodox_right_led_2_off();
-    wait_ms(200);
-    ergodox_right_led_3_off();
-
-    
-#ifdef LAYER_UNDERGLOW_LIGHTING
-       rgblight_enable();
-       rgblight_sethsv(195,255,255);
-#endif 
-    has_layer_changed = false;
-    
-    
-    
-};
-
-
-
-void matrix_scan_user(void) {  // runs frequently to update info
-    uint8_t modifiders = get_mods();
-    uint8_t layer = biton32(layer_state);
-       
-       if (!skip_leds) {
-               ergodox_board_led_off();
-               ergodox_right_led_1_off();
-               ergodox_right_led_2_off();
-               ergodox_right_led_3_off();
-        
-        if ( modifiders & MODS_SHIFT_MASK) {
-                ergodox_right_led_1_on();
-        }
-        if ( modifiders & MODS_CTRL_MASK) {
-                ergodox_right_led_2_on();
-        }
-        if ( modifiders & MODS_ALT_MASK) {
-                ergodox_right_led_3_on();
-        }
-        
-    }
-        
-    switch (layer) {
-        case SYMB:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (240,255,255);
-            }
-            #else
-            ergodox_right_led_3_on();
-            #endif
-            break;
-        case OVERWATCH:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (30,255,255);
-            }
-            #else
-            ergodox_right_led_2_on();
-            #endif
-            break;
-        case DIABLO:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (0,255,255);
-            }
-            #else
-            ergodox_right_led_1_on();
-            #endif
-            break;
-        case MOUS:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (60,255,255);
-            }
-            #else
-            ergodox_right_led_3_on();
-            ergodox_right_led_2_on();
-            #endif
-            break;
-        case COLEMAK:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (300,255,255);
-            }
-            #else
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            #endif
-            break;
-        case DVORAK:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (120,255,255);
-            }
-            #else
-            ergodox_right_led_2_on();
-            ergodox_right_led_1_on();
-            #endif
-            break;
-        case 7:
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (255,255,255);
-            }
-            #else
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            #endif
-            break;
-        default:
-            // Do not add anything here, as this will be ran EVERY check, and can cause a significant slowdown
-            #ifdef LAYER_UNDERGLOW_LIGHTING
-            if (has_layer_changed) {
-                rgblight_sethsv (195,255,255);
-            }
-            #endif
-            break;
-    }
-        
-    if (current_layer == layer) {
-        has_layer_changed = false;
-    } else {
-        has_layer_changed = true;
-        current_layer = layer;
-    }
-    run_diablo_macro_check();
-};
-
-
diff --git a/keyboards/ergodox/ez/keymaps/drashna/Makefile b/keyboards/ergodox/ez/keymaps/drashna/Makefile
deleted file mode 100644 (file)
index 9dfddf0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-RGBLIGHT_ENABLE = yes
-RGBLIGHT_ANIMATION = no
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/ez/keymaps/drashna/config.h b/keyboards/ergodox/ez/keymaps/drashna/config.h
deleted file mode 100644 (file)
index 258dc39..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-#include "../../config.h"
-
-
-
-// make this easy to toggle behavior, so that it can be more easily toggled
-#define LAYER_UNDERGLOW_LIGHTING  
-
-#ifdef LAYER_UNDERGLOW_LIGHTING
-#undef RGBLIGHT_ANIMATIONS
-#endif
\ No newline at end of file
diff --git a/keyboards/ergodox/ez/keymaps/drashna/keymap.c b/keyboards/ergodox/ez/keymaps/drashna/keymap.c
deleted file mode 100644 (file)
index a6e5b33..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-
-#include "keymap_german.h"
-
-#include "keymap_nordic.h"
-
-#define VERSION M(0)
-
-
-// Define layer names 
-#define BASE 0
-#define SYMB 1
-#define MOUS 2
-
-#ifdef LAYER_UNDERGLOW_LIGHTING
-bool has_layer_changed = true;
-
-#define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF)
-#define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00)
-#define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00);
-#define rgblight_set_green rgblight_setrgb(0x00, 0x00, 0xFF);
-#define rgblight_set_yellow rgblight_setrgb(0xFF, 0xFF, 0x00);
-
-
-#define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
-#define MODS_ALT_MASK  (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
-#endif  
-
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-#ifndef LAYER_UNDERGLOW_LIGHTING
-  RGB_SLD,
-#endif  
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-  [0] = KEYMAP(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,KC_LEFT,KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,KC_LSHIFT,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,ALL_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSHIFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_BSPACE,KC_END,KC_RIGHT,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,LT(2,KC_SCOLON),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),KC_RSHIFT,KC_UP,KC_DOWN,KC_LBRACKET,KC_RBRACKET,MO(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDOWN,KC_TAB,KC_ENTER),
-
-#ifdef LAYER_UNDERGLOW_LIGHTING
-  [1] = KEYMAP(KC_ESCAPE,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,VERSION,KC_EXLM,KC_AT,KC_LCBR,KC_RCBR,KC_PIPE,KC_TRANSPARENT,VRSN,KC_HASH,KC_DLR,KC_LPRN,KC_RPRN,KC_GRAVE,RESET,KC_PERC,KC_CIRC,KC_LBRACKET,KC_RBRACKET,KC_TILD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_VAD,RGB_VAI,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_UP,KC_7,KC_8,KC_9,KC_ASTR,KC_F12,KC_DOWN,KC_4,KC_5,KC_6,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_AMPR,KC_1,KC_2,KC_3,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_DOT,KC_0,KC_EQUAL,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT),
-#else
-  [1] = KEYMAP(KC_ESCAPE,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,VERSION,KC_EXLM,KC_AT,KC_LCBR,KC_RCBR,KC_PIPE,KC_TRANSPARENT,VRSN,KC_HASH,KC_DLR,KC_LPRN,KC_RPRN,KC_GRAVE,RESET,KC_PERC,KC_CIRC,KC_LBRACKET,KC_RBRACKET,KC_TILD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_MOD,KC_TRANSPARENT,KC_TRANSPARENT,RGB_VAD,RGB_VAI,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_UP,KC_7,KC_8,KC_9,KC_ASTR,KC_F12,KC_DOWN,KC_4,KC_5,KC_6,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_AMPR,KC_1,KC_2,KC_3,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_DOT,KC_0,KC_EQUAL,KC_TRANSPARENT,RGB_TOG,RGB_SLD,KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUD,RGB_HUI),
-#endif
-
-  [2] = KEYMAP(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_WWW_BACK),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_TAP_TOGGLE(1)
-};
-
-// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-#ifndef LAYER_UNDERGLOW_LIGHTING
-    case RGB_SLD:
-      if (record->event.pressed) {
-        rgblight_mode(1);
-      }
-      return false;
-      break;
-#endif
-     
-  }
-  return true;
-}
-
-
-
-
-void matrix_scan_user(void) {
-
-    uint8_t new_layer = biton32(layer_state);
-    
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    
-#ifdef LAYER_UNDERGLOW_LIGHTING
-    static uint8_t old_layer = 0;
-    uint8_t modifiders = get_mods();
-    
-    if ( modifiders & MODS_SHIFT_MASK) {
-            ergodox_right_led_1_on();
-    }
-    if ( modifiders & MODS_CTRL_MASK) {
-            ergodox_right_led_2_on();
-    }
-    if ( modifiders & MODS_ALT_MASK) {
-            ergodox_right_led_3_on();
-    }
-    
-    if (old_layer != new_layer) {
-        has_layer_changed = true; 
-        old_layer = new_layer;
-    }
-    if (has_layer_changed) {
-        switch (new_layer) {
-            case 1:
-                rgblight_set_red;
-                break;
-            case 2:
-                rgblight_set_blue;
-                break;
-            case 3:
-                rgblight_set_green;
-                break;
-            case 4:
-                rgblight_set_yellow;
-                break;
-            case 5:
-                rgblight_setrgb(0xFF, 0xFF, 0x00);
-                break;
-            case 6:
-                rgblight_setrgb(0xFF, 0xFF, 0x00);
-                break;
-            case 7:
-                rgblight_setrgb(0xFF, 0xFF, 0xFF);
-                break;
-            default:
-                rgblight_set_teal;
-                break;
-        }
-        has_layer_changed = false;
-    }
-    
-#else    
-    switch (new_layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_3_on();
-            break;
-        case 4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case 5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        case 6:
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        case 7:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        default:
-            break;
-     }
-#endif 
-};
diff --git a/keyboards/ergodox/ez/keymaps/drashna/readme.md b/keyboards/ergodox/ez/keymaps/drashna/readme.md
deleted file mode 100644 (file)
index 90fe448..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Drashna's ErgoDox EZ Underglow Mod
-
-This is based on the default Ergodox EZ keymap.
-
-This modifieds the keymay so that it uses the underglow to indicate which layer you're on, rather than the top LEDs.
-
-Default colors are "teal" for base layer, "red" for Symbols, and "green" for mouse/media.  Blue would be the next layer, if you had more.
-
-Additionally, the top LEDs are Shift/Control/Alt indicators instead (in that order). 
\ No newline at end of file
diff --git a/keyboards/ergodox/ez/keymaps/profet_80/keymap.c b/keyboards/ergodox/ez/keymaps/profet_80/keymap.c
deleted file mode 100644 (file)
index 505ff29..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |  1   |  2   | Home |       | PgUp |   3    |   4  |
- *                                 |------|------|------|       |------|--------|------|
- *                                 | Space| BkSp | End  |       | PgDn |  Tab   |Enter |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP_80(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                               KC_1,  KC_2,   KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,KC_3,   KC_4,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |------|------|------|       |------|------|------|
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP_80(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+----------.
- *                                 |      |      |      |       |      |      |          |
- *                                 |------|------|------|       |------|------|----------|
- *                                 |      |      |      |       |      |      |BrwserBack|
- *                                 `--------------------'       `------------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP_80(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                                 KC_TRNS, KC_TRNS, KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/ez/keymaps/profet_80/readme.md b/keyboards/ergodox/ez/keymaps/profet_80/readme.md
deleted file mode 100644 (file)
index 7380e34..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# ErgoDox 80 Default Configuration
-
-This is based on the default Ergodox EZ keymap.
-The difference is that this keymap supports 80 key layouts.
-If you own an 80 key Ergodox, use this as an example to get your desired keymap.
-
-**NOTE:** This layout is not physically supported by the Ergodox EZ.
-
-
-![Default80](https://i.imgur.com/P2Lga9x.png)
diff --git a/keyboards/ergodox/ez/keymaps/steno/Makefile b/keyboards/ergodox/ez/keymaps/steno/Makefile
deleted file mode 100644 (file)
index b6fb9b1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-VIRTSER_ENABLE = yes
-# Not enough interupts, so something has to go
-MOUSEKEY_ENABLE = no
diff --git a/keyboards/ergodox/ez/keymaps/steno/keymap.c b/keyboards/ergodox/ez/keymaps/steno/keymap.c
deleted file mode 100644 (file)
index 3e98309..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "sendchar.h"
-#include "virtser.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define TXBOLT 3 // TxBolt Steno Virtual Serial
-#define TXBOLT2 4 // TxBolt Steno Virtual Serial Alternative Layout
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  TX  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           | BOLT |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(TXBOLT),  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-// TxBolt Codes
-#define Sl 0b00000001
-#define Tl 0b00000010
-#define Kl 0b00000100
-#define Pl 0b00001000
-#define Wl 0b00010000
-#define Hl 0b00100000
-#define Rl 0b01000001
-#define Al 0b01000010
-#define Ol 0b01000100
-#define X  0b01001000
-#define Er 0b01010000
-#define Ur 0b01100000
-#define Fr 0b10000001
-#define Rr 0b10000010
-#define Pr 0b10000100
-#define Br 0b10001000
-#define Lr 0b10010000
-#define Gr 0b10100000
-#define Tr 0b11000001
-#define Sr 0b11000010
-#define Dr 0b11000100
-#define Zr 0b11001000
-#define NM 0b11010000
-#define GRPMASK 0b11000000
-#define GRP0 0b00000000
-#define GRP1 0b01000000
-#define GRP2 0b10000000
-#define GRP3 0b11000000
-/* Keymap 3: TxBolt (Serial)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | BKSPC  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   S  |   T  |   P  |   H  |   *  |------|           |------|   *  |   F  |   P  |   L  |   T  |   D    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   S  |   K  |   W  |   R  |   *  |      |           |      |   *  |   R  |   B  |   G  |   S  |   Z    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   A  |   O  |------|       |------|   E  |   U  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// TxBolt over Serial
-[TXBOLT] = KEYMAP(
-       KC_BSPC, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
-       KC_NO,   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),  KC_NO,  
-       KC_NO,   M(Sl),   M(Tl),   M(Pl),   M(Hl),   M(X),
-       KC_NO,   M(Sl),   M(Kl),   M(Wl),   M(Rl),   M(X),   KC_NO,
-       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-                                           KC_NO,   KC_NO,  
-                                                    KC_NO,  
-                                  M(Al),   M(Ol),   KC_NO,  
-    // right hand
-       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
-       KC_TRNS,  M(NM),   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),
-                 M(X),    M(Fr),   M(Pr),   M(Lr),   M(Tr),   M(Dr),
-       KC_NO,    M(X),    M(Rr),   M(Br),   M(Gr),   M(Sr),   M(Zr),
-                          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
-       KC_NO,   KC_NO,  
-       KC_NO,  
-       KC_NO,   M(Er),   M(Ur)
-),
-/* Keymap 4: TxBolt (Serial) Alternative
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   S  |   T  |   P  |   H  |   *  |      |           |      |   *  |   F  |   P  |   L  |   T  |   D    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   S  |   K  |   W  |   R  |   *  |------|           |------|   *  |   R  |   B  |   G  |   S  |   Z    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |   A  |   O  |                                       |   E  |   U  |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// TxBolt over Serial
-[TXBOLT2] = KEYMAP(
-       KC_NO,   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),  KC_NO,  
-       KC_NO,   M(Sl),   M(Tl),   M(Pl),   M(Hl),   M(X),   KC_NO,  
-       KC_NO,   M(Sl),   M(Kl),   M(Wl),   M(Rl),   M(X),
-       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
-       KC_NO,   KC_NO,   KC_NO,   M(Al),   M(Ol),
-                                           KC_NO,   KC_NO,  
-                                                    KC_NO,  
-                                  KC_NO,   KC_NO,   KC_NO,  
-    // right hand
-       KC_NO,    M(NM),   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),
-       KC_TRNS,  M(X),    M(Fr),   M(Pr),   M(Lr),   M(Tr),   M(Dr),
-                 M(X),    M(Rr),   M(Br),   M(Gr),   M(Sr),   M(Zr),
-       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
-                          M(Er),   M(Ur),   KC_NO,   KC_NO,   KC_NO,  
-       KC_NO,   KC_NO,  
-       KC_NO,  
-       KC_NO,   KC_NO,   KC_NO
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-uint8_t chord[4] = {0,0,0,0};
-uint8_t pressed_count = 0;
-
-void send_chord(void)
-{
-  for(uint8_t i = 0; i < 4; i++)
-  {
-    if(chord[i])
-      virtser_send(chord[i]);
-  }
-  virtser_send(0);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record)
-{
-  // We need to track keypresses in all modes, in case the user
-  // changes mode whilst pressing other keys.
-  if (record->event.pressed)
-    pressed_count++;
-  else
-    pressed_count--;
-  return true;
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-
-  if (record->event.pressed) {
-    uint8_t grp = (id & GRPMASK) >> 6;
-    chord[grp] |= id;
-  }
-  else {
-    if (pressed_count == 0) {
-      send_chord();
-      chord[0] = chord[1] = chord[2] = chord[3] = 0;
-    }
-  }
-  return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/ez/keymaps/steno/readme.md b/keyboards/ergodox/ez/keymaps/steno/readme.md
deleted file mode 100644 (file)
index d67cde2..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# ErgoDox EZ Steno Configuration
-
-This layout has a layer that uses the TxBolt Stenograph protocol over a Virtual Serial port. It requires something like Plover in order to function.
-
-In Plover, you can select TX Bolt as the Stenotype Machine, and find the COM port that was assigned. In this way, your regular keyboard will still function normally, and you can switch back and forth between the Steno and Keyboard layers.
-
-<pre><code>
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  TX  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           | BOLT |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-/* Keymap 2: Media keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-/* Keymap 3: TxBolt (Serial)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | BKSPC  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   S  |   T  |   P  |   H  |   *  |------|           |------|   *  |   F  |   P  |   L  |   T  |   D    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   S  |   K  |   W  |   R  |   *  |      |           |      |   *  |   R  |   B  |   G  |   S  |   Z    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   A  |   O  |------|       |------|   E  |   U  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-</code></pre>
diff --git a/keyboards/ergodox/ez/matrix.c b/keyboards/ergodox/ez/matrix.c
deleted file mode 100644 (file)
index 21b60a5..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
-
-Note for ErgoDox EZ customizers: Here be dragons!
-This is not a file you want to be messing with.
-All of the interesting stuff for you is under keymaps/ :)
-Love, Erez
-
-Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include "wait.h"
-#include "action_layer.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "ez.h"
-#include "i2cmaster.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include  "timer.h"
-#endif
-
-/*
- * This constant define not debouncing time in msecs, but amount of matrix
- * scan loops which should be made to get stable debounced results.
- *
- * On Ergodox matrix scan rate is relatively low, because of slow I2C.
- * Now it's only 317 scans/second, or about 3.15 msec/scan.
- * According to Cherry specs, debouncing time is 5 msec.
- *
- * And so, there is no sense to have DEBOUNCE higher than 2.
- */
-
-#ifndef DEBOUNCE
-#   define DEBOUNCE    5
-#endif
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t 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 uint8_t mcp23018_reset_loop;
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
-__attribute__ ((weak))
-void matrix_init_user(void) {}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {}
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
-  matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
-  matrix_scan_user();
-}
-
-inline
-uint8_t matrix_rows(void)
-{
-    return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
-    return MATRIX_COLS;
-}
-
-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;
-        for (uint8_t j=0; j < MATRIX_COLS; ++j) {
-            debounce_matrix[i * MATRIX_COLS + j] = 0;
-        }
-    }
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-    matrix_timer = timer_read32();
-    matrix_scan_count = 0;
-#endif
-
-    matrix_init_quantum();
-
-}
-
-void matrix_power_up(void) {
-    mcp23018_status = init_mcp23018();
-
-    unselect_rows();
-    init_cols();
-
-    // initialize matrix state: all keys off
-    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-        matrix[i] = 0;
-    }
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-    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(uint8_t row) {
-  matrix_row_t result = 0;
-  for (uint8_t j=0; j < MATRIX_COLS; ++j) {
-    if (debounce_matrix[row * MATRIX_COLS + j]) {
-      --debounce_matrix[row * MATRIX_COLS + j];
-    } else {
-      result |= (1 << j);
-    }
-  }
-  return result;
-}
-
-// Report changed keys in the given row.  Resets the debounce countdowns
-// corresponding to each set bit in 'change' to DEBOUNCE.
-void debounce_report(matrix_row_t change, uint8_t row) {
-  for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
-    if (change & (1 << i)) {
-      debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
-    }
-  }
-}
-
-uint8_t matrix_scan(void)
-{
-    if (mcp23018_status) { // if there was an error
-        if (++mcp23018_reset_loop == 0) {
-            // 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");
-                ergodox_blink_all_leds();
-            }
-        }
-    }
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-    matrix_scan_count++;
-
-    uint32_t timer_now = timer_read32();
-    if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
-        print("matrix scan frequency: ");
-        pdec(matrix_scan_count);
-        print("\n");
-
-        matrix_timer = timer_now;
-        matrix_scan_count = 0;
-    }
-#endif
-
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        select_row(i);
-        wait_us(30);  // without this wait read unstable value.
-        matrix_row_t mask = debounce_mask(i);
-        matrix_row_t cols = (read_cols(i) & mask) | (matrix[i] & ~mask);
-        debounce_report(cols ^ matrix[i], i);
-        matrix[i] = cols;
-
-        unselect_rows();
-    }
-
-    matrix_scan_quantum();
-
-    return 1;
-}
-
-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
-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;
-}
-
-/* Column pin configuration
- *
- * Teensy
- * col: 0   1   2   3   4   5
- * pin: F0  F1  F4  F5  F6  F7
- *
- * MCP23018
- * col: 0   1   2   3   4   5
- * pin: B5  B4  B3  B2  B1  B0
- */
-static void  init_cols(void)
-{
-    // init on mcp23018
-    // not needed, already done as part of init_mcp23018()
-
-    // init on teensy
-    // Input with pull-up(DDR:0, PORT:1)
-    DDRF  &= ~(1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
-    PORTF |=  (1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
-}
-
-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);    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;
-        out:
-            i2c_stop();
-            return data;
-        }
-    } else {
-        // read from teensy
-        return
-            (PINF&(1<<0) ? 0 : (1<<0)) |
-            (PINF&(1<<1) ? 0 : (1<<1)) |
-            (PINF&(1<<4) ? 0 : (1<<2)) |
-            (PINF&(1<<5) ? 0 : (1<<3)) |
-            (PINF&(1<<6) ? 0 : (1<<4)) |
-            (PINF&(1<<7) ? 0 : (1<<5)) ;
-    }
-}
-
-/* Row pin configuration
- *
- * Teensy
- * row: 7   8   9   10  11  12  13
- * pin: B0  B1  B2  B3  D2  D3  C6
- *
- * MCP23018
- * row: 0   1   2   3   4   5   6
- * pin: A0  A1  A2  A3  A4  A5  A6
- */
-static void unselect_rows(void)
-{
-    // unselect on mcp23018
-    if (mcp23018_status) { // if there was an error
-        // 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<<7)
-                          );                            if (mcp23018_status) goto out;
-    out:
-        i2c_stop();
-    }
-
-    // unselect on teensy
-    // Hi-Z(DDR:0, PORT:0) to unselect
-    DDRB  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
-    PORTB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
-    DDRD  &= ~(1<<2 | 1<<3);
-    PORTD &= ~(1<<2 | 1<<3);
-    DDRC  &= ~(1<<6);
-    PORTC &= ~(1<<6);
-}
-
-static void select_row(uint8_t row)
-{
-    if (row < 7) {
-        // select on mcp23018
-        if (mcp23018_status) { // if there was an error
-            // do nothing
-        } 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<<7)
-                              );                                if (mcp23018_status) goto out;
-        out:
-            i2c_stop();
-        }
-    } else {
-        // select on teensy
-        // Output low(DDR:1, PORT:0) to select
-        switch (row) {
-            case 7:
-                DDRB  |= (1<<0);
-                PORTB &= ~(1<<0);
-                break;
-            case 8:
-                DDRB  |= (1<<1);
-                PORTB &= ~(1<<1);
-                break;
-            case 9:
-                DDRB  |= (1<<2);
-                PORTB &= ~(1<<2);
-                break;
-            case 10:
-                DDRB  |= (1<<3);
-                PORTB &= ~(1<<3);
-                break;
-            case 11:
-                DDRD  |= (1<<2);
-                PORTD &= ~(1<<3);
-                break;
-            case 12:
-                DDRD  |= (1<<3);
-                PORTD &= ~(1<<3);
-                break;
-            case 13:
-                DDRC  |= (1<<6);
-                PORTC &= ~(1<<6);
-                break;
-        }
-    }
-}
-
diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk
deleted file mode 100644 (file)
index e9bfb13..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean, 
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-
-# # project specific files
-SRC = twimaster.c \
-         matrix.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 Size in *bytes*
-#   Teensy halfKay   512
-#   Teensy++ halfKay 1024
-#   Atmel DFU loader 4096
-#   LUFA bootloader  4096
-#   USBaspLoader     2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
-
-# Build Options
-#   comment out to disable the options.
-#
-
-SLEEP_LED_ENABLE = no
-API_SYSEX_ENABLE = no
-RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ergodox/ez/twimaster.c b/keyboards/ergodox/ez/twimaster.c
deleted file mode 100644 (file)
index f91c08e..0000000
+++ /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/ergodox/ez/util/compile_keymap.py b/keyboards/ergodox/ez/util/compile_keymap.py
deleted file mode 100644 (file)
index 7076a6e..0000000
+++ /dev/null
@@ -1,710 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Compiler for keymap.c files
-
-This scrip will generate a keymap.c file from a simple
-markdown file with a specific layout.
-
-Usage:
-    python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
-"""
-from __future__ import division
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import os
-import io
-import re
-import sys
-import json
-import unicodedata
-import collections
-import itertools as it
-
-PY2 = sys.version_info.major == 2
-
-if PY2:
-    chr = unichr
-
-
-KEYBOARD_LAYOUTS = {
-    # These map positions in the parsed layout to
-    # positions in the KEYMAP MATRIX
-    'ergodox_ez': [
-        [ 0,  1,  2,  3,  4,  5,  6],  [38, 39, 40, 41, 42, 43, 44],
-        [ 7,  8,  9, 10, 11, 12, 13],  [45, 46, 47, 48, 49, 50, 51],
-        [14, 15, 16, 17, 18, 19    ],  [    52, 53, 54, 55, 56, 57],
-        [20, 21, 22, 23, 24, 25, 26],  [58, 59, 60, 61, 62, 63, 64],
-        [27, 28, 29, 30, 31        ],  [        65, 66, 67, 68, 69],
-        [                    32, 33],  [70, 71                    ],
-        [                        34],  [72                        ],
-        [                35, 36, 37],  [73, 74, 75                ],
-    ]
-}
-
-ROW_INDENTS = {
-    'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
-}
-
-BLANK_LAYOUTS = [
-# Compact Layout
-"""
-.------------------------------------.------------------------------------.
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-|     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- |    |    |    |    |    |                     !    |    |    |    |    |
- '------------------------'                     '------------------------'
-                        .-----------. .-----------.
-                        |     |     | !     |     |
-                  .-----+-----+-----! !-----+-----+-----.
-                  !     !     |     | !     |     !     !
-                  !     !     !-----! !-----!     !     !
-                  |     |     |     | !     |     |     |
-                  '-----------------' '-----------------'
-""",
-
-# Wide Layout
-"""
-.---------------------------------------------. .---------------------------------------------.
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
-|       |     |     |     |     |     |-------! !-------!     |     |     |     |     |       |
-!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
- |      |     |     |     |     |                             !     |     |     |     |      |
- '------------------------------'                             '------------------------------'
-                              .---------------. .---------------.
-                              |       |       | !       |       |
-                      .-------+-------+-------! !-------+-------+-------.
-                      !       !       |       | !       |       !       !
-                      !       !       !-------! !-------!       !       !
-                      |       |       |       | !       |       |       |
-                      '-----------------------' '-----------------------'
-""",
-]
-
-
-DEFAULT_CONFIG = {
-    "keymaps_includes": [
-        "keymap_common.h",
-    ],
-    'filler': "-+.'!:x",
-    'separator': "|",
-    'default_key_prefix': ["KC_"],
-}
-
-
-SECTIONS = [
-    'layout_config',
-    'layers',
-]
-
-
-#       Markdown Parsing
-
-ONELINE_COMMENT_RE = re.compile(r"""
-    ^                       # comment must be at the start of the line
-    \s*                     # arbitrary whitespace
-    //                      # start of the comment
-    (.*)                    # the comment
-    $                       # until the end of line
-""", re.MULTILINE | re.VERBOSE
-)
-
-INLINE_COMMENT_RE = re.compile(r"""
-    ([\,\"\[\]\{\}\d])      # anythig that might end a expression
-    \s+                     # comment must be preceded by whitespace
-    //                      # start of the comment
-    \s                      # and succeded by whitespace
-    (?:[^\"\]\}\{\[]*)      # the comment (except things which might be json)
-    $                       # until the end of line
-""", re.MULTILINE | re.VERBOSE)
-
-TRAILING_COMMA_RE = re.compile(r"""
-    ,                       # the comma
-    (?:\s*)                 # arbitrary whitespace
-    $                       # only works if the trailing comma is followed by newline
-    (\s*)                   # arbitrary whitespace
-    ([\]\}])                # end of an array or object
-""", re.MULTILINE | re.VERBOSE)
-
-
-def loads(raw_data):
-    if isinstance(raw_data, bytes):
-        raw_data = raw_data.decode('utf-8')
-
-    raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
-    raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
-    raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
-    return json.loads(raw_data)
-
-
-def parse_config(path):
-    def reset_section():
-        section.update({
-            'name': section.get('name', ""),
-            'sub_name': "",
-            'start_line': -1,
-            'end_line': -1,
-            'code_lines': [],
-        })
-
-    def start_section(line_index, line):
-        end_section()
-        if line.startswith("# "):
-            name = line[2:]
-        elif line.startswith("## "):
-            name = line[3:]
-        else:
-            name = ""
-
-        name = name.strip().replace(" ", "_").lower()
-        if name in SECTIONS:
-            section['name'] = name
-        else:
-            section['sub_name'] = name
-        section['start_line'] = line_index
-
-    def end_section():
-        if section['start_line'] >= 0:
-            if section['name'] == 'layout_config':
-                config.update(loads("\n".join(
-                    section['code_lines']
-                )))
-            elif section['sub_name'].startswith('layer'):
-                layer_name = section['sub_name']
-                config['layer_lines'][layer_name] = section['code_lines']
-
-        reset_section()
-
-    def amend_section(line_index, line):
-        section['end_line'] = line_index
-        section['code_lines'].append(line)
-
-    config = DEFAULT_CONFIG.copy()
-    config.update({
-        'layer_lines': collections.OrderedDict(),
-        'macro_ids': {'UM'},
-        'unicode_macros': {},
-    })
-
-    section = {}
-    reset_section()
-
-    with io.open(path, encoding="utf-8") as fh:
-        for i, line in enumerate(fh):
-            if line.startswith("#"):
-                start_section(i, line)
-            elif line.startswith("    "):
-                amend_section(i, line[4:])
-            else:
-                # TODO: maybe parse description
-                pass
-
-    end_section()
-    assert 'layout' in config
-    return config
-
-#       header file parsing
-
-IF0_RE = re.compile(r"""
-    ^
-    #if 0
-    $.*?
-    #endif
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-COMMENT_RE = re.compile(r"""
-    /\*
-    .*?
-    \*/"
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def read_header_file(path):
-    with io.open(path, encoding="utf-8") as fh:
-        data = fh.read()
-    data, _ = COMMENT_RE.subn("", data)
-    data, _ = IF0_RE.subn("", data)
-    return data
-
-
-def regex_partial(re_str_fmt, flags):
-    def partial(*args, **kwargs):
-        re_str = re_str_fmt.format(*args, **kwargs)
-        return re.compile(re_str, flags)
-    return partial
-
-
-KEYDEF_REP = regex_partial(r"""
-    #define
-    \s
-    (
-        (?:{})          # the prefixes
-        (?:\w+)         # the key name
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_RE = re.compile(r"""
-    (
-        enum
-        \s\w+\s
-        \{
-        .*?             # the enum content
-        \}
-        ;
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_KEY_REP = regex_partial(r"""
-    (
-        {}              # the prefixes
-        \w+             # the key name
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def parse_keydefs(config, data):
-    prefix_options = "|".join(config['key_prefixes'])
-    keydef_re = KEYDEF_REP(prefix_options)
-    enum_key_re = ENUM_KEY_REP(prefix_options)
-    for match in keydef_re.finditer(data):
-        yield match.groups()[0]
-
-    for enum_match in ENUM_RE.finditer(data):
-        enum = enum_match.groups()[0]
-        for key_match in enum_key_re.finditer(enum):
-            yield key_match.groups()[0]
-
-
-def parse_valid_keys(config, out_path):
-    basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
-    dirpaths = []
-    subpaths = []
-    while len(subpaths) < 6:
-        path = os.path.join(basepath, *subpaths)
-        dirpaths.append(path)
-        dirpaths.append(os.path.join(path, "tmk_core", "common"))
-        dirpaths.append(os.path.join(path, "quantum"))
-        subpaths.append('..')
-
-    includes = set(config['keymaps_includes'])
-    includes.add("keycode.h")
-
-    valid_keycodes = set()
-    for dirpath, include in it.product(dirpaths, includes):
-        include_path = os.path.join(dirpath, include)
-        if os.path.exists(include_path):
-            header_data = read_header_file(include_path)
-            valid_keycodes.update(
-                parse_keydefs(config, header_data)
-            )
-    return valid_keycodes
-
-
-#       Keymap Parsing
-
-def iter_raw_codes(layer_lines, filler, separator):
-    filler_re = re.compile("[" + filler + " ]")
-    for line in layer_lines:
-        line, _ = filler_re.subn("", line.strip())
-        if not line:
-            continue
-        codes = line.split(separator)
-        for code in codes[1:-1]:
-            yield code
-
-
-def iter_indexed_codes(raw_codes, key_indexes):
-    key_rows = {}
-    key_indexes_flat = []
-
-    for row_index, key_indexes in enumerate(key_indexes):
-        for key_index in key_indexes:
-            key_rows[key_index] = row_index
-        key_indexes_flat.extend(key_indexes)
-    assert len(raw_codes) == len(key_indexes_flat)
-    for raw_code, key_index in zip(raw_codes, key_indexes_flat):
-        # we keep track of the row mostly for layout purposes
-        yield raw_code, key_index, key_rows[key_index]
-
-
-LAYER_CHANGE_RE = re.compile(r"""
-    (DF|TG|MO)\(\d+\)
-""", re.VERBOSE)
-
-
-MACRO_RE = re.compile(r"""
-    M\(\w+\)
-""", re.VERBOSE)
-
-
-UNICODE_RE = re.compile(r"""
-    U[0-9A-F]{4}
-""", re.VERBOSE)
-
-
-NON_CODE = re.compile(r"""
-    ^[^A-Z0-9_]$
-""", re.VERBOSE)
-
-
-def parse_uni_code(raw_code):
-    macro_id = "UC_" + (
-        unicodedata.name(raw_code)
-        .replace(" ", "_")
-        .replace("-", "_")
-    )
-    code = "M({})".format(macro_id)
-    uc_hex = "{:04X}".format(ord(raw_code))
-    return code, macro_id, uc_hex
-
-
-def parse_key_code(raw_code, key_prefixes, valid_keycodes):
-    if raw_code in valid_keycodes:
-        return raw_code
-
-    for prefix in key_prefixes:
-        code = prefix + raw_code
-        if code in valid_keycodes:
-            return code
-
-
-def parse_code(raw_code, key_prefixes, valid_keycodes):
-    if not raw_code:
-        return 'KC_TRNS', None, None
-
-    if LAYER_CHANGE_RE.match(raw_code):
-        return raw_code, None, None
-
-    if MACRO_RE.match(raw_code):
-        macro_id = raw_code[2:-1]
-        return raw_code, macro_id, None
-
-    if UNICODE_RE.match(raw_code):
-        hex_code = raw_code[1:]
-        return parse_uni_code(chr(int(hex_code, 16)))
-
-    if NON_CODE.match(raw_code):
-        return parse_uni_code(raw_code)
-
-    code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
-    return code, None, None
-
-
-def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
-    keymap = {}
-    raw_codes = list(iter_raw_codes(
-        layer_lines, config['filler'], config['separator']
-    ))
-    indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
-    key_prefixes = config['key_prefixes']
-    for raw_code, key_index, row_index in indexed_codes:
-        code, macro_id, uc_hex = parse_code(
-            raw_code, key_prefixes, valid_keycodes
-        )
-        # TODO: line numbers for invalid codes
-        err_msg = "Could not parse key '{}' on row {}".format(
-            raw_code, row_index
-        )
-        assert code is not None, err_msg
-        # print(repr(raw_code), repr(code), macro_id, uc_hex)
-        if macro_id:
-            config['macro_ids'].add(macro_id)
-        if uc_hex:
-            config['unicode_macros'][macro_id] = uc_hex
-        keymap[key_index] = (code, row_index)
-    return keymap
-
-
-def parse_keymaps(config, valid_keycodes):
-    keymaps = collections.OrderedDict()
-    key_indexes = config.get(
-        'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
-    )
-    # TODO: maybe validate key_indexes
-
-    for layer_name, layer_lines, in config['layer_lines'].items():
-        keymaps[layer_name] = parse_keymap(
-            config, key_indexes, layer_lines, valid_keycodes
-        )
-    return keymaps
-
-#       keymap.c output
-
-USERCODE = """
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case L1:
-            ergodox_right_led_1_on();
-            break;
-        case L2:
-            ergodox_right_led_2_on();
-            break;
-        case L3:
-            ergodox_right_led_3_on();
-            break;
-        case L4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case L5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        // case L6:
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        // case L7:
-        //     ergodox_right_led_1_on();
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-};
-"""
-
-MACROCODE = """
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {{
-    if (hex == 0x0) {{
-        return KC_P0;
-    }}
-    if (hex < 0xA) {{
-        return KC_P1 + (hex - 0x1);
-    }}
-    return KC_A + (hex - 0xA);
-}}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {{
-    switch (unicode_mode) {{
-    case UC_MODE_WIN:
-        register_code(KC_LALT);
-
-        register_code(KC_PPLS);
-        unregister_code(KC_PPLS);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LALT);
-        break;
-    case UC_MODE_LINUX:
-        register_code(KC_LCTL);
-        register_code(KC_LSFT);
-
-        register_code(KC_U);
-        unregister_code(KC_U);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LCTL);
-        unregister_code(KC_LSFT);
-        break;
-    case UC_MODE_OSX:
-        break;
-    }}
-}}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
-    if (!record->event.pressed) {{
-        return MACRO_NONE;
-    }}
-    // MACRODOWN only works in this function
-    switch(id) {{
-        case UM:
-            unicode_mode = (unicode_mode + 1) % 2;
-            break;
-{macro_cases}
-{unicode_macro_cases}
-        default:
-            break;
-    }}
-    return MACRO_NONE;
-}};
-"""
-
-
-UNICODE_MACRO_TEMPLATE = """
-case {macro_id}:
-    unicode_action_function(0x{hi:02x}, 0x{lo:02x});
-    break;
-""".strip()
-
-
-def unicode_macro_cases(config):
-    for macro_id, uc_hex in config['unicode_macros'].items():
-        hi = int(uc_hex, 16) >> 8
-        lo = int(uc_hex, 16) & 0xFF
-        unimacro_keys = ", ".join(
-            "T({})".format(
-                "KP_" + digit if digit.isdigit() else digit
-            ) for digit in uc_hex
-        )
-        yield UNICODE_MACRO_TEMPLATE.format(
-            macro_id=macro_id, hi=hi, lo=lo
-        )
-
-
-def iter_keymap_lines(keymap, row_indents=None):
-    col_widths = {}
-    col = 0
-    # first pass, figure out the column widths
-    prev_row_index = None
-    for code, row_index in keymap.values():
-        if row_index != prev_row_index:
-            col = 0
-            if row_indents:
-                col = row_indents[row_index]
-        col_widths[col] = max(len(code), col_widths.get(col, 0))
-        prev_row_index = row_index
-        col += 1
-
-    # second pass, yield the cell values
-    col = 0
-    prev_row_index = None
-    for key_index in sorted(keymap):
-        code, row_index = keymap[key_index]
-        if row_index != prev_row_index:
-            col = 0
-            yield "\n"
-            if row_indents:
-                for indent_col in range(row_indents[row_index]):
-                    pad = " " * (col_widths[indent_col] - 4)
-                    yield (" /*-*/" + pad)
-                col = row_indents[row_index]
-        else:
-            yield pad
-        yield " {}".format(code)
-        if key_index < len(keymap) - 1:
-            yield ","
-            # This will be yielded on the next iteration when
-            # we know that we're not at the end of a line.
-            pad = " " * (col_widths[col] - len(code))
-        prev_row_index = row_index
-        col += 1
-
-
-def iter_keymap_parts(config, keymaps):
-    # includes
-    for include_path in config['keymaps_includes']:
-        yield '#include "{}"\n'.format(include_path)
-
-    yield "\n"
-
-    # definitions
-    for i, macro_id in enumerate(sorted(config['macro_ids'])):
-        yield "#define {} {}\n".format(macro_id, i)
-
-    yield "\n"
-
-    for i, layer_name in enumerate(config['layer_lines']):
-        yield '#define L{0:<3} {0:<5}  // {1}\n'.format(i, layer_name)
-
-    yield "\n"
-
-    # keymaps
-    yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
-
-    for i, layer_name in enumerate(config['layer_lines']):
-        # comment
-        layer_lines = config['layer_lines'][layer_name]
-        prefixed_lines = " * " + " * ".join(layer_lines)
-        yield "/*\n{} */\n".format(prefixed_lines)
-
-        # keymap codes
-        keymap = keymaps[layer_name]
-        row_indents = ROW_INDENTS.get(config['layout'])
-        keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
-        yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines)
-
-    yield "};\n\n"
-
-    # no idea what this is for
-    yield "const uint16_t PROGMEM fn_actions[] = {};\n"
-
-    # macros
-    yield MACROCODE.format(
-        macro_cases="",
-        unicode_macro_cases="\n".join(unicode_macro_cases(config)),
-    )
-
-    # TODO: dynamically create blinking lights
-    yield USERCODE
-
-
-def main(argv=sys.argv[1:]):
-    if not argv or '-h' in argv or '--help' in argv:
-        print(__doc__)
-        return 0
-
-    in_path = os.path.abspath(argv[0])
-    if not os.path.exists(in_path):
-        print("No such file '{}'".format(in_path))
-        return 1
-
-    if len(argv) > 1:
-        out_path = os.path.abspath(argv[1])
-    else:
-        dirname = os.path.dirname(in_path)
-        out_path = os.path.join(dirname, "keymap.c")
-
-    config = parse_config(in_path)
-    valid_keys = parse_valid_keys(config, out_path)
-    keymaps = parse_keymaps(config, valid_keys)
-
-    with io.open(out_path, mode="w", encoding="utf-8") as fh:
-        for part in iter_keymap_parts(config, keymaps):
-            fh.write(part)
-
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/keyboards/ergodox/ez/util/readme.md b/keyboards/ergodox/ez/util/readme.md
deleted file mode 100644 (file)
index 26c5e5d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# ErgoDox EZ Utilities
-
-The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option.
diff --git a/keyboards/ergodox/infinity/MEMO.txt b/keyboards/ergodox/infinity/MEMO.txt
deleted file mode 100644 (file)
index e2886aa..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-flabbergast's TMK/ChibiOS port
-==============================
-2015/10/16
-
-
-Build
------
-$ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git
-
-$ cd tmk_keyboard
-$ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
-or
-$ cd tmk_keyboard/tmk_core/tool/chibios
-$ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
-
-$ cd tmk_keyboard/keyboard/infinity_chibios
-$ make
-
-
-
-
-Chibios Configuration
----------------------
-halconf.h: for HAL configuration
-    placed in project directory
-    read in chibios/os/hal/hal.mk
-    included in chibios/os/hal/include/hal.h
-mcuconf.h: for MCU configuration
-    placed in project directory
-    included in halconf.h
-
-
-Chibios Term
-------------
-PAL = Port Abstraction Layer
-    palWritePad
-    palReadPad
-    palSetPad
-    chibios/os/hal/include/pal.h
-
-LLD = Low Level Driver
-
-
-Makefile
---------
-    #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
-    MCU_FAMILY = KINETIS
-    MCU_SERIES = KL2x
-
-    # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
-    #   or <this_dir>/ld/
-    MCU_LDSCRIPT = MKL26Z64
-
-    #  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
-    MCU_STARTUP = kl2x
-
-    # Board: it should exist either in <chibios>/os/hal/boards/
-    #  or <this_dir>/boards
-    BOARD = PJRC_TEENSY_LC
-
-    MCU  = cortex-m0
-
-    # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
-    ARMV = 6
-
-
-halconf.h
----------
-
-
-mcuconf.h
----------
-
-
-chconf.h
---------
-
-
-ld script
----------
---- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld     2015-10-15 09:08:58.732904304 +0900
-+++ ld/MKL26Z64.ld      2015-10-15 08:48:06.430215496 +0900
-@@ -27,7 +27,8 @@
- {
-   flash0   :  org = 0x00000000,  len = 0xc0
-   flashcfg :  org = 0x00000400,  len = 0x10
--  flash    :  org = 0x00000410,  len = 64k - 0x410
-+  flash    :  org = 0x00000410,  len = 62k - 0x410
-+  eeprom_emu : org = 0x0000F800, len = 2k
-   ram      :  org = 0x1FFFF800,  len = 8k
- }
-
-@@ -35,6 +36,10 @@
- __ram_size__            = LENGTH(ram);
- __ram_end__             = __ram_start__ + __ram_size__;
-
-+__eeprom_workarea_start__ = ORIGIN(eeprom_emu);
-+__eeprom_workarea_size__  = LENGTH(eeprom_emu);
-+__eeprom_workarea_end__   = __eeprom_workarea_start__ + __eeprom_workarea_size__;
-+
- SECTIONS
- {
-   . = 0;
-
-
-
-Configuration/Startup for Infinity 60%
---------------------------------------
-Configuration:
-
-
-Clock:
-Inifinity   
-    FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz
-    Clock dividor:
-    SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock
-    SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock
-    SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock
-    Internal reference clock:
-    MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL
-    MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable
-    FLL multipilication:
-    MCG_C4[DMX32] = 1
-    MCG_C4[DRST_DRS] = 01   FLL factor 1464 * 32.768kHz = 48MHz
-
-chibios/os/hal/ports/KINETIS/K20x/hal_lld.c
-    k20x_clock_init(): called in __early_init() defined in board.c
-        disable watchdog and configure clock
-
-        configurable macros:
-        KINETIS_NO_INIT: whether init or not
-        KINETIS_MCG_MODE: clock mode   
-            KINETIS_MCG_MODE_FEI
-            KINETIS_MCG_MODE_PEE
-                hal/ports/KINETIS/K20x/hal_lld.h
-            
-
-chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h
-    PALConfig pal_default_config
-    boardInit()
-    __early_init()
-    macro definitions for board infos, freq and mcu type
-
-chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c
-
-USB
-
-
-Startup
--------
-    common/ports/ARMCMx/GCC/crt0_v[67]m.s
-        Reset_Handler: startup code
-    common/ports/ARMCMx/GCC/crt1.c
-        __core_init(): weak
-        __early_init(): weak
-        __late_init(): weak
-        __default_exit(): weak
-            called from Reset_Handler of crt0
-    common/ports/ARMCMx/GCC/vector.c
-    common/ports/ARMCMx/GCC/ld/*.ld
-
-chibios/os/common/ports/ARMCMx/compilers/GCC/
-├── crt0_v6m.s
-├── crt0_v7m.s
-├── crt1.c
-├── ld
-│   ├── MK20DX128BLDR3.ld
-│   ├── MK20DX128BLDR4.ld
-│   ├── MK20DX128.ld
-│   ├── MK20DX256.ld
-│   ├── MKL25Z128.ld
-│   ├── MKL26Z128.ld
-│   ├── MKL26Z64.ld
-│   └── STM32L476xG.ld
-├── mk
-│   ├── startup_k20x5.mk
-│   ├── startup_k20x7.mk
-│   ├── startup_k20x.mk
-│   ├── startup_kl2x.mk
-│   └── startup_stm32l4xx.mk
-├── rules.ld
-├── rules.mk
-└── vectors.c
-
-chibios/os/hal/
-├── boards
-│   ├── FREESCALE_FREEDOM_K20D50M
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── MCHCK_K20
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── PJRC_TEENSY_3
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── PJRC_TEENSY_3_1
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── PJRC_TEENSY_LC
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── readme.txt
-│   ├── simulator
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   └── board.mk
-│   ├── ST_NUCLEO_F030R8
-│   │   ├── board.c
-│   │   ├── board.h
-│   │   ├── board.mk
-│   │   └── cfg
-│   │       └── board.chcfg
-├── hal.mk
-├── include
-│   ├── adc.h
-│   ├── can.h
-│   ├── dac.h
-│   ├── ext.h
-│   ├── gpt.h
-│   ├── hal_channels.h
-│   ├── hal_files.h
-│   ├── hal.h
-│   ├── hal_ioblock.h
-│   ├── hal_mmcsd.h
-│   ├── hal_queues.h
-│   ├── hal_streams.h
-│   ├── i2c.h
-│   ├── i2s.h
-│   ├── icu.h
-│   ├── mac.h
-│   ├── mii.h
-│   ├── mmc_spi.h
-│   ├── pal.h
-│   ├── pwm.h
-│   ├── rtc.h
-│   ├── sdc.h
-│   ├── serial.h
-│   ├── serial_usb.h
-│   ├── spi.h
-│   ├── st.h
-│   ├── uart.h
-│   └── usb.h
-├── lib
-│   └── streams
-│       ├── chprintf.c
-│       ├── chprintf.h
-│       ├── memstreams.c
-│       ├── memstreams.h
-│       ├── nullstreams.c
-│       └── nullstreams.h
-├── osal
-│   ├── nil
-│   │   ├── osal.c
-│   │   ├── osal.h
-│   │   └── osal.mk
-│   ├── os-less
-│   │   └── ARMCMx
-│   │       ├── osal.c
-│   │       ├── osal.h
-│   │       └── osal.mk
-│   └── rt
-│       ├── osal.c
-│       ├── osal.h
-│       └── osal.mk
-├── ports
-│   ├── AVR
-│   ├── common
-│   │   └── ARMCMx
-│   │       ├── mpu.h
-│   │       ├── nvic.c
-│   │       └── nvic.h
-│   ├── KINETIS
-│   │   ├── K20x
-│   │   │   ├── hal_lld.c
-│   │   │   ├── hal_lld.h
-│   │   │   ├── kinetis_registry.h
-│   │   │   ├── platform.dox
-│   │   │   ├── platform.mk
-│   │   │   ├── pwm_lld.c
-│   │   │   ├── pwm_lld.h
-│   │   │   ├── spi_lld.c
-│   │   │   └── spi_lld.h
-│   │   ├── KL2x
-│   │   │   ├── hal_lld.c
-│   │   │   ├── hal_lld.h
-│   │   │   ├── kinetis_registry.h
-│   │   │   ├── platform.mk
-│   │   │   ├── pwm_lld.c
-│   │   │   └── pwm_lld.h
-│   │   ├── LLD
-│   │   │   ├── adc_lld.c
-│   │   │   ├── adc_lld.h
-│   │   │   ├── ext_lld.c
-│   │   │   ├── ext_lld.h
-│   │   │   ├── gpt_lld.c
-│   │   │   ├── gpt_lld.h
-│   │   │   ├── i2c_lld.c
-│   │   │   ├── i2c_lld.h
-│   │   │   ├── pal_lld.c
-│   │   │   ├── pal_lld.h
-│   │   │   ├── serial_lld.c
-│   │   │   ├── serial_lld.h
-│   │   │   ├── st_lld.c
-│   │   │   ├── st_lld.h
-│   │   │   ├── usb_lld.c
-│   │   │   └── usb_lld.h
-│   │   └── README.md
-│   ├── LPC
-│   ├── simulator
-│   └── STM32
-├── src
-│   ├── adc.c
-│   ├── can.c
-│   ├── dac.c
-│   ├── ext.c
-│   ├── gpt.c
-│   ├── hal.c
-│   ├── hal_mmcsd.c
-│   ├── hal_queues.c
-│   ├── i2c.c
-│   ├── i2s.c
-│   ├── icu.c
-│   ├── mac.c
-│   ├── mmc_spi.c
-│   ├── pal.c
-│   ├── pwm.c
-│   ├── rtc.c
-│   ├── sdc.c
-│   ├── serial.c
-│   ├── serial_usb.c
-│   ├── spi.c
-│   ├── st.c
-│   ├── uart.c
-│   └── usb.c
-└── templates
-    ├── adc_lld.c
-    ├── adc_lld.h
-    ├── can_lld.c
-    ├── can_lld.h
-    ├── dac_lld.c
-    ├── dac_lld.h
-    ├── ext_lld.c
-    ├── ext_lld.h
-    ├── gpt_lld.c
-    ├── gpt_lld.h
-    ├── halconf.h
-    ├── hal_lld.c
-    ├── hal_lld.h
-    ├── i2c_lld.c
-    ├── i2c_lld.h
-    ├── i2s_lld.c
-    ├── i2s_lld.h
-    ├── icu_lld.c
-    ├── icu_lld.h
-    ├── mac_lld.c
-    ├── mac_lld.h
-    ├── mcuconf.h
-    ├── osal
-    │   ├── osal.c
-    │   ├── osal.h
-    │   └── osal.mk
-    ├── pal_lld.c
-    ├── pal_lld.h
-    ├── platform.mk
-    ├── pwm_lld.c
-    ├── pwm_lld.h
-    ├── rtc_lld.c
-    ├── rtc_lld.h
-    ├── sdc_lld.c
-    ├── sdc_lld.h
-    ├── serial_lld.c
-    ├── serial_lld.h
-    ├── spi_lld.c
-    ├── spi_lld.h
-    ├── st_lld.c
-    ├── st_lld.h
-    ├── uart_lld.c
-    ├── uart_lld.h
-    ├── usb_lld.c
-    └── usb_lld.h
diff --git a/keyboards/ergodox/infinity/Makefile b/keyboards/ergodox/infinity/Makefile
deleted file mode 100644 (file)
index bd09e58..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef MAKEFILE_INCLUDED
-       include ../../../Makefile
-endif
diff --git a/keyboards/ergodox/infinity/board_is31fl3731c.h b/keyboards/ergodox/infinity/board_is31fl3731c.h
deleted file mode 100644 (file)
index f248cc2..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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 _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-static const I2CConfig i2ccfg = {
-  400000 // clock speed (Hz); 400kHz max for IS31
-};
-
-static const uint8_t led_mask[] = {
-       0xFF, 0x00, /* C1-1 -> C1-16 */
-       0xFF, 0x00, /* C2-1 -> C2-16 */
-       0xFF, 0x00, /* C3-1 -> C3-16 */
-       0xFF, 0x00, /* C4-1 -> C4-16 */
-       0x3F, 0x00, /* C5-1 -> C5-16 */
-       0x00, 0x00, /* C6-1 -> C6-16 */
-       0x00, 0x00, /* C7-1 -> C7-16 */
-       0x00, 0x00, /* C8-1 -> C8-16 */
-       0x00, 0x00, /* C9-1 -> C9-16 */
-};
-
-// The address of the LED
-#define LA(c, r) (c + r * 16 )
-// Need to be an address that is not mapped, but inside the range of the controller matrix
-#define NA LA(8, 8)
-
-// The numbers in the comments are the led numbers DXX on the PCB
-// The mapping is taken from the schematic of left hand side
-static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
-//   45        44        43        42        41        40        39
-   { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
-//   52        51        50        49        48        47        46
-   { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) },
-//   58        57        56        55        54        53        N/A
-   { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA },
-//   67        66        65        64        63        62        61
-   { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) },
-//   76        75        74        73        72        60        59
-   { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) },
-//   N/A       N/A       N/A       N/A       N/A       N/A       68
-   { NA,       NA,       NA,       NA,       NA,       NA,       LA(5, 4) },
-//   N/A       N/A       N/A       N/A       71        70        69
-   { NA,       NA,       NA,       NA,       LA(6, 2), LA(6, 1), LA(6, 0) },
-};
-
-
-#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
-#define IS31_TIMEOUT 5000
-
-static GFXINLINE void init_board(GDisplay *g) {
-    (void) g;
-    /* I2C pins */
-    palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
-    palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
-    palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
-    palClearPad(GPIOB, 16);
-    /* start I2C */
-    i2cStart(&I2CD1, &i2ccfg);
-    // try high drive (from kiibohd)
-    I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
-    // try glitch fixing (from kiibohd)
-    I2CD1.i2c->FLT = 4;
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) {
-       (void) g;
-}
-
-static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
-    (void) g;
-    return led_mask;
-}
-
-static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y)
-{
-    (void) g;
-    return led_mapping[y][x];
-}
-
-static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
-    (void) g;
-    if(!shutdown) {
-        palSetPad(GPIOB, 16);
-    }
-    else {
-        palClearPad(GPIOB, 16);
-    }
-}
-
-static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
-       (void) g;
-       i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT));
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox/infinity/board_st7565.h b/keyboards/ergodox/infinity/board_st7565.h
deleted file mode 100644 (file)
index 9ab636c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- *              http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-#define ST7565_LCD_BIAS         ST7565_LCD_BIAS_9 // actually 6
-#define ST7565_ADC              ST7565_ADC_NORMAL
-#define ST7565_COM_SCAN         ST7565_COM_SCAN_DEC
-#define ST7565_PAGE_ORDER       0,1,2,3
-/*
- * Custom page order for several LCD boards, e.g. HEM12864-99
- * #define ST7565_PAGE_ORDER       4,5,6,7,0,1,2,3
- */
-
-#define ST7565_GPIOPORT GPIOC
-#define ST7565_PORT PORTC
-#define ST7565_A0_PIN 7
-#define ST7565_RST_PIN 8
-#define ST7565_MOSI_PIN 6
-#define ST7565_SLCK_PIN 5
-#define ST7565_SS_PIN 4
-
-#define palSetPadModeRaw(portname, bits) \
-    ST7565_PORT->PCR[ST7565_##portname##_PIN] = bits
-
-#define palSetPadModeNamed(portname, portmode) \
-    palSetPadMode(ST7565_GPIOPORT, ST7565_##portname##_PIN, portmode)
-
-#define ST7565_SPI_MODE PORTx_PCRn_DSE | PORTx_PCRn_MUX(2)
-// DSPI Clock and Transfer Attributes
-// Frame Size: 8 bits
-// MSB First
-// CLK Low by default
-static const SPIConfig spi1config = {
-   // Operation complete callback or @p NULL.
-  .end_cb = NULL,
-   //The chip select line port - when not using pcs.
-  .ssport = ST7565_GPIOPORT,
-   // brief The chip select line pad number - when not using pcs.
-  .sspad=ST7565_SS_PIN,
-   // SPI initialization data.
-  .tar0 =
-    SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
-    | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
-    | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
-    | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
-    | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
-    | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
-};
-
-static GFXINLINE void acquire_bus(GDisplay *g) {
-    (void) g;
-    // Only the LCD is using the SPI bus, so no need to acquire
-    // spiAcquireBus(&SPID1);
-    spiSelect(&SPID1);
-}
-
-static GFXINLINE void release_bus(GDisplay *g) {
-    (void) g;
-    // Only the LCD is using the SPI bus, so no need to release
-    //spiReleaseBus(&SPID1);
-    spiUnselect(&SPID1);
-}
-
-static GFXINLINE void init_board(GDisplay *g) {
-    (void) g;
-    palSetPadModeNamed(A0, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
-    palSetPadModeNamed(RST, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
-    palSetPadModeRaw(MOSI, ST7565_SPI_MODE);
-    palSetPadModeRaw(SLCK, ST7565_SPI_MODE);
-    palSetPadModeNamed(SS, PAL_MODE_OUTPUT_PUSHPULL);
-
-    spiInit();
-    spiStart(&SPID1, &spi1config);
-    release_bus(g);
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) {
-    (void) g;
-}
-
-static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
-    (void) g;
-    if (state) {
-        palClearPad(ST7565_GPIOPORT, ST7565_RST_PIN);
-    }
-    else {
-        palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
-    }
-}
-
-static GFXINLINE void enter_data_mode(GDisplay *g) {
-    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
-}
-
-static GFXINLINE void enter_cmd_mode(GDisplay *g) {
-    palClearPad(ST7565_GPIOPORT, ST7565_A0_PIN);
-}
-
-
-static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
-    (void) g;
-    spiSend(&SPID1, length, data);
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox/infinity/bootloader_defs.h b/keyboards/ergodox/infinity/bootloader_defs.h
deleted file mode 100644 (file)
index c67153b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#define KIIBOHD_BOOTLOADER
diff --git a/keyboards/ergodox/infinity/chconf.h b/keyboards/ergodox/infinity/chconf.h
deleted file mode 100644 (file)
index d59c35e..0000000
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-*/
-
-/**
- * @file    templates/chconf.h
- * @brief   Configuration file template.
- * @details A copy of this file must be placed in each project directory, it
- *          contains the application specific kernel settings.
- *
- * @addtogroup config
- * @details Kernel related settings and hooks.
- * @{
- */
-
-#ifndef _CHCONF_H_
-#define _CHCONF_H_
-
-#define _CHIBIOS_RT_CONF_
-
-/*===========================================================================*/
-/**
- * @name System timers settings
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   System time counter resolution.
- * @note    Allowed values are 16 or 32 bits.
- */
-#define CH_CFG_ST_RESOLUTION                32
-
-/**
- * @brief   System tick frequency.
- * @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
-
-/**
- * @brief   Time delta constant for the tick-less mode.
- * @note    If this value is zero then the system uses the classic
- *          periodic tick. This value represents the minimum number
- *          of ticks that is safe to specify in a timeout directive.
- *          The value one is not valid, timeouts are rounded up to
- *          this value.
- */
-#define CH_CFG_ST_TIMEDELTA                 0
-
-/** @} */
-
-/*===========================================================================*/
-/**
- * @name Kernel parameters and options
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   Round robin interval.
- * @details This constant is the number of system ticks allowed for the
- *          threads before preemption occurs. Setting this value to zero
- *          disables the preemption for threads with equal priority and the
- *          round robin becomes cooperative. Note that higher priority
- *          threads can still preempt, the kernel is always preemptive.
- * @note    Disabling the round robin preemption makes the kernel more compact
- *          and generally faster.
- * @note    The round robin preemption is not supported in tickless mode and
- *          must be set to zero in that case.
- */
-#define CH_CFG_TIME_QUANTUM                 20
-
-/**
- * @brief   Managed RAM size.
- * @details Size of the RAM area to be managed by the OS. If set to zero
- *          then the whole available RAM is used. The core memory is made
- *          available to the heap allocator and/or can be used directly through
- *          the simplified core memory allocator.
- *
- * @note    In order to let the OS manage the whole RAM the linker script must
- *          provide the @p __heap_base__ and @p __heap_end__ symbols.
- * @note    Requires @p CH_CFG_USE_MEMCORE.
- */
-#define CH_CFG_MEMCORE_SIZE                 0
-
-/**
- * @brief   Idle thread automatic spawn suppression.
- * @details When this option is activated the function @p chSysInit()
- *          does not spawn the idle thread. The application @p main()
- *          function becomes the idle thread and must implement an
- *          infinite loop.
- */
-#define CH_CFG_NO_IDLE_THREAD               FALSE
-
-/** @} */
-
-/*===========================================================================*/
-/**
- * @name Performance options
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   OS optimization.
- * @details If enabled then time efficient rather than space efficient code
- *          is used when two possible implementations exist.
- *
- * @note    This is not related to the compiler optimization options.
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_OPTIMIZE_SPEED               TRUE
-
-/** @} */
-
-/*===========================================================================*/
-/**
- * @name Subsystem options
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   Time Measurement APIs.
- * @details If enabled then the time measurement APIs are included in
- *          the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_TM                       FALSE
-
-/**
- * @brief   Threads registry APIs.
- * @details If enabled then the registry APIs are included in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_REGISTRY                 TRUE
-
-/**
- * @brief   Threads synchronization APIs.
- * @details If enabled then the @p chThdWait() function is included in
- *          the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_WAITEXIT                 TRUE
-
-/**
- * @brief   Semaphores APIs.
- * @details If enabled then the Semaphores APIs are included in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_SEMAPHORES               TRUE
-
-/**
- * @brief   Semaphores queuing mode.
- * @details If enabled then the threads are enqueued on semaphores by
- *          priority rather than in FIFO order.
- *
- * @note    The default is @p FALSE. Enable this if you have special
- *          requirements.
- * @note    Requires @p CH_CFG_USE_SEMAPHORES.
- */
-#define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
-
-/**
- * @brief   Mutexes APIs.
- * @details If enabled then the mutexes APIs are included in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_MUTEXES                  TRUE
-
-/**
- * @brief   Enables recursive behavior on mutexes.
- * @note    Recursive mutexes are heavier and have an increased
- *          memory footprint.
- *
- * @note    The default is @p FALSE.
- * @note    Requires @p CH_CFG_USE_MUTEXES.
- */
-#define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
-
-/**
- * @brief   Conditional Variables APIs.
- * @details If enabled then the conditional variables APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- * @note    Requires @p CH_CFG_USE_MUTEXES.
- */
-#define CH_CFG_USE_CONDVARS                 TRUE
-
-/**
- * @brief   Conditional Variables APIs with timeout.
- * @details If enabled then the conditional variables APIs with timeout
- *          specification are included in the kernel.
- *
- * @note    The default is @p TRUE.
- * @note    Requires @p CH_CFG_USE_CONDVARS.
- */
-#define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
-
-/**
- * @brief   Events Flags APIs.
- * @details If enabled then the event flags APIs are included in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_EVENTS                   TRUE
-
-/**
- * @brief   Events Flags APIs with timeout.
- * @details If enabled then the events APIs with timeout specification
- *          are included in the kernel.
- *
- * @note    The default is @p TRUE.
- * @note    Requires @p CH_CFG_USE_EVENTS.
- */
-#define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
-
-/**
- * @brief   Synchronous Messages APIs.
- * @details If enabled then the synchronous messages APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_MESSAGES                 TRUE
-
-/**
- * @brief   Synchronous Messages queuing mode.
- * @details If enabled then messages are served by priority rather than in
- *          FIFO order.
- *
- * @note    The default is @p FALSE. Enable this if you have special
- *          requirements.
- * @note    Requires @p CH_CFG_USE_MESSAGES.
- */
-#define CH_CFG_USE_MESSAGES_PRIORITY        FALSE
-
-/**
- * @brief   Mailboxes APIs.
- * @details If enabled then the asynchronous messages (mailboxes) APIs are
- *          included in the kernel.
- *
- * @note    The default is @p TRUE.
- * @note    Requires @p CH_CFG_USE_SEMAPHORES.
- */
-#define CH_CFG_USE_MAILBOXES                TRUE
-
-/**
- * @brief   I/O Queues APIs.
- * @details If enabled then the I/O queues APIs are included in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_QUEUES                   TRUE
-
-/**
- * @brief   Core Memory Manager APIs.
- * @details If enabled then the core memory manager APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_MEMCORE                  TRUE
-
-/**
- * @brief   Heap Allocator APIs.
- * @details If enabled then the memory heap allocator APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
- *          @p CH_CFG_USE_SEMAPHORES.
- * @note    Mutexes are recommended.
- */
-#define CH_CFG_USE_HEAP                     TRUE
-
-/**
- * @brief   Memory Pools Allocator APIs.
- * @details If enabled then the memory pools allocator APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- */
-#define CH_CFG_USE_MEMPOOLS                 TRUE
-
-/**
- * @brief   Dynamic Threads APIs.
- * @details If enabled then the dynamic threads creation APIs are included
- *          in the kernel.
- *
- * @note    The default is @p TRUE.
- * @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
-
-/** @} */
-
-/*===========================================================================*/
-/**
- * @name Debug options
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   Debug option, kernel statistics.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_STATISTICS                   FALSE
-
-/**
- * @brief   Debug option, system state check.
- * @details If enabled the correct call protocol for system APIs is checked
- *          at runtime.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_SYSTEM_STATE_CHECK           FALSE
-
-/**
- * @brief   Debug option, parameters checks.
- * @details If enabled then the checks on the API functions input
- *          parameters are activated.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_ENABLE_CHECKS                FALSE
-
-/**
- * @brief   Debug option, consistency checks.
- * @details If enabled then all the assertions in the kernel code are
- *          activated. This includes consistency checks inside the kernel,
- *          runtime anomalies and port-defined checks.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_ENABLE_ASSERTS               FALSE
-
-/**
- * @brief   Debug option, trace buffer.
- * @details If enabled then the context switch circular trace buffer is
- *          activated.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_ENABLE_TRACE                 FALSE
-
-/**
- * @brief   Debug option, stack checks.
- * @details If enabled then a runtime stack check is performed.
- *
- * @note    The default is @p FALSE.
- * @note    The stack check is performed in a architecture/port dependent way.
- *          It may not be implemented or some ports.
- * @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           FALSE
-
-/**
- * @brief   Debug option, stacks initialization.
- * @details If enabled then the threads working area is filled with a byte
- *          value when a thread is created. This can be useful for the
- *          runtime measurement of the used stack.
- *
- * @note    The default is @p FALSE.
- */
-#define CH_DBG_FILL_THREADS                 FALSE
-
-/**
- * @brief   Debug option, threads profiling.
- * @details If enabled then a field is added to the @p thread_t structure that
- *          counts the system ticks occurred while executing the thread.
- *
- * @note    The default is @p FALSE.
- * @note    This debug option is not currently compatible with the
- *          tickless mode.
- */
-#define CH_DBG_THREADS_PROFILING            FALSE
-
-/** @} */
-
-/*===========================================================================*/
-/**
- * @name Kernel hooks
- * @{
- */
-/*===========================================================================*/
-
-/**
- * @brief   Threads descriptor structure extension.
- * @details User fields added to the end of the @p thread_t structure.
- */
-#define CH_CFG_THREAD_EXTRA_FIELDS                                          \
-  /* Add threads custom fields here.*/
-
-/**
- * @brief   Threads initialization hook.
- * @details User initialization code added to the @p chThdInit() API.
- *
- * @note    It is invoked from within @p chThdInit() and implicitly from all
- *          the threads creation APIs.
- */
-#define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
-  /* Add threads initialization code here.*/                                \
-}
-
-/**
- * @brief   Threads finalization hook.
- * @details User finalization code added to the @p chThdExit() API.
- *
- * @note    It is inserted into lock zone.
- * @note    It is also invoked when the threads simply return in order to
- *          terminate.
- */
-#define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
-  /* Add threads finalization code here.*/                                  \
-}
-
-/**
- * @brief   Context switch hook.
- * @details This hook is invoked just before switching between threads.
- */
-#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
-  /* Context switch code here.*/                                            \
-}
-
-/**
- * @brief   ISR enter hook.
- */
-#define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \
-  /* IRQ prologue code here.*/                                              \
-}
-
-/**
- * @brief   ISR exit hook.
- */
-#define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \
-  /* IRQ epilogue code here.*/                                              \
-}
-
-/**
- * @brief   Idle thread enter hook.
- * @note    This hook is invoked within a critical zone, no OS functions
- *          should be invoked from here.
- * @note    This macro can be used to activate a power saving mode.
- */
-#define CH_CFG_IDLE_ENTER_HOOK() {                                          \
-}
-
-/**
- * @brief   Idle thread leave hook.
- * @note    This hook is invoked within a critical zone, no OS functions
- *          should be invoked from here.
- * @note    This macro can be used to deactivate a power saving mode.
- */
-#define CH_CFG_IDLE_LEAVE_HOOK() {                                          \
-}
-
-/**
- * @brief   Idle Loop hook.
- * @details This hook is continuously invoked by the idle thread loop.
- */
-#define CH_CFG_IDLE_LOOP_HOOK() {                                           \
-  /* Idle loop code here.*/                                                 \
-}
-
-/**
- * @brief   System tick event hook.
- * @details This hook is invoked in the system tick handler immediately
- *          after processing the virtual timers queue.
- */
-#define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
-  /* System tick event code here.*/                                         \
-}
-
-/**
- * @brief   System halt hook.
- * @details This hook is invoked in case to a system halting error before
- *          the system is halted.
- */
-#define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
-  /* System halt code here.*/                                               \
-}
-
-/**
- * @brief   Trace hook.
- * @details This hook is invoked each time a new record is written in the
- *          trace buffer.
- */
-#define CH_CFG_TRACE_HOOK(tep) {                                            \
-  /* Trace code here.*/                                                     \
-}
-
-/** @} */
-
-/*===========================================================================*/
-/* Port-specific settings (override port settings defaulted in chcore.h).    */
-/*===========================================================================*/
-
-#endif  /* _CHCONF_H_ */
-
-/** @} */
diff --git a/keyboards/ergodox/infinity/config.h b/keyboards/ergodox/infinity/config.h
deleted file mode 100644 (file)
index c46edeb..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-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/>.
-*/
-
-#ifndef INFINITY_ERGODOX_CONFIG_H
-#define INFINITY_ERGODOX_CONFIG_H
-
-#include "../config.h"
-
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6464
-#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 "TMK"
-#define USBSTR_MANUFACTURER    'T', '\x00', 'M', '\x00', 'K', '\x00', ' ', '\x00'
-#define PRODUCT "Infinity keyboard/TMK"
-#define USBSTR_PRODUCT         'I', '\x00', 'n', '\x00', 'f', '\x00', 'i', '\x00', 'n', '\x00', 'i', '\x00', 't', '\x00', 'y', '\x00', ' ', '\x00', 'k', '\x00', 'e', '\x00', 'y', '\x00', 'b', '\x00', 'o', '\x00', 'a', '\x00', 'r', '\x00', 'd', '\x00', '/', '\x00', 'T', '\x00', 'M', '\x00', 'K', '\x00'
-
-/* key matrix size */
-#define MATRIX_ROWS 18
-#define MATRIX_COLS 5
-#define LOCAL_MATRIX_ROWS 9
-
-/* number of backlight levels */
-#define BACKLIGHT_LEVELS 3
-
-#define LED_BRIGHTNESS_LO       100
-#define LED_BRIGHTNESS_HI       255
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE    5
-
-#define SERIAL_LINK_BAUD 562500
-#define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1)
-
-#define VISUALIZER_USER_DATA_SIZE 16
-
-/*
- * 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/ergodox/infinity/gfxconf.h b/keyboards/ergodox/infinity/gfxconf.h
deleted file mode 100644 (file)
index ca33839..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * This file has a different license to the rest of the uGFX system.
- * You can copy, modify and distribute this file as you see fit.
- * You do not need to publish your source modifications to this file.
- * The only thing you are not permitted to do is to relicense it
- * under a different license.
- */
-
-/**
- * Copy this file into your project directory and rename it as gfxconf.h
- * Edit your copy to turn on the uGFX features you want to use.
- * The values below are the defaults.
- *
- * Only remove the comments from lines where you want to change the
- * default value. This allows definitions to be included from
- * driver makefiles when required and provides the best future
- * compatibility for your project.
- *
- * Please use spaces instead of tabs in this file.
- */
-
-#ifndef _GFXCONF_H
-#define _GFXCONF_H
-
-#include "common_gfxconf.h"
-
-#endif /* _GFXCONF_H */
diff --git a/keyboards/ergodox/infinity/halconf.h b/keyboards/ergodox/infinity/halconf.h
deleted file mode 100644 (file)
index 55dd5e8..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-*/
-
-/**
- * @file    templates/halconf.h
- * @brief   HAL configuration header.
- * @details HAL configuration file, this file allows to enable or disable the
- *          various device drivers from your application. You may also use
- *          this file in order to override the device drivers default settings.
- *
- * @addtogroup HAL_CONF
- * @{
- */
-
-#ifndef _HALCONF_H_
-#define _HALCONF_H_
-
-#include "mcuconf.h"
-
-/**
- * @brief   Enables the PAL subsystem.
- */
-#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
-#define HAL_USE_PAL                 TRUE
-#endif
-
-/**
- * @brief   Enables the ADC subsystem.
- */
-#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
-#define HAL_USE_ADC                 FALSE
-#endif
-
-/**
- * @brief   Enables the CAN subsystem.
- */
-#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
-#define HAL_USE_CAN                 FALSE
-#endif
-
-/**
- * @brief   Enables the DAC subsystem.
- */
-#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
-#define HAL_USE_DAC                 FALSE
-#endif
-
-/**
- * @brief   Enables the EXT subsystem.
- */
-#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
-#define HAL_USE_EXT                 FALSE
-#endif
-
-/**
- * @brief   Enables the GPT subsystem.
- */
-#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
-#define HAL_USE_GPT                 FALSE
-#endif
-
-/**
- * @brief   Enables the I2C subsystem.
- */
-#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C                 TRUE
-#endif
-
-/**
- * @brief   Enables the I2S subsystem.
- */
-#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
-#define HAL_USE_I2S                 FALSE
-#endif
-
-/**
- * @brief   Enables the ICU subsystem.
- */
-#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
-#define HAL_USE_ICU                 FALSE
-#endif
-
-/**
- * @brief   Enables the MAC subsystem.
- */
-#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
-#define HAL_USE_MAC                 FALSE
-#endif
-
-/**
- * @brief   Enables the MMC_SPI subsystem.
- */
-#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
-#define HAL_USE_MMC_SPI             FALSE
-#endif
-
-/**
- * @brief   Enables the PWM subsystem.
- */
-#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
-#define HAL_USE_PWM                 FALSE
-#endif
-
-/**
- * @brief   Enables the RTC subsystem.
- */
-#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
-#define HAL_USE_RTC                 FALSE
-#endif
-
-/**
- * @brief   Enables the SDC subsystem.
- */
-#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
-#define HAL_USE_SDC                 FALSE
-#endif
-
-/**
- * @brief   Enables the SERIAL subsystem.
- */
-#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
-#define HAL_USE_SERIAL              TRUE
-#endif
-
-/**
- * @brief   Enables the SERIAL over USB subsystem.
- */
-#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
-#define HAL_USE_SERIAL_USB          TRUE
-#endif
-
-/**
- * @brief   Enables the SPI subsystem.
- */
-#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
-#define HAL_USE_SPI                 TRUE
-#endif
-
-/**
- * @brief   Enables the UART subsystem.
- */
-#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
-#define HAL_USE_UART                FALSE
-#endif
-
-/**
- * @brief   Enables the USB subsystem.
- */
-#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
-#define HAL_USE_USB                 TRUE
-#endif
-
-/**
- * @brief   Enables the WDG subsystem.
- */
-#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
-#define HAL_USE_WDG                 FALSE
-#endif
-
-/*===========================================================================*/
-/* ADC driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Enables synchronous APIs.
- * @note    Disabling this option saves both code and data space.
- */
-#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
-#define ADC_USE_WAIT                TRUE
-#endif
-
-/**
- * @brief   Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
- * @note    Disabling this option saves both code and data space.
- */
-#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define ADC_USE_MUTUAL_EXCLUSION    TRUE
-#endif
-
-/*===========================================================================*/
-/* CAN driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Sleep mode related APIs inclusion switch.
- */
-#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
-#define CAN_USE_SLEEP_MODE          TRUE
-#endif
-
-/*===========================================================================*/
-/* I2C driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Enables the mutual exclusion APIs on the I2C bus.
- */
-#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define I2C_USE_MUTUAL_EXCLUSION    TRUE
-#endif
-
-/*===========================================================================*/
-/* MAC driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Enables an event sources for incoming packets.
- */
-#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
-#define MAC_USE_ZERO_COPY           FALSE
-#endif
-
-/**
- * @brief   Enables an event sources for incoming packets.
- */
-#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
-#define MAC_USE_EVENTS              TRUE
-#endif
-
-/*===========================================================================*/
-/* MMC_SPI driver related settings.                                          */
-/*===========================================================================*/
-
-/**
- * @brief   Delays insertions.
- * @details If enabled this options inserts delays into the MMC waiting
- *          routines releasing some extra CPU time for the threads with
- *          lower priority, this may slow down the driver a bit however.
- *          This option is recommended also if the SPI driver does not
- *          use a DMA channel and heavily loads the CPU.
- */
-#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
-#define MMC_NICE_WAITING            TRUE
-#endif
-
-/*===========================================================================*/
-/* SDC driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Number of initialization attempts before rejecting the card.
- * @note    Attempts are performed at 10mS intervals.
- */
-#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
-#define SDC_INIT_RETRY              100
-#endif
-
-/**
- * @brief   Include support for MMC cards.
- * @note    MMC support is not yet implemented so this option must be kept
- *          at @p FALSE.
- */
-#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
-#define SDC_MMC_SUPPORT             FALSE
-#endif
-
-/**
- * @brief   Delays insertions.
- * @details If enabled this options inserts delays into the MMC waiting
- *          routines releasing some extra CPU time for the threads with
- *          lower priority, this may slow down the driver a bit however.
- */
-#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
-#define SDC_NICE_WAITING            TRUE
-#endif
-
-/*===========================================================================*/
-/* SERIAL driver related settings.                                           */
-/*===========================================================================*/
-
-/**
- * @brief   Default bit rate.
- * @details Configuration parameter, this is the baud rate selected for the
- *          default configuration.
- */
-#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
-#define SERIAL_DEFAULT_BITRATE      38400
-#endif
-
-/**
- * @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 64 bytes for both the transmission and receive
- *          buffers.
- */
-#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
-#define SERIAL_BUFFERS_SIZE         128
-#endif
-
-/*===========================================================================*/
-/* SERIAL_USB driver related setting.                                        */
-/*===========================================================================*/
-
-/**
- * @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 64 bytes for both the transmission and receive
- *          buffers.
- */
-#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
-#define SERIAL_USB_BUFFERS_SIZE     256
-#endif
-
-/*===========================================================================*/
-/* SPI driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Enables synchronous APIs.
- * @note    Disabling this option saves both code and data space.
- */
-#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
-#define SPI_USE_WAIT                TRUE
-#endif
-
-/**
- * @brief   Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
- * @note    Disabling this option saves both code and data space.
- */
-#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
-#define SPI_USE_MUTUAL_EXCLUSION    TRUE
-#endif
-
-/*===========================================================================*/
-/* USB driver related settings.                                              */
-/*===========================================================================*/
-
-/**
- * @brief   Enables synchronous APIs.
- * @note    Disabling this option saves both code and data space.
- */
-#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
-#define USB_USE_WAIT                TRUE
-#endif
-
-#endif /* _HALCONF_H_ */
-
-/** @} */
diff --git a/keyboards/ergodox/infinity/infinity.c b/keyboards/ergodox/infinity/infinity.c
deleted file mode 100644 (file)
index 62259ed..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-#include "infinity.h"
-#include "ch.h"
-#include "hal.h"
-#include "serial_link/system/serial_link.h"
-#ifdef VISUALIZER_ENABLE
-#include "lcd_backlight.h"
-#endif
-
-void init_serial_link_hal(void) {
-    PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2);
-    PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2);
-    PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3);
-    PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3);
-}
-
-#define RED_PIN 1
-#define GREEN_PIN 2
-#define BLUE_PIN 3
-#define CHANNEL_RED FTM0->CHANNEL[0]
-#define CHANNEL_GREEN FTM0->CHANNEL[1]
-#define CHANNEL_BLUE FTM0->CHANNEL[2]
-
-#define RGB_PORT PORTC
-#define RGB_PORT_GPIO GPIOC
-
-// Base FTM clock selection (72 MHz system clock)
-// @ 0xFFFF period, 72 MHz / (0xFFFF * 2) = Actual period
-// Higher pre-scalar will use the most power (also look the best)
-// Pre-scalar calculations
-// 0 -      72 MHz -> 549 Hz
-// 1 -      36 MHz -> 275 Hz
-// 2 -      18 MHz -> 137 Hz
-// 3 -       9 MHz ->  69 Hz (Slightly visible flicker)
-// 4 -   4 500 kHz ->  34 Hz (Visible flickering)
-// 5 -   2 250 kHz ->  17 Hz
-// 6 -   1 125 kHz ->   9 Hz
-// 7 - 562 500  Hz ->   4 Hz
-// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced
-// Which will reduce the brightness range
-#define PRESCALAR_DEFINE 0
-void lcd_backlight_hal_init(void) {
-       // Setup Backlight
-    SIM->SCGC6 |= SIM_SCGC6_FTM0;
-    FTM0->CNT = 0; // Reset counter
-
-       // PWM Period
-       // 16-bit maximum
-       FTM0->MOD = 0xFFFF;
-
-       // Set FTM to PWM output - Edge Aligned, Low-true pulses
-#define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0)
-       CHANNEL_RED.CnSC = CNSC_MODE;
-       CHANNEL_GREEN.CnSC = CNSC_MODE;
-       CHANNEL_BLUE.CnSC = CNSC_MODE;
-
-       // System clock, /w prescalar setting
-       FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE);
-
-       CHANNEL_RED.CnV = 0;
-       CHANNEL_GREEN.CnV = 0;
-       CHANNEL_BLUE.CnV = 0;
-
-       RGB_PORT_GPIO->PDDR |= (1 << RED_PIN);
-       RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN);
-       RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN);
-
-#define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4)
-    RGB_PORT->PCR[RED_PIN] = RGB_MODE;
-    RGB_PORT->PCR[GREEN_PIN] = RGB_MODE;
-    RGB_PORT->PCR[BLUE_PIN] = RGB_MODE;
-}
-
-static uint16_t cie_lightness(uint16_t v) {
-    // The CIE 1931 formula for lightness
-    // Y = luminance (output) 0-1
-    // L = lightness input 0 - 100
-
-    // Y = (L* / 902.3)           if L* <= 8
-    // Y = ((L* + 16) / 116)^3    if L* > 8
-
-    float l =  100.0f * (v / 65535.0f);
-    float y = 0.0f;
-    if (l <= 8.0f) {
-       y = l / 902.3;
-    }
-    else {
-        y = ((l + 16.0f) / 116.0f);
-        y = y * y * y;
-        if (y > 1.0f) {
-            y = 1.0f;
-        }
-    }
-    return y * 65535.0f;
-}
-
-void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
-       CHANNEL_RED.CnV = cie_lightness(r);
-       CHANNEL_GREEN.CnV = cie_lightness(g);
-       CHANNEL_BLUE.CnV = cie_lightness(b);
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-
-void matrix_init_kb(void) {
-       // put your keyboard start-up code here
-       // runs once when the firmware starts up
-
-       matrix_init_user();
-       // The backlight always has to be initialized, otherwise it will stay lit
-#ifndef VISUALIZER_ENABLE
-       lcd_backlight_hal_init();
-#endif
-}
-
-void matrix_scan_kb(void) {
-       // put your looping keyboard code here
-       // runs every cycle (a lot)
-
-       matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void ergodox_board_led_on(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_1_on(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_2_on(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_3_on(void){
-}
-
-__attribute__ ((weak))
-void ergodox_board_led_off(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_1_off(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_2_off(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_3_off(void){
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_1_set(uint8_t n) {
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_2_set(uint8_t n) {
-}
-
-__attribute__ ((weak))
-void ergodox_right_led_3_set(uint8_t n) {
-}
-
-#ifdef ONEHAND_ENABLE
-__attribute__ ((weak))
-const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
-    {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}},
-    {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}},
-    {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}},
-    {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}},
-    {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}},
-    {{0, 14}, {1, 14}, {2, 14}, {3, 14}, {4, 14}},
-    {{0, 15}, {1, 15}, {2, 15}, {3, 15}, {4, 15}},
-    {{0, 16}, {1, 16}, {2, 16}, {3, 16}, {4, 16}},
-    {{0, 17}, {1, 17}, {2, 17}, {3, 17}, {4, 17}},
-    {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}},
-    {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}},
-    {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}},
-    {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}},
-    {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}},
-    {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}},
-    {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}},
-    {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}},
-    {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}},
-};
-#endif
diff --git a/keyboards/ergodox/infinity/infinity.h b/keyboards/ergodox/infinity/infinity.h
deleted file mode 100644 (file)
index 73a0f4b..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
-#define KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
-
-#include "quantum.h"
-
-void ergodox_board_led_on(void);
-void ergodox_right_led_1_on(void);
-void ergodox_right_led_2_on(void);
-void ergodox_right_led_3_on(void);
-
-inline void ergodox_right_led_on(uint8_t led) {
-    switch (led) {
-    case 0:
-        ergodox_right_led_1_on();
-        break;
-    case 1:
-        ergodox_right_led_2_on();
-        break;
-    case 2:
-        ergodox_right_led_3_on();
-        break;
-    }
-}
-
-void ergodox_board_led_off(void);
-void ergodox_right_led_1_off(void);
-void ergodox_right_led_2_off(void);
-void ergodox_right_led_3_off(void);
-inline void ergodox_right_led_off(uint8_t led) {
-    switch (led) {
-    case 0:
-        ergodox_right_led_1_off();
-        break;
-    case 1:
-        ergodox_right_led_2_off();
-        break;
-    case 2:
-        ergodox_right_led_3_off();
-        break;
-    }
-}
-
-inline void ergodox_led_all_on(void)
-{
-    ergodox_board_led_on();
-    ergodox_right_led_1_on();
-    ergodox_right_led_2_on();
-    ergodox_right_led_3_on();
-}
-
-inline void ergodox_led_all_off(void)
-{
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-}
-
-void ergodox_right_led_1_set(uint8_t n);
-void ergodox_right_led_2_set(uint8_t n);
-void ergodox_right_led_3_set(uint8_t n);
-
-inline void ergodox_right_led_set(uint8_t led, uint8_t n){
-    switch (led) {
-    case 0:
-        ergodox_right_led_1_set(n);
-        break;
-    case 1:
-        ergodox_right_led_2_set(n);
-        break;
-    case 2:
-        ergodox_right_led_3_set(n);
-        break;
-    }
-}
-
-inline void ergodox_led_all_set(uint8_t n) {
-    ergodox_right_led_1_set(n);
-    ergodox_right_led_2_set(n);
-    ergodox_right_led_3_set(n);
-}
-
-#define KEYMAP( \
-    A80, A70, A60, A50, A40, A30, A20,  \
-    A81, A71, A61, A51, A41, A31, A21,  \
-    A82, A72, A62, A52, A42, A32,       \
-    A83, A73, A63, A53, A43, A33, A23,  \
-    A84, A74, A64, A54, A44,            \
-                                  A13, A03, \
-                                       A04, \
-                             A34, A24, A14, \
-         B20, B30, B40, B50, B60, B70, B80, \
-         B21, B31, B41, B51, B61, B71, B81, \
-              B32, B42, B52, B62, B72, B82, \
-         B23, B33, B43, B53, B63, B73, B83, \
-                   B44, B54, B64, B74, B84, \
-    B03, B13,     \
-    B04,          \
-    B14, B24, B34 \
-) { \
-    { KC_NO, KC_NO, KC_NO, A03,   A04 }, \
-    { KC_NO, KC_NO, KC_NO, A13,   A14 }, \
-    { A20,   A21,   KC_NO, A23,   A24 }, \
-    { A30,   A31,   A32,   A33,   A34 }, \
-    { A40,   A41,   A42,   A43,   A44 }, \
-    { A50,   A51,   A52,   A53,   A54 }, \
-    { A60,   A61,   A62,   A63,   A64 }, \
-    { A70,   A71,   A72,   A73,   A74 }, \
-    { A80,   A81,   A82,   A83,   A84 }, \
-    { KC_NO, KC_NO, KC_NO, B03,   B04 }, \
-    { KC_NO, KC_NO, KC_NO, B13,   B14 }, \
-    { B20,   B21,   KC_NO, B23,   B24 }, \
-    { B30,   B31,   B32,   B33,   B34 }, \
-    { B40,   B41,   B42,   B43,   B44 }, \
-    { B50,   B51,   B52,   B53,   B54 }, \
-    { B60,   B61,   B62,   B63,   B64 }, \
-    { B70,   B71,   B72,   B73,   B74 }, \
-    { B80,   B81,   B82,   B83,   B84 }  \
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_ */
diff --git a/keyboards/ergodox/infinity/led.c b/keyboards/ergodox/infinity/led.c
deleted file mode 100644 (file)
index 8175c1c..0000000
+++ /dev/null
@@ -1,26 +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/>.
-*/
-
-#include "hal.h"
-
-#include "led.h"
-
-
-void led_set(uint8_t usb_led) {
-    //TODO: Add led emulation if there's no customized visualization
-    (void)usb_led;
-}
diff --git a/keyboards/ergodox/infinity/matrix.c b/keyboards/ergodox/infinity/matrix.c
deleted file mode 100644 (file)
index 3364f8c..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-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 <stdint.h>
-#include <stdbool.h>
-#include <string.h>
-#include "hal.h"
-#include "timer.h"
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "matrix.h"
-#include "serial_link/system/serial_link.h"
-
-
-/*
- * Infinity ErgoDox Pinusage:
- * Column pins are input with internal pull-down. Row pins are output and strobe with high.
- * Key is high or 1 when it turns on.
- *
- *     col: { PTD1, PTD4, PTD5, PTD6, PTD7 }
- *     row: { PTB2, PTB3, PTB18, PTB19, PTC0, PTC9, PTC10, PTC11, PTD0 }
- */
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[LOCAL_MATRIX_ROWS];
-static bool debouncing = false;
-static uint16_t debouncing_time = 0;
-
-
-void matrix_init(void)
-{
-    /* Column(sense) */
-    palSetPadMode(GPIOD, 1,  PAL_MODE_INPUT_PULLDOWN);
-    palSetPadMode(GPIOD, 4,  PAL_MODE_INPUT_PULLDOWN);
-    palSetPadMode(GPIOD, 5,  PAL_MODE_INPUT_PULLDOWN);
-    palSetPadMode(GPIOD, 6,  PAL_MODE_INPUT_PULLDOWN);
-    palSetPadMode(GPIOD, 7,  PAL_MODE_INPUT_PULLDOWN);
-
-    /* Row(strobe) */
-    palSetPadMode(GPIOB, 2,  PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOB, 3,  PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOB, 18, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOB, 19, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOC, 0,  PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOC, 9,  PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOC, 11, PAL_MODE_OUTPUT_PUSHPULL);
-    palSetPadMode(GPIOD, 0,  PAL_MODE_OUTPUT_PUSHPULL);
-
-    memset(matrix, 0, MATRIX_ROWS);
-    memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS);
-
-    matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void)
-{
-    for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
-        matrix_row_t data = 0;
-
-        // strobe row
-        switch (row) {
-            case 0: palSetPad(GPIOB, 2);    break;
-            case 1: palSetPad(GPIOB, 3);    break;
-            case 2: palSetPad(GPIOB, 18);   break;
-            case 3: palSetPad(GPIOB, 19);   break;
-            case 4: palSetPad(GPIOC, 0);    break;
-            case 5: palSetPad(GPIOC, 9);    break;
-            case 6: palSetPad(GPIOC, 10);   break;
-            case 7: palSetPad(GPIOC, 11);   break;
-            case 8: palSetPad(GPIOD, 0);    break;
-        }
-
-        // need wait to settle pin state
-        // if you wait too short, or have a too high update rate
-        // the keyboard might freeze, or there might not be enough
-        // processing power to update the LCD screen properly.
-        // 20us, or two ticks at 100000Hz seems to be OK
-        wait_us(20);
-
-        // read col data: { PTD1, PTD4, PTD5, PTD6, PTD7 }
-        data = ((palReadPort(GPIOD) & 0xF0) >> 3) |
-               ((palReadPort(GPIOD) & 0x02) >> 1);
-
-        // un-strobe row
-        switch (row) {
-            case 0: palClearPad(GPIOB, 2);  break;
-            case 1: palClearPad(GPIOB, 3);  break;
-            case 2: palClearPad(GPIOB, 18); break;
-            case 3: palClearPad(GPIOB, 19); break;
-            case 4: palClearPad(GPIOC, 0);  break;
-            case 5: palClearPad(GPIOC, 9);  break;
-            case 6: palClearPad(GPIOC, 10); break;
-            case 7: palClearPad(GPIOC, 11); break;
-            case 8: palClearPad(GPIOD, 0);  break;
-        }
-
-        if (matrix_debouncing[row] != data) {
-            matrix_debouncing[row] = data;
-            debouncing = true;
-            debouncing_time = timer_read();
-        }
-    }
-
-    uint8_t offset = 0;
-#ifdef MASTER_IS_ON_RIGHT
-    if (is_serial_link_master()) {
-        offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS;
-    }
-#endif
-
-    if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
-        for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
-            matrix[offset + row] = matrix_debouncing[row];
-        }
-        debouncing = false;
-    }
-    matrix_scan_quantum();
-    return 1;
-}
-
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
-    return (matrix[row] & (1<<col));
-}
-
-matrix_row_t matrix_get_row(uint8_t row)
-{
-    return matrix[row];
-}
-
-void matrix_print(void)
-{
-    xprintf("\nr/c 01234567\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        xprintf("%X0: ", row);
-        matrix_row_t data = matrix_get_row(row);
-        for (int col = 0; col < MATRIX_COLS; col++) {
-            if (data & (1<<col))
-                xprintf("1");
-            else
-                xprintf("0");
-        }
-        xprintf("\n");
-    }
-}
-
-void matrix_set_remote(matrix_row_t* rows, uint8_t index) {
-    uint8_t offset = 0;
-#ifdef MASTER_IS_ON_RIGHT
-    offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2);
-#else
-    offset = LOCAL_MATRIX_ROWS * (index + 1);
-#endif
-    for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
-        matrix[offset + row] = rows[row];
-    }
-}
diff --git a/keyboards/ergodox/infinity/mcuconf.h b/keyboards/ergodox/infinity/mcuconf.h
deleted file mode 100644 (file)
index f6730b9..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-*/
-
-#ifndef _MCUCONF_H_
-#define _MCUCONF_H_
-
-#define K20x_MCUCONF
-
-/*
- * HAL driver system settings.
- */
-
-#define K20x7
-
-/* Select the MCU clocking mode below by enabling the appropriate block. */
-
-#define KINETIS_NO_INIT             FALSE
-
-/* PEE mode - 48MHz system clock driven by external crystal. */
-#define KINETIS_MCG_MODE            KINETIS_MCG_MODE_PEE
-#define KINETIS_PLLCLK_FREQUENCY    72000000UL
-#define KINETIS_SYSCLK_FREQUENCY    72000000UL
-#define KINETIS_BUSCLK_FREQUENCY    36000000UL
-#define KINETIS_FLASHCLK_FREQUENCY  24000000UL
-
-#if 0
-/* FEI mode - 48 MHz with internal 32.768 kHz crystal */
-#define KINETIS_MCG_MODE            KINETIS_MCG_MODE_FEI
-#define KINETIS_MCG_FLL_DMX32       1           /* Fine-tune for 32.768 kHz */
-#define KINETIS_MCG_FLL_DRS         1           /* 1464x FLL factor */
-#define KINETIS_SYSCLK_FREQUENCY    47972352UL  /* 32.768 kHz * 1464 (~48 MHz) */
-#define KINETIS_CLKDIV1_OUTDIV1     1
-#define KINETIS_CLKDIV1_OUTDIV2     1
-#define KINETIS_CLKDIV1_OUTDIV4     2
-#define KINETIS_BUSCLK_FREQUENCY    KINETIS_SYSCLK_FREQUENCY
-#define KINETIS_FLASHCLK_FREQUENCY  KINETIS_SYSCLK_FREQUENCY/2
-#endif
-
-/*
- * SERIAL driver system settings.
- */
-#define KINETIS_SERIAL_USE_UART0            TRUE
-#define KINETIS_SERIAL_USE_UART1            TRUE
-
-/*
- * USB driver settings
- */
-#define KINETIS_USB_USE_USB0                TRUE
-/* Need to redefine this, since the default is for K20x */
-/* This is for Teensy LC; you should comment it out (or change to 5)
- * for Teensy 3.x */
-#define KINETIS_USB_USB0_IRQ_PRIORITY       2
-
-/*
- * SPI driver system settings.
- */
-#define KINETIS_SPI_USE_SPI0                TRUE
-
-#define KINETIS_I2C_USE_I2C0                TRUE
-
-#endif /* _MCUCONF_H_ */
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
deleted file mode 100644 (file)
index a341bbf..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# project specific files
-SRC =  matrix.c \
-       led.c
-
-## chip/board settings
-# - the next two should match the directories in
-#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
-# - For Teensies, FAMILY = KINETIS and SERIES is either
-#   KL2x (LC) or K20x (3.0,3.1,3.2).
-# - For Infinity KB, SERIES = K20x
-MCU_FAMILY = KINETIS
-MCU_SERIES = K20x
-
-# Linker script to use
-# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
-#   or <this_dir>/ld/
-# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
-# - LDSCRIPT =
-#   - MKL26Z64 for Teensy LC
-#   - MK20DX128 for Teensy 3.0
-#   - MK20DX256 for Teensy 3.1 and 3.2
-#   - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader
-#   - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
-MCU_LDSCRIPT = MK20DX256BLDR8
-
-# Startup code to use
-#  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
-# - STARTUP =
-#   - kl2x for Teensy LC
-#   - k20x5 for Teensy 3.0 and Infinity 60%
-#   - k20x7 for Teensy 3.1, 3.2 and Infinity ErgoDox
-MCU_STARTUP = k20x7
-
-# Board: it should exist either in <chibios>/os/hal/boards/
-#  or <this_dir>/boards
-# - BOARD =
-#   - PJRC_TEENSY_LC for Teensy LC
-#   - PJRC_TEENSY_3 for Teensy 3.0
-#   - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2
-#   - MCHCK_K20 for Infinity KB
-#BOARD = MCHCK_K20
-BOARD = PJRC_TEENSY_3_1
-
-# Cortex version
-# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
-MCU  = cortex-m4
-
-# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
-# I.e. 6 for Teensy LC; 7 for Teensy 3.x
-ARMV = 7
-
-# 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=0x00002000
-
-# Build Options
-#   comment out to disable the options.
-#
-CUSTOM_MATRIX = yes # Custom matrix file
-SERIAL_LINK_ENABLE = yes
-VISUALIZER_ENABLE = yes
-LCD_ENABLE = yes
-BACKLIGHT_ENABLE = yes
-LCD_BACKLIGHT_ENABLE = yes
-MIDI_ENABLE = no
-RGBLIGHT_ENABLE = no
-
-LCD_DRIVER = st7565
-LCD_WIDTH = 128 
-LCD_HEIGHT = 32
-
-LED_DRIVER = is31fl3731c
-LED_WIDTH = 7 
-LED_HEIGHT = 7
\ No newline at end of file
diff --git a/keyboards/ergodox/infinity/simple_visualizer.h b/keyboards/ergodox/infinity/simple_visualizer.h
deleted file mode 100644 (file)
index 73d0e08..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-static keyframe_animation_t lcd_layer_display = {
-    .num_frames = 1,
-    .loop = false,
-    .frame_lengths = {gfxMillisecondsToTicks(0)},
-    .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
-    .num_frames = 2,
-    .loop = false,
-    // Note that there's a 200 ms no-operation frame,
-    // this prevents the color from changing when activating the layer
-    // momentarily
-    .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
-    .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
-    // The brightness will be dynamically adjustable in the future
-    // But for now, change it here.
-    lcd_backlight_brightness(130);
-    state->current_lcd_color = initial_color;
-    state->target_lcd_color = logo_background_color;
-    initial_update = true;
-    start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
-    // Add more tests, change the colors and layer texts here
-    // Usually you want to check the high bits (higher layers first)
-    // because that's the order layers are processed for keypresses
-    // You can for check for example:
-    // state->status.layer
-    // state->status.default_layer
-    // state->status.leds (see led.h for available statuses)
-
-    uint32_t prev_color = state->target_lcd_color;
-    const char* prev_layer_text = state->layer_text;
-
-    get_visualizer_layer_and_color(state);
-
-    if (initial_update || prev_color != state->target_lcd_color) {
-        start_keyframe_animation(&color_animation);
-    }
-
-    if (initial_update || prev_layer_text != state->layer_text) {
-        start_keyframe_animation(&lcd_layer_display);
-    }
-    // You can also stop existing animations, and start your custom ones here
-    // remember that you should normally have only one animation for the LCD
-    // and one for the background. But you can also combine them if you want.
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
-    state->layer_text = "Suspending...";
-    uint8_t hue = LCD_HUE(state->current_lcd_color);
-    uint8_t sat = LCD_SAT(state->current_lcd_color);
-    state->target_lcd_color = LCD_COLOR(hue, sat, 0);
-    start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
-    state->current_lcd_color = initial_color;
-    state->target_lcd_color = logo_background_color;
-    initial_update = true;
-    start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
deleted file mode 100644 (file)
index 4b16021..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static const uint32_t led_emulation_colors[4] = {
-    LCD_COLOR(0, 0, 0),
-    LCD_COLOR(255, 255, 255),
-    LCD_COLOR(84, 255, 255),
-    LCD_COLOR(168, 255, 255),
-};
-
-static uint32_t next_led_target_color = 0;
-
-typedef enum {
-    LCD_STATE_INITIAL,
-    LCD_STATE_LAYER_BITMAP,
-    LCD_STATE_BITMAP_AND_LEDS,
-} lcd_state_t;
-
-static lcd_state_t lcd_state = LCD_STATE_INITIAL;
-
-typedef struct {
-    uint8_t led_on;
-    uint8_t led1;
-    uint8_t led2;
-    uint8_t led3;
-} visualizer_user_data_t;
-
-// Don't access from visualization function, use the visualizer state instead
-static visualizer_user_data_t user_data_keyboard = {
-    .led_on = 0,
-    .led1 = LED_BRIGHTNESS_HI,
-    .led2 = LED_BRIGHTNESS_HI,
-    .led3 = LED_BRIGHTNESS_HI,
-};
-
-_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
-    "Please increase the VISUALIZER_USER_DATA_SIZE");
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t one_led_color = {
-    .num_frames = 1,
-    .loop = false,
-    .frame_lengths = {gfxMillisecondsToTicks(0)},
-    .frame_functions = {lcd_backlight_keyframe_set_color},
-};
-
-bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
-    uint32_t temp = next_led_target_color;
-    next_led_target_color = state->target_lcd_color;
-    state->target_lcd_color = temp;
-    return false;
-}
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t two_led_colors = {
-    .num_frames = 2,
-    .loop = true,
-    .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
-    .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
-};
-
-// The LCD animation alternates between the layer name display and a
-// bitmap that displays all active layers
-static keyframe_animation_t lcd_bitmap_animation = {
-    .num_frames = 1,
-    .loop = false,
-    .frame_lengths = {gfxMillisecondsToTicks(0)},
-    .frame_functions = {lcd_keyframe_display_layer_bitmap},
-};
-
-static keyframe_animation_t lcd_bitmap_leds_animation = {
-    .num_frames = 2,
-    .loop = true,
-    .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
-    .frame_functions = {lcd_keyframe_display_layer_bitmap, lcd_keyframe_display_led_states},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
-    // The brightness will be dynamically adjustable in the future
-    // But for now, change it here.
-    lcd_backlight_brightness(130);
-    state->current_lcd_color = initial_color;
-    state->target_lcd_color = logo_background_color;
-    lcd_state = LCD_STATE_INITIAL;
-    start_keyframe_animation(&default_startup_animation);
-}
-
-static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
-    return user_data->led_on & (1u << num);
-}
-
-static uint8_t get_led_index_master(visualizer_user_data_t* user_data) {
-    for (int i=0; i < 3; i++) {
-        if (is_led_on(user_data, i)) {
-            return i + 1;
-        }
-    }
-    return 0;
-}
-
-static uint8_t get_led_index_slave(visualizer_user_data_t* user_data) {
-    uint8_t master_index = get_led_index_master(user_data);
-    if (master_index!=0) {
-        for (int i=master_index; i < 3; i++) {
-            if (is_led_on(user_data, i)) {
-                return i + 1;
-            }
-        }
-    }
-
-    return 0;
-}
-
-static uint8_t get_secondary_led_index(visualizer_user_data_t* user_data) {
-    if (is_led_on(user_data, 0) &&
-            is_led_on(user_data, 1) &&
-            is_led_on(user_data, 2)) {
-        return 3;
-    }
-    return 0;
-}
-
-static uint8_t get_brightness(visualizer_user_data_t* user_data, uint8_t index) {
-    switch (index) {
-    case 1:
-        return user_data->led1;
-    case 2:
-        return user_data->led2;
-    case 3:
-        return user_data->led3;
-    }
-    return 0;
-}
-
-static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
-    visualizer_user_data_t* user_data_new = (visualizer_user_data_t*)state->status.user_data;
-    visualizer_user_data_t* user_data_old = (visualizer_user_data_t*)prev_status->user_data;
-
-    uint8_t new_index;
-    uint8_t old_index;
-
-    if (is_serial_link_master()) {
-        new_index = get_led_index_master(user_data_new);
-        old_index = get_led_index_master(user_data_old);
-    }
-    else {
-        new_index = get_led_index_slave(user_data_new);
-        old_index = get_led_index_slave(user_data_old);
-    }
-    uint8_t new_secondary_index = get_secondary_led_index(user_data_new);
-    uint8_t old_secondary_index = get_secondary_led_index(user_data_old);
-
-    uint8_t old_brightness = get_brightness(user_data_old, old_index);
-    uint8_t new_brightness = get_brightness(user_data_new, new_index);
-
-    uint8_t old_secondary_brightness = get_brightness(user_data_old, old_secondary_index);
-    uint8_t new_secondary_brightness = get_brightness(user_data_new, new_secondary_index);
-
-    if (lcd_state == LCD_STATE_INITIAL ||
-            new_index != old_index ||
-            new_secondary_index != old_secondary_index ||
-            new_brightness != old_brightness ||
-            new_secondary_brightness != old_secondary_brightness) {
-
-        if (new_secondary_index != 0) {
-            state->target_lcd_color = change_lcd_color_intensity(
-                led_emulation_colors[new_index], new_brightness);
-            next_led_target_color = change_lcd_color_intensity(
-                led_emulation_colors[new_secondary_index], new_secondary_brightness);
-
-            stop_keyframe_animation(&one_led_color);
-            start_keyframe_animation(&two_led_colors);
-        } else {
-            state->target_lcd_color = change_lcd_color_intensity(
-                led_emulation_colors[new_index], new_brightness);
-            stop_keyframe_animation(&two_led_colors);
-            start_keyframe_animation(&one_led_color);
-        }
-    }
-}
-
-static void update_lcd_text(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
-    if (state->status.leds) {
-        if (lcd_state != LCD_STATE_BITMAP_AND_LEDS ||
-                state->status.leds != prev_status->leds ||
-                state->status.layer != prev_status->layer ||
-                state->status.default_layer != prev_status->default_layer) {
-
-            // NOTE: that it doesn't matter if the animation isn't playing, stop will do nothing in that case
-            stop_keyframe_animation(&lcd_bitmap_animation);
-
-            lcd_state = LCD_STATE_BITMAP_AND_LEDS;
-            // For information:
-            // The logic in this function makes sure that this doesn't happen, but if you call start on an
-            // animation that is already playing it will be restarted.
-            start_keyframe_animation(&lcd_bitmap_leds_animation);
-        }
-    } else {
-        if (lcd_state != LCD_STATE_LAYER_BITMAP ||
-                state->status.layer != prev_status->layer ||
-                state->status.default_layer != prev_status->default_layer) {
-
-            stop_keyframe_animation(&lcd_bitmap_leds_animation);
-
-            lcd_state = LCD_STATE_LAYER_BITMAP;
-            start_keyframe_animation(&lcd_bitmap_animation);
-        }
-    }
-}
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
-    // Check the status here to start and stop animations
-    // You might have to save some state, like the current animation here so that you can start the right
-    // This function is called every time the status changes
-
-    // NOTE that this is called from the visualizer thread, so don't access anything else outside the status
-    // This is also important because the slave won't have access to the active layer for example outside the
-    // status.
-
-    update_emulated_leds(state, prev_status);
-    update_lcd_text(state, prev_status);
-
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
-    state->layer_text = "Suspending...";
-    uint8_t hue = LCD_HUE(state->current_lcd_color);
-    uint8_t sat = LCD_SAT(state->current_lcd_color);
-    state->target_lcd_color = LCD_COLOR(hue, sat, 0);
-    start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
-    state->current_lcd_color = initial_color;
-    state->target_lcd_color = logo_background_color;
-    lcd_state = LCD_STATE_INITIAL;
-    start_keyframe_animation(&default_startup_animation);
-}
-
-void ergodox_board_led_on(void){
-    // No board led support
-}
-
-void ergodox_right_led_1_on(void){
-    user_data_keyboard.led_on |= (1u << 0);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_on(void){
-    user_data_keyboard.led_on |= (1u << 1);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_on(void){
-    user_data_keyboard.led_on |= (1u << 2);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_board_led_off(void){
-    // No board led support
-}
-
-void ergodox_right_led_1_off(void){
-    user_data_keyboard.led_on &= ~(1u << 0);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_off(void){
-    user_data_keyboard.led_on &= ~(1u << 1);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_off(void){
-    user_data_keyboard.led_on &= ~(1u << 2);
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_1_set(uint8_t n) {
-    user_data_keyboard.led1 = n;
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_set(uint8_t n) {
-    user_data_keyboard.led2 = n;
-    visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_set(uint8_t n) {
-    user_data_keyboard.led3 = n;
-    visualizer_set_user_data(&user_data_keyboard);
-}
diff --git a/keyboards/ergodox/keymaps/333fred/Makefile b/keyboards/ergodox/keymaps/333fred/Makefile
deleted file mode 100644 (file)
index 2992054..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-SUBPROJECT_DEFAULT = infinity
-LCD_BACKLIGHT_ENABLE = yes
-LCD_ENABLE = yes
-BACKLIGHT_ENABLE = yes
-NKRO_ENABLE = yes
-KEY_LOCK_ENABLE = yes
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
-
diff --git a/keyboards/ergodox/keymaps/333fred/README.md b/keyboards/ergodox/keymaps/333fred/README.md
deleted file mode 100644 (file)
index f7b4ca4..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-## Layout
-
-### Keymap 0: Basic layer
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   `    |   1  |   2  |   3  |   4  |   5  |  =   |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-| TAB    |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-| Esc    |   A  |   S  |   D  |LT 3,F|   G  |------|           |------|   H  |   J  |   K  |   L  |; / : |   '    |
-|--------+------+------+------+------+------|  L1  |           |TT(3) |------+------+------+------+------+--------|
-| LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |LCTRL |  F4  |  F5  | LGUI | LALT |                                       | Left | Down |  Up  | Right| RGUI |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | Copy | Paste|       | Alt  |Ctrl/Esc|
-                                ,------|------|------|       |------+--------+------.
-                                |      |      | PgUp |       | PgDn |        |      |
-                                | Bcksp|OSL(2)|------|       |------|  Ent   |Space |
-                                |      |      | Del  |       |OSL(2)|        |      |
-                                `--------------------'       `----------------------'
-```
-* Double-click `;` to get a `:`
-* Press-and-hold `f` to go to the movement layer
-
-### Keymap 1: Code Layer
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |      |      |      |      |      |  F10 |           |  F11 |      |      |      |      |      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
-|--------+------+------+------+------+------|  L2  |           |      |------+------+------+------+------+--------|
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      |      |      |                                       | F12  |GoToIm| FAR  |      |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,---------------.
-                                       |Format|Build |       | Test | DTest  |
-                                ,------|------|------|       |------+--------+------.
-                                |      |      |Refact|       |Sort U|        |      |
-                                |      |      |------|       |------|        |      |
-                                |      |      |      |       |      |        |      |
-                                `--------------------'       `----------------------'
-```
-* Build  - Visualt Studio Build Solution. Sends `CTRL + SHFT + B`
-* DTest  - Visual Studio Debug Test. Sends `CTRL + R, CTRL + T`
-* FAR    - Visual Studio Find All References. Sends `CTRL + K, R`
-* Format - Visual Studio Format. Sends `CTRL + K, CTRL + D`
-* GoToIm - Visual Studio Go To Implementation. Sends `CTRL + F12`
-* Refact - Visual Studio Refactor. Sends `CTRL + R, R`
-* Sort U - Visual Studio Sort Usings. Sends `CTRL + R, CTRL + G`
-* Test   - Visual Studio Run Test. Sends `CTRL + R, T`
-
-
-### Keymap 2: Symbol Layer
-```
-,---------------------------------------------------.           ,--------------------------------------------------.
-|Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
-|---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
-|         |   !  |   @  |   (  |   )  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
-|---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|         |   #  |   $  |   {  |   }  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
-|---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
-`---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  | EPRM  |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
-  `-----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      | Caps |       |      |      |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |APscr |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      | PScr |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-* APscr - Take a printscreen of the current app. Sends `Alt + Print Screen`
-
-### Keymap 3: Media and Mouse Keys
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | Back+| Back-|       | Vol+ |      |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |BL_TOG|       | Vol- |      |      |
-                                |      |      |------|       |------| PL/PS| Next |
-                                |      |      |      |       | Back |      |      |
-                                `--------------------'       `--------------------'
-```
-
-### Keymap 4: Movement
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |KOpen |KType |      |      |      |      |           |      | Copy |      |      |      | Paste|        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |DLeft |DRight| LCTL |      |      |------|           |------| Left | Down |  Up  | Right|      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |SFT_TB| Tab  |      |      |      |      |           |      |      |      |      |      |      |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      |      |      |                                       |      |      |      |      |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       | Home | End  |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |      |       |      |      |      |
-                                |      | LSFT |------|       |------|      |      |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-* DLeft  - Move to the left Desktop. Sends `Ctrl + Win + Left Arrow`
-* DRight - Move to the right Desktop. Sends `Ctrl + Win + Right Arrow`
-* KOpen  - Opens KeePass. Sends `Ctrl + Alt + k`
-* KType  - Autotypes KeePass password. Sends `Ctrl + Alt + a`
-* SFT_TB - Sends `CTRL + TAB`.
diff --git a/keyboards/ergodox/keymaps/333fred/config.h b/keyboards/ergodox/keymaps/333fred/config.h
deleted file mode 100644 (file)
index f19a52b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef CONFIG_H_
-#define CONFIG_H_
-
-#include "../../config.h"
-
-#undef TAPPING_TERM
-#define TAPPING_TERM 150
-
-#define PERMISSIVE_HOLD
-
-#endif
diff --git a/keyboards/ergodox/keymaps/333fred/keymap.c b/keyboards/ergodox/keymaps/333fred/keymap.c
deleted file mode 100644 (file)
index c1722c1..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define CODE 1 // code layer
-#define SYMB 2 // symbols
-#define MDIA 3 // media keys
-#define MOVE 4 // movement layer
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-};
-
-enum custom_macros {
-  VERSION,
-  EEPROM,
-
-  // Windows macros
-  DLEFT,
-  DRIGHT,
-  PSCREEN_APP,
-  LSFT_TAB,
-
-  // VS Macros
-  REFACTOR,
-  TEST,
-  DEBUG_TEST,
-  FORMAT,
-  BUILD,
-  GO_TO_IMPL,
-  FIND_ALL_REF,
-  REMOVE_SORT_USINGS,
-
-  // KeePass macros
-  KEEPASS_OPEN,
-  KEEPASS_TYPE,
-};
-
-// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  |  =   |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | TAB    |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Esc    |   A  |   S  |   D  |LT 3,F|   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------|  L1  |           |MO(3) |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCTRL |  F4  |  F5  | LGUI | LALT |                                       | Left | Down |  Up  | Right| RGUI |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Copy | Paste|       | Alt  | Lock |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | PgUp |       | PgDn |        |      |
- *                                 | Bcksp|OSL(2)|------|       |------|  Ent   |Space |
- *                                 |      |      | Del  |       | RCtrl|        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,        KC_1,         KC_2,   KC_3,   KC_4,          KC_5,   KC_EQL,
-        KC_TAB,        KC_Q,         KC_W,   KC_E,   KC_R,          KC_T,   TG(SYMB),
-        KC_ESC,        KC_A,         KC_S,   KC_D,   LT(MOVE, KC_F),KC_G,
-        OSM(MOD_LSFT), CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,          KC_B,   TG(CODE),
-        OSM(MOD_LCTL), KC_F4,        KC_F5,  KC_LGUI,KC_LALT,
-                                                                             LCTL(KC_C),LCTL(KC_V),
-                                                                                        KC_PGUP,
-                                                                     KC_BSPC,OSL(SYMB), KC_DEL,
-        // right hand
-             TG(CODE), KC_6,   KC_7,   KC_8,   KC_9,   KC_0,           KC_MINS,
-             TG(SYMB), KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,           KC_BSLS,
-                       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,        KC_QUOT,
-             MO(MDIA), KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
-                                  KC_LEFT,KC_DOWN,KC_UP,  KC_RIGHT,       KC_RGUI,
-             KC_RALT, KC_LOCK,
-             KC_PGDN,
-             KC_RCTL, KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Code Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |ACCESS|      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |  F10 |           |  F11 |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|  L2  |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | F12  |GoToIm|  FAR |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        |Format|Build |       | Test | DTest  |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |Refact|       |Sort U|        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[CODE] = KEYMAP(  // layer 1 : code
-        // left hand
-        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10,
-        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(SYMB),
-        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                                             M(FORMAT),M(BUILD),
-                                                                                       M(REFACTOR),
-                                                                    KC_TRNS, KC_TRNS,  KC_TRNS,
-        // right hand
-
-            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
-            KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
-                     KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
-            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
-                              KC_F12,  M(GO_TO_IMPL),M(FIND_ALL_REF),KC_TRNS, KC_TRNS,
-             M(TEST), M(DEBUG_TEST),
-             M(REMOVE_SORT_USINGS),
-             KC_TRNS, KC_TRNS, KC_TRNS
-    ),
-/* Keymap 2: Symbol Layer
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |         |   !  |   @  |   (  |   )  |   |  |ACCESS|           |ACCESS|   Up |   7  |   8  |   9  |   *  |   F12  |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |   #  |   $  |   {  |   }  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |---------+------+------+------+------+------|ACCESS|           |      |------+------+------+------+------+--------|
- * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | EPRM  |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      | Caps |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |APScr |       |      |      |      |
- *                                 |      |ACCESS|------|       |------|      |      |
- *                                 |      |      | PScr |       |ACCESS|      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LPRN,KC_RPRN,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LCBR,KC_RCBR,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_CAPS,
-                                               M(PSCREEN_APP),
-                               KC_TRNS,KC_TRNS,KC_PSCR,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 3: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |ACCESS|------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Back+| Back-|       | Vol+ |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |BackTg|       | Vol- |      |      |
- *                                 |      |      |------|       |------| PL/PS| Next |
- *                                 |      |      |      |       | Back |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           BL_INC,  BL_DEC,
-                                                    BL_TOGG,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_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_VOLD,
-       KC_MPRV, KC_MPLY, KC_MNXT
-),
-/* Keymap 4: Movement
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |KOpen |KType |      |      |      |      |           |      | Copy |      |      |      | Paste|        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |DLeft |DRight|LCTRL |ACCESS|      |------|           |------| Left | Down |  Up  | Right|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |SFT_TB| TAB  |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       | Home | End  |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |LSHIFT|------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MOVE] = KEYMAP(
-       KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, M(KEEPASS_OPEN),M(KEEPASS_TYPE),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, M(DLEFT),       M(DRIGHT),      KC_LCTL, KC_TRNS, KC_TRNS,
-       KC_TRNS, M(LSFT_TAB),    KC_TAB,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS,
-                                             KC_TRNS, KC_TRNS,
-                                                      KC_TRNS,
-                                    KC_TRNS, KC_LSFT, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
-       KC_TRNS,  LCTL(KC_C),KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_V),KC_TRNS,
-                 KC_LEFT,   KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS,   KC_TRNS,
-       KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
-                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
-       KC_HOME,  KC_END,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-
-)
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case VERSION:
-          if (record->event.pressed) {
-            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-          }
-          break;
-        case EEPROM:
-          if (record->event.pressed) { // For resetting EEPROM
-            eeconfig_init();
-          }
-          break;
-        case DLEFT:
-          if (record->event.pressed) { // Windows move desktop left
-            return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
-          }
-          break;
-        case DRIGHT:
-          if (record->event.pressed) { // Windows move desktop right
-            return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
-          }
-          break;
-        case PSCREEN_APP:
-          if (record->event.pressed) {
-            return MACRO(D(LALT), T(PSCR), U(LALT), END);
-          }
-          break;
-        case LSFT_TAB:
-          if (record->event.pressed) {
-            return MACRO(D(LSFT), T(TAB), U(LSFT), END);
-          }
-        case REFACTOR:
-          if (record->event.pressed) { // VS Refactor CTRL+R, R
-            return MACRO(D(LCTL), T(R), U(LCTL), T(R), END);
-          }
-          break;
-        case TEST:
-          if (record->event.pressed) { // VS Run Tests CTRL+R, T
-            return MACRO(D(LCTL), T(R), U(LCTL), T(T), END);
-          }
-          break;
-        case DEBUG_TEST:
-          if (record->event.pressed) { // VS Debug Tests CTRL+R, CTRL+T
-            return MACRO(D(LCTL), T(R), T(T), U(LCTL), END);
-          }
-          break;
-        case FORMAT:
-          if (record->event.pressed) { // VS Format Document, CTRL+K, CTRL+D
-            return MACRO(D(LCTL), T(K), T(D), U(LCTL), END);
-          }
-          break;
-        case BUILD:
-          if (record->event.pressed) { // VS Build. Sends CTRL+SHFT+B
-            return MACRO(D(LCTL), D(LSFT), T(B), U(LSFT), U(LCTL), END);
-          }
-          break;
-        case GO_TO_IMPL:
-          if (record->event.pressed) { // VS Go To Implementation. Sends CTRL+F12
-            return MACRO(D(LCTL), T(F12), U(LCTL), END);
-          }
-          break;
-        case FIND_ALL_REF:
-          if (record->event.pressed) { // VS Find All References. Sends CTRL+K, R
-            return MACRO(D(LCTL), T(K), U(LCTL), T(R), END);
-          }
-          break;
-        case REMOVE_SORT_USINGS:
-          if (record->event.pressed) {
-            return MACRO(D(LCTL), T(R), T(G), U(LCTL), END);
-          }
-          break;
-        case KEEPASS_OPEN:
-          if (record->event.pressed) { // Keepass open application
-            return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
-          }
-          break;
-        case KEEPASS_TYPE:
-          if (record->event.pressed) { // Keepass autotype
-            return MACRO(D(LCTL), D(LALT), T(A), U(LALT), U(LCTL), END);
-          }
-          break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// 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) {
-    ergodox_board_led_on();
-    ergodox_led_all_on();
-};
-
diff --git a/keyboards/ergodox/keymaps/333fred/visualizer.c b/keyboards/ergodox/keymaps/333fred/visualizer.c
deleted file mode 100644 (file)
index 2a30562..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
-*/
-
-#include "simple_visualizer.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-    uint8_t saturation = 60;
-    if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
-        saturation = 255;
-    }
-    if (state->status.layer & 0x10) {
-        state->target_lcd_color = LCD_COLOR(140, 100, 60);
-        state->layer_text = "Movement";
-    } else if (state->status.layer & 0x8) {
-        state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
-        state->layer_text = "Media";
-    } else if (state->status.layer & 0x4) {
-        state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
-        state->layer_text = "Symbol";
-    } else if (state->status.layer & 0x2) {
-        state->target_lcd_color = LCD_COLOR(216, 90, 0xFF);
-        state->layer_text = "Code";
-    } else {
-        state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
-        state->layer_text = "Default";
-    }
-}
diff --git a/keyboards/ergodox/keymaps/ab/Makefile b/keyboards/ergodox/keymaps/ab/Makefile
deleted file mode 100644 (file)
index b673c5c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Having a file like this allows you to override Makefile definitions
-# for your own particular keymap
-
-SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/ab/keyboard-layout.json b/keyboards/ergodox/keymaps/ab/keyboard-layout.json
deleted file mode 100644 (file)
index e2badad..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-[
-  {
-    "name": "Beginner's Keymap for Ergodox-EZ",
-    "author": "Anand Babu Periasamy"
-  },
-  [
-    {
-      "x": 3.5
-    },
-    "#\n3\n\n\nF3",
-    {
-      "x": 10.5
-    },
-    ")\n0\n\n\nF10"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n2\n\n\nF2",
-    {
-      "x": 1
-    },
-    "$\n4\n\n\nF4",
-    {
-      "x": 8.5
-    },
-    "(\n9\n\n\nF9",
-    {
-      "x": 1
-    },
-    "_\n-\n\n\nF11"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "%\n5\n\n\nF5",
-    "^\n6\n\n\nF6",
-    {
-      "x": 4.5
-    },
-    "&\n7\n\n\nF7",
-    "*\n8\n\n\nF8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "w": 1.5
-    },
-    "~\n`\n\n\nEsc",
-    "!\n1\n\n\nF1",
-    {
-      "x": 14.5
-    },
-    "+\n=\n\n\nF12",
-    {
-      "a": 7,
-      "w": 1.5
-    },
-    "Backspace\n\n\n\nBackspace"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5
-    },
-    "E\n\n\n\n<i class=\"fa fa-caret-up\" aria-hidden=\"true\"></i>",
-    {
-      "x": 10.5
-    },
-    "I"
-  ],
-  [
-    {
-      "y": -0.8799999999999999,
-      "x": 2.5
-    },
-    "W"
-  ],
-  [
-    {
-      "y": -0.9950000000000001,
-      "x": 4.5,
-      "a": 4
-    },
-    "R",
-    {
-      "x": 8.5,
-      "a": 7
-    },
-    "U",
-    {
-      "x": 1
-    },
-    "O"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "T",
-    {
-      "h": 1.5
-    },
-    "<i class=\"fa fa-chevron-circle-left\" aria-hidden=\"true\"></i>",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "<i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i>",
-    "Y"
-  ],
-  [
-    {
-      "y": -0.875,
-      "a": 6,
-      "w": 1.5
-    },
-    "Tab",
-    {
-      "a": 7
-    },
-    "Q",
-    {
-      "x": 14.5
-    },
-    "P",
-    {
-      "a": 4,
-      "w": 1.5
-    },
-    "|\n\\"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 7
-    },
-    "D\n\n\n\n<i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>",
-    {
-      "x": 10.5
-    },
-    "K"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "S\n\n\n\n<i class=\"fa fa-caret-left\" aria-hidden=\"true\"></i>",
-    {
-      "x": 1,
-      "c": "#c4bcbc"
-    },
-    "F\n\n\n\n<i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i>",
-    {
-      "x": 8.5
-    },
-    "J",
-    {
-      "x": 1,
-      "c": "#cccccc"
-    },
-    "L"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "G",
-    {
-      "x": 6.5
-    },
-    "H"
-  ],
-  [
-    {
-      "y": -0.875,
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        0,
-        2
-      ],
-      "w": 1.5
-    },
-    "\n\n\nCtrl\n\n\nCaps",
-    {
-      "a": 7
-    },
-    "A",
-    {
-      "x": 14.5,
-      "a": 4
-    },
-    ":\n;",
-    {
-      "a": 7,
-      "w": 1.5
-    },
-    "Enter"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "h": 1.5
-    },
-    "PgDn",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "PgUp"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5
-    },
-    "C\n\n\n\n<i class=\"fa fa-hand-o-up\" aria-hidden=\"true\"></i>",
-    {
-      "x": 10.5,
-      "a": 4
-    },
-    "<\n,"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "a": 7
-    },
-    "X\n\n\n\n<i class=\"fa fa-hand-o-left\" aria-hidden=\"true\"></i>",
-    {
-      "x": 1
-    },
-    "V\n\n\n\n<i class=\"fa fa-hand-o-right\" aria-hidden=\"true\"></i>",
-    {
-      "x": 8.5
-    },
-    "M",
-    {
-      "x": 1,
-      "a": 4
-    },
-    ">\n."
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "a": 7
-    },
-    "B",
-    {
-      "x": 6.5
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "w": 1.5
-    },
-    "Shift",
-    "Z",
-    {
-      "x": 14.5,
-      "a": 4
-    },
-    "?\n/",
-    {
-      "w": 1.5
-    },
-    "\"\n'"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 7
-    },
-    "Alt\n\n\n\n<i class=\"fa fa-search-minus\" aria-hidden=\"true\"></i>",
-    {
-      "x": 10.5
-    },
-    "<i class=\"fa fa-long-arrow-down\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-down'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "<i class='fa fa-linux'></i>\n\n\n\n<i class=\"fa fa-search\" aria-hidden=\"true\"></i>",
-    {
-      "x": 1
-    },
-    "Alt\n\n\n\n<i class=\"fa fa-search-plus\" aria-hidden=\"true\"></i>",
-    {
-      "x": 8.5
-    },
-    "<i class=\"fa fa-long-arrow-left\" aria-hidden=\"true\"></i>\n\n\n\n<i class=\"fa fa-undo\" aria-hidden=\"true\"></i>",
-    {
-      "x": 1
-    },
-    "<i class=\"fa fa-long-arrow-up\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-up'></i>"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5
-    },
-    "Ctrl\n\n\n\n<i class='fa fa-download'></i>",
-    "Esc",
-    {
-      "x": 14.5
-    },
-    "<i class=\"fa fa-long-arrow-right\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-off'></i>",
-    "Fn"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1
-    },
-    "<i class=\"fa fa-clone\" aria-hidden=\"true\"></i>",
-    "("
-  ],
-  [
-    {
-      "h": 2
-    },
-    "Space",
-    {
-      "h": 2
-    },
-    "Del",
-    "["
-  ],
-  [
-    {
-      "x": 2
-    },
-    "{"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    ")",
-    "<i class=\"fa fa-paste\" aria-hidden=\"true\"></i>"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "]",
-    {
-      "h": 2
-    },
-    "Enter",
-    {
-      "h": 2
-    },
-    "<i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i>"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "}"
-  ]
-]
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/ab/keymap.c b/keyboards/ergodox/keymaps/ab/keymap.c
deleted file mode 100644 (file)
index 7938c9d..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define FN1  1 // media layer
-
-#define CAPS_CTL CTL_T(KC_CAPS)  // Caps on tap, Ctrl on hold.
-#define COPY     LCTL(KC_V)      // C-c Copy
-#define PASTE    LCTL(KC_V)      // C-v Paste
-#define ZM_NRM   LCTL(KC_0)      // C-0 Zoom Normal
-#define ZM_OUT   LCTL(KC_MINS)   // C-- Zoom Out
-#define ZM_IN    LCTL(KC_PLUS)   // C-+ Zoom In
-#define EM_UNDO  LCTL(KC_UNDS)   // C-_ Emacs Undo
-
-#define _MOB  1 // Mobile#
-#define _CUS1 2 // Custom macro 1
-#define _CUS2 3 // Custom macro 2
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  |  6   |           |   7  |   8  |   9  |   0  |   -  |   =  | BSpace |
- * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  | Fwd  |           | Back |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Caps/Ctl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
- * |--------+------+------+------+------+------| PgDn |           | PgUp |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |   '    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Ctrl |  Esc | LGui | Alt  | Alt  |                                       | Left |  Dn  |  Up  | Right|  Fn  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Copy |  (   |       |   )  | Paste|
- *                                 ,------|------+------|       |------+------+------.
- *                                 |      |      |  [   |       |   ]  |      |      |
- *                                 |Space | Del  |------|       |------| Enter|BSpace|
- *                                 |      |      |  {   |       |   }  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-    [BASE] = KEYMAP(  // layer 0 : default
-       // Left hand
-       KC_GRV,   KC_1,    KC_2,    KC_3,     KC_4,     KC_5,    KC_6,
-       KC_TAB,   KC_Q,    KC_W,    KC_E,     KC_R,     KC_T,    KC_WBAK,
-       CAPS_CTL, KC_A,    KC_S,    KC_D,     KC_F,     KC_G,
-       KC_LSFT,  KC_Z,    KC_X,    KC_C,     KC_V,     KC_B,    KC_PGDN,
-       KC_LCTL,  KC_ESC,  KC_LGUI, KC_LALT,  KC_LALT,
-       COPY,     KC_LCBR,
-       KC_LPRN,
-       KC_SPC,   KC_DEL,  KC_LBRC,
-       // Right hand
-       KC_7,     KC_8,    KC_9,    KC_0,     KC_MINS,  KC_EQL,  KC_BSPC,
-       KC_WFWD,  KC_Y,    KC_U,    KC_I,     KC_O,     KC_P,    KC_BSLS,
-       KC_H,     KC_J,    KC_K,    KC_L,     KC_SCLN,  KC_ENT,
-       KC_PGUP,  KC_N,    KC_M,    KC_COMM,  KC_DOT,   KC_SLSH, KC_QUOT,
-       KC_LEFT,  KC_DOWN, KC_UP,   KC_RIGHT, TG(FN1),
-       KC_RCBR,  PASTE,
-       KC_RPRN,
-       KC_RBRC,  KC_ENT,  KC_BSPC),
-/* Keymap 1: Fn Keys, media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Esc   |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | BSpace |
- * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      | LClk | MClk | RClk |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Teensy|      | ZmNrm| ZmOut| ZmIn |                                       | Undo |VolDn |VolUp | Mute |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------+------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// FN1 Layer
-    [FN1] = KEYMAP(
-       // Left hand
-       KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, ZM_NRM,  ZM_OUT,  ZM_IN,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       RESET,   KC_TRNS, KC_TRNS,
-       // Right hand
-       KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS, M(_MOB), KC_TRNS, M(_CUS1),M(_CUS2),KC_TRNS, KC_TRNS,
-       EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-       ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    // MACRODOWN only works in this function
-    switch(id) {
-    case _MOB: // Your mobile# here.
-       return MACRODOWN(T(1), T(2), T(3), T(MINS),
-                        T(1), T(2), T(3), T(MINS),
-                        T(1), T(2), T(3), T(4),
-                        END);
-    case _CUS1: // Your custom macro 1
-       return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
-    case _CUS2: // Your custom macro 2
-       return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
-    };
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-       // TODO: Make this relevant to the ErgoDox EZ.
-    case 1:
-       ergodox_right_led_1_on();
-       break;
-    case 2:
-       ergodox_right_led_2_on();
-       break;
-    default:
-       // none
-       break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/ab/readme.md b/keyboards/ergodox/keymaps/ab/readme.md
deleted file mode 100644 (file)
index fde1c17..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# Beginner's keymap for Ergodox-EZ
-Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps. 
-
-![Beginner's Keymap](https://i.imgur.com/dAIocc8.png)
-
-#### Pros
-* Easier to switch between regular keyboards and Ergodox-EZ.
-* Easy on beginners. It has everything you need for your day to day usage.
-
-#### Cons
-* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox/keymaps/default/readme.md)
-* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.
-
-#### Notes
-* Ideally number key [6] should have started from the right-hand side of the keyboard. Doing so breaks the familiar QWERTY layout.
-* Quote key ['] should have been placed between [:] and [Enter]. Due to lack of key space, it is placed below [Enter].
-* Double [Alt] keys are placed adjacent to each other for convenience.
-* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users.
-* Additional bracket keys are placed in the center of the keyboard for programmer's convenience.
-
-
diff --git a/keyboards/ergodox/keymaps/absenth/keymap.c b/keyboards/ergodox/keymaps/absenth/keymap.c
deleted file mode 100644 (file)
index ded668e..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   | A/L2 |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LS/PO  |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RS/PC  |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        LT(MDIA, KC_A),         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSPO,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSPC,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------| left | down |  up  | down |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 | Lclk | Rclk |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/absenth/readme.md b/keyboards/ergodox/keymaps/absenth/readme.md
deleted file mode 100644 (file)
index 744c67a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# ErgoDox EZ Absenth Configuration
-
-## Changelog
-
-
-* Sept. 14, 2016 (V0.2):
-  * Added Space Cadet to Left and Right Shift.  Pressing Left shift with no other key adds an "(" and pressing Right shift with no other key adds an ")"
-* Sept. 8, 2016 (V0.1): 
-  * Made A key double as MEDIA Layer change when you hold it.  Added mouse buttons to the large thumb buttons on the left side on the Media Layer.  Added vi/vim style arrow keys on HJKL on media layer.
-
-![Absenth](https://i.imgur.com/D1enl2x.jpg)
diff --git a/keyboards/ergodox/keymaps/adam/config.h b/keyboards/ergodox/keymaps/adam/config.h
deleted file mode 100644 (file)
index b3910bc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "../../config.h"
-
-#undef TAPPING_TERM
-#define TAPPING_TERM 300 //At 500 some bad logic takes hold
-#define PREVENT_STUCK_MODIFIERS
-#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/ergodox/keymaps/adam/keymap.c b/keyboards/ergodox/keymaps/adam/keymap.c
deleted file mode 100644 (file)
index 432f0fb..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-
-#define BASE 0 // default layer
-#define FLOCK 1 // symbols arrows and F keys on F held down
-#define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
-#define CAPLOCK 3 //caps on until space / enter / esc
-#define SFLOCK 11 // symbols arrows and F keys on F held down
-#define SJLOCK 12 // same as Flock but with fall thru J and mapped to J held down
-
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-// Sends macro when key is tapped, presses mod when key is held
-#define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \
-     ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
-     ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) )
-
-#define tap_mod_shift(record, mod, macro) ( ((record)->event.pressed) ? \
-          ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
-          ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (MACRO( D(LSFT), T(LBRC), U(LSFT), END)) : MACRO(U(mod), END) ) )
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layout
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |;     |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  Z   |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |       |     |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |        |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-        [BASE] = KEYMAP(
-                // left hand
-                GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS,
-                _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB,
-                _______, SFT_T(KC_A), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
-                _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
-                _______, _______,  _______,  _______ ,_______,
-                _______,  _______,
-                _______,
-                KC_SPC, _______, _______ ,
-
-                // right hand
-                KC_EQL,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             _______,
-                KC_TAB,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             _______,
-                GUI_T(KC_H),   F(JLOCK),   CTL_T(KC_K),   ALT_T(KC_L),   SFT_T(KC_SCLN),           _______,
-                KC_DELETE,  KC_N,   KC_M,   KC_COMM,KC_DOT, KC_QUOT,           _______,
-                _______,  _______,_______,_______,          _______,
-                _______,        _______,
-                _______,
-                _______,_______, KC_ENT
-        ),
-        [FLOCK] = KEYMAP(
-                // left hand
-                XXXXXXX,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
-                XXXXXXX,KC_LBRC,XXXXXXX,  XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
-                XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,_______,XXXXXXX,
-                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
-                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
-                XXXXXXX,XXXXXXX,
-                XXXXXXX,
-                KC_ESC,XXXXXXX,XXXXXXX,
-                // right hand
-                KC_F12, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  XXXXXXX,
-                XXXXXXX, XXXXXXX, KC_HOME,   KC_PGUP,    XXXXXXX,    KC_RBRC, XXXXXXX,
-                KC_LEFT, KC_DOWN,   KC_UP,    KC_RIGHT,    S(KC_RBRC), XXXXXXX,
-                XXXXXXX, XXXXXXX, KC_END,   KC_PGDOWN,    KC_QUES,    KC_SLSH, XXXXXXX,
-                XXXXXXX, XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,
-                XXXXXXX, XXXXXXX,
-                XXXXXXX,
-                XXXXXXX, XXXXXXX, XXXXXXX
-        ),
-        [JLOCK] = KEYMAP(
-                // left hand
-                XXXXXXX,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
-                XXXXXXX,KC_LBRC,KC_GRV,  KC_TILD,XXXXXXX,XXXXXXX,XXXXXXX,
-                XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,
-                XXXXXXX,KC_BSLS,KC_PIPE,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
-                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
-                XXXXXXX,XXXXXXX,
-                XXXXXXX,
-                KC_ESC,XXXXXXX,XXXXXXX,
-                // right hand
-                KC_F12, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  XXXXXXX,
-                  XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,    XXXXXXX,    KC_RBRC, XXXXXXX,
-                XXXXXXX, _______,   XXXXXXX,  XXXXXXX,    S(KC_RBRC), XXXXXXX,
-                XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,    XXXXXXX,    XXXXXXX, XXXXXXX,
-                XXXXXXX,XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,
-                XXXXXXX, XXXXXXX,
-                XXXXXXX,
-                XXXXXXX, XXXXXXX, XXXXXXX
-        ),
-        [CAPLOCK] = KEYMAP(
-                // left hand
-                TO(BASE), _______, _______, _______, _______, _______, _______,
-                _______, S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), _______,
-                // _______, SFT_T(S(KC_A)), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
-                _______, S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G),
-                _______, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), _______,
-                _______, _______,  _______,  _______ ,_______,
-                _______,  _______,
-                _______,
-                TO(BASE), _______, _______ ,
-
-                // right hand
-                _______,     _______,   _______,   _______,   _______,   _______,             _______,
-                _______,     S(KC_Y),   S(KC_U),   S(KC_I),   S(KC_O),   S(KC_P),             _______,
-                         S(KC_H),   S(KC_J),   S(KC_K),   S(KC_L),   S(KC_SCLN),           _______,
-                _______,  S(KC_N),   S(KC_M),   S(KC_COMM),S(KC_DOT), S(KC_QUOT),           _______,
-                _______,  _______,_______,_______,          _______,
-                _______,        _______,
-                _______,
-                _______,_______, TO(BASE)
-        )
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-        [1] = ACTION_LAYER_TAP_KEY(FLOCK,KC_F),
-        [2] = ACTION_LAYER_TAP_KEY(JLOCK,KC_J),
-        [11] = ACTION_LAYER_TAP_KEY(FLOCK,LSFT(KC_F)),
-        [12] = ACTION_LAYER_TAP_KEY(JLOCK,LSFT(KC_J))
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-        // MACRODOWN only works in this function
-        switch(id) {
-        case 0:
-                if (record->event.pressed) {
-                        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-                }
-                break;
-        }
-
-        return MACRO_NONE;
-};
-
-// 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);
-
-  switch (layer) {
-    // TODO: Make this relevant to the ErgoDox EZ.
-      case 1:
-          break;
-      case 2:
-          break;
-      default:
-          // none
-          break;
-  }
-};
diff --git a/keyboards/ergodox/keymaps/adam/readme.md b/keyboards/ergodox/keymaps/adam/readme.md
deleted file mode 100644 (file)
index 9d03df5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Adam's ErgoDox
-
-Currently only really uses keys available on Let's Split, for ease of switching
diff --git a/keyboards/ergodox/keymaps/adnw_k_o_y/keymap.c b/keyboards/ergodox/keymaps/adnw_k_o_y/keymap.c
deleted file mode 100644 (file)
index 31ae426..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_german.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   K  |   .  |   O  |   ,  |   Y  |  L1  |           |  L1  |   V  |   G  |   C  |   L  |   ß  |   Z    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   H  |   A  |   E  |   I  |   U  |------|           |------|   D  |   T  |   R  |   N  |   S  |   F    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |X/Ctrl|   Q  |   Ä  |   Ü  |   Ö  |      |           |      |   B  |   P  |   W  |   M  |   J  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Enter |------|       |------|  Tab   |RShift|
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        DE_K,         DE_DOT, DE_O,   DE_COMM,DE_Y,   TG(SYMB),
-        KC_BSPC,        DE_H,         DE_A,   DE_E,   DE_I,   DE_U,
-        KC_LSFT,        CTL_T(DE_X),  DE_Q,   DE_AE,  DE_UE,  DE_OE,  ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_ENT ,KC_END,
-        // right hand
-        KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-        TG(SYMB),    DE_V,   DE_G,   DE_C,   DE_L,   DE_SS,            DE_Z,
-                     DE_D,   DE_T,   DE_R,   DE_N,   LT(MDIA, DE_S),   GUI_T(KC_F),
-        MEH_T(KC_NO),KC_B,   KC_P,   KC_W,   KC_M,   CTL_T(KC_J),      KC_RSFT,
-                          KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-        KC_LALT,        CTL_T(KC_ESC),
-        KC_PGUP,
-        KC_PGDN,KC_TAB, KC_RSFT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/adnw_k_o_y/readme.md b/keyboards/ergodox/keymaps/adnw_k_o_y/readme.md
deleted file mode 100644 (file)
index f0dd381..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Basic implementation for k.o,y variant of the adnw layout
-
-adnw is a layout optimised for usage with german and english language
-k.o,y is a variant of this layout
-http://www.adnw.de/index.php?n=Main.SeitlicheNachbaranschl%C3%A4ge
-
-The os must use the de_DE layout
diff --git a/keyboards/ergodox/keymaps/albert/Makefile b/keyboards/ergodox/keymaps/albert/Makefile
deleted file mode 100644 (file)
index eb8544a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-COMMAND_ENABLE = no        # Commands for debug and configuration
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/albert/config.h b/keyboards/ergodox/keymaps/albert/config.h
deleted file mode 100644 (file)
index e6d3631..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* using UK layout for space-cadet-shift */
-#define LSPO_KEY KC_9
-#define RSPC_KEY KC_0
-
-#define LEADER_TIMEOUT 800 // leader key sequence timeout in millis
-
-#endif
diff --git a/keyboards/ergodox/keymaps/albert/keymap.c b/keyboards/ergodox/keymaps/albert/keymap.c
deleted file mode 100644 (file)
index dfbb311..0000000
+++ /dev/null
@@ -1,661 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#include <stdarg.h>
-
-/* use UK keymap */
-
-#define UK_HASH KC_NONUS_HASH
-#define UK_BSLS KC_NONUS_BSLASH
-#define UK_PIPE LSFT(UK_BSLS)
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define NUMB 2 // numbers and hex
-#define CRSR 3 // cursor keys
-#define MOUS 4 // mouse keys
-#define KEYW 5 // keyword macros
-#define EMAC 6 // emacs
-
-// my macros
-#define UM_ECET   M(0)  // { }
-#define UM_0x     M(1)
-#define UM_PUB    M(2)
-#define UM_PRO    M(3)
-#define UM_PRV    M(4)
-#define UM_CLS    M(5)
-#define UM_STR    M(6)
-#define UM_RET    M(7)
-#define UM_INC    M(8)
-#define UM_OBJ    M(9)
-#define UM_GITLOG M(10)
-#define UM_GOODM  M(11)
-#define UM_NAMESP M(12)
-#define UM_EMTR   M(14) // emacs toggle read-only
-#define UM_EMWR   M(15) // emacs write buffer (save)
-#define UM_EMUN   M(16) // emacs undo
-#define UM_EMRE   M(17) // emacs redo
-#define UM_EMPB   M(18) // emacs previous buffer
-#define UM_EMNB   M(19) // emacs next buffer
-#define UM_GOODN  M(20)
-#define UM_ECETS  M(22)  // { };
-#define UM_TMPL   M(23)
-#define UM_TYPN   M(24)
-#define UM_CONT   M(25)
-#define UM_BREAK  M(26)
-#define UM_CONST  M(27)
-#define UM_SMILY  M(28)
-#define UM_SADF   M(29)
-#define UM_SCARF  M(30)
-#define UM_DECAF  M(31)
-#define UM_OPER   M(32)
-#define UM_NULP   M(33)
-#define UM_EXTR   M(34)
-#define UM_VIRT   M(35)
-#define UM_EMFB   M(36) // emacs font bigger
-#define UM_EMFS   M(37) // emacs font smaller
-#define UM_VOLAT  M(38)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | ESC    |   1  |   2  |   3  |   4  |   5  | SfLt |           | SfRt |   6  |   7  |   8  |   9  |   0  | BkSp   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  | Del    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Caps/L2|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |Enter/L2|
- * |--------+------+------+------+------+------|  L6  |           |  L6  |------+------+------+------+------+--------|
- * | LSft/( |   Z  |   X  |   C  | V/L3 | B/L4 |      |           |      | N/L4 | M/L3 |   ,  |   .  |   /  | RSft/) |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Ctrl/[| Alt/]|   #  | Left |Right |                                       |  Up  | Down |   -  | Alt/[|Ctrl/]|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  L2  | lead |       | lead |  Ins |
- *                                 ,------|------|------|       |------+------+------.
- *                                 | Space| BkSp | Home |       | PgUp | Enter|Space |
- *                                 |  /   |  /   |------|       |------|   /  |  /   |
- *                                 | Ctrl | Alt  |End/L5|       |PDn/L5|  Alt | Ctrl |
- *                                 `--------------------'       `--------------------'
- */
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,            KC_1,            KC_2,       KC_3,      KC_4,           KC_5,           LSFT(KC_LEFT),
-        KC_TAB,            KC_Q,            KC_W,       KC_E,      KC_R,           KC_T,           MO(SYMB),
-        LT(NUMB, KC_CAPS), KC_A,            KC_S,       KC_D,      KC_F,           KC_G,
-        KC_LSPO,           KC_Z,            KC_X,       KC_C,      LT(CRSR, KC_V), LT(MOUS, KC_B), MO(EMAC),
-        CTL_T(KC_LBRC),    ALT_T(KC_RBRC),  UK_HASH,    KC_LEFT,   KC_RGHT,
-                                                                                     TG(NUMB),        KC_LEAD,
-                                                                                                      KC_HOME,
-                                                                     CTL_T(KC_SPC),  ALT_T(KC_BSPC),  LT(KEYW, KC_END),
-        // right hand
-             LSFT(KC_RGHT),   KC_6,            KC_7,            KC_8,      KC_9,       KC_0,             KC_BSPC,
-             MO(SYMB),        KC_Y,            KC_U,            KC_I,      KC_O,       KC_P,             KC_DELT,
-                              KC_H,            KC_J,            KC_K,      KC_L,       KC_SCLN,          LT(NUMB, KC_ENT),
-             MO(EMAC),        LT(MOUS, KC_N),  LT(CRSR, KC_M),  KC_COMM,   KC_DOT,     KC_SLSH,          KC_RSPC,
-                                               KC_UP,           KC_DOWN,   KC_MINS,    ALT_T(KC_LBRC),   CTL_T(KC_RBRC),
-           KC_LEAD,            KC_INS,
-           KC_PGUP,
-           LT(KEYW, KC_PGDN),  ALT_T(KC_ENT),   CTL_T(KC_SPC)
-    ),
-/* Keymap 1: Symbol Layer with F keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ##   |  F1  |  F2  |  F3  |  F4  |  F5  |  ##  |           |  ##  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |   ##   |   !  |   "  |   £  |   $  |   %  |  ##  |           |  ##  |   -  |   +  |   =  |   @  |   ~  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   ##   |   ^  |   &  |   *  |   _  |   #  |------|           |------|   {  |   }  |   ;  |   '  |   #  |   ##   |
- * |--------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
- * |   ##   |   \  |   |  |   `  |   -  |   /  |      |           |      |   [  |   ]  |   <  |   >  |   ?  |   ##   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |  ##  |  ##  |  ##  |  ##  |  ##  |                                       |  ##  |  ##  |  ##  |  ##  |  ##  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  ##  |  ##  |       |  ##  |  ##  |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |  ##  |       |  ##  |      |      |
- *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
- *                                 |      |      |  ##  |       |  ##  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[SYMB] = KEYMAP(
-        // left hand
-        KC_TRNS,   KC_F1,       KC_F2,       KC_F3,       KC_F4,          KC_F5,       KC_TRNS,
-        KC_TRNS,   KC_EXLM,     LSFT(KC_2),  LSFT(KC_3),  LSFT(KC_4),     LSFT(KC_5),  KC_TRNS,
-        KC_TRNS,   LSFT(KC_6),  LSFT(KC_7),  LSFT(KC_8),  LSFT(KC_MINS),  UK_HASH,
-        KC_TRNS,   UK_BSLS,     UK_PIPE,     KC_GRV,      KC_MINS,        KC_SLSH,     KC_TRNS,
-        KC_TRNS,   KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,
-                                                                            KC_TRNS,   KC_TRNS,
-                                                                                       KC_TRNS,
-                                                                 KC_TRNS,   KC_TRNS,   KC_TRNS,
-        // right hand
-             KC_TRNS,   KC_F6,       KC_F7,       KC_F8,          KC_F9,          KC_F10,         KC_F11,
-             KC_TRNS,   KC_MINS,     KC_PLUS,     KC_EQL,         LSFT(KC_QUOT),  LSFT(UK_HASH),  KC_F12,
-                        KC_LCBR,     KC_RCBR,     KC_SCLN,        KC_QUOT,        UK_HASH,        KC_TRNS,
-             KC_TRNS,   KC_LBRC,     KC_RBRC,     LSFT(KC_COMM),  LSFT(KC_DOT),   LSFT(KC_SLSH),  KC_TRNS,
-                                     KC_TRNS,     KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,
-           KC_TRNS,   KC_TRNS,
-           KC_TRNS,
-           KC_TRNS,   KC_TRNS,  KC_TRNS
-    ),
-/* Keymap 2: Numerics and hex
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |   ##    |  A   |  B   |  C   |  D   |  E   |  F   |           |  A   |  B   |  C   |  D   |   E  |   F  |   ##   |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |   ##    |  *   |  7   |  8   |  9   |  *   |  0x  |           |  0x  |  *   |   7  |   8  |   9  |   *  |   ##   |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   ##    |  /   |  4   |  5   |  6   |  /   |------|           |------|  /   |   4  |   5  |   6  |   /  |   ##   |
- * |---------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
- * |   ##    |  -   |  1   |  2   |  3   |  -   |      |           |      |  -   |   1  |   2  |   3  |   -  |   ##   |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |   =   |  +   |  0   |  ,   |  .   |                                       |   0  |   ,  |   .  |   +  |  =   |
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  ##  |  ##  |       |  ##  |  ##  |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |  ##  |       |  ##  |      |      |
- *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
- *                                 |      |      |  ##  |       |  ##  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMB] = KEYMAP(
-        // left hand
-        KC_TRNS,   KC_A,        KC_B,        KC_C,        KC_D,           KC_E,        KC_F,
-        KC_TRNS,   KC_ASTR,     KC_7,        KC_8,        KC_9,           KC_ASTR,     UM_0x,
-        KC_TRNS,   KC_SLSH,     KC_4,        KC_5,        KC_6,           KC_SLSH,
-        KC_TRNS,   KC_MINS,     KC_1,        KC_2,        KC_3,           KC_MINS,     KC_TRNS,
-        KC_EQL,    KC_PLUS,     KC_0,        KC_COMM,     KC_DOT,
-                                                                            KC_TRNS,   KC_TRNS,
-                                                                                       KC_TRNS,
-                                                                 KC_TRNS,   KC_TRNS,   KC_TRNS,
-        // right hand
-             KC_A,      KC_B,        KC_C,        KC_D,           KC_E,           KC_F,           KC_TRNS,
-             UM_0x,     KC_ASTR,     KC_7,        KC_8,           KC_9,           KC_ASTR,        KC_TRNS,
-                        KC_SLSH,     KC_4,        KC_5,           KC_6,           KC_SLSH,        KC_TRNS,
-             KC_TRNS,   KC_MINS,     KC_1,        KC_2,           KC_3,           KC_MINS,        KC_TRNS,
-                                     KC_0,        KC_COMM,        KC_DOT,         KC_PLUS,        KC_EQL,
-           KC_TRNS,   KC_TRNS,
-           KC_TRNS,
-           KC_TRNS,   KC_TRNS,   KC_TRNS
-    ),
-/* Keymap 3: Cursor movement
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |         |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |         | Home |      |  Up  |      | PgUp |      |           |      | PgUp |      |  Up  |      | Home |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         | End  | Left | Down | Right| PgDn |------|           |------| PgDn | Left | Down | Right| End  |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   ##    |  Up  |      | Down |  ##  |      |      |           |      |      |  ##  | Down |      |  Up  |   ##   |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Left  | Down | Right|      |      |                                       |      |      | Left | Down | Right|
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[CRSR] = KEYMAP(
-        // left hand
-        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-        KC_NO,     KC_HOME,   KC_NO,     KC_UP,     KC_NO,     KC_PGUP,   KC_NO,
-        KC_NO,     KC_END,    KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_PGDN,
-        KC_TRNS,   KC_UP,     KC_NO,     KC_DOWN,   KC_TRNS,   KC_NO,     KC_NO,
-        KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_NO,     KC_NO,
-                                                                   KC_NO,     KC_NO,
-                                                                              KC_NO,
-                                                        KC_TRNS,   KC_TRNS,   KC_NO,
-        // right hand
-             KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-             KC_NO,     KC_PGUP,   KC_NO,     KC_UP,     KC_NO,     KC_HOME,   KC_NO,
-                        KC_PGDN,   KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_END,    KC_NO,
-             KC_NO,     KC_NO,     KC_TRNS,   KC_DOWN,   KC_NO,     KC_UP,     KC_TRNS,
-                                   KC_NO,     KC_NO,     KC_LEFT,   KC_DOWN,   KC_RGHT,
-           KC_NO,   KC_NO,
-           KC_NO,
-           KC_NO,   KC_TRNS,   KC_TRNS
-    ),
-/* Keymap 4: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      | Lclk | MsUp | Rclk |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Lclk  | MsUp | Rclk |MsDown|      |  ##  |      |           |      |  ##  |      |MsDown| Lclk | MsUp | Rclk   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |MsLeft|MsDown|MsRight      |      |                                       |      |      |MsLeft|MsDown|MsRght|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[MOUS] = KEYMAP(
-        // left hand
-        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-        KC_NO,     KC_NO,     KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_NO,     KC_NO,
-        KC_NO,     KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,
-        KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_MS_D,   KC_NO,     KC_TRNS,   KC_NO,
-        KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,     KC_NO,
-                                                                   KC_NO,   KC_NO,
-                                                                            KC_NO,
-                                                          KC_NO,   KC_NO,   KC_NO,
-        // right hand
-             KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-             KC_NO,     KC_NO,     KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_NO,     KC_NO,
-                        KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,     KC_NO,
-             KC_NO,     KC_TRNS,   KC_NO,     KC_MS_D,   KC_BTN1,   KC_MS_U,   KC_BTN2,
-                                   KC_NO,     KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,
-           KC_NO,   KC_NO,
-           KC_NO,
-           KC_NO,   KC_NO,   KC_NO
-    ),
-/* Keymap 5: Keywords
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |         |      |      | scarf| sadf | smily|      |           |      | decaf|      |      |      |      |        |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |         | const| volat| oper |  ret | tmpl |      |           |      | typen| cont |  prv |  pro | pub  |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |      |  str |  obj |      | gitl |------|           |------|      |      |      | nulp |      |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |      | extr |  cls | virt | break|      |           |      |namesp| goodm| goodn|      |      |        |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |       |      |  inc |      |      |                                       |      |      |      |      |      |
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       | ecet | ecets|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |  ##  |       |  ##  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[KEYW] = KEYMAP(
-        // left hand
-        KC_NO,     KC_NO,     KC_NO,     UM_SCARF,  UM_SADF,   UM_SMILY,   KC_NO,
-        KC_NO,     UM_CONST,  UM_VOLAT,  UM_OPER,   UM_RET,    UM_TMPL,    KC_NO,
-        KC_NO,     KC_NO,     UM_STR,    UM_OBJ,    KC_NO,     UM_GITLOG,
-        KC_NO,     KC_NO,     UM_EXTR,   UM_CLS,    UM_VIRT,   UM_BREAK,   KC_NO,
-        KC_NO,     KC_NO,     UM_INC,    KC_NO,     KC_NO,
-                                                                   KC_NO,    KC_NO,
-                                                                             KC_NO,
-                                                          KC_NO,   KC_NO,    KC_TRNS,
-        // right hand
-             KC_NO,     UM_DECAF,  KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-             KC_NO,     UM_TYPN,   UM_CONT,   UM_PRV,    UM_PRO,    UM_PUB,    KC_NO,
-                        KC_NO,     KC_NO,     KC_NO,     UM_NULP,   KC_NO,     KC_NO,
-             KC_NO,     UM_NAMESP, UM_GOODM,  UM_GOODN,  KC_NO,     KC_NO,     KC_NO,
-                                   KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-           UM_ECET,  UM_ECETS,
-           KC_NO,
-           KC_TRNS,  KC_NO,   KC_NO
-    ),
-/* Keymap 6: emacs
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |         |      |      |      |      |      | empb |           | emnb | emfs | emfb |      |      |      |        |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |         | emtr |      |      |      |      |      |           |      | emun | emre | w-up |      |      |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |      | emwr |      |      |      |------|           |------|      |w-left|w-down|w-rght|      |        |
- * |---------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
- * |         |      |      |      |      |      |      |           |      |      |      |w-down|      |      |        |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |       |      |      |      |      |                                       |      |      |      |      |      |
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[EMAC] = KEYMAP(
-        // left hand
-        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     UM_EMPB,
-        KC_NO,     UM_EMTR,   KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-        KC_NO,     KC_NO,     UM_EMWR,   KC_NO,     KC_NO,     KC_NO,
-        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_TRNS,
-        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
-                                                                   KC_NO,   KC_NO,
-                                                                            KC_NO,
-                                                          KC_NO,   KC_NO,   KC_NO,
-        // right hand
-             UM_EMNB,   UM_EMFS,  UM_EMFB,        KC_NO,          KC_NO,          KC_NO,     KC_NO,
-             KC_NO,     UM_EMUN,  UM_EMRE,        LSFT(KC_UP),    KC_NO,          KC_NO,     KC_NO,
-                        KC_NO,    LSFT(KC_LEFT),  LSFT(KC_DOWN),  LSFT(KC_RGHT),  KC_NO,     KC_NO,
-             KC_TRNS,   KC_NO,    KC_NO,          LSFT(KC_DOWN),  KC_NO,          KC_NO,     KC_NO,
-                                  KC_NO,          KC_NO,          KC_NO,          KC_NO,     KC_NO,
-           KC_NO,   KC_NO,
-           KC_NO,
-           KC_NO,   KC_NO,   KC_NO
-    ),
-};
-
-enum next_key_down_up {
-    NK_DOWN_UP,
-    NK_DOWN,
-    NK_UP // a bit of a hack, this works as long as NK_UP < KC_A
-};
-
-void send_keystrokes(uint8_t key, ...)
-{
-    va_list vl;
-    va_start(vl, key);
-    enum next_key_down_up nkdu = NK_DOWN_UP;
-    while (key != KC_NO) {
-        if (key < KC_A) {
-            nkdu = key;
-        } else {
-            switch (nkdu) {
-            case NK_DOWN_UP:
-                register_code(key);
-            case NK_UP:
-                unregister_code(key);
-                break;
-            case NK_DOWN:
-                register_code(key);
-            }
-            nkdu = NK_DOWN_UP;
-        }
-        key = va_arg(vl, int);
-    }
-    va_end(vl);
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-    case 0: // { }
-        if (record->event.pressed) {
-            return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
-                         D(LSFT), T(RBRC), U(LSFT), T(UP),
-                         T(TAB), END);
-        }
-        break;
-    case 1:
-        if (record->event.pressed) {
-            return MACRO(T(0), T(X), END);
-        }
-        break;
-    case 2:
-        if (record->event.pressed) {
-            SEND_STRING("public");
-        }
-        break;
-    case 3:
-        if (record->event.pressed) {
-            SEND_STRING("protected");
-        }
-        break;
-    case 4:
-        if (record->event.pressed) {
-            SEND_STRING("private");
-        }
-        break;
-    case 5: // class
-        if (record->event.pressed) {
-            return MACRO(T(C), T(L), T(A), T(S), T(S), T(ENT),
-                         D(LSFT), T(LBRC), U(LSFT), T(ENT),
-                         T(P), T(U), T(B), T(L), T(I), T(C),
-                         D(LSFT), T(SCLN), U(LSFT), T(ENT), T(ENT),
-                         T(P), T(R), T(I), T(V), T(A), T(T), T(E),
-                         D(LSFT), T(SCLN), U(LSFT), T(ENT),
-                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
-                         T(UP), T(UP), T(UP), T(UP), T(UP), T(UP), T(UP),
-                         T(END), T(SPC), END);
-        }
-        break;
-    case 6: // struct
-        if (record->event.pressed) {
-            return MACRO(T(S), T(T), T(R), T(U), T(C), T(T), T(ENT),
-                         D(LSFT), T(LBRC), U(LSFT), T(ENT),
-                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
-                         T(UP), T(UP), T(UP), T(UP),
-                         T(END), T(SPC), END);
-        }
-        break;
-    case 7:
-        if (record->event.pressed) {
-            SEND_STRING("return");
-        }
-        break;
-    case 8: // #include
-        if (record->event.pressed) {
-            return MACRO(T(NONUS_HASH), T(I), T(N), T(C), T(L), T(U), T(D), T(E), END);
-        }
-        break;
-    case 9:
-        if (record->event.pressed) {
-            SEND_STRING("objdump -CT -x -d");
-        }
-        break;
-    case 10:
-        if (record->event.pressed) {
-            SEND_STRING("git log --oneline --graph --decorate=short");
-        }
-        break;
-    case 11:
-        if (record->event.pressed) {
-            SEND_STRING("good morning");
-        }
-        break;
-    case 12:
-        if (record->event.pressed) {
-            SEND_STRING("namespace");
-        }
-        break;
-    case 14: // emacs toggle read-only
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), T(Q), U(LCTL), END);
-        }
-        break;
-    case 15: // emacs write buffer
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), T(S), U(LCTL), END);
-        }
-        break;
-    case 16: // emacs undo
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), D(LSFT), T(MINS), U(LSFT), U(LCTL), END);
-        }
-        break;
-    case 17: // emacs redo
-        if (record->event.pressed) {
-            return MACRO(D(LALT), D(LSFT), T(MINS), U(LSFT), U(LALT), END);
-        }
-        break;
-    case 18: // emacs previous buffer
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), U(LCTL), T(LEFT), END);
-        }
-        break;
-    case 19: // emacs next buffer
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), U(LCTL), T(RGHT), END);
-        }
-        break;
-    case 20:
-        if (record->event.pressed) {
-            SEND_STRING("good night");
-        }
-        break;
-    case 22: // { };
-        if (record->event.pressed) {
-            return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
-                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(UP),
-                         T(TAB), END);
-        }
-        break;
-    case 23:
-        if (record->event.pressed) {
-            SEND_STRING("template");
-        }
-        break;
-    case 24:
-        if (record->event.pressed) {
-            SEND_STRING("typename");
-        }
-        break;
-    case 25:
-        if (record->event.pressed) {
-            SEND_STRING("continue");
-            return MACRO(T(SCLN), END);
-        }
-        break;
-    case 26:
-        if (record->event.pressed) {
-            SEND_STRING("break");
-            return MACRO(T(SCLN), END);
-        }
-        break;
-    case 27:
-        if (record->event.pressed) {
-            SEND_STRING("const");
-        }
-        break;
-    case 28:
-        if (record->event.pressed) {
-            SEND_STRING(":-)");
-        }
-        break;
-    case 29:
-        if (record->event.pressed) {
-            SEND_STRING(":-(");
-        }
-        break;
-    case 30: // dazed
-        if (record->event.pressed) {
-            send_keystrokes(NK_DOWN, KC_LSFT, KC_8, KC_MINS, KC_8, NK_UP, KC_LSFT, KC_NO);
-        }
-        break;
-    case 31: // decaf
-        if (record->event.pressed) {
-            send_keystrokes(NK_DOWN, KC_LSFT, KC_C, KC_9, KC_MINS, KC_0, NK_UP, KC_LSFT, KC_NO);
-        }
-        break;
-    case 32:
-        if (record->event.pressed) {
-            SEND_STRING("operator");
-        }
-        break;
-    case 33:
-        if (record->event.pressed) {
-            SEND_STRING("nullptr");
-        }
-        break;
-    case 34:
-        if (record->event.pressed) {
-            SEND_STRING("extern");
-        }
-        break;
-    case 35:
-        if (record->event.pressed) {
-            SEND_STRING("virtual");
-        }
-        break;
-    case 36: // emacs font smaller
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), T(EQL), U(LCTL), END);
-        }
-        break;
-    case 37:  // emacs font bigger
-        if (record->event.pressed) {
-            return MACRO(D(LCTL), T(X), T(MINS), U(LCTL), END);
-        }
-        break;
-    case 38:
-        if (record->event.pressed) {
-            SEND_STRING("volatile");
-        }
-        break;
-    }
-    return MACRO_NONE;
-}
-
-LEADER_EXTERNS();
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-    LEADER_DICTIONARY() {
-        leading = false;
-        leader_end();
-
-        SEQ_TWO_KEYS(KC_G, KC_A) {
-            SEND_STRING("git add .");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_D) {
-            SEND_STRING("git diff");
-        }
-        SEQ_THREE_KEYS(KC_G, KC_D, KC_S) {
-            SEND_STRING("git diff --staged");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_L) {
-            SEND_STRING("git log");
-        }
-        SEQ_THREE_KEYS(KC_G, KC_L, KC_O) {
-            SEND_STRING("git log --oneline");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_F) {
-            SEND_STRING("git fetch");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_O) {
-            SEND_STRING("git checkout");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_P) {
-            SEND_STRING("git pull");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_S) {
-            SEND_STRING("git status");
-        }
-        SEQ_TWO_KEYS(KC_G, KC_C) {
-            SEND_STRING("git commit -m ''");
-            send_keystrokes(KC_LEFT, KC_NO);
-        }
-        SEQ_THREE_KEYS(KC_G, KC_C, KC_A) {
-            SEND_STRING("git commit --amend");
-        }
-
-        SEQ_TWO_KEYS(KC_C, KC_C) {
-            SEND_STRING("const_cast<>");
-            send_keystrokes(KC_LEFT, KC_NO);
-        }
-        SEQ_TWO_KEYS(KC_C, KC_D) {
-            SEND_STRING("dynamic_cast<>");
-            send_keystrokes(KC_LEFT, KC_NO);
-        }
-        SEQ_TWO_KEYS(KC_C, KC_R) {
-            SEND_STRING("reinterpret_cast<>");
-            send_keystrokes(KC_LEFT, KC_NO);
-        }
-        SEQ_TWO_KEYS(KC_C, KC_S) {
-            SEND_STRING("static_cast<>");
-            send_keystrokes(KC_LEFT, KC_NO);
-        }
-
-        SEQ_ONE_KEY(KC_SLSH) {
-            send_keystrokes(KC_SLSH, NK_DOWN, KC_LSFT, KC_8, KC_8, NK_UP, KC_LSFT, KC_ENT,
-                            NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_ENT,
-                            NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_SLSH, KC_UP, KC_END, KC_SPC,
-                            KC_NO);
-        }
-    }
-}
diff --git a/keyboards/ergodox/keymaps/albert/readme.md b/keyboards/ergodox/keymaps/albert/readme.md
deleted file mode 100644 (file)
index e20e047..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# ErgoDox EZ Configuration for typing like a boss.
-
-This layout has 7 layers:
-0. Base layers
-1. Symbols and F-keys
-2. Number pad (with hexadecimal)
-3. Cursor keys
-4. Mouse movement and clicks
-5. Keyword macros
-6. Emacs
-
-There are also some leader keys defined for frequently used commands (git etc).
-
-## The layers
-
-Double hashes (`##`) indicate transparent keys (`KC_TRNS`) and blanks indicate no key (`KC_NO`).
-
-### 0. Base layer
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-| ESC    |   1  |   2  |   3  |   4  |   5  | SfLt |           | SfRt |   6  |   7  |   8  |   9  |   0  | BkSp   |
-|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
-| Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  | Del    |
-|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-| Caps/L2|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |Enter/L2|
-|--------|------|------|------|------|------|  L6  |           |  L6  |------|------|------|------|------|--------|
-| LSft/( |   Z  |   X  |   C  | V/L3 | B/L4 |      |           |      | N/L4 | M/L3 |   ,  |   .  |   /  | RSft/) |
-`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |Ctrl/[| Alt/]|   #  | Left |Right |                                       |  Up  | Down |   -  | Alt/[|Ctrl/]|
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |  L2  | lead |       | lead |  Ins |
-                                ,------|------|------|       |------|------|------.
-                                | Space| BkSp | Home |       | PgUp | Enter|Space |
-                                |  /   |  /   |------|       |------|   /  |  /   |
-                                | Ctrl | Alt  |End/L5|       |PDn/L5|  Alt | Ctrl |
-                                `--------------------'       `--------------------'
-```
-
-Space Cadet shift is enabled. Ctrl and Alt doubles up as normal keys when tapped.  
-SfLt and SfRt sends Shift + left and Shift + Right respectively - for use with emacs with `windmove-default-keybindings`.  
-Caps and Enter may be held down to activate layer 2 (hexadecimal number pad).  
-Please see `matrix_scan_user` function in `keymap.c` for list of commands available via `lead` key.
-
-### 1. Symbols and F-keys
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   ##   |  F1  |  F2  |  F3  |  F4  |  F5  |  ##  |           |  ##  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
-|--------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
-|   ##   |   !  |   "  |   £  |   $  |   %  |  ##  |           |  ##  |   -  |   +  |   =  |   @  |   ~  |   F12  |
-|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|   ##   |   ^  |   &  |   *  |   _  |   #  |------|           |------|   {  |   }  |   ;  |   '  |   #  |   ##   |
-|--------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
-|   ##   |   \  |   |  |   `  |   -  |   /  |      |           |      |   [  |   ]  |   <  |   >  |   ?  |   ##   |
-`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |  ##  |  ##  |  ##  |  ##  |  ##  |                                       |  ##  |  ##  |  ##  |  ##  |  ##  |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |  ##  |  ##  |       |  ##  |  ##  |
-                                ,------|------|------|       |------|------|------.
-                                |      |      |  ##  |       |  ##  |      |      |
-                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
-                                |      |      |  ##  |       |  ##  |      |      |
-                                `--------------------'       `--------------------'
-```
-
-### 2. Number pad (with hexadecimal)
-
-```
-,---------------------------------------------------.           ,--------------------------------------------------.
-|   ##    |  A   |  B   |  C   |  D   |  E   |  F   |           |  A   |  B   |  C   |  D   |   E  |   F  |   ##   |
-|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
-|   ##    |  *   |  7   |  8   |  9   |  *   |  0x  |           |  0x  |  *   |   7  |   8  |   9  |   *  |   ##   |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|   ##    |  /   |  4   |  5   |  6   |  /   |------|           |------|  /   |   4  |   5  |   6  |   /  |   ##   |
-|---------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
-|   ##    |  -   |  1   |  2   |  3   |  -   |      |           |      |  -   |   1  |   2  |   3  |   -  |   ##   |
-`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |   =   |  +   |  0   |  ,   |  .   |                                       |   0  |   ,  |   .  |   +  |  =   |
-  `-----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |  ##  |  ##  |       |  ##  |  ##  |
-                                ,------|------|------|       |------|------|------.
-                                |      |      |  ##  |       |  ##  |      |      |
-                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
-                                |      |      |  ##  |       |  ##  |      |      |
-                                `--------------------'       `--------------------'
-```
-
-### 3. Cursor keys
-
-```
-,---------------------------------------------------.           ,--------------------------------------------------.
-|         |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
-|         | Home |      |  Up  |      | PgUp |      |           |      | PgUp |      |  Up  |      | Home |        |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|         | End  | Left | Down | Right| PgDn |------|           |------| PgDn | Left | Down | Right| End  |        |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|   ##    |  Up  |      | Down |  ##  |      |      |           |      |      |  ##  | Down |      |  Up  |   ##   |
-`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  | Left  | Down | Right|      |      |                                       |      |      | Left | Down | Right|
-  `-----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      |      |
-                                ,------|------|------|       |------|------|------.
-                                |      |      |      |       |      |      |      |
-                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-
-### 4. Mouse movement and clicks
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
-|        |      | Lclk | MsUp | Rclk |      |      |           |      |      | Lclk | MsUp | Rclk |      |        |
-|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
-|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|  Lclk  | MsUp | Rclk |MsDown|      |  ##  |      |           |      |  ##  |      |MsDown| Lclk | MsUp | Rclk   |
-`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |MsLeft|MsDown|MsRight      |      |                                       |      |      |MsLeft|MsDown|MsRght|
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      |      |
-                                ,------|------|------|       |------|------|------.
-                                |      |      |      |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-
-### 5. Keyword macros
-
-```
-,---------------------------------------------------.           ,--------------------------------------------------.
-|         |      |      | scarf| sadf | smily|      |           |      | decaf|      |      |      |      |        |
-|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
-|         | const| volat| oper |  ret | tmpl |      |           |      | typen| cont |  prv |  pro | pub  |        |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|         |      |  str |  obj |      | gitl |------|           |------|      |      |      | nulp |      |        |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|         |      | extr |  cls | virt | break|      |           |      |namesp| goodm| goodn|      |      |        |
-`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |       |      |  inc |      |      |                                       |      |      |      |      |      |
-  `-----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       | ecet | ecets|
-                                ,------|------|------|       |------|------|------.
-                                |      |      |      |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      |  ##  |       |  ##  |      |      |
-                                `--------------------'       `--------------------'
-```
-Please see `keymap.c` for the keywords/commands.
-Some are const, volatile, operator, return, template, typename, continue, private,
-protected, public, struct, class, extern, virtual, break, namespace.
-Also a git log command I use a lot (`git log --oneline --graph --decorate=short` (I know git can be configured but that is boring)).
-
-### 6. Emacs
-
-```
-,---------------------------------------------------.           ,--------------------------------------------------.
-|         |      |      |      |      |      | empb |           | emnb | emfs | emfb |      |      |      |        |
-|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
-|         | emtr |      |      |      |      |      |           |      | emun | emre | w-up |      |      |        |
-|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|         |      | emwr |      |      |      |------|           |------|      |w-left|w-down|w-rght|      |        |
-|---------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
-|         |      |      |      |      |      |      |           |      |      |      |w-down|      |      |        |
-`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |       |      |      |      |      |                                       |      |      |      |      |      |
-  `-----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      |      |
-                                ,------|------|------|       |------|------|------.
-                                |      |      |      |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-Some emacs shortcuts like toggle read/write mode (emtr), write file (emwr), previous-buffer (empb),
-next-buffer (emnb), smaller font(emfs), larger font (emfb), undo (emun), redo (emre) and switching between windows in a frame.
diff --git a/keyboards/ergodox/keymaps/alexjj/keymap.c b/keyboards/ergodox/keymaps/alexjj/keymap.c
deleted file mode 100644 (file)
index ac954ba..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define UNIC 3 // unicode entry layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
- * |--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
- * | Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
- * |--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
- * | LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *   Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | PgUp |       | Ins  |      |      |
- *                                 | Enter| BkSp |------|       |------| ~L1  |Space |
- *                                 |      |      | PgDn |       | Del  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
-        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_HOME,
-        KC_LCTRL,       LCTL(KC_C), LCTL(KC_V),  KC_LEFT,KC_RGHT,
-                                                      KC_FN3,  KC_F5,
-                                                              KC_PGUP,
-                                               KC_ENT,KC_BSPC,KC_PGDN,
-        // right hand
-             KC_7,     KC_8,   KC_9,   KC_0,   KC_MINS,   KC_EQL,        KC_BSPC,
-             KC_RBRC,  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
-             KC_END,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,   KC_RSFT,
-             KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV,   KC_RCTRL,
-             KC_F2, KC_FN2,
-             KC_INS,
-             KC_DELT,KC_FN1, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
- *   `----------------------------------'                                       `----------------------------------'
- *              ↑                         ,-------------.       ,-------------.
- *           THERE!                       |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *    CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       | CAD  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_F7, KC_F8,   KC_F9,  KC_F10,   KC_F11,   KC_F12,  KC_PSCR,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  LALT(KC_F4),
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-/* Keymap 3: Unicode Entry
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *      WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |  Alt |  Alt |------|       |------|  Alt | Alt  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[UNIC] = KEYMAP(  // layer 3 : Unicode Entry
-        // left hand
-       KC_LALT,       KC_P1,      KC_P2,      KC_P3,  KC_P4,     KC_P5,   KC_P6,
-      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_E,   KC_TRNS,   KC_TRNS, KC_TRNS,
-      KC_LALT,       KC_A,       KC_TRNS,    KC_D,   KC_F,      KC_TRNS,
-      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_C,   KC_TRNS,   KC_B,    KC_TRNS,
-      KC_LALT,       KC_LALT,    KC_LALT,    KC_TRNS,KC_TRNS,
-                                                     KC_TRNS,   KC_TRNS,
-                                                                KC_TRNS,
-                                             KC_LALT,KC_LALT,   KC_TRNS,
-        // right hand
-           KC_P7,    KC_P8,     KC_P9,   KC_P0,   KC_PPLS,KC_PPLS,      KC_TRNS,
-           KC_TRNS,  KC_TRNS,   KC_P7,   KC_P8,   KC_P9,  KC_PPLS,      KC_TRNS,
-                     KC_TRNS,   KC_P4,   KC_P5,   KC_P6,  KC_PPLS,      KC_TRNS,
-           KC_TRNS,  KC_TRNS,   KC_P1,   KC_P2,   KC_P3,  KC_PPLS,      KC_TRNS,
-                                KC_P0,   KC_P0,   KC_P0,  KC_PPLS,      KC_TRNS,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS,KC_LALT, KC_LALT
-                  ),
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),                // FN1 - Momentary Layer 1 (Symbols)
-    [2] = ACTION_LAYER_TAP_TOGGLE(MDIA),                // FN2 - Momentary Layer 2 (Media)
-    [3] = ACTION_LAYER_TAP_TOGGLE(UNIC)                 // FN3 - Momentary Layer 3 (Unicode entry)
-}; 
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-      case 3: // this would trigger when you hit a key mapped as M(3)
-        if (record->event.pressed) {
-          return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), U(LALT), END  );
-      }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_3_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/alexjj/readme.md b/keyboards/ergodox/keymaps/alexjj/readme.md
deleted file mode 100644 (file)
index 4845cbb..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-Englishman in New York
-===========================
-
-:microphone: :tea:
-
-About
-------
-
-After using the massdrop configurator to get the basics, I wanted to add a
-little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
-and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
-layout? Well the computers I use are US keymap'd and I can't always change
-that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
-enough. :sweat_smile:
-
-I started from the default and edited from there as I needed. It's somewhat
-similar to a regular layout, particularly R1 and shift/controls. I ended up
-with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
-quitting things in Windows, is one example, but I felt it was better placed on 
-the 1st layer - in case of fat fingers.
-
-Layout
--------
-
-![Layout](https://i.imgur.com/4bDwHLS.jpg "Isn't it lovely")
-
-### Base Layer
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-| Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
-|--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
-| Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
-|--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
-| LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-  Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
-                                ,------|------|------|       |------+------+------.
-                                |      |      | PgUp |       | Ins  |      |      |
-                                | Enter| BkSp |------|       |------| ~L1  |Space |
-                                |      |      | PgDn |       | Del  |      |      |
-                                `--------------------'       `--------------------'
-``` 
-
-### Symbol Layer
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
-  `----------------------------------'                                       `----------------------------------'
-             ↑                         ,-------------.       ,-------------.
-          THERE!                       |      |      |       |      |      |
-                                ,------|------|------|       |------+------+------.
-   CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      |      |       | CAD  |      |      |
-                                `--------------------'       `--------------------'
-```
-### Media Layer
-
-Not touched this, not used either.
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-| TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      |      |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |      |       |      |      |Brwser|
-                                |      |      |------|       |------|      |Back  |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-### Unicode Layer
-
-Used to enter/test unicode input on Windows. All numbers are numpad keys.
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-     WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |      |       |      |      |      |
-                                |  Alt |  Alt |------|       |------|  Alt | Alt  |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-
-
-Usage
-------
-
-~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
-If pressed and released will remain on layer until pressed again.
-
-### Unicode
-
-This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
-
-Changelog
------------
-
-### [0.2.1] - 2016-04-05
-
-* Changed £ to alt code in Windows. Windows sucks at unicode.
-
-### [0.2.0] - 2016-03-27
-
-* Added unicode layer
-* Moved Copy/Paste to left hand side
-* Switched Enter and Space (again)
-* Added L3 (unicode layer) toggle
-* Removed Press and Hold for Alt on right hand size (/)
-* Swapped Volume Up/Down to match arrows
-* Tried fixing £ macro
-* Removed * in the matrix function things (upstream change)
-
-### [0.1.1] - 2016-03-23
-
-* Changed £ input to a macro
-
-
-### [0.1.0] - 2016-03-22
-
-After actually using the keyboard, I've made some changes:
-
-* Swapped Enter and Space
-* Moved backspace to thumb keys (top right still remains)
-* Added Ctrl+Alt+Delete
-* Added Teensy Reset on 2nd layer
-* Switched Up and Down
-* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
-* Moved ~L2 to replace +L1 after learning how the function works (notes above)
-* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
-
-### [0.0.1] - 2016-03-21
-
-First version
-
-
-Issues
--------
-
-Space for feedback and notes for future improvements
-
-----
-<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
diff --git a/keyboards/ergodox/keymaps/algernon/COPYING b/keyboards/ergodox/keymaps/algernon/COPYING
deleted file mode 100644 (file)
index 94a9ed0..0000000
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/keyboards/ergodox/keymaps/algernon/Makefile b/keyboards/ergodox/keymaps/algernon/Makefile
deleted file mode 100644 (file)
index 23d3bb7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-BOOTMAGIC_ENABLE=no
-COMMAND_ENABLE=no
-SLEEP_LED_ENABLE=no
-FORCE_NKRO = yes
-DEBUG_ENABLE = no
-CONSOLE_ENABLE = no
-TAP_DANCE_ENABLE = yes
-KEYLOGGER_ENABLE = yes
-UCIS_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-AUTOLOG_ENABLE = no
-
-ifeq (${FORCE_NKRO},yes)
-OPT_DEFS += -DFORCE_NKRO
-endif
-
-ifeq (${AUTOLOG_ENABLE},yes)
-KEYLOGGER_ENABLE = yes
-OPT_DEFS += -DAUTOLOG_ENABLE
-endif
-
-ifeq (${KEYLOGGER_ENABLE},yes)
-OPT_DEFS += -DKEYLOGGER_ENABLE
-CONSOLE_ENABLE = yes
-endif
-
-OPT_DEFS += -DUSER_PRINT
-
-KEYMAP_VERSION = $(shell \
- if [ -d "${KEYMAP_PATH}/.git" ]; then \
-  cd "${KEYMAP_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
- else echo QMK; fi)
-
-KEYMAP_BRANCH = $(shell \
- if [ -d "${KEYMAP_PATH}/.git" ]; then \
-  cd "${KEYMAP_PATH}"; \
- fi; \
- git rev-parse --abbrev-ref HEAD 2>/dev/null)
-
-OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/algernon/NEWS.md b/keyboards/ergodox/keymaps/algernon/NEWS.md
deleted file mode 100644 (file)
index ee9d606..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-<!-- -*- mode: markdown; fill-column: 8192 -*- -->
-
-## v1.10
-
-*2016-12-28*
-
-### Miscellaneous
-
-* `µ` can now be entered with UCIS.
-* `™` can now be entered with UCIS.
-
-### Tools
-
-* `tools/hid-commands` can now find Banshee, and prefers it over Kodi.
-* `tools/hid-commands` can now find Chrome too, not juts Chromium.
-
-## v1.9
-
-*2016-10-16*
-
-### Overall changes
-
-* `F12` was replaced by an `Fx` key, that activate the **Media** layer as a one-shot layer, and also `Alt` as a one-shot modifier.
-
-### Base layer changes
-
-* The `Media Stop` key is now a tap-dance key, and resets the device for programming on the fourth tap.
-
-### Miscellaneous
-
-* `π` can now be entered with UCIS.
-* `🐁` can now be entered with UCIS.
-
-### Tools
-
-* The `tools/layer-notify` tool was removed, it was an example, which I don't use.
-
-#### `tools/hid-commands`
-
-* Now looks at the `DISABLE_APPSEL_START` environment value, and does not display an AppSel notification if it is non-empty.
-* Will attempt to re-program the keyboard when receiving a `reflash` command.
-* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes for any Emacs.
-* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the last choice.
-
-## v1.8
-
-*2016-10-03*
-
-### ADORE
-
-* Major rearrangements were made, to reduce pinky use, and to balance out the hand usage.
-
-### Tools
-
-* The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered.
-* The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned.
-
-### Miscellaneous
-
-* Fixed the **Steno** toggle key.
-
-## v1.7
-
-*2016-09-18*
-
-### Overall changes
-
-* The number row has been completely rearranged on both the **Base** and the **ADORE** layers.
-* The number/function key behavior was changed: function keys are now on the **Media**.
-* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the **Base** and **ADORE** layers.
-* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped.
-* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it.
-
-### ADORE
-
-* `Y` and `X` have been swapped again.
-
-### Media/Navigation layer
-
-* The function keys are now on this layer.
-* Mouse keys have been removed.
-* Media start/stop/prev/next have been removed.
-* `Print screen` has been removed.
-* There is only one screen lock key now.
-
-### Heatmap
-
-* Fixed a few issues in the finger-stats calculation.
-* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool.
-* The heatmap tool will now colorize the stats by default.
-* The periodic stats are now printed in a more compact format.
-
-### Tools
-
-* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes.
-* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator.
-* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side.
-
-## v1.6
-
-*2016-08-24*
-
-### Base layer changes
-
-* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`.
-* The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`.
-* The `Apps` key has been replaced by `F12`.
-* The `-`/`_` is no longer a tap-dance key.
-
-### ADORE layer changes
-
-* Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations.
-
-### Miscellaneous changes
-
-* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one.
-* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off.
-* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now.
-
-### Heatmap
-
-* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off.
-* The heatmap generator received a lot of updates.
-
-## v1.5
-
-*2016-08-12*
-
-* The **1HAND** layer has been removed.
-* A `Delete` key is now available on the right thumb cluster.
-* The **ADORE** layer received a major update, see the layout image above.
-* It is now possible to enable automatic logging for the **ADORE** layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default.
-* The `~` key and the `Media Next/Prev` key have been swapped on the **Base** layer.
-* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
-* There is some experimental support for entering Unicode symbols.
-
-## v1.4
-
-*2016-07-29*
-
-* When toggling the key logging on or off, the LEDs will do a little dance.
-* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
-* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
-* The `-`/`_` key was turned into a tap-dance key too.
-* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
-
-## v1.3
-
-*2016-07-06*
-
-* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a *heatmap* out of the logs.
-* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the **Base** layer for an image that shows where arrows are.
-* The **experimental** layer has been redone, and is now called **ADORE**, and as such, can be enabled by `LEAD a` now.
-* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
-
-## v1.2
-
-*2016-06-22*
-
-* The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with certain operating systems.
-* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted.
-* The `=` and `\` keys were swapped, `=` moved to the home row, on both the **Base** and the **experimental** layers.
-* The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access.
-* The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer.
-* `LEAD v` types the firmware version, and the keymap version.
-* On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped.
-* The **Steno** layer gained a few more `#` and `*` keys, to make it easier on my fingers.
-
-## v1.1
-
-*2016-06-14*
-
-* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
-* A **Steno** layer was added, to be used with Plover.
-* An **experimental** layer was added, something halfway between Dvorak and Capewell-Dvorak. A work in progress.
-* `LEAD y` types `\o/`.
-* Some keys on the **Base** layer have been moved around:
-    - `?` moved to the left pinky, left of `Q`.
-    - `=` shifted one row down, but `F11` stayed where it was.
-    - `-` on the left half was replaced by `Tab`.
-    - `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
-    - `:` now inputs `;` when shifted.
-* `ESC` cancels the **Hungarian** layer too, not just modifiers.
-
-## v1.0
-
-*2016-05-26*
-
-Initial version.
diff --git a/keyboards/ergodox/keymaps/algernon/config.h b/keyboards/ergodox/keymaps/algernon/config.h
deleted file mode 100644 (file)
index 9bb1025..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef CONFIG_ALGERNON_H
-#define CONFIG_ALGERNON_H
-
-#include "../../config.h"
-
-#undef MOUSEKEY_TIME_TO_MAX
-#undef MOUSEKEY_MAX_SPEED
-
-#define MOUSEKEY_TIME_TO_MAX 1
-#define MOUSEKEY_MAX_SPEED 2
-
-#undef MOUSEKEY_DELAY
-#define MOUSEKEY_DELAY 0
-
-#undef MOUSEKEY_WHEEL_DELAY
-#define MOUSEKEY_WHEEL_DELAY 0
-
-#define ONESHOT_TAP_TOGGLE 2
-#define ONESHOT_TIMEOUT 3000
-
-#undef LOCKING_SUPPORT_ENABLE
-#undef LOCKING_RESYNC_ENABLE
-
-#undef LEADER_TIMEOUT
-#define LEADER_TIMEOUT 1000
-
-#endif
diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c
deleted file mode 100644 (file)
index b615f3f..0000000
+++ /dev/null
@@ -1,1108 +0,0 @@
-/*
- * algernon's ErgoDox EZ layout, please see the readme.md file!
- */
-
-#include <stdarg.h>
-#include "ergodox.h"
-#include "led.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "timer.h"
-#include "keymap_plover.h"
-#include "eeconfig.h"
-#include "wait.h"
-#include "version.h"
-
-/* Layers */
-
-enum {
-  BASE = 0,
-  ADORE,
-  ARRW,
-  APPSEL,
-  HUN,
-  NMDIA,
-  PLVR,
-};
-
-/* Macros */
-
-enum {
-  NONE = 0,
-  // Buttons that do extra stuff
-  A_GUI,
-  A_PLVR,
-  A_MPN,
-
-  // Application select keys
-  APP_SLK, // Slack
-  APP_EMCS, // Emacs
-  APP_TERM, // Terminal
-  APP_CHRM, // Chrome
-  APP_MSIC, // Music
-
-  // Hungarian layer keys
-  HU_AA, // Á
-  HU_OO, // Ó
-  HU_EE, // É
-  HU_UU, // Ú
-  HU_II, // Í
-  HU_OE, // Ö
-  HU_UE, // Ü
-  HU_OEE, // Ő
-  HU_UEE, // Ű
-
-  // number/symbol keys
-  A_1, // 1
-  A_2, // 2
-  A_3, // ...
-  A_4,
-  A_5,
-  A_6,
-  A_7,
-  A_8,
-  A_9,
-  A_0,
-
-  // Fx
-  Fx,
-};
-
-/* Fn keys */
-
-enum {
-  F_BSE = 0,
-  F_HUN,
-  F_GUI,
-  F_SFT,
-  F_ALT,
-  F_CTRL
-};
-
-/* Custom keycodes */
-
-enum {
-  CT_CLN = 0,
-  CT_TA,
-  CT_LBP,
-  CT_RBP,
-  CT_TMUX,
-  CT_TPS,
-  CT_SR,
-};
-
-/* States & timers */
-
-uint16_t gui_timer = 0;
-
-#if KEYLOGGER_ENABLE
-# ifdef AUTOLOG_ENABLE
-bool log_enable = true;
-# else
-bool log_enable = false;
-# endif
-#endif
-
-bool time_travel = false;
-bool skip_leds = false;
-
-static uint8_t is_adore = 0;
-
-/* The Keymap */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Base Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * | Next/Prev | 9    | 7  @ | 5  * | 3  ^ | 1  $ | F11  |           |  Fx  | 0  % | 2  ! | 4  # | 6  & | 8    |    Plover |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |         ~ |   '  |   ,  |   .  |   P  |   Y  |   (  |           |  )   |   F  |   G  |   C  |   R  |  L   | \         |
- * |-----------+------+------+------+------+------|   [  |           |  ]   |------+------+------+------+------+-----------|
- * | Tab/ARROW |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |  S   | = / Arrow |
- * |-----------+------+------+------+------+------| tmux |           | tmux |------+------+------+------+------+-----------|
- * | Play/Pause|   /  |   Q  |   J  |   K  |   X  |      |           | Pane |   B  |   M  |   W  |   V  |  Z   | Stop/Reset|
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | LAlt | GUI  |           | MDIA | Del  |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | Ctrl |           | LEAD |      |      |
- *                                  |Backsp|LShift|------|           |------| Enter| Space|
- *                                  |      |      | ESC  |           | HUN  |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[BASE] = KEYMAP(
-// left hand
- M(A_MPN)           ,M(A_9)      ,M(A_7)      ,M(A_5)  ,M(A_3)  ,M(A_1)  ,KC_F11
-,KC_GRV             ,KC_QUOT     ,KC_COMM     ,KC_DOT  ,KC_P    ,KC_Y    ,TD(CT_LBP)
-,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E    ,KC_U    ,KC_I
-,KC_MPLY            ,KC_SLSH     ,KC_Q        ,KC_J    ,KC_K    ,KC_X    ,TD(CT_TMUX)
-,KC_NO              ,KC_NO       ,KC_NO       ,KC_NO   ,TD(CT_CLN)
-
-                                                            ,F(F_ALT),F(F_GUI)
-                                                                     ,F(F_CTRL)
-                                                    ,KC_BSPC,F(F_SFT),KC_ESC
-
-                                                                // right hand
-                                                               ,M(Fx)     ,M(A_0)  ,M(A_2)    ,M(A_4)  ,M(A_6)  ,M(A_8)   ,M(A_PLVR)
-                                                               ,TD(CT_RBP),KC_F    ,KC_G      ,KC_C    ,KC_R    ,KC_L     ,KC_BSLS
-                                                                          ,KC_D    ,KC_H      ,KC_T    ,KC_N    ,KC_S     ,KC_EQL
-                                                               ,TD(CT_TPS),KC_B    ,KC_M      ,KC_W    ,KC_V    ,KC_Z     ,TD(CT_SR)
-                                                                                   ,KC_MINS   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-
-                                                               ,OSL(NMDIA),KC_DEL
-                                                               ,KC_LEAD
-                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
-    ),
-
-/* Keymap 1: Adore layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * | Play/Pause| 9    | 7  @ | 5  * | 3  ^ | 1  $ | F11  |           |  Fx  | 0  % | 2  ! | 4  # | 6  & | 8    |    Plover |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |         \ |   X  |   W  |   C  |   H  |   F  |   (  |           |  )   |   M  |   G  |   L  |   P  |  /   | `~        |
- * |-----------+------+------+------+------+------|   [  |           |  ]   |------+------+------+------+------+-----------|
- * | Tab/Arrow |   A  |   O  |   E  |   I  |   U  |------|           |------|   D  |   R  |   T  |   N  |  S   | =         |
- * |-----------+------+------+------+------+------| tmux |           | tmux |------+------+------+------+------+-----------|
- * |           |   Z  |   Q  |   '  |   ,  |   .  |      |           | pane |   B  |   K  |   V  |   Y  |  J   |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | LAlt | GUI  |           | MDIA | Del  |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | Ctrl |           | HUN  |      |      |
- *                                  |Backsp|LShift|------|           |------| Enter| Space|
- *                                  |      |      | ESC  |           | LEAD |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[ADORE] = KEYMAP(
-// left hand
- KC_MPLY            ,M(A_9)      ,M(A_7)      ,M(A_5)  ,M(A_3)  ,M(A_1) ,KC_F11
-,KC_BSLS            ,KC_X        ,KC_W        ,KC_C    ,KC_H    ,KC_F   ,TD(CT_LBP)
-,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E    ,KC_I    ,KC_U
-,KC_NO              ,KC_Z        ,KC_Q        ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX)
-,KC_NO              ,KC_NO       ,KC_NO       ,KC_NO   ,TD(CT_CLN)
-
-                                                            ,F(F_ALT),F(F_GUI)
-                                                                     ,F(F_CTRL)
-                                                    ,KC_BSPC,F(F_SFT),KC_ESC
-
-                                                                // right hand
-                                                               ,M(Fx)     ,M(A_0)   ,M(A_2)  ,M(A_4)  ,M(A_6)  ,M(A_8)  ,M(A_PLVR)
-                                                               ,TD(CT_RBP),KC_M     ,KC_G    ,KC_L    ,KC_P    ,KC_SLSH ,KC_GRV
-                                                                          ,KC_D     ,KC_R    ,KC_T    ,KC_N    ,KC_S    ,KC_EQL
-                                                               ,TD(CT_TPS),KC_B     ,KC_K    ,KC_V    ,KC_Y    ,KC_J    ,KC_NO
-                                                                                    ,KC_MINS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-
-                                                               ,OSL(NMDIA),KC_DEL
-                                                               ,F(F_HUN)
-                                                               ,KC_LEAD   ,KC_ENT ,KC_SPC
-    ),
-
-/* Keymap 2: Arrow layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      | Home |  Up  |  End |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |------|           |------|      | Left | Down | Rght |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  | Enter|      |------|           |------| PgUp | PgDn |
- *                                  |      |      |      |           |      |      |      |
- *                                  `--------------------'           `--------------------'
- */
-
-[ARRW] = KEYMAP(
-// left hand
- KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS
-
-                                             ,KC_TRNS ,KC_TRNS
-                                                      ,KC_TRNS
-                                    ,KC_ENT  ,KC_TRNS ,KC_TRNS
-
-                                                                // right hand
-                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                               ,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_UP   ,KC_END  ,KC_TRNS ,KC_TRNS
-                                                                        ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_TRNS ,KC_TRNS
-                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                                                 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
-                                                               ,KC_TRNS ,KC_TRNS
-                                                               ,KC_TRNS
-                                                               ,KC_TRNS ,KC_PGUP ,KC_PGDN
-    ),
-
-/* Keymap 3: Application select layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |Music |Slack |Emacs |Term  |Chrome|      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  |      |      |------|           |------|      |      |
- *                                  |      |      |      |           |      |      |      |
- *                                  `--------------------'           `--------------------'
- */
-
-[APPSEL] = KEYMAP(
-// left hand
- KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
-,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS
-
-                                             ,KC_TRNS ,KC_TRNS
-                                                      ,KC_TRNS
-                                    ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
-                                                                // right hand
-                                                               ,KC_TRNS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_TRNS
-                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                                        ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                                                 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
-                                                               ,KC_TRNS ,KC_TRNS
-                                                               ,KC_TRNS
-                                                               ,KC_TRNS ,KC_TRNS  ,KC_TRNS
-    ),
-
-
-/* Keymap 4: Hungarian Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |  Ő   |      |  Ű   |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |   Á  |  Ó   |  É   |  Ú   |  Í   |------|           |------|      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |  Ö   |      |  Ü   |      |      |           |      |      |      |      |      |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  |      |      |------|           |------|      |      |
- *                                  |      |      |      |           | BASE |      |      |
- *                                  `--------------------'           `--------------------'
- */
-
-[HUN] = KEYMAP(
-// left hand
- KC_NO   ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO
-,KC_NO   ,KC_NO   ,M(HU_OEE),KC_NO   ,M(HU_UEE),KC_NO   ,KC_NO
-,KC_NO   ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
-,KC_NO   ,KC_NO   ,M(HU_OE) ,KC_NO   ,M(HU_UE) ,KC_NO   ,KC_NO
-,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO
-
-                                             ,KC_NO   ,KC_NO
-                                                      ,KC_NO
-                                    ,KC_NO   ,KC_TRNS ,KC_TRNS
-
-                                                                // right hand
-                                                               ,KC_TRNS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-                                                               ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-                                                                        ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-                                                               ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-                                                                                 ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-
-                                                               ,KC_NO   ,KC_NO
-                                                               ,KC_NO
-                                                               ,F(F_BSE),KC_TRNS  ,KC_TRNS
-    ),
-
-/* Keymap 5: Navigation & Media layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |  F9  |  F7  |  F5  |  F3  |  F1  |ScrLCK|           |      | F10  |  F2  |  F4  |  F6  |  F8  |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | Mute | VlUp |           | BASE |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | VlDn |           |      |      |      |
- *                                  |      |      |------|           |------|      |      |
- *                                  |      |      |      |           |      |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[NMDIA] = KEYMAP(
-// left hand
- KC_NO      ,KC_F9       ,KC_F7      ,KC_F5   ,KC_F3   ,KC_F1   ,LGUI(KC_L)
-,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO
-,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
-,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO
-                                                        ,KC_MUTE ,KC_VOLU
-                                                                 ,KC_VOLD
-                                                 ,KC_NO ,KC_NO   ,KC_TRNS
-
-                                                                     // right hand
-                                                                     ,KC_TRNS   ,KC_F10  ,KC_F2   ,KC_F4   ,KC_F6   ,KC_F8    ,KC_NO
-                                                                     ,KC_NO     ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-                                                                                ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-                                                                     ,KC_NO     ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-                                                                                         ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-
-                                                                     ,KC_TRNS   ,KC_NO
-                                                                     ,KC_NO
-                                                                     ,KC_NO     ,KC_NO   ,KC_NO
-    ),
-
-/* Keymap 6: Steno for Plover
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |  BASE  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   #  |   #  |   #  |   #  |   #  |   #  |           |  #   |  #   |  #   |   #  |   #  |  #   |   #    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |   T  |   P  |   H  |      |------|           |------|      |  F   |   P  |   L  |  T   |   D    |
- * |--------+   S  +------+------+------+   *  |   *  |           |  *   |  *   +------+------+------+------+--------|
- * |        |      |   K  |   W  |   R  |      |      |           |      |      |  R   |   B  |   G  |  S   |   Z    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   A  |   O  |------|       |------|  E   |  U   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-
-[PLVR] = KEYMAP(
-// left hand
-KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,   KC_NO,
-KC_NO,  PV_NUM, PV_NUM, PV_NUM,  PV_NUM, PV_NUM,  PV_NUM,
-KC_NO,  PV_LS,  PV_LT,  PV_LP,   PV_LH,  PV_STAR,
-KC_NO,  PV_LS,  PV_LK,  PV_LW,   PV_LR,  PV_STAR, PV_STAR,
-KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,
-                                           KC_NO, KC_NO,
-                                           KC_NO,
-                                           PV_A,  PV_O,  KC_NO,
-
-                                                 // right hand
-                                                 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   M(A_PLVR),
-                                                 PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,
-                                                          PV_STAR, PV_RF,   PV_RP,   PV_RL,   PV_RT,   PV_RD,
-                                                 PV_STAR, PV_STAR, PV_RR,   PV_RB,   PV_RG,   PV_RS,   PV_RZ,
-                                                                   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-                                           KC_NO,      KC_NO,
-                                           KC_NO,
-                                           KC_NO,PV_E, PV_U
- ),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-   [F_BSE]  = ACTION_LAYER_CLEAR(ON_PRESS)
-  ,[F_HUN]  = ACTION_LAYER_INVERT(HUN, ON_PRESS)
-  ,[F_GUI]  = ACTION_MACRO_TAP(A_GUI)
-  ,[F_SFT]  = ACTION_MODS_ONESHOT (MOD_LSFT)
-  ,[F_ALT]  = ACTION_MODS_ONESHOT (MOD_LALT)
-  ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL)
-};
-
-static void toggle_steno(int pressed)
-{
-  uint8_t layer = biton32(layer_state);
-
-  if (pressed) {
-    if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR);
-
-    register_code(PV_LP);
-    register_code(PV_LH);
-    register_code(PV_LR);
-    register_code(PV_O);
-    register_code(PV_RL);
-    register_code(PV_RG);
-  } else {
-    unregister_code(PV_LP);
-    unregister_code(PV_LH);
-    unregister_code(PV_LR);
-    unregister_code(PV_O);
-    unregister_code(PV_RL);
-    unregister_code(PV_RG);
-  }
-}
-
-static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char)
-{
-  uint8_t need_shift = 0;
-  uint8_t hold_shift = 0;
-
-  if (!record->event.pressed)
-    return MACRO_NONE;
-
-  layer_off (HUN);
-
-  if (keyboard_report->mods & MOD_BIT (KC_LSFT)) {
-    hold_shift = 1;
-    need_shift = 1;
-    unregister_code (KC_LSFT);
-  }
-  if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) {
-    need_shift = 1;
-    hold_shift = 0;
-    unregister_code (KC_LSFT);
-  }
-
-  clear_oneshot_mods ();
-
-  register_code (KC_RALT);
-  unregister_code (KC_RALT);
-  if (accent == (KC_DQT)) {
-    register_code (KC_RSFT);
-  }
-  register_code (accent);
-  unregister_code (accent);
-  if (need_shift && accent != (KC_DQT)) {
-    register_code (KC_RSFT);
-  } else if (accent == (KC_DQT) && !need_shift) {
-    unregister_code (KC_RSFT);
-  }
-  register_code (hun_char);
-  unregister_code (hun_char);
-  if (need_shift || accent == (KC_DQT))
-    unregister_code (KC_RSFT);
-  if (hold_shift)
-    register_code (KC_LSFT);
-
-  return MACRO_NONE;
-}
-
-static void ang_handle_num_row(uint8_t id, keyrecord_t *record) {
-  uint8_t idx = id - A_1;
-  uint8_t kc;
-  static bool shifted[10];
-
-  if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
-      ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
-    if (record->event.pressed)
-      shifted[idx] = true;
-  }
-
-  if (!shifted[idx]) {
-    kc = idx + KC_1;
-  } else {
-    switch (id) {
-    case A_8:
-    case A_9:
-      shifted[idx] = false;
-      return;
-
-    case A_7:
-      kc = KC_2;
-      break;
-    case A_5:
-      kc = KC_8;
-      break;
-    case A_3:
-      kc = KC_6;
-      break;
-    case A_1:
-      kc = KC_4;
-      break;
-
-    case A_0:
-      kc = KC_5;
-      break;
-    case A_2:
-      kc = KC_1;
-      break;
-    case A_4:
-      kc = KC_3;
-      break;
-    case A_6:
-      kc = KC_7;
-      break;
-    }
-  }
-
-  if (record->event.pressed) {
-    register_code (kc);
-  } else {
-    unregister_code (kc);
-    shifted[idx] = false;
-  }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-      case A_MPN:
-        if (record->event.pressed) {
-          if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
-              ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
-            int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
-
-            if (oneshot)
-              clear_oneshot_mods ();
-            unregister_code (KC_LSFT);
-
-            register_code (KC_MPRV);
-            unregister_code (KC_MPRV);
-
-            if (!oneshot)
-              register_code (KC_LSFT);
-          } else {
-            return MACRO (T(MNXT), END);
-          }
-        }
-        break;
-
-        /* Hungarian layer */
-      case HU_AA:
-        return ang_do_hun (record, KC_QUOT, KC_A);
-      case HU_OO:
-        return ang_do_hun (record, KC_QUOT, KC_O);
-      case HU_EE:
-        return ang_do_hun (record, KC_QUOT, KC_E);
-      case HU_UU:
-        return ang_do_hun (record, KC_QUOT, KC_U);
-      case HU_II:
-        return ang_do_hun (record, KC_QUOT, KC_I);
-      case HU_OE:
-        return ang_do_hun (record, KC_DQT, KC_O);
-      case HU_UE:
-        return ang_do_hun (record, KC_DQT, KC_U);
-      case HU_OEE:
-        return ang_do_hun (record, KC_EQL, KC_O);
-      case HU_UEE:
-        return ang_do_hun (record, KC_EQL, KC_U);
-
-        /* Plover base */
-      case A_PLVR:
-        toggle_steno(record->event.pressed);
-        break;
-
-        /* Fx */
-      case Fx:
-        if (record->event.pressed) {
-          set_oneshot_mods (MOD_LALT);
-          layer_on (NMDIA);
-          set_oneshot_layer (NMDIA, ONESHOT_START);
-        } else {
-          clear_oneshot_layer_state (ONESHOT_PRESSED);
-        }
-        break;
-
-        /* GUI & AppSel */
-      case A_GUI:
-        if (record->event.pressed) {
-          register_code (KC_LGUI);
-          if (record->tap.count && !record->tap.interrupted) {
-            if (record->tap.count >= 2) {
-              uprintf("CMD:appsel_start\n");
-              layer_on (APPSEL);
-              set_oneshot_layer (APPSEL, ONESHOT_START);
-            }
-          } else {
-            record->tap.count = 0;
-          }
-          gui_timer = 0;
-        } else {
-          if (record->tap.count >= 2)
-            {
-              clear_oneshot_layer_state (ONESHOT_PRESSED);
-            }
-          gui_timer = timer_read ();
-        }
-        break;
-
-      case APP_SLK:
-        if (record->event.pressed)
-          uprintf("CMD:appsel_slack\n");
-        break;
-
-      case APP_EMCS:
-        if (record->event.pressed)
-          uprintf("CMD:appsel_emacs\n");
-        break;
-
-      case APP_TERM:
-        if (record->event.pressed)
-          uprintf("CMD:appsel_term\n");
-        break;
-
-      case APP_CHRM:
-        if (record->event.pressed)
-          uprintf("CMD:appsel_chrome\n");
-        break;
-
-      case APP_MSIC:
-        if (record->event.pressed)
-          uprintf("CMD:appsel_music\n");
-        break;
-
-        // number row and symbols
-      case A_1 ... A_0:
-        ang_handle_num_row(id, record);
-        break;
-      }
-
-      return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  uint8_t dl;
-
-  set_unicode_input_mode(UC_LNX);
-
-  ergodox_led_all_on();
-  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
-    ergodox_led_all_set (i);
-    wait_ms (5);
-  }
-  wait_ms(1000);
-  for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
-    ergodox_led_all_set (i);
-    wait_ms (10);
-  }
-  ergodox_led_all_off();
-
-  if (!eeconfig_is_enabled())
-    eeconfig_init();
-  dl = eeconfig_read_default_layer ();
-  if (dl == (1UL << ADORE)) {
-    is_adore = 1;
-  }
-};
-
-LEADER_EXTERNS();
-
-static void ang_tap (uint16_t code, ...) {
-  uint16_t kc = code;
-  va_list ap;
-
-  va_start(ap, code);
-
-  do {
-    register_code16(kc);
-    unregister_code16(kc);
-    wait_ms(50);
-    kc = va_arg(ap, int);
-  } while (kc != 0);
-  va_end(ap);
-}
-
-#define TAP_ONCE(code)  \
-  register_code (code); \
-  unregister_code (code)
-
-typedef struct {
-  bool layer_toggle;
-  bool sticky;
-} td_ta_state_t;
-
-static void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) {
-  td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
-
-  if (td_ta->sticky) {
-    td_ta->sticky = false;
-    td_ta->layer_toggle = false;
-    layer_off (ARRW);
-    return;
-  }
-
-  if (state->count == 1 && !state->pressed) {
-    register_code (KC_TAB);
-    td_ta->sticky = false;
-    td_ta->layer_toggle = false;
-  } else {
-    td_ta->layer_toggle = true;
-    layer_on (ARRW);
-    td_ta->sticky = (state->count == 2);
-  }
-}
-
-static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) {
-  td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
-
-  if (!td_ta->layer_toggle)
-    unregister_code (KC_TAB);
-  if (!td_ta->sticky)
-    layer_off (ARRW);
-}
-
-static void ang_tap_dance_tmux_finished (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    register_code(KC_LALT);
-    register_code(KC_SPC);
-    unregister_code(KC_SPC);
-    unregister_code(KC_LALT);
-  } else {
-    register_code(KC_LCTL);
-    register_code(KC_A);
-    unregister_code(KC_A);
-    unregister_code(KC_LCTL);
-  }
-}
-
-static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *user_data) {
-  uint8_t kc = KC_P;
-
-  if (state->count >= 2) {
-    kc = KC_Z;
-  }
-
-  register_code(KC_LALT);
-  register_code(KC_SPC);
-  unregister_code(KC_SPC);
-  unregister_code(KC_LALT);
-
-  register_code(kc);
-  unregister_code(kc);
-}
-
-static void
-_td_sr_each (qk_tap_dance_state_t *state, void *user_data) {
-  skip_leds = true;
-
-  switch (state->count) {
-  case 1:
-    ergodox_right_led_3_on ();
-    break;
-  case 2:
-    ergodox_right_led_2_on ();
-    break;
-  case 3:
-    ergodox_right_led_1_on ();
-    break;
-  case 4:
-    ergodox_right_led_3_off ();
-    wait_ms (50);
-    ergodox_right_led_2_off ();
-    wait_ms (50);
-    ergodox_right_led_1_off ();
-    break;
-  }
-}
-
-static void
-_td_sr_finished (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    register_code (KC_MSTP);
-  }
-  if (state->count >= 4) {
-    uprintf("CMD:reflash\n");
-    wait_ms (1000);
-    reset_keyboard ();
-    reset_tap_dance (state);
-  }
-}
-
-static void
-_td_sr_reset (qk_tap_dance_state_t *state, void *user_data) {
-  ergodox_right_led_1_off ();
-  wait_ms (50);
-  ergodox_right_led_2_off ();
-  wait_ms (50);
-  ergodox_right_led_3_off ();
-
-  if (state->count == 1) {
-    unregister_code (KC_MSTP);
-  }
-}
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-   [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
-  ,[CT_TA]  = {
-     .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
-     .user_data = (void *)&((td_ta_state_t) { false, false })
-   }
-  ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN)
-  ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
-  ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
-  ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
-  ,[CT_SR]  = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset)
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-  uint8_t layer = biton32(layer_state);
-  bool is_arrow = false;
-
-  if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
-    unregister_code (KC_LGUI);
-
-  if (!skip_leds) {
-    if (layer == HUN) {
-      ergodox_right_led_2_on();
-      ergodox_right_led_3_on();
-    } else if (layer == NMDIA) {
-      ergodox_right_led_1_on();
-      ergodox_right_led_2_on();
-    } else if (layer == PLVR) {
-      ergodox_right_led_1_on ();
-      ergodox_right_led_2_on ();
-      ergodox_right_led_3_on ();
-    } else if (layer == ADORE) {
-      ergodox_right_led_1_on ();
-      ergodox_right_led_2_on ();
-      ergodox_right_led_3_on ();
-
-      ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
-    }
-  }
-
-  if (layer_state & (1UL << ARRW)) {
-    if (!skip_leds) {
-      ergodox_right_led_1_on ();
-      ergodox_right_led_3_on ();
-    }
-    is_arrow = true;
-  }
-
-  if (!skip_leds) {
-    if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
-        ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
-      ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
-      ergodox_right_led_1_on ();
-    } else {
-      ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
-      if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow)
-        ergodox_right_led_1_off ();
-    }
-
-    if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
-        ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) {
-      ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
-      ergodox_right_led_2_on ();
-    } else {
-      ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
-      if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE)
-        ergodox_right_led_2_off ();
-    }
-
-    if (keyboard_report->mods & MOD_BIT(KC_LCTRL) ||
-        ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) {
-      ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
-      ergodox_right_led_3_on ();
-    } else {
-      ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
-      if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow)
-        ergodox_right_led_3_off ();
-    }
-  }
-
-  LEADER_DICTIONARY() {
-    leading = false;
-    leader_end ();
-
-    SEQ_ONE_KEY (KC_C) {
-      ang_tap (LSFT(KC_C), KC_S, KC_I, KC_L, KC_L, KC_RALT, KC_QUOT, KC_A, KC_M, KC_A, KC_S,
-               KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0);
-    }
-
-    SEQ_ONE_KEY (KC_G) {
-      ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O,
-               KC_RALT, KC_EQL, KC_O,
-               KC_RALT, KC_EQL, KC_O, 0);
-    }
-
-#if KEYLOGGER_ENABLE
-    SEQ_ONE_KEY (KC_D) {
-      ergodox_led_all_on();
-      wait_ms(100);
-      ergodox_led_all_off();
-      log_enable = !log_enable;
-    }
-#endif
-
-    SEQ_ONE_KEY (KC_T) {
-      time_travel = !time_travel;
-    }
-
-    SEQ_ONE_KEY (KC_U) {
-      qk_ucis_start();
-    }
-
-    SEQ_ONE_KEY (KC_V) {
-      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
-    }
-
-    SEQ_ONE_KEY (KC_L) {
-      /* λ */
-      unicode_input_start();
-      register_hex(0x03bb);
-      unicode_input_finish();
-    }
-
-    SEQ_ONE_KEY (KC_Y) {
-      ang_tap (KC_BSLS, KC_O, KC_SLSH, 0);
-    }
-
-    SEQ_ONE_KEY (KC_S) {
-      unicode_input_start(); register_hex(0xaf); unicode_input_finish();
-      TAP_ONCE (KC_BSLS);
-      register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
-      unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
-      register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
-      TAP_ONCE (KC_SLSH);
-      unicode_input_start (); register_hex(0xaf); unicode_input_finish();
-    }
-
-    SEQ_TWO_KEYS (KC_W, KC_M) {
-      uprintf("CMD:wm\n");
-    }
-
-    SEQ_ONE_KEY (KC_A) {
-      if (is_adore == 0) {
-        default_layer_and (0);
-        default_layer_or ((1UL << ADORE));
-        eeconfig_update_default_layer ((1UL << ADORE));
-        is_adore = 1;
-
-        ergodox_led_all_off ();
-        ergodox_right_led_3_on ();
-        wait_ms (100);
-        ergodox_right_led_2_on ();
-        wait_ms (100);
-        ergodox_right_led_3_off ();
-        ergodox_right_led_1_on ();
-        wait_ms (100);
-        ergodox_right_led_2_off ();
-        wait_ms (100);
-        ergodox_right_led_1_off ();
-      } else {
-        is_adore = 0;
-        default_layer_and (0);
-        default_layer_or (1UL << BASE);
-        eeconfig_update_default_layer ((1UL << BASE));
-
-        ergodox_led_all_off ();
-        ergodox_right_led_1_on ();
-        wait_ms (100);
-        ergodox_right_led_2_on ();
-        wait_ms (100);
-        ergodox_right_led_1_off ();
-        ergodox_right_led_3_on ();
-        wait_ms (100);
-        ergodox_right_led_2_off ();
-        wait_ms (100);
-        ergodox_right_led_3_off ();
-      }
-    }
-  }
-}
-
-static uint16_t last4[4];
-
-const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
-(
- UCIS_SYM("poop", 0x1f4a9),
- UCIS_SYM("rofl", 0x1f923),
- UCIS_SYM("kiss", 0x1f619),
- UCIS_SYM("snowman", 0x2603),
- UCIS_SYM("coffee", 0x2615),
- UCIS_SYM("heart", 0x2764),
- UCIS_SYM("bolt", 0x26a1),
- UCIS_SYM("pi", 0x03c0),
- UCIS_SYM("mouse", 0x1f401),
- UCIS_SYM("micro", 0x00b5),
- UCIS_SYM("tm", 0x2122)
-);
-
-bool process_record_user (uint16_t keycode, keyrecord_t *record) {
-#if KEYLOGGER_ENABLE
-  if (log_enable) {
-    uint8_t layer = biton32(layer_state);
-
-    if ((layer == ADORE) || (layer == BASE))
-      uprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col,
-               record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak");
-  }
-#endif
-
-  if (keycode == KC_ESC && record->event.pressed) {
-    bool queue = true;
-
-    if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
-      clear_oneshot_mods ();
-      queue = false;
-    }
-    if (layer_state & (1UL<<HUN)) {
-      layer_off (HUN);
-      queue = false;
-    }
-    return queue;
-  }
-
-  if (time_travel && !record->event.pressed) {
-    uint8_t p;
-
-    // shift cache one to the left
-    for (p = 0; p < 3; p++) {
-      last4[p] = last4[p + 1];
-    }
-    last4[3] = keycode;
-
-    if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) {
-      ang_tap (KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0);
-      register_code (KC_RSFT);
-      register_code (KC_EQL);
-      unregister_code (KC_EQL);
-      unregister_code (KC_RSFT);
-
-      ang_tap (KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0);
-
-      return false;
-    }
-  }
-
-  return true;
-}
-
-void qk_ucis_symbol_fallback (void) {
-  for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
-    uint8_t code;
-
-    if ((qk_ucis_state.codes[i] >= M(A_1)) && (qk_ucis_state.codes[i] <= M(A_0)))
-      code = qk_ucis_state.codes[i] - M(A_1) + KC_1;
-    else
-      code = qk_ucis_state.codes[i];
-    register_code(code);
-    unregister_code(code);
-    wait_ms (10);
-  }
-}
diff --git a/keyboards/ergodox/keymaps/algernon/readme.md b/keyboards/ergodox/keymaps/algernon/readme.md
deleted file mode 100644 (file)
index 4c1fb15..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-<!-- -*- mode: markdown; fill-column: 8192 -*- -->
-
-algernon's layout
-=======================
-
-This is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox].
-
- [ez]: https://ergodox-ez.com/
- [blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
-
-Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary.
-
- [spacemacs]: http://spacemacs.org/
- [gnome]: https://www.gnome.org/
-
-## Table of Contents
-
-* [Layouts](#layouts)
-    - [Base layer](#base-layer)
-    - [ADORE layer](#adore-layer)
-    - [Steno layer](#steno-layer)
-    - [LED states](#led-states)
-* [Tools](#tools)
-    - [Heatmap](#heatmap)
-    - [Layer notification](#layer-notification)
-* [Special features](#special-features)
-    - [Unicode Symbol Input](#unicode-symbol-input)
-* [Building](#building)
-    - [Using on Windows](#using-on-windows)
-* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme)
-* [License](#license)
-
-# Layouts
-
-## Base layer
-
-[![Base layer](https://i.imgur.com/q1MDvq4.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
-
-At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
-
-* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer.
-* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap.
-* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout.
-* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode.
-* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle.
-* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`.
-* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap.
-* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
-* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`.
-* The **Lead** key allows me to type in a sequence of keys, and trigger some actions:
-    - `LEAD l` uses the unicode input method to enter a `λ`.
-    - `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
-    - `LEAD y` types `\o/`.
-    - `LEAD w m` maximises the currently focused window.
-    - `LEAD a` makes the [ADORE layer](#adore-layer) the default.
-    - `LEAD v` prints the firmware version, the keyboard and the keymap.
-    - `LEAD d` toggles logging keypress positions to the HID console.
-    - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader.
-    - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode.
-    
-The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front.
-
-## ADORE layer
-
-[![ADORE layer](https://i.imgur.com/r3LnQAA.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
-
-My experimental layout, that I keep tweaking. No full description here, because things are very much in flux.
-
-Note that the **HUN** layer does not work well with ADORE: it still has the same layout as on the [Base](#base-layer) layer. This will remain until ADORE becomes the default.
-
-## Steno layer
-
-[![Steno layer for Plover](https://i.imgur.com/PgifhBF.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
-
-This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too.
-
-## LED states
-
-The primary purpose of the LEDs is to show the modifier status, a secondary, to show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each have their designated LEDs: the *red*, *green* and *blue*, respectively. When a modifier is in a one-shot state, the respective LED will turn on with a dimmer light. If the modifier is toggled on, the brightness of the LED turns full.
-
-For the layers, the following rules apply:
-
-* When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active.
-* When the **Hungarian** layer is active, the *green* and *blue* LEDs are on.
-* When the **Media** layer is active, the *red* and *green* ones are on.
-* When the **ARROW** layer is active, the *red* and *blue* ones are on.
-* For the [Steno layer](#steno-layer), all LEDs will be turned on.
-
-Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on.
-
-# Special features
-
-## Unicode Symbol Input
-
-Once in the Unicode Symbol Input mode, one is able to type in symbol names, press `Enter` or `Space`, and get the Unicode symbol itself back. When in the mode, a capital `U` is printed first. Once the sequence is finished, all of it is erased by sending enough `Backspace` taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code. If it is not found, it will just replay the pressed keycodes.
-
-For the list of supported symbols, please see the source.
-
-This is an experimental feature, and may or may not work reliably.
-
-# Tools
-
-## Heatmap
-
-When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too.
-
-Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information.
-
- [kle]: http://www.keyboard-layout-editor.com/
-
-The generated heatmap looks somewhat like this:
-
- ![Heatmap](https://i.imgur.com/tly9XSy.png)
-
-## Layer notification
-
-There is a very small tool in `tools/layer-notify`, that listens to the HID console, looking for layer change events, and pops up a notification for every detected change. It is a very simple tool, mainly serving as an example.
-
-# Building
-
-To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this:
-
- [algernon:ez-layout]: https://github.com/algernon/ergodox-layout
- [qmk]: https://github.com/qmk/qmk_firmware
-
-```
-$ git clone https://github.com/qmk/qmk_firmware.git
-$ cd qmk_firmware
-$ git clone https://github.com/algernon/ergodox-layout.git \
-            keyboards/ergodox/keymaps/algernon-master
-$ make keyboard=ergodox keymap=algernon-master
-```
-
-From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware):
-
-```
-$ make keyboard=ergodox keymap=algernon
-```
-
-## Using on Windows
-
-The keymap default to forcing NKRO, which seems to upset Windows, and except the modifiers, none of them work. If you experience this problem, recompile the firmware with `FORCE_NKRO=no` added to the `make` command line.
-
-# License
-
-The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
-
-![nav-n-media-layer.png](https://i.imgur.com/AReX8C9.png)
-![hun-layer.png](https://i.imgur.com/uPGBl9J.png)
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json
deleted file mode 100644 (file)
index e09efec..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-[
-  {
-    "backcolor": "#ffffff",
-    "name": "ErgoDox - algernon's layout: Heatmap",
-    "author": "Gergely Nagy <kbd@gergo.csillger.hu>",
-    "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Tea",
-    "pcb": true,
-    "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
-  },
-  [
-    {
-      "x": 3.5,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "*\n5\nF5",
-    {
-      "x": 10.5,
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "#\n4\nF4"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n7\nF7",
-    {
-      "x": 1
-    },
-    "^\n3\nF3",
-    {
-      "x": 8.5
-    },
-    "!\n2\nF2",
-    {
-      "x": 1
-    },
-    "&\n6\nF6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "$\n1\nF1",
-    {
-      "a": 7,
-      "f": 3
-    },
-    "F11",
-    {
-      "x": 4.5,
-      "f": 3
-    },
-    "Fx",
-    {
-      "a": 4,
-      "f": 3,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "%\n0\nF10"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 9,
-      "a": 6,
-      "w": 1.5
-    },
-    "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
-    {
-      "f": 3,
-      "a": 4,
-      "fa": [
-          0,
-          0,
-          2
-      ]
-    },
-    " \n9\nF9",
-    {
-      "x": 14.5
-    },
-    " \n8\nF8",
-    {
-      "a": 7,
-      "w": 1.5
-    },
-    "STENO"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 6
-    },
-    "C",
-    {
-      "x": 10.5
-    },
-    "L"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "a": 6
-    },
-    "W",
-    {
-      "x": 1,
-      "a": 6
-    },
-    "H",
-    {
-      "x": 8.5
-    },
-    "G",
-    {
-      "x": 1
-    },
-    "P"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "F",
-    {
-      "a": 4,
-      "fa": [0, 0, 0],
-      "h": 1.5
-    },
-    "{\n(\n[",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "}\n)\n]",
-    {
-      "a": 6
-    },
-    "M"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 3,
-      "a": 4,
-      "w": 1.5
-    },
-    "\n\n|\n\\",
-    {
-      "a": 6,
-      "f": 3
-    },
-    "X",
-    {
-      "x": 14.5,
-      "a": 4
-    },
-    "/\n?",
-    {
-      "a": 4,
-      "w": 1.5
-    },
-    "~\n`"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 6
-    },
-    "E",
-    {
-      "x": 10.5
-    },
-    "T"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "O",
-    {
-      "x": 1,
-      "n": true
-    },
-    "I",
-    {
-      "x": 8.5,
-      "n": true
-    },
-    "R",
-    {
-      "x": 1
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "U",
-    {
-      "x": 6.5
-    },
-    "D"
-  ],
-  [
-    {
-      "y": -0.875,
-      "fa": [
-        6
-      ],
-      "w": 1.5
-    },
-    "<i class='fa fa-arrows'></i>\n\nTab",
-    {
-      "f": 3
-    },
-    "A",
-    {
-      "x": 14.5,
-      "f": 3
-    },
-    "S",
-    {
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        6
-      ],
-      "w": 1.5
-    },
-    "+\n="
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "a": 7,
-      "f": 9,
-      "h": 1.5
-    },
-    "<i class='fa fa-columns'></i>",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "<i class='fa fa-table'></i>"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "a": 4,
-      "f": 3
-    },
-    "\"\n'",
-    {
-      "x": 10.5,
-      "a": 6,
-      "f": 3
-    },
-    "V"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "a": 6
-    },
-    "Q",
-    {
-      "x": 1,
-      "a": 4
-    },
-    "<\n,",
-    {
-      "x": 8.5,
-      "a": 6
-    },
-    "K",
-    {
-      "x": 1
-    },
-    "Y"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "a": 4
-    },
-    ">\n.",
-    {
-      "x": 6.5,
-      "a": 6
-    },
-    "B"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 9,
-      "w": 1.5,
-      "g": true
-    },
-    "",
-    {
-      "a": 6,
-      "f": 3,
-      "g": false
-    },
-    "Z",
-    {
-      "x": 14.5
-    },
-    "J",
-    {
-      "f": 9,
-      "g": true,
-      "w": 1.5,
-      "a": 4
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "g": true,
-      "a": 7,
-      "f": 3
-    },
-    "",
-    {
-      "x": 10.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "",
-    {
-      "x": 1,
-      "g": false,
-      "a": 5
-    },
-    ";\n:",
-    {
-      "x": 8.5
-    },
-    "_\n-",
-    {
-      "x": 1,
-      "g": true,
-      "a": 7
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5
-    },
-    "",
-    {},
-    "",
-    {
-      "x": 14.5
-    },
-    "",
-    {},
-    ""
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "g": false
-    },
-    "Alt",
-    {
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        0,
-        9
-      ]
-    },
-    "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
-  ],
-  [
-    {
-      "a": 7,
-      "f": 9,
-      "h": 2
-    },
-    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
-    {
-      "h": 2
-    },
-    "<i class='fa fa-angle-double-up'></i>",
-    {
-      "f": 3
-    },
-    "Ctrl"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "ESC"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3,
-      "f": 2
-    },
-    "MEDIA",
-    {},
-    "DEL"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "HUN",
-    {
-      "f": 9,
-      "h": 2
-    },
-    "<i class='kb kb-Return-2'></i>",
-    {
-      "f": 3,
-      "h": 2
-    },
-    "SPC"
-  ],
-  [
-    {
-      "x": -3,
-      "f": 2
-    },
-    "LEAD"
-  ]
-]
diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json
deleted file mode 100644 (file)
index 1e53281..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-[
-  {
-    "backcolor": "#ffffff",
-    "name": "ErgoDox - algernon's layout: Heatmap",
-    "author": "Gergely Nagy <kbd@gergo.csillger.hu>",
-    "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Tea",
-    "pcb": true,
-    "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
-  },
-  [
-    {
-      "x": 3.5,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "*\n5\nF5",
-    {
-      "x": 10.5,
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "#\n4\nF4"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n7\nF7",
-    {
-      "x": 1
-    },
-    "^\n3\nF3",
-    {
-      "x": 8.5
-    },
-    "!\n2\nF2",
-    {
-      "x": 1
-    },
-    "&\n6\nF6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "$\n1\nF1",
-    {
-      "a": 7,
-      "f": 3
-    },
-    "F11",
-    {
-      "x": 4.5,
-      "f": 3
-    },
-    "Fx",
-    {
-      "a": 4,
-      "f": 3,
-      "fa": [
-        0,
-        0,
-        2
-      ]
-    },
-    "%\n0\nF10"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 6,
-      "a": 6,
-      "w": 1.5
-    },
-    "<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
-    {
-      "f": 3,
-      "a": 4,
-      "fa": [
-          0,
-          0,
-          2
-      ]
-
-    },
-    " \n9\nF9",
-    {
-      "x": 14.5
-    },
-    " \n8\nF8",
-    {
-      "a": 7,
-      "w": 1.5
-    },
-    "STENO"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 4
-    },
-    ">\n.",
-    {
-      "x": 10.5,
-      "a": 6
-    },
-    "C"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "a": 4
-    },
-    "<\n,",
-    {
-      "x": 1,
-      "a": 6
-    },
-    "P",
-    {
-      "x": 8.5
-    },
-    "G",
-    {
-      "x": 1
-    },
-    "R"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "Y",
-    {
-      "a": 4,
-      "h": 1.5
-    },
-    "{\n(\n[",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "}\n)\n]",
-    {
-      "a": 6
-    },
-    "F"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 3,
-      "a": 4,
-      "w": 1.5
-    },
-    "\n\n~\n`",
-    {
-      "a": 4,
-      "f": 3
-    },
-    "\"\n'",
-    {
-      "x": 14.5,
-      "a": 6
-    },
-    "L",
-    {
-      "a": 4,
-      "w": 1.5
-    },
-    "|\n\\"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 6
-    },
-    "E",
-    {
-      "x": 10.5
-    },
-    "T"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "O",
-    {
-      "x": 1,
-      "n": true
-    },
-    "U",
-    {
-      "x": 8.5,
-      "n": true
-    },
-    "H",
-    {
-      "x": 1
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "I",
-    {
-      "x": 6.5
-    },
-    "D"
-  ],
-  [
-    {
-      "y": -0.875,
-      "fa": [
-        6
-      ],
-      "w": 1.5
-    },
-    "<i class='fa fa-arrows'></i>\n\nTab",
-    {
-      "f": 3
-    },
-    "A",
-    {
-      "x": 14.5,
-      "f": 3
-    },
-    "S",
-    {
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        6
-      ],
-      "w": 1.5
-    },
-    "+\n="
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "a": 7,
-      "f": 9,
-      "h": 1.5
-    },
-    "<i class='fa fa-columns'></i>",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "<i class='fa fa-table'></i>"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "f": 3,
-      "a": 6
-    },
-    "J",
-    {
-      "x": 10.5
-    },
-    "W"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "Q",
-    {
-      "x": 1
-    },
-    "K",
-    {
-      "x": 8.5
-    },
-    "M",
-    {
-      "x": 1
-    },
-    "V"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "X",
-    {
-      "x": 6.5
-    },
-    "B"
-  ],
-  [
-    {
-      "y": -0.875,
-      "f": 9,
-      "w": 1.5
-    },
-    "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
-    {
-      "a": 4,
-      "f": 3
-    },
-    "?\n/",
-    {
-      "x": 14.5,
-      "a": 6
-    },
-    "Z",
-    {
-      "f": 9,
-      "w": 1.5
-    },
-    "<i class='kb kb-Multimedia-Stop'></i>"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "g": true,
-      "a": 7,
-      "f": 3
-    },
-    "",
-    {
-      "x": 10.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "",
-    {
-      "x": 1,
-      "g": false,
-      "a": 5
-    },
-    ";\n:",
-    {
-      "x": 8.5
-    },
-    "_\n-",
-    {
-      "x": 1,
-      "g": true,
-      "a": 7
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5
-    },
-    "",
-    {},
-    "",
-    {
-      "x": 14.5
-    },
-    "",
-    {},
-    ""
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "g": false
-    },
-    "Alt",
-    {
-      "a": 4,
-      "fa": [
-        0,
-        0,
-        0,
-        9
-      ]
-    },
-    "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
-  ],
-  [
-    {
-      "a": 7,
-      "f": 9,
-      "h": 2
-    },
-    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
-    {
-      "h": 2
-    },
-    "<i class='fa fa-angle-double-up'></i>",
-    {
-      "f": 3
-    },
-    "Ctrl"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "ESC"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3,
-      "f": 2
-    },
-    "MEDIA",
-    {},
-    "DEL"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "LEAD",
-    {
-      "f": 9,
-      "h": 2
-    },
-    "<i class='kb kb-Return-2'></i>",
-    {
-      "f": 3,
-      "h": 2
-    },
-    "SPC"
-  ],
-  [
-    {
-      "x": -3,
-      "f": 2
-    },
-    "HUN"
-  ]
-]
diff --git a/keyboards/ergodox/keymaps/algernon/tools/hid-commands b/keyboards/ergodox/keymaps/algernon/tools/hid-commands
deleted file mode 100755 (executable)
index 54ca755..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-set -e
-
-LAST_APPSEL_START=0
-
-cmd_wm () {
-    WIN="$(xdotool getactivewindow)"
-    wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
-    xdotool windowsize ${WIN} 100% 100%
-    wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz
-}
-
-_cmd_appsel () {
-    wmctrl -x -a $1 || true
-    xdotool key Escape
-}
-
-cmd_appsel_music () {
-    wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \
-        wmctrl -x -a banshee || wmctrl -x -a kodi || true
-    xdotool key Escape
-}
-
-cmd_appsel_slack () {
-    _cmd_appsel slack
-}
-
-cmd_appsel_emacs () {
-    _cmd_appsel emacs
-}
-
-cmd_appsel_term () {
-    _cmd_appsel gnome-terminal
-}
-
-cmd_appsel_chrome () {
-    _cmd_appsel chrom
-}
-
-cmd_appsel_start () {
-    if [ ! -z "${DISABLE_APPSEL_START}" ]; then
-        return
-    fi
-
-    APPSEL_START=$(date +%s)
-    if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then
-        return
-    fi
-    LAST_APPSEL_START=$APPSEL_START
-    notify-send -t 1000 "Please select an application!" -c device -u low \
-                -i /usr/share/icons/Adwaita/24x24/devices/video-display.png
-}
-
-cmd_reflash () {
-    teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true
-}
-
-cmd_help () {
-    cat <<EOF
-Use the source, Luke!
-EOF
-}
-
-while read l; do
-    case "$l" in
-        "CMD:"*)
-            ;;
-        *)
-            continue
-            ;;
-    esac
-
-    cmd="$(echo $l | cut -d: -f2-)"
-
-    echo "Got command: ${cmd}"
-
-    if type cmd_${cmd} >/dev/null 2>&1; then
-        cmd_${cmd}
-    fi
-done
diff --git a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py
deleted file mode 100755 (executable)
index e927e0e..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-#! /usr/bin/env python3
-import json
-import os
-import sys
-import re
-import argparse
-import time
-
-from math import floor
-from os.path import dirname
-from subprocess import Popen, PIPE, STDOUT
-from blessings import Terminal
-
-class Heatmap(object):
-    coords = [
-        [
-            # Row 0
-            [ 4,  0], [ 4,  2], [ 2,  0], [ 1,  0], [ 2,  2], [ 3,  0], [ 3,  2],
-            [ 3,  4], [ 3,  6], [ 2,  4], [ 1,  2], [ 2,  6], [ 4,  4], [ 4,  6],
-        ],
-        [
-            # Row 1
-            [ 8,  0], [ 8,  2], [ 6,  0], [ 5,  0], [ 6,  2], [ 7,  0], [ 7,  2],
-            [ 7,  4], [ 7,  6], [ 6,  4], [ 5,  2], [ 6,  6], [ 8,  4], [ 8,  6],
-        ],
-        [
-            # Row 2
-            [12,  0], [12,  2], [10,  0], [ 9,  0], [10,  2], [11, 0], [     ],
-            [      ], [11,  2], [10,  4], [ 9,  2], [10,  6], [12, 4], [12, 6],
-        ],
-        [
-            # Row 3
-            [17,  0], [17,  2], [15,  0], [14,  0], [15,  2], [16,  0], [13,  0],
-            [13,  2], [16,  2], [15,  4], [14,  2], [15,  6], [17,  4], [17,  6],
-        ],
-        [
-            # Row 4
-            [20,  0], [20,  2], [19,  0], [18,  0], [19,  2], [], [], [], [],
-            [19,  4], [18,  2], [19,  6], [20,  4], [20,  6], [], [], [], []
-        ],
-        [
-            # Row 5
-            [     ], [23,  0], [22,  2], [22,  0], [22,  4], [21,  0], [21,  2],
-            [24, 0], [24,  2], [25,  0], [25,  4], [25,  2], [26,  0], [      ],
-        ],
-    ]
-
-    def set_attr_at(self, block, n, attr, fn, val):
-        blk = self.heatmap[block][n]
-        if attr in blk:
-            blk[attr] = fn(blk[attr], val)
-        else:
-            blk[attr] = fn(None, val)
-
-    def coord(self, col, row):
-        return self.coords[row][col]
-
-    @staticmethod
-    def set_attr(orig, new):
-        return new
-
-    def set_bg(self, coords, color):
-        (block, n) = coords
-        self.set_attr_at(block, n, "c", self.set_attr, color)
-        #self.set_attr_at(block, n, "g", self.set_attr, False)
-
-    def set_tap_info(self, coords, count, cap):
-        (block, n) = coords
-        def _set_tap_info(o, _count, _cap):
-            ns = 4 - o.count ("\n")
-            return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100)
-
-        if not cap:
-            cap = 1
-        self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap)
-
-    @staticmethod
-    def heatmap_color (v):
-        colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]]
-        fb = 0
-        if v <= 0:
-            idx1, idx2 = 0, 0
-        elif v >= 1:
-            idx1, idx2 = len(colors) - 1, len(colors) - 1
-        else:
-            val = v * (len(colors) - 1)
-            idx1 = int(floor(val))
-            idx2 = idx1 + 1
-            fb = val - float(idx1)
-
-        r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0]
-        g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1]
-        b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2]
-
-        r, g, b = [x * 255 for x in (r, g, b)]
-        return "#%02x%02x%02x" % (int(r), int(g), int(b))
-
-    def __init__(self, layout):
-        self.log = {}
-        self.total = 0
-        self.max_cnt = 0
-        self.layout = layout
-
-    def update_log(self, coords):
-        (c, r) = coords
-        if not (c, r) in self.log:
-            self.log[(c, r)] = 0
-        self.log[(c, r)] = self.log[(c, r)] + 1
-        self.total = self.total + 1
-        if self.max_cnt < self.log[(c, r)]:
-            self.max_cnt = self.log[(c, r)]
-
-    def get_heatmap(self):
-        with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f:
-            self.heatmap = json.load (f)
-
-        ## Reset colors
-        for row in self.coords:
-            for coord in row:
-                if coord != []:
-                    self.set_bg (coord, "#d9dae0")
-
-        for (c, r) in self.log:
-            coords = self.coord(c, r)
-            b, n = coords
-            cap = self.max_cnt
-            if cap == 0:
-                cap = 1
-            v = float(self.log[(c, r)]) / cap
-            self.set_bg (coords, self.heatmap_color (v))
-            self.set_tap_info (coords, self.log[(c, r)], self.total)
-        return self.heatmap
-
-    def get_stats(self):
-        usage = [
-            # left hand
-            [0, 0, 0, 0, 0],
-            # right hand
-            [0, 0, 0, 0, 0]
-        ]
-        finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4]
-        for (c, r) in self.log:
-            if r == 5: # thumb cluster
-                if c <= 6: # left side
-                    usage[0][4] = usage[0][4] + self.log[(c, r)]
-                else:
-                    usage[1][0] = usage[1][0] + self.log[(c, r)]
-            elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys
-                if c <= 6: # left side
-                    usage[0][4] = usage[0][4] + self.log[(c, r)]
-                else:
-                    usage[1][0] = usage[1][0] + self.log[(c, r)]
-            else:
-                fc = c
-                hand = 0
-                if fc >= 7:
-                    hand = 1
-                fm = finger_map[fc]
-                usage[hand][fm] = usage[hand][fm] + self.log[(c, r)]
-        hand_usage = [0, 0]
-        for f in usage[0]:
-            hand_usage[0] = hand_usage[0] + f
-        for f in usage[1]:
-            hand_usage[1] = hand_usage[1] + f
-
-        total = self.total
-        if total == 0:
-            total = 1
-        stats = {
-            "total-keys": total,
-            "hands": {
-                "left": {
-                    "usage": round(float(hand_usage[0]) / total * 100, 2),
-                    "fingers": {
-                        "pinky": 0,
-                        "ring": 0,
-                        "middle": 0,
-                        "index": 0,
-                        "thumb": 0,
-                    }
-                },
-                "right": {
-                    "usage": round(float(hand_usage[1]) / total * 100, 2),
-                    "fingers": {
-                        "thumb": 0,
-                        "index": 0,
-                        "middle": 0,
-                        "ring": 0,
-                        "pinky": 0,
-                    }
-                },
-            }
-        }
-
-        hmap = ['left', 'right']
-        fmap = ['pinky', 'ring', 'middle', 'index', 'thumb',
-                'thumb', 'index', 'middle', 'ring', 'pinky']
-        for hand_idx in range(len(usage)):
-            hand = usage[hand_idx]
-            for finger_idx in range(len(hand)):
-                stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2)
-        return stats
-
-def dump_all(out_dir, heatmaps):
-    stats = {}
-    t = Terminal()
-    t.clear()
-    sys.stdout.write("\x1b[2J\x1b[H")
-
-    print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir))
-
-    keys = list(heatmaps.keys())
-    keys.sort()
-
-    for layer in keys:
-        if len(heatmaps[layer].log) == 0:
-            continue
-
-        with open ("%s/%s.json" % (out_dir, layer), "w") as f:
-            json.dump(heatmaps[layer].get_heatmap(), f)
-        stats[layer] = heatmaps[layer].get_stats()
-
-        left = stats[layer]['hands']['left']
-        right = stats[layer]['hands']['right']
-
-        print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer,
-                                                                    total=int(stats[layer]['total-keys'] / 2)))
-        print (('{t.underline}        | ' + \
-                'left ({l[usage]:6.2f}%)  | ' + \
-                'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right))
-        print ((' {t.bright_magenta}pinky{t.white}  |     {left[pinky]:6.2f}%     |     {right[pinky]:6.2f}%     |\n' + \
-                ' {t.bright_cyan}ring{t.white}   |     {left[ring]:6.2f}%     |     {right[ring]:6.2f}%     |\n' + \
-                ' {t.bright_blue}middle{t.white} |     {left[middle]:6.2f}%     |     {right[middle]:6.2f}%     |\n' + \
-                ' {t.bright_green}index{t.white}  |     {left[index]:6.2f}%     |     {right[index]:6.2f}%     |\n' + \
-                ' {t.bright_red}thumb{t.white}  |     {left[thumb]:6.2f}%     |     {right[thumb]:6.2f}%     |\n' + \
-                '').format(left=left['fingers'], right=right['fingers'], t=t))
-
-def process_line(line, heatmaps, opts, stamped_log = None):
-    m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line)
-    if not m:
-        return False
-    if stamped_log is not None:
-        if line.startswith("KL:"):
-            print ("%10.10f %s" % (time.time(), line),
-                   file = stamped_log, end = '')
-        else:
-            print (line,
-                   file = stamped_log, end = '')
-        stamped_log.flush()
-
-    (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4))
-    if (c, r) not in opts.allowed_keys:
-        return False
-
-    heatmaps[l].update_log ((c, r))
-
-    return True
-
-def setup_allowed_keys(opts):
-    if len(opts.only_key):
-        incmap={}
-        for v in opts.only_key:
-            m = re.search ('(\d+),(\d+)', v)
-            if not m:
-                continue
-            (c, r) = (int(m.group(1)), int(m.group(2)))
-            incmap[(c, r)] = True
-    else:
-        incmap={}
-        for r in range(0, 6):
-            for c in range(0, 14):
-                incmap[(c, r)] = True
-
-        for v in opts.ignore_key:
-            m = re.search ('(\d+),(\d+)', v)
-            if not m:
-                continue
-            (c, r) = (int(m.group(1)), int(m.group(2)))
-            del(incmap[(c, r)])
-
-    return incmap
-
-def main(opts):
-    heatmaps = {"Dvorak": Heatmap("Dvorak"),
-                "ADORE": Heatmap("ADORE")
-    }
-    cnt = 0
-    out_dir = opts.outdir
-
-    if not os.path.exists(out_dir):
-        os.makedirs(out_dir)
-
-    opts.allowed_keys = setup_allowed_keys(opts)
-
-    if not opts.one_shot:
-
-        try:
-            with open("%s/stamped-log" % out_dir, "r") as f:
-                while True:
-                    line = f.readline()
-                    if not line:
-                        break
-                    if not process_line(line, heatmaps, opts):
-                        continue
-        except:
-            pass
-
-        stamped_log = open ("%s/stamped-log" % (out_dir), "a+")
-    else:
-        stamped_log = None
-
-    while True:
-        line = sys.stdin.readline()
-        if not line:
-            break
-        if not process_line(line, heatmaps, opts, stamped_log):
-            continue
-
-        cnt = cnt + 1
-
-        if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot:
-            cnt = 0
-            dump_all(out_dir, heatmaps)
-
-    dump_all (out_dir, heatmaps)
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser (description = "keylog to heatmap processor")
-    parser.add_argument ('outdir', action = 'store',
-                         help = 'Output directory')
-    parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int,
-                         default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only')
-    parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str,
-                         default = [], help = 'Ignore the key at position (x, y)')
-    parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str,
-                         default = [], help = 'Only include key at position (x, y)')
-    parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true',
-                         help = 'Do not load previous data, and do not update it, either.')
-    args = parser.parse_args()
-    if len(args.ignore_key) and len(args.only_key):
-        print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!",
-               file = sys.stderr)
-        sys.exit(1)
-    main(args)
diff --git a/keyboards/ergodox/keymaps/algernon/tools/text-to-log.py b/keyboards/ergodox/keymaps/algernon/tools/text-to-log.py
deleted file mode 100755 (executable)
index f080c32..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/env python3
-
-import os
-import sys
-
-charmap = {
-    '9': [[1, 0]],
-    '7': [[2, 0]], '@': [[2, 5], [2, 0]],
-    '5': [[3, 0]], '*': [[2, 5], [3, 0]],
-    '3': [[4, 0]], '^': [[2, 5], [4, 0]],
-    '1': [[5, 0]], '$': [[2, 5], [5, 0]],
-    '0': [[8, 0]], '%': [[2, 5], [8, 0]],
-    '2': [[9, 0]], '!': [[2, 5], [9, 0]],
-    '4': [[10, 0]], '#': [[2, 5], [10, 0]],
-    '6': [[11, 0]], '&': [[2, 5], [11, 0]],
-    '8': [[12, 0]],
-
-    '\\': [[0, 1]], '|': [[2, 5], [0, 1]],
-    'x': [[1, 1]], 'X': [[2, 5], [1, 1]],
-    'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
-    'c': [[3, 1]], 'C': [[2, 5], [3, 1]],
-    'h': [[4, 1]], 'H': [[2, 5], [4, 1]],
-    'f': [[5, 1]], 'F': [[2, 5], [5, 1]],
-    '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
-    ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
-    'm': [[8, 1]], 'M': [[2, 5], [8, 1]],
-    'g': [[9, 1]], 'G': [[2, 5], [9, 1]],
-    'l': [[10, 1]], 'L': [[2, 5], [10, 1]],
-    'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
-    '/': [[12, 1]], '?': [[2, 5], [12, 1]],
-    '`': [[13, 1]], '~': [[2, 5], [13, 1]],
-
-    '\t': [[0, 2]],
-    'a': [[1, 2]], 'A': [[2, 5], [1, 2]],
-    'o': [[2, 2]], 'O': [[2, 5], [2, 2]],
-    'e': [[3, 2]], 'E': [[2, 5], [3, 2]],
-    'i': [[4, 2]], 'I': [[2, 5], [4, 2]],
-    'u': [[5, 2]], 'U': [[2, 5], [5, 2]],
-    'd': [[8, 2]], 'D': [[2, 5], [8, 2]],
-    'r': [[9, 2]], 'R': [[2, 5], [9, 2]],
-    't': [[10, 2]], 'T': [[2, 5], [10, 2]],
-    'n': [[11, 2]], 'N': [[2, 5], [11, 2]],
-    's': [[12, 2]], 'S': [[2, 5], [12, 2]],
-    '=': [[13, 2]], '+': [[2, 5], [13, 2]],
-
-    'z': [[1, 3]], 'Z': [[2, 5], [1, 3]],
-    'q': [[2, 3]], 'Q': [[2, 5], [2, 3]],
-    '\'': [[3, 3]], '"': [[2, 5], [3, 3]],
-    ',': [[4, 3]], '<': [[2, 5], [4, 3]],
-    '.': [[5, 3]], '>': [[2, 5], [5, 3]],
-    'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
-    'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
-    'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
-    'y': [[11, 3]], 'Y': [[2, 5], [11, 3]],
-    'j': [[12, 3]], 'J': [[2, 5], [12, 3]],
-
-    ':': [[4, 4]], ';': [[4, 4], [4, 4]],
-    '-': [[9, 4]], '_': [[2, 5], [9, 4]],
-
-    ' ': [[10, 5]],
-    '\n': [[11, 5]],
-
-    ## Layered things
-    # Hungarian
-    'á': [[9, 5], [1, 2]],  'Á': [[2, 5], [9, 5], [1, 2]],
-    'ó': [[9, 5], [2, 2]],  'Ó': [[2, 5], [9, 5], [2, 2]],
-    'ő': [[9, 5], [2, 1]],  'Ő': [[2, 5], [9, 5], [2, 1]],
-    'ö': [[9, 5], [2, 3]],  'Ö': [[2, 5], [9, 5], [2, 3]],
-    'é': [[9, 5], [3, 2]],  'É': [[2, 5], [9, 5], [3, 2]],
-    'ú': [[9, 5], [4, 2]],  'Ú': [[2, 5], [9, 5], [4, 2]],
-    'ű': [[9, 5], [4, 1]],  'Ű': [[2, 5], [9, 5], [4, 1]],
-    'ü': [[9, 5], [4, 3]],  'Ü': [[2, 5], [9, 5], [4, 3]],
-    'í': [[9, 5], [5, 2]],  'Í': [[2, 5], [9, 5], [5, 2]],
-}
-
-def lookup_char(layer, ch):
-    if ch in charmap:
-        return charmap[ch]
-    return None
-
-def process_char(layer, ch, out=sys.stdout):
-    keys = lookup_char(layer, ch)
-    if not keys:
-        print ("Unknown char: %s" % ch, file=sys.stderr)
-    else:
-        for (c, r) in keys:
-            print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out)
-            print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out)
-
-def process_file(fn, layer, out=sys.stdout):
-    with open(fn, "r") as f:
-        ch = f.read(1)
-        while ch:
-            process_char(layer, ch, out)
-            ch = f.read(1)
-
-if sys.argv[1] == '-':
-    out='/dev/stdin'
-else:
-    out=sys.argv[1]
-
-if len(sys.argv) >= 2:
-    layer = 'ADORE'
-else:
-    layer = sys.argv[2]
-
-process_file(out, layer = layer)
diff --git a/keyboards/ergodox/keymaps/alphadox/Makefile b/keyboards/ergodox/keymaps/alphadox/Makefile
deleted file mode 100644 (file)
index 633499d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-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.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/alphadox/config.h b/keyboards/ergodox/keymaps/alphadox/config.h
deleted file mode 100644 (file)
index deb218d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#define FORCE_NKRO
-#define PREVENT_STUCK_MODIFIERS
-
-#undef TAPPING_TERM
-#undef IGNORE_MOD_TAP_INTERRUPT
-
-#endif
diff --git a/keyboards/ergodox/keymaps/alphadox/keymap.c b/keyboards/ergodox/keymaps/alphadox/keymap.c
deleted file mode 100644 (file)
index 731e62c..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define ETC  2 // etc
-
-enum macro_id {
-    TEENSY,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[BASE] = KEYMAP(
-    KC_NO,          KC_NO,         KC_NO,   KC_NO,    KC_NO,          KC_NO,  KC_NO,
-    KC_TAB,         KC_Q,          KC_W,    KC_D,     KC_F,           KC_K,   KC_PGUP,
-    CTL_T(KC_ESC),  LT(ETC,KC_A),  KC_S,    KC_E,     KC_T,           KC_G,
-    KC_LSFT,        KC_Z,          KC_X,    KC_C,     KC_V,           KC_B,   KC_PGDN,
-    KC_GRV,         KC_DEL,        KC_DEL,  KC_LALT,  GUI_T(KC_TAB),
-                                                                      KC_NO,  KC_NO,
-                                                                              KC_NO,
-                                           LT(SYMB,KC_BSPC),  CTL_T(KC_ESC),  KC_NO,
-
-    KC_NO,    KC_NO,  KC_NO,          KC_NO,    KC_NO,    KC_NO,    KC_NO,
-    KC_VOLU,  KC_J,   KC_U,           KC_R,     KC_L,     KC_SCLN,  KC_BSLS,
-              KC_Y,   KC_N,           KC_I,     KC_O,     KC_H,     KC_QUOT,
-    KC_VOLD,  KC_P,   KC_M,           KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,
-                      GUI_T(KC_TAB),  KC_LEFT,  KC_DOWN,  KC_UP,    LCAG_T(KC_RGHT),
-    KC_NO,  KC_NO,
-    KC_NO,
-    KC_NO,  SFT_T(KC_ENT),  LT(SYMB,KC_SPC)
-),
-
-[SYMB] = KEYMAP(
-    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,
-    KC_TRNS,  KC_EXLM,  KC_AT,    KC_LCBR,  KC_RCBR,  KC_PIPE,  KC_TRNS,
-    KC_TRNS,  KC_HASH,  KC_DLR,   KC_LPRN,  KC_RPRN,  KC_BSLS,
-    KC_TRNS,  KC_PERC,  KC_CIRC,  KC_LBRC,  KC_RBRC,  KC_ASTR,  KC_TRNS,
-    KC_TILD,  KC_AMPR,  KC_AMPR,  KC_TRNS,  KC_TRNS,
-                                                      KC_TRNS,  KC_TRNS,
-                                                                KC_TRNS,
-                                              KC_TRNS, KC_TRNS, KC_TRNS,
-
-    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
-    KC_TRNS,  KC_EQL,   KC_7,   KC_8,   KC_9,    KC_PLUS,  KC_NO,
-              KC_MINS,  KC_4,   KC_5,   KC_6,    KC_QUOT,  KC_NO,
-    KC_TRNS,  KC_UNDS,  KC_1,   KC_2,   KC_3,    KC_DQUO,  KC_TRNS,
-                        KC_0,   KC_NO,  KC_DOT,  KC_TRNS,  KC_TRNS,
-    KC_TRNS,  KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,  KC_TRNS,  KC_TRNS
-),
-
-[ETC] = KEYMAP(
-    RESET,    KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO,
-    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_PGUP,  KC_TRNS,
-    KC_TRNS,  LT(ETC,KC_A),  KC_NO,  KC_NO,    KC_NO,    KC_PGDN,
-    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_DEL,   KC_TRNS,
-    KC_TRNS,  KC_TRNS,       KC_NO,  KC_TRNS,  KC_TRNS,
-                                                         KC_TRNS,  KC_TRNS,
-                                                                   KC_TRNS,
-                                                 KC_TRNS, KC_TRNS, KC_TRNS,
-
-    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
-    KC_TRNS,  KC_VOLU,  KC_F7,  KC_F8,  KC_F9,   KC_HOME,  KC_NO,
-              KC_VOLD,  KC_F4,  KC_F5,  KC_F6,   KC_END,   KC_NO,
-    KC_TRNS,  KC_MUTE,  KC_F1,  KC_F2,  KC_F3,   KC_INS,   KC_TRNS,
-                        KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
-    KC_TRNS,  KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,  KC_TRNS,  KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  switch(id) {
-    case TEENSY:
-      break;
-  }
-  return MACRO_NONE;
-};
-
-void matrix_init_user(void) {
-};
-
-void matrix_scan_user(void) {
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            break;
-    }
-};
diff --git a/keyboards/ergodox/keymaps/andrew_osx/keymap.c b/keyboards/ergodox/keymaps/andrew_osx/keymap.c
deleted file mode 100644 (file)
index 750155d..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-// Netable differences vs. the default firmware for the ErgoDox EZ:
-// 1. The Cmd key is now on the right side, making Cmd+Space easier.
-// 2. The media keys work on OSX (But not on Windows).
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  |  '"  |           |  '"  |   6  |   7  |   8  |   9  |   0  | BkSp   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  | ~L1  |           | ~L1  |   Y  |   U  |   I  |   O  |   P  |   -    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   /    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1| Alt  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  |  L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Esc  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |  (   |       |  {   |        |      |
- *                                 | Space| LGui |------|       |------| RGui   |Enter |
- *                                 |      |      |  )   |       |  }   |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_QUOT,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_FN1,
-        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_LPRN,
-                                               KC_SPC,KC_LGUI,KC_RPRN,
-        // right hand
-             KC_QUOT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSPC,
-             KC_FN1,      KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_BSLS,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          TG(1),
-             KC_ESC,        CTL_T(KC_ESC),
-             KC_LCBR,
-             KC_RCBR,KC_RGUI, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/belak/LICENSE b/keyboards/ergodox/keymaps/belak/LICENSE
deleted file mode 100644 (file)
index b462ba3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Kaleb Elwert
-
-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.
diff --git a/keyboards/ergodox/keymaps/belak/Makefile b/keyboards/ergodox/keymaps/belak/Makefile
deleted file mode 100644 (file)
index 8a6beea..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-TAP_DANCE_ENABLE=yes
-UNICODE_ENABLE=yes
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/belak/README.md b/keyboards/ergodox/keymaps/belak/README.md
deleted file mode 100644 (file)
index 30484e6..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# Belak's Ergodox Layout
-
-This has been based off of [emacs\_osx\_dk](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/emacs_osx_dk)
-from the main qmk repo. However, I've taken some of the ideas for the thumbs
-from [dvorak\_emacs](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/dvorak_emacs)
-and tweaked it a bit based on the keycaps I have.
-
-This keyboard is intended for use in emacs (one of the main reasons for easy
-access to modifiers) but it could be useful in other instances as well.
-
-The main repo is used as a testbed, so sometimes the layout may be in a strange
-state. The qmk version should be relatively stable.
-
-## Instructions
-
-This is currently being used on a regular ergodox, but it should work fine on
-the infinity as well. Though, you may have to modify the commands to build and
-flash the firmware to match the separate halves as defined in the infinity
-documentation.
-
-If you are using this keymap in the qmk repo, you should be able to just run
-`make ergodox-belak-teensy`. If you're using this externally (I sometimes make
-changes before syncing them to qmk), use the following instructions:
-
-1. Clone the main qmk repo
-2. Clone this to `$QMK/keyboards/ergodox/keymaps/belak-external`
-3. Run `make ergodox-belak-external-teensy` from the root of the qmk repo.
-
-## Changelog
-
-Fifth Revision
-
-* Change layer keys to tap-dance keys which cycle through additional layers
-* Add a few emoji keys (in preparation for an emoji layer)
-
-Fourth Revision
-
-* Remove media layer
-* Add a layer which swaps control and gui on the thumb keys.
-* Add some basic code to save settings to the eeprom
-* Save the state of the keys swapped in the thumb in the eeprom
-
-Third Revision
-
-* Add numpad layer and remove numpad from symbols layer
-* Disable media layer
-* Add arrow keys on ijkl to the symbols layer
-* Replace ALT on held enter and held delete with GUI (for better OSX
-  compatibility, as there's already an ALT key relatively close)
-* Replace keys above enter and delete with temporary layer switch buttons not
-  matching the other layer switch for that hand.
-* Reindent and space out most of the layer definitions
-
-Second Revision
-
-* Clean up definitions to make differences between layers easier to see
-* Remove old LCD code
-* Add new LCD code based on fredizzimo's branch
-
-First Revision
-
-* Reverse grave and escape
-
-Initial Version
-
-* Copy from emacs\_osx\_dk
-* "Fix" right alt
-* Change thumb keys to match default layout (backspace, delete, enter, space)
-* Add modifiers to thumb keys (ctrl to backspace and space, alt to delete and
-  enter)
-* Replace the RAlt below the brackets with LGui and RGui
-* Remove LCtrl and RCtrl from the keys above shift
-* Add browser forward, and move browser back
-* "Fix" the order of volume keys
-
-## Repository
-
-The original code for this is kept at https://github.com/belak/ergodox-layout and
-is synced to qmk every few main revisions.
diff --git a/keyboards/ergodox/keymaps/belak/keymap.c b/keyboards/ergodox/keymaps/belak/keymap.c
deleted file mode 100644 (file)
index 45f6353..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#include "eeprom.h"
-
-#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
-#define _______ KC_TRNS
-
-#define EECONFIG_BELAK_MAGIC (uint16_t)0xBE42
-
-// NOTE: This is just a number that's a bit beyond the end of what's already
-// defined. As there is no other define we can base this on, it may need to be
-// changed in the future. The initial value here is used as a placeholder with a
-// magic word, similar to the normal eeconfig. Note that all the storage being
-// used needs to fit inside the 32 bytes of the Ergodox Infinity.
-#define EECONFIG_BELAK (uint16_t *)16
-
-// The correct way to do this would be how the normal eeconfig handles it and
-// use a bitfield. However, the eeprom has a ton of space which isn't being
-// used so I don't really care and have a separate byte for every setting.
-#define EECONFIG_BELAK_SWAP_GUI_CTRL (uint8_t *)18
-
-static uint8_t swap_gui_ctrl = 0;
-static uint8_t td_led_override = 0;
-
-enum belak_keycodes {
-    // Function codes
-    BEL_F0 = SAFE_RANGE,
-    BEL_F1,
-
-    E_SHRUG,
-    E_TFLIP,
-    E_TSET,
-};
-
-inline void tap(uint16_t keycode) {
-    register_code(keycode);
-    unregister_code(keycode);
-};
-
-// TODO: Add LED support to the tap dance by using the advanced macro
-#define LTOGGLE TD(TD_LAYER_TOGGLE)
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define NUMP 2 // numpad
-#define SWPH 3 // swap gui/ctrl on the hands
-
-enum belak_td {
-    TD_LAYER_TOGGLE = 0,
-};
-
-void belak_td_each(qk_tap_dance_state_t *state, void *user_data);
-void belak_td_finished(qk_tap_dance_state_t *state, void *user_data);
-void belak_td_reset(qk_tap_dance_state_t *state, void *user_data);
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-    [TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN_ADVANCED(belak_td_each, belak_td_finished, belak_td_reset),
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   Esc  |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L2  |   6  |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   -    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |    \   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| LGui |           | RGui |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Layers| LCtrl| Left | Right| LAlt |                                       | RAlt | Up   | Down | RCtrl|Layers|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,--------------.
- *                                        |  ~L2 | Ins  |       | Grv  | ~L1   |
- *                                ,-------|------|------|       |------+-------+-------.
- *                                | Back  |      | Home |       | PgUp |       |       |
- *                                | Space | Del  |------|       |------| Enter | Space |
- *                                |       |      | End  |       | PgDn |       |       |
- *                                `---------------------'       `----------------------'
- */
-    [BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
-        CTL_T(KC_BSLS), KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
-        LTOGGLE,        KC_LCTRL,     KC_LEFT,KC_RGHT,KC_LALT,
-                                                     MO(NUMP),KC_INS,
-                                                              KC_HOME,
-                                 CTL_T(KC_BSPC),GUI_T(KC_DEL),KC_END,
-        // right hand
-        TG(NUMP),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_EQL,
-        KC_RBRC,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
-                     KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
-        KC_RGUI,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                             KC_RALT,KC_UP,  KC_DOWN,KC_RCTRL,         LTOGGLE,
-        KC_GRV,      MO(SYMB),
-        KC_PGUP,
-        KC_PGDN,     GUI_T(KC_ENT), CTL_T(KC_SPC)
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |      |  Up  |      |      |   F12  |
- * |--------+------+------+------+------+------| TFLIP|           | TSET |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down | Left | Down | Rght |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  | SHRUG|           |      |   &  |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LClear|      |      |      |      |                                       |      |      |      |      |LClear|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | TOGL |      |       |      | TOGL |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-    [SYMB] = KEYMAP(
-        // left hand
-        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   E_TFLIP,
-        _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, E_TSET,
-        _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
-        _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, E_SHRUG,
-        BEL_F1,  _______, _______, _______, _______,
-                                                     BEL_F0,  _______,
-                                                              _______,
-                                            _______, _______, _______,
-        // right hand
-        _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
-        _______, KC_UP,   _______, KC_UP,   _______, _______, KC_F12,
-                 KC_DOWN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
-        _______, KC_AMPR, _______, _______, _______, _______, _______,
-                          _______, _______, _______, _______, BEL_F1,
-        _______, BEL_F0,
-        _______,
-        _______, _______, _______
-    ),
-/* Keymap 2: Numpad Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LClear|      |      |      |      |                                       |   0  |    0 |   .  |   =  |LClear|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | TOGL |      |       |      | TOGL |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-    [NUMP] = KEYMAP(
-        // left hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        BEL_F1,  _______, _______, _______, _______,
-                                                     BEL_F0,  _______,
-                                                              _______,
-                                            _______, _______, _______,
-        // right hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, KC_7,    KC_8,    KC_9,    KC_ASTR, _______,
-                 _______, KC_4,    KC_5,    KC_6,    KC_PLUS, _______,
-        _______, _______, KC_1,    KC_2,    KC_3,    KC_BSLS, _______,
-                          KC_0,    KC_0,    KC_DOT,  KC_EQL,  BEL_F1,
-        _______, BEL_F0,
-        _______,
-        _______, _______, _______
-    ),
-/* Keymap 3: Swap control and gui on the thumb */
-    [SWPH] = KEYMAP(
-        // left hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______,
-                                                     _______, _______,
-                                                              _______,
-                               GUI_T(KC_BSPC), CTL_T(KC_DEL), _______,
-        // right hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-                 _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-                          _______, _______, _______, _______, _______,
-        _______, _______,
-        _______,
-        _______, CTL_T(KC_ENT), GUI_T(KC_SPC)
-    ),
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-    // If our magic word wasn't set properly, we need to zero out the settings.
-    if (eeprom_read_word(EECONFIG_BELAK) != EECONFIG_BELAK_MAGIC) {
-        eeprom_update_word(EECONFIG_BELAK, EECONFIG_BELAK_MAGIC);
-        eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, 0);
-    }
-
-    if (eeprom_read_byte(EECONFIG_BELAK_SWAP_GUI_CTRL)) {
-        layer_on(SWPH);
-        swap_gui_ctrl = 1;
-    }
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-
-    switch (td_led_override) {
-    case 1:
-        ergodox_right_led_1_on();
-        break;
-    case 2:
-        ergodox_right_led_2_on();
-        break;
-    default:
-        // Layer 1 and 2 are both overlay layers, so they could both be on. This
-        // means we can't use the lazy check of checking for the first significant
-        // bit.
-        if (LAYER_ON(SYMB)) {
-            ergodox_right_led_1_on();
-        }
-        if (LAYER_ON(NUMP)) {
-            ergodox_right_led_2_on();
-        }
-    }
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-    case BEL_F0:
-        if(record->event.pressed){
-            swap_gui_ctrl = !swap_gui_ctrl;
-            eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, swap_gui_ctrl);
-
-            if (swap_gui_ctrl) {
-                layer_on(SWPH);
-            } else {
-                layer_off(SWPH);
-            }
-
-            return false;
-        }
-        break;
-    case BEL_F1:
-        if(record->event.pressed){
-            layer_off(SYMB);
-            layer_off(NUMP);
-
-            return false;
-        }
-        break;
-    case E_SHRUG: // ¯\_(ツ)_/¯
-        if (record->event.pressed) {
-            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
-            tap(KC_BSLS);                                   // Arm
-            register_code(KC_RSFT);
-            tap(KC_UNDS);                                   // Arm
-            tap(KC_LPRN);                                   // Head
-            unregister_code(KC_RSFT);
-            process_unicode((0x30C4|QK_UNICODE), record);   // Face
-            register_code(KC_RSFT);
-            tap(KC_RPRN);                                   // Head
-            tap(KC_UNDS);                                   // Arm
-            unregister_code(KC_RSFT);
-            tap(KC_SLSH);                                   // Arm
-            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
-        }
-        return false;
-        break;
-    case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻
-        if (record->event.pressed) {
-            register_code(KC_RSFT);
-            tap(KC_9);
-            unregister_code(KC_RSFT);
-            process_unicode((0x256F|QK_UNICODE), record);   // Arm
-            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
-            process_unicode((0x25A1|QK_UNICODE), record);   // Mouth
-            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
-            register_code(KC_RSFT);
-            tap(KC_0);
-            unregister_code(KC_RSFT);
-            process_unicode((0x256F|QK_UNICODE), record);   // Arm
-            tap(KC_SPC);
-            process_unicode((0x0361|QK_UNICODE), record);   // Flippy
-            tap(KC_SPC);
-            process_unicode((0x253B|QK_UNICODE), record);   // Table
-            process_unicode((0x2501|QK_UNICODE), record);   // Table
-            process_unicode((0x253B|QK_UNICODE), record);   // Table
-        }
-        return false;
-        break;
-    case E_TSET: // ┬──┬ ノ( ゜-゜ノ)
-        if (record->event.pressed) {
-            process_unicode((0x252C|QK_UNICODE), record);   // Table
-            process_unicode((0x2500|QK_UNICODE), record);   // Table
-            process_unicode((0x2500|QK_UNICODE), record);   // Table
-            process_unicode((0x252C|QK_UNICODE), record);   // Table
-            tap(KC_SPC);
-            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
-            register_code(KC_RSFT);
-            tap(KC_9);
-            unregister_code(KC_RSFT);
-            tap(KC_SPC);
-            process_unicode((0x309C|QK_UNICODE), record);   // Eye
-            tap(KC_MINS);
-            process_unicode((0x309C|QK_UNICODE), record);   // Eye
-            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
-            register_code(KC_RSFT);
-            tap(KC_0);
-            unregister_code(KC_RSFT);
-        }
-        return false;
-        break;
-    }
-
-    return true;
-}
-
-void belak_td_each(qk_tap_dance_state_t *state, void *user_data) {
-    switch (state->count) {
-    case 1:
-        td_led_override = 1;
-        break;
-    case 2:
-        td_led_override = 2;
-        break;
-    default:
-        reset_tap_dance(state);
-    }
-}
-
-void belak_td_finished(qk_tap_dance_state_t *state, void *user_data) {
-    switch (state->count) {
-    case 1:
-        layer_on(SYMB);
-        break;
-    case 2:
-        layer_on(NUMP);
-        break;
-    }
-    td_led_override = 0;
-}
-
-void belak_td_reset(qk_tap_dance_state_t *state, void *user_data) {
-    td_led_override = 0;
-}
diff --git a/keyboards/ergodox/keymaps/belak/visualizer.c b/keyboards/ergodox/keymaps/belak/visualizer.c
deleted file mode 100644 (file)
index b92890a..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "simple_visualizer.h"
-
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-    uint8_t saturation = 60;
-    if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
-        saturation = 255;
-    }
-
-    if (state->status.layer & 0x4) {
-        state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
-        state->layer_text = "Media";
-    }
-    else if (state->status.layer & 0x2) {
-        state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
-        state->layer_text = "Symbols";
-    }
-    else {
-        state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
-        state->layer_text = "Base";
-    }
-}
diff --git a/keyboards/ergodox/keymaps/bepo/Makefile b/keyboards/ergodox/keymaps/bepo/Makefile
deleted file mode 100644 (file)
index b673c5c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Having a file like this allows you to override Makefile definitions
-# for your own particular keymap
-
-SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/bepo/keymap.c b/keyboards/ergodox/keymaps/bepo/keymap.c
deleted file mode 100644 (file)
index 05250ee..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-#include "ergodox.h"
-#include "keymap_bepo.h"
-#include "keymap_french.h"
-
-// keymaps
-#define BEPO 0 // default layer, for bepo compatible systems
-#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems
-#define QW_A 2 // bepo with altgr key to qwerty compat layer
-#define QW_S 3 // bepo with shift key to qwerty compat layer
-#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems
-#define AZ_A 5 // bepo with altgr key to azerty compat layer
-#define AZ_S 6 // bepo with shift key to azerty compat layer
-#define FNAV 7 // function / navigation / mouse layer
-#define NUMK 8 // numeric keypad layer
-
-// macros
-#define KP_00 0        // keypad "double 0"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: default layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   %    |   B  |E_ACUT|   P  |   O  |E_GRAV|Backsp|                                  |CapsLo|   ^  |   V  |   D  |   L  |   J  |   Z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   W    |   A  |   U  |   I  |   E  |   ,  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * | E_CIRC |A_GRAV|   Y  |   X  |   .  |   K  |      |                                  |      |   '  |   Q  |   G  |   H  |   F  | C_CEDIL|
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             | Space|LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[BEPO] = KEYMAP(
-// Left hand
-BP_DOLLAR,     BP_DQOT,        BP_LGIL,        BP_RGIL,        BP_LPRN,        BP_RPRN,        KC_DEL,
-BP_PERCENT,    BP_B,           BP_E_ACUTE,     BP_P,           BP_O,           BP_E_GRAVE,     KC_BSPC,
-BP_W,          BP_A,           BP_U,           BP_I,           BP_E,           BP_COMMA,
-BP_ECRC,       BP_A_GRAVE,     BP_Y,           BP_X,           BP_DOT,         BP_K,           KC_TAB,
-KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
-                                                                                                               DF(BEPO),       DF(QW_B),
-                                                                                                                               MO(NUMK),
-                                                                                               KC_SPC,         KC_LSHIFT,      MO(FNAV),
-// Right hand
-                               KC_SLCK,        BP_AT,          BP_PLUS,        BP_MINUS,       BP_SLASH,       BP_ASTR,        BP_EQUAL,
-                               KC_CAPSLOCK,    BP_DCRC,        BP_V,           BP_D,           BP_L,           BP_J,           BP_Z,
-                                               BP_C,           BP_T,           BP_S,           BP_R,           BP_N,           BP_M,
-                               KC_NUMLOCK,     BP_APOS,        BP_Q,           BP_G,           BP_H,           BP_F,           BP_CCED,
-                                                               BP_ALGR,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
-DF(AZ_B),      DF(BEPO),
-MO(NUMK),
-MO(FNAV),      KC_RSHIFT,      KC_ENTER),
-/* Keymap 1: bepo to qwerty base compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   %    |   b  |   e  |   p  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   e    |   a  |   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             | Space|LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[QW_B] = KEYMAP(
-// Left hand
-KC_DOLLAR,     S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LPRN,        KC_RPRN,        KC_DEL,
-KC_PERCENT,    KC_B,           KC_E,           KC_P,           KC_O,           KC_E,           KC_BSPC,
-KC_W,          KC_A,           KC_U,           KC_I,           KC_E,           KC_COMMA,
-KC_E,          KC_A,           KC_Y,           KC_X,           KC_DOT,         KC_K,           KC_TAB,
-KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_SPC,         MO(QW_S),       KC_TRNS,
-// Right hand
-                               KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
-                               KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
-                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
-                               KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
-                                                               MO(QW_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       MO(QW_S),       KC_ENTER),
-/* Keymap 2: bepo with altgr key to qwerty compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   w    |   a  |   u  |   i  |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   e    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             |   _  |LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[QW_A] = KEYMAP(
-// Left hand
-KC_DOLLAR,     S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LBRC,        KC_RBRC,        KC_DEL,
-KC_PERCENT,    KC_PIPE,        KC_E,           KC_AMPR,        KC_O,           KC_E,           KC_BSPC,
-KC_W,          KC_A,           KC_U,           KC_I,           RALT(KC_5),     KC_COMMA,
-KC_E,          KC_BSLASH,      KC_LCBR,        KC_RCBR,        KC_DOT,         KC_TILDE,       KC_TAB,
-KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_UNDS,        MO(QW_S),       KC_TRNS,
-// Right hand
-                               KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
-                               KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
-                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
-                               KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
-                                                               KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       MO(QW_S),       KC_ENTER),
-/* Keymap 3: bepo with shift key to qwerty compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             | Space|LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[QW_S] = KEYMAP(
-// Left hand
-KC_HASH,       KC_1,           KC_2,           KC_3,           KC_4,           KC_5,           KC_TRNS,
-KC_GRV,                S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
-S(KC_W),       S(KC_A),        S(KC_U),        S(KC_I),        S(KC_E),        KC_SCOLON,
-S(KC_E),       S(KC_A),        S(KC_Y),        S(KC_X),        KC_COLON,       S(KC_K),        S(KC_TAB),
-S(KC_ESC),     S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,
-// Right hand
-                               KC_TRNS,        KC_6,           KC_7,           KC_8,           KC_9,           KC_0,           KC_TRNS,
-                               KC_TRNS,        KC_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(KC_Z),
-                                               S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(KC_M),
-                               KC_TRNS,        S(KC_SLASH),    S(KC_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
-                                                               S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       KC_TRNS,        KC_TRNS),
-/* Keymap 4: bepo to azerty base compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   %    |   b  |e_acut|   p  |   o  |e_grav|Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   e    |a_grav|   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  | c_cedil|
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             | Space|LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[AZ_B] = KEYMAP(
-// Left hand
-FR_DLR,                FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LPRN,        FR_RPRN,        KC_DEL,
-FR_PERC,       KC_B,           FR_EACU,        KC_P,           KC_O,           FR_EGRV,        KC_BSPC,
-FR_W,          FR_A,           KC_U,           KC_I,           KC_E,           FR_COMM,
-KC_E,          FR_AGRV,        KC_Y,           KC_X,           FR_DOT,         KC_K,           KC_TAB,
-KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_SPC,         MO(AZ_S),       KC_TRNS,
-// Right hand
-                               KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
-                               KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
-                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
-                               KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
-                                                               MO(AZ_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       MO(AZ_S),       KC_ENTER),
-/* Keymap 5: bepo with altgr key to azerty compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   w    |   a  |u_grav| trem |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   /    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             |   _  |LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[AZ_A] = KEYMAP(
-// Left hand
-FR_DLR,                FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LBRC,        FR_RBRC,        KC_DEL,
-FR_PERC,       FR_PIPE,        FR_EACU,        FR_AMP,         KC_O,           FR_EGRV,        KC_BSPC,
-FR_W,          FR_A,           FR_UGRV,        S(KC_LBRC),     FR_EURO,        FR_COMM,
-FR_SLSH,       FR_BSLS,        FR_LCBR,        FR_RCBR,        FR_DOT,         FR_TILD,        KC_TAB,
-KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               FR_UNDS,        MO(AZ_S),       KC_TRNS,
-// Right hand
-                               KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
-                               KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
-                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
-                               KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
-                                                               KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       MO(AZ_S),       KC_ENTER),
-/* Keymap 6: bepo with shift key to azerty compat layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   °    |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
- * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
- * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
- * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
- * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |L_NumK|      |L_NumK|      |      |
- *                                             | Space|LShift|------|      |------|RShift|Enter |
- *                                             |      |      |L_FNav|      |L_FNav|      |      |
- *                                             `--------------------'      `--------------------'
- */
-[AZ_S] = KEYMAP(
-// Left hand
-FR_HASH,       FR_1,           FR_2,           FR_3,           FR_4,           FR_5,           KC_TRNS,
-FR_GRV,                S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
-S(FR_W),       S(FR_A),        S(KC_U),        S(KC_I),        S(KC_E),        FR_SCLN,
-S(KC_E),       S(FR_A),        S(KC_Y),        S(KC_X),        FR_COLN,        S(KC_K),        S(KC_TAB),
-S(KC_ESC),     S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,
-// Right hand
-                               KC_TRNS,        FR_6,           FR_7,           FR_8,           FR_9,           FR_0,           FR_OVRR,
-                               KC_TRNS,        FR_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(FR_Z),
-                                               S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(FR_M),
-                               KC_TRNS,        FR_QUES,        S(FR_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
-                                                               S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       KC_TRNS,        KC_TRNS),
-/* Keymap 7: function / navigation / mouse layer
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |VolMut|                                  |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |        | Next |LClick|  Up  |RClick| WhUp |VolDwn|                                  |      | PgUp | Home |  Up  |  End |  F11 |        |
- * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
- * |        | Prev | Left | Down | Right|WhDown|------|                                  |------| PgDn | Left | Down | Right|  F12 |        |
- * |--------+------+------+------+------+------| VolUp|                                  |      |------+------+------+------+------+--------|
- * |        | Undo |  Cut | Copy | Paste|      |      |                                  |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |             |      |      |      |      |      |             |      |      |      |      |      |
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |      |      |      |      |      |
- *                                             |      |      |------|      |------|      |      |
- *                                             |      |      |      |      |      |      |      |
- *                                             `--------------------'      `--------------------'
- */
-[FNAV] = KEYMAP(
-// Left hand
-KC_NO,         KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_MUTE,
-KC_NO,         KC_MS_BTN5,     KC_MS_BTN1,     KC_MS_UP,       KC_MS_BTN2,     KC_MS_WH_UP,    KC_VOLU,
-KC_NO,         KC_MS_BTN4,     KC_MS_LEFT,     KC_MS_DOWN,     KC_MS_RIGHT,    KC_MS_WH_DOWN,
-KC_NO,         KC_UNDO,        KC_CUT,         KC_COPY,        KC_PASTE,       KC_NO,          KC_VOLD,
-KC_NO,         KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_NO,          KC_TRNS,        KC_TRNS,
-// Right hand
-                               KC_NO,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_NO,
-                               KC_NO,          KC_PGUP,        KC_HOME,        KC_UP,          KC_END,         KC_F11,         KC_NO,
-                                               KC_PGDOWN,      KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_F12,         KC_NO,
-                               KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
-                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_NO,          KC_NO,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       KC_TRNS,        KC_NO),
-/* Keymap 8: numeric keypad layer, sends keypad codes
- *
- * ,--------------------------------------------------.                                  ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |                                  |      |      | NumLo|   /  |   *  |   -  |        |
- * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |                                  |      |      |   7  |   8  |   9  |   +  |        |
- * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|                                  |------|      |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |                                  |      |      |   1  |   2  |   3  | Enter|        |
- * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |             |      |      |      |      |      |             |   0  |  00  |   .  | Enter|      |
- *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
- *                                             |      |      |      |      |      |      |      |
- *                                             |      |      |------|      |------|      |      |
- *                                             |      |      |      |      |      |      |      |
- *                                             `--------------------'      `--------------------'
- */
-[NUMK] = KEYMAP(
-// Left hand
-KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
-KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
-KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
-KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
-KC_NO,         KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
-                                                                                                               KC_TRNS,        KC_TRNS,
-                                                                                                                               KC_TRNS,
-                                                                                               KC_NO,          KC_TRNS,        KC_TRNS,
-// Right hand
-                               KC_NO,          KC_NO,          KC_NUMLOCK,     KC_KP_SLASH,    KC_KP_ASTERISK, KC_KP_MINUS,    KC_NO,
-                               KC_NO,          KC_NO,          KC_KP_7,        KC_KP_8,        KC_KP_9,        KC_KP_PLUS,     KC_NO,
-                                               KC_NO,          KC_KP_4,        KC_KP_5,        KC_KP_6,        KC_KP_PLUS,     KC_NO,
-                               KC_NO,          KC_NO,          KC_KP_1,        KC_KP_2,        KC_KP_3,        KC_KP_ENTER,    KC_NO,
-                                                               KC_KP_0,        M(KP_00),       KC_KP_COMMA,    KC_KP_ENTER,    KC_NO,
-KC_TRNS,       KC_TRNS,
-KC_TRNS,
-KC_TRNS,       KC_TRNS,        KC_NO)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  switch(id) {
-    // keypad "double 0"
-    case KP_00:
-      if (record->event.pressed) {
-        return MACRO( T(KP_0), D(KP_0), END );
-      } else {
-        return MACRO( U(KP_0), END );
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
diff --git a/keyboards/ergodox/keymaps/bepo/readme.md b/keyboards/ergodox/keymaps/bepo/readme.md
deleted file mode 100644 (file)
index 14a1d22..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-![bepo.png](https://i.imgur.com/TnO8ApW.png)
-
-# BEPO keymap for the ErgoDox
-
-This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this readme will be in french.
-
-# Disposition BÉPO pour l'ErgoDox
-
-Cette keymap a été pensée pour la disposition BÉPO (http://bepo.fr), qui est une disposition de clavier francophone, ergonomique et libre, élaborée selon la méthode Dvorak. L'adaptation de cette disposition à l'ErgoDox a été réalisée en conservant les points forts du clavier TypeMatrix 2030 (très répandu dans la communauté bépo, avec un excellent rapport ergonomie / prix) voir en réglant certains de ses défauts (3 colonnes pour l'auriculaire droit et touche "Ê") et en apportant son lot de nouveautés (compatibilité avec les systèmes azerty et qwerty).
-
-Particularités
---------------
-
-Touches de repos des pouces : "espace" à gauche et "entrée" à droite.
-
-Placement des touches de combinaison ("Shift", "Alt", "Ctrl"...) adapté aux pouces, et permettant de conserver chaque doigt pour les rangées de lettres auxquelles ils sont assignés sans avoir à changer la touche de combinaison de côté (exemple : "A" majuscule puis "M" majuscule avec les auriculaires et un seul appui d'une touche "Shift").
-
-Les touches "Alt" et "Alt Gr" sont accessibles avec les pouces sur la rangée du bas comme sur la TypeMatrix 2030, avec une symétrie gauche / droite.
-
-Les touches "Ctrl" sont placées sur la même ligne que les touche "Alt" et "Alt Gr" comme sur un clavier clasique, elles sont accessibles aux pouces sur la rangée du bas (moins éloigné que le groupe de touches de pouces pour des petites mains).
-
-Les touches "Backspace" et "Delete" sont placées comme sur la TypeMatrix 2030, du côté gauche uniquement (pour laisser celles de la main droite servir de {caps,num,scroll}lock puisqu'elles ont des LED).
-
-La touche "Tab" est placée comme sur la TypeMatrix 2020.
-
-Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO".
-
-Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite et d'effectuer des actions souris avec uniquement la main gauche. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long).
-
-Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0".
-
-Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour des accès BIOS ou console en QWERTY.
-
-Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier AZERTY. Cette compatibilité n'est pas parfaite (pas de gestion des caractères non présents sur le clavier AZERTY, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour faire du bureau à distance vers un système Windows sans BEPO.
-
-> Olivier Smedts <olivier@gid0.org>
diff --git a/keyboards/ergodox/keymaps/bepo_csa/keymap.c b/keyboards/ergodox/keymaps/bepo_csa/keymap.c
deleted file mode 100644 (file)
index 495242a..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-/* TypeMatrix-2030-like keymap  */
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "led.h"
-#include "keymap_extras/keymap_bepo.h"
-#include "keymap_extras/keymap_canadian_multilingual.h"
-
-enum layers {
-    LR_BASE, // default layer
-    LR_CSA, // BÉPO over Canadian Multilingual (CSA)
-    LR_CSA_SFT, // shifted BÉPO over CSA
-    LR_CSA_AGR, // altgr-ed BÉPO over CSA
-    LR_CSA_AGR_SFT, // altgr-shifted BÉPO over CSA
-    LR_NUMR, // numeric layer
-    LR_FN, // fn layer
-};
-
-#define IS_CA_MULT_ENABLED()    (layer_state & (1 << LR_CSA))
-
-enum macros {
-    // Characters that do not exist in CSA and must be implemented based on unicode support
-    // Note: these are intentionally declared first to be used as indexes in spec_chars below
-    UC_NDSH, // –
-    UC_MDSH, // —
-    UC_ELPS, // …
-    END_UC, // indicates the last unicode character macro
-    // other macros
-    M_CSA_SFT, // toggle shift on CSA
-    M_CSA_AGR_SFT, // toggle shift on LR_CSA_AGR (goes to LR_CSA_AGR_SFT)
-    M_CSA_SFT_AGR, // toggle AltGr on LR_CSA_SFT (goes to LR_CSA_AGR_SFT)
-    // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT
-    M_1,
-    M_2,
-    M_3,
-    M_4,
-    M_5,
-    M_6,
-    M_7,
-    M_8,
-    M_9,
-    M_0,
-    M_DEGR,
-    M_SCLN,
-    M_GRV,
-    M_NBSP,
-    // macros for characters that don't have a simple key combination in LR_CA_MULT_ALTGR
-    M_CRC,
-    // other layer macros
-    M_DBL0, // double 0
-    M_FNLR, // fn layer
-    M_NMAL, // num+alt
-};
-
-#define CSA(name)   M(M_CSA_##name)     // calls a CSA macro
-
-const uint16_t unicode_chars[] = {
-        [UC_NDSH] = L'–',
-        [UC_MDSH] = L'—',
-        [UC_ELPS] = L'…',
-};
-
-/* shortcut for unicode character macros */
-#define MUC(name)   M(UC_##name)    // calls a unicode macro
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
- * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
- * |   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
- * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
- * | LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl |  fn  | LGui |numAlt| LAlt |                                       |Alt Gr|   %  |  App |   Ç  | RCtrl|
- *   `----------------------------------'                                       `----------------------------------'
- *                                       ,--------------.       ,-------------.
- *                                       |  Esc  | num  |       | Left |Right |
- *                                ,------+-------+------|       |------+------+------.
- *                                |      |       | PgUp |       |  Up  |      |      |
- *                                |Space | Home  |------|       |------| End  |Space |
- *                                |      |       | PgDn |       | Down |      |      |
- *                                `---------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[LR_BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        BP_DLR,     KC_1,      KC_2,    KC_3,      KC_4,     KC_5,    KC_DELT,
-        KC_TAB,     BP_B,      BP_ECUT, BP_P,      BP_O,     BP_EGRV, KC_BSPC,
-        BP_EQL,     BP_A,      BP_U,    BP_I,      BP_E,     BP_COMM,
-        KC_LSFT,    BP_AGRV,   BP_Y,    BP_X,      BP_DOT,   BP_K,    KC_ENT,
-        KC_LCTL,    M(M_FNLR), KC_LGUI, M(M_NMAL), KC_LALT,
-
-                                                   KC_ESC,   TG(LR_NUMR),
-                                                             KC_PGUP,
-                                          KC_SPC,  KC_HOME,  KC_PGDN,
-
-        // right hand
-        KC_DELT,   KC_6,     KC_7,    KC_8,    KC_9,    KC_0,     BP_W,
-        KC_BSPC,   BP_DCRC,  BP_V,    BP_D,    BP_L,    BP_J,     BP_Z,
-                   BP_C,     BP_T,    BP_S,    BP_R,    BP_N,     BP_M,
-        KC_ENT,    BP_APOS,  BP_Q,    BP_G,    BP_H,    BP_F,     KC_RSFT,
-                             BP_ALGR, BP_PERC, KC_APP,  BP_CCED,  KC_RCTL,
-
-        KC_LEFT, KC_RGHT,
-        KC_UP,
-        KC_DOWN, KC_END,   KC_SPC
-    ),
-/**
- * Same as default but for use with Canadian Multilingual on OS side
- */
-[LR_CSA] = KEYMAP(
-        // left hand
-        KC_DLR,      CSA_DQOT,   CSA_LGIL,  CSA_RGIL,  KC_LPRN,  KC_RPRN,   KC_TRNS,
-        KC_TRNS,     KC_B,       CSA_ECUT,  KC_P,      KC_O,     CSA_EGRV,  KC_TRNS,
-        KC_EQL,      KC_A,       KC_U,      KC_I,      KC_E,     KC_COMM,
-        CSA(SFT),    CSA_AGRV,   KC_Y,      KC_X,      KC_DOT,   KC_K,      KC_TRNS,
-        KC_TRNS,     KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,
-
-                                                       KC_TRNS,  KC_TRNS,
-                                                                 KC_TRNS,
-                                            KC_TRNS,   KC_TRNS,  KC_TRNS,
-
-        // right hand
-        KC_TRNS,  KC_AT,     KC_PLUS,  KC_MINS,  CSA_SLSH,  KC_ASTR,   KC_W,
-        KC_TRNS,  CSA_DCRC,  KC_V,     KC_D,     KC_L,      KC_J,      KC_Z,
-                  KC_C,      KC_T,     KC_S,     KC_R,      KC_N,      KC_M,
-        KC_TRNS,  CSA_APOS,  KC_Q,     KC_G,     KC_H,      KC_F,      CSA(SFT),
-                      MO(LR_CSA_AGR),  KC_PERC,  KC_TRNS,   CSA_CCED,  KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL
-
-        KC_TRNS,  KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,  KC_TRNS,  KC_TRNS
-    ),
-/* Shifted BÉPO over Canadian Multilingual
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   #    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |   !  |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   °    |      |      |      |      |   ;  |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |   :  |      |      |           |      |   ?  |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |   `  |      |      |       |
- *   `----------------------------------'                                       `-----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[LR_CSA_SFT] = KEYMAP(
-        // left hand
-        KC_HASH,  M(M_1),   M(M_2),   M(M_3),  M(M_4),   M(M_5),   KC_TRNS,
-        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
-        M(M_DEGR),KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,  M(M_SCLN),
-        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_COLN,  KC_TRNS,  KC_TRNS,
-        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,
-
-                                                      KC_TRNS,  KC_TRNS,
-                                                                KC_TRNS,
-                                          M(M_NBSP),  KC_TRNS,  KC_TRNS,
-
-        // right hand
-        KC_TRNS,  M(M_6),    M(M_7),   M(M_8),   M(M_9),   M(M_0),   KC_TRNS,
-        KC_TRNS,  KC_EXLM,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-                  KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-        KC_TRNS,  CSA_QEST,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-                        CSA(SFT_AGR),  M(M_GRV), KC_TRNS,  KC_TRNS,  KC_TRNS,
-
-        KC_TRNS,  KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,  KC_TRNS,  M(M_NBSP)
-    ),
-/* AltGr-ed BÉPO over Canadian Multilingual
- * "////" indicates that the key is disabled (unsupported bépo character)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |    –   |   —  |   <  |   >  |   [  |   ]  |      |           |      |   ^  |   ±  | //// |   ÷  |   ×  | dead ˘ |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   |  |dead '|   &  |   œ  |dead `|      |           |      |   ¡  |dead ˇ|   ð  | //// |   ij  | ////// |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | ////// |   æ  |   ù  |dead "|   €  |   ̛’  |------|           |------|   ©  |   þ  |   ß  |   ®  |dead ~| dead ¯ |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   \  |   {  |   }  |   …  |   ~  |      |           |      |   ¿  |dead °|   μ  | //// |dead ˛|        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      | //// |      |dead ¸|       |
- *   `----------------------------------'                                       `-----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   _  |      |------|       |------|      |  _   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[LR_CSA_AGR] = KEYMAP(
-        // left hand
-        MUC(NDSH),    MUC(MDSH),  CSA_LESS,  CSA_GRTR,  CSA_LBRC,   CSA_RBRC,  KC_TRNS,
-        KC_TRNS,      CSA_PIPE,   CSA_DACT,  KC_AMPR,   CSA_OE,     CSA_DGRV,  KC_TRNS,
-        KC_NO,        CSA_AE,     CSA_UGRV,  CSA_DTRM,  CSA_EURO,   CSA_RQOT,
-        CSA(AGR_SFT), CSA_BSLS,   CSA_LCBR,  CSA_RCBR,  MUC(ELPS),  CSA_TILD,  KC_TRNS,
-        KC_TRNS,      KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,
-
-                                                      KC_TRNS,  KC_TRNS,
-                                                                KC_TRNS,
-                                        KC_UNDS, CSA(AGR_SFT),  KC_TRNS,
-
-        // right hand
-        KC_TRNS,  M(M_CRC),  CSA_PSMS,  KC_NO,     CSA_DVSN, CSA_TIMS,  CSA_DBRV,
-        KC_TRNS,  CSA_IXLM,  CSA_DCAR,  CSA_ETH,   KC_NO,    CSA_IJ,    KC_NO,
-                  CSA_CPRT,  CSA_THRN,  CSA_SRPS,  CSA_RTM,  CSA_DTLD,  CSA_DMCR,
-        KC_TRNS,  CSA_IQST,  CSA_DRNG,  CSA_MU,    KC_NO,    CSA_DOGO,  CSA(AGR_SFT),
-                             KC_TRNS,   KC_NO,     KC_TRNS,  CSA_DCED,  KC_TRNS,
-
-        KC_TRNS,  KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,  CSA(AGR_SFT),  KC_UNDS
-    ),
-/* AltGr-shifted BÉPO over Canadian Multilingual
- * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |    ¶   | //// |   “  |   ”  | //// | //// |      |           |      | //// |   ¬  |   ¼  |   ½  |   ¾  | ////// |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   ¦  |   ˝  |   §  |   Œ  |   `  |      |           |      | //// | //// |   Ð  | //// |   IJ  | ////// |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | ////// |   Æ  |   Ù  |dead-˙| //// | //// |------|           |------| //// |   Þ  |   ẞ   |   ™  | //// |   º    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | //// |   ‘  |   ’  | //// | //// |      |           |      | //// | //// | //// | //// |   ª  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[LR_CSA_AGR_SFT] = KEYMAP(
-        // left hand
-        CSA_PARG,      KC_NO,     CSA_LDQT,    CSA_RDQT,  KC_NO,     KC_NO,     KC_TRNS,
-        KC_TRNS,       CSA_BPIP,  CSA_DDCT,    CSA_SECT,  S(CSA_OE), M(M_GRV),  KC_TRNS,
-        KC_NO,         S(CSA_AE), S(CSA_UGRV), CSA_DDTA,  KC_NO,     KC_NO,
-        CSA(AGR_SFT),  KC_NO,     CSA_LQOT,    CSA_RQOT,  KC_NO,     KC_NO,     KC_TRNS,
-        KC_TRNS,       KC_TRNS,   KC_TRNS,     KC_TRNS,   KC_TRNS,
-
-        KC_TRNS,  KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,  CSA(AGR_SFT),  KC_TRNS,
-
-        // right hand
-        KC_TRNS,  KC_NO,     CSA_NEGT,    CSA_1QRT,    CSA_1HLF,  CSA_3QRT,   KC_NO,
-        KC_TRNS,  KC_NO,     KC_NO,       S(CSA_ETH),  KC_NO,     S(CSA_IJ),  KC_NO,
-                  KC_NO,     S(CSA_THRN), S(CSA_SRPS), CSA_TM,    KC_NO,      CSA_ORDO,
-        KC_TRNS,  KC_NO,     KC_NO,       KC_NO,       KC_NO,     CSA_ORDA,   CSA(AGR_SFT),
-                        CSA(SFT_AGR),     KC_TRNS,     KC_TRNS,   KC_TRNS,    KC_TRNS,
-
-        KC_TRNS,  KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,  CSA(AGR_SFT),  KC_TRNS
-    ),
-/* Numeric Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
- *   `----------------------------------'                                       `-----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |n.lock|c.lock|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[LR_NUMR] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
-       KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                              KC_TRNS, KC_TRNS,KC_TRNS,
-
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,   KC_TAB,  KC_PSLS,  KC_PAST, KC_PMNS,
-       KC_TRNS, KC_TRNS, KC_HOME, KC_P7,   KC_P8,    KC_P9,   KC_PPLS,
-                KC_UP,   KC_END,  KC_P4,   KC_P5,    KC_P6,   KC_PPLS,
-       KC_LEFT, KC_DOWN, KC_RGHT, KC_P1,   KC_P2,    KC_P3,   KC_PENT,
-                         KC_TRNS, KC_P0,   M(M_DBL0),KC_PDOT, CTL_T(KC_PENT),
-
-       KC_NLCK, KC_CAPS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* fn layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |~CA-mult|      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  RESET |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | App  | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Next |       |      |      |      |
- *                                 | Mute | play |------|       |------|      |      |
- *                                 |      |      | Prev |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[LR_FN] = KEYMAP(
-       TG(LR_CSA), KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_INS,
-       KC_TRNS,    KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_VOLU,
-       RESET,      KC_TRNS, KC_TRNS,      KC_CALC,     KC_MAIL,      KC_WHOM,
-       KC_TRNS,    KC_APP,  S(KC_DELT),   LCTL(KC_INS),S(KC_INS),    KC_MUTE, KC_VOLD,
-       KC_TRNS,    KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,
-
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_MPRV,
-                                  KC_MUTE, KC_MPLY, KC_MNXT,
-
-    // right hand
-       KC_INS,   KC_EJCT, KC_PWR,  KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-void hold_shift(void) {
-    register_code(KC_LSHIFT);
-}
-
-void release_shift(void) {
-    unregister_code(KC_LSHIFT);
-}
-
-uint16_t hextokeycode(int hex) {
-    if (hex == 0x0) {
-        return KC_P0;
-    } else if (hex < 0xA) {
-        return KC_P1 + (hex - 0x1);
-    } else {
-        return KC_A + (hex - 0xA);
-    }
-}
-
-void send_unicode(uint16_t unicode)
-{
-    // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input
-    // Implemented for Windows:
-    // Pressing ALT followed by + followed by the unicode code point in hex.
-    // Requires registry key HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad set to String 1
-    register_code(KC_LALT);
-    register_code(KC_PPLS);
-    unregister_code(KC_PPLS);
-
-    for (int i = 12; i >= 0; i -= 4) {
-        register_code(hextokeycode((unicode >> i) & 0xF));
-        unregister_code(hextokeycode((unicode >> i) & 0xF));
-    }
-
-    unregister_code(KC_LALT);
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-        case 0 ... END_UC:
-            if (record->event.pressed) {
-                send_unicode(unicode_chars[id]);
-            }
-            break;
-        case M_CSA_SFT:
-            // BÉPO over CSA: toggle shift layer
-            layer_invert(LR_CSA_SFT);
-            if (record->event.pressed) {
-                hold_shift();
-            } else {
-                release_shift();
-            }
-            break;
-        case M_CSA_SFT_AGR:
-            // BÉPO over CSA: from shift layer, momentary altgr+shift layer
-            layer_invert(LR_CSA_AGR);
-            layer_invert(LR_CSA_AGR_SFT);
-            if (record->event.pressed) {
-                // shift not needed for LR_CSA_AGR_SFT
-                release_shift();
-            } else {
-                // back to shift layer
-                hold_shift();
-            }
-            break;
-        case M_CSA_AGR_SFT:
-            // BÉPO over CSA: from altgr layer, momentary altgr+shift layer
-            layer_invert(LR_CSA_SFT);
-            layer_invert(LR_CSA_AGR_SFT);
-            break;
-        case M_1 ... M_0:
-        case M_DEGR:
-        case M_SCLN:
-        case M_GRV:
-        case M_NBSP:
-            // macros of the shift layer that require to release shift
-            if (record->event.pressed) {
-                release_shift();
-                switch (id) {
-                    case M_1 ... M_0:
-                        register_code(KC_1 + (id - M_1));
-                        break;
-                    case M_DEGR:
-                        return MACRO(DOWN(CSA_ALTGR), D(SCLN), END);
-                    case M_SCLN:
-                        return MACRO(D(SCLN), END);
-                    case M_GRV:
-                        return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END);
-                    case M_NBSP:
-                        // use weak mod such that pressing another key will not be affected
-                        add_weak_mods(MOD_BIT(CSA_ALTGR));
-                        return MACRO(D(SPACE), END);
-                }
-            } else {
-                hold_shift();
-                switch (id) {
-                    case M_1 ... M_0:
-                        unregister_code(KC_1 + (id - M_1));
-                        break;
-                    case M_DEGR:
-                        return MACRO(UP(CSA_ALTGR), U(SCLN), END);
-                    case M_SCLN:
-                        return MACRO(U(SCLN), END);
-                    case M_NBSP:
-                        del_weak_mods(MOD_BIT(CSA_ALTGR));
-                        return MACRO(U(SPACE), END);
-                }
-            }
-            break;
-        case M_CRC:
-            if (record->event.pressed) {
-                return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END);
-            }
-            break;
-        case M_DBL0:
-            if (record->event.pressed) {
-                return MACRO( I(25), T(P0), T(P0), END );
-            }
-        break;
-        case M_FNLR:
-            layer_invert(LR_NUMR);
-            layer_invert(LR_FN);
-            break;
-        case M_NMAL:
-            layer_invert(LR_NUMR);
-            if (record->event.pressed) {
-                register_code(KC_LALT);
-            } else {
-                unregister_code(KC_LALT);
-            }
-            break;
-    }
-    return MACRO_NONE;
-};
-
-// 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) {
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    // led 1: numeric layer
-    if (layer_state & (1 << LR_NUMR)) {
-        ergodox_right_led_1_on();
-    }
-    // led 2: BÉPO over Canadian Multilingual
-    if (IS_CA_MULT_ENABLED()) {
-        ergodox_right_led_2_on();
-    }
-    // led 3: caps lock
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
-      ergodox_right_led_3_on();
-    }
-};
diff --git a/keyboards/ergodox/keymaps/bepo_csa/readme.md b/keyboards/ergodox/keymaps/bepo_csa/readme.md
deleted file mode 100644 (file)
index d4975b2..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-# BÉPO Keymap with firmware-remapping for software CSA layout
-
-This is a keymap intended to be used with the [BÉPO layout](http://bepo.fr), a French ergonomic layout designed by following Dvorak's principles.
-
-The particularity of this keymap is that it supports using the [Canadian Multilingual Standard layout](https://en.wikipedia.org/wiki/QWERTY#Canadian_Multilingual_Standard) (also known as _ACNOR keyboard_ or _CSA keyboard_, see also the [French page](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) which contains more details) on the OS side, by enabling the _CSA_ layer. This is especially useful for operating systems that natively provide CSA, but not BÉPO, like Windows. The CSA layout was chosen because it is probably the standard layout that provides the best character set coverage.
-
-This keymap is based on the [tm2030](../tm2030/) keymap, whose goal was to have a [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) inspired layout for the ErgoDox EZ.
-
-As this keyboard is intended for French people, the rest of this page will be in French.
-
-# Keymap BÉPO avec support en firmware pour utilisation avec la disposition CSA en software
-
-Cette keymap a été conçue pour être utilisée avec la [disposition BÉPO](http://bepo.fr), la disposition francophone, ergonomique et libre basée sure les principes de Dvorak.
-
-La particularité de cette keymap est qu'elle supporte l'utilisation du [clavier canadien multilingue standard](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) (aussi appelé _clavier ACNOR_ ou _clavier CSA_) du côté du système d'exploitation, en activant la couche _CSA_. Ceci s'avère particulièrement utile pour les systèmes d'exploitations qui fournissent nativement le CSA, mais pas le BÉPO, comme Windows. Le clavier CSA a été choisi comme base car c'est probablement la disposition standard qui fournit la meilleure couverture en termes de caractères disponibles.
-
-Cette keymap est basée sur la keymap [tm2030](../tm2030/), dont le but est de fournir une disposition inspirée du [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) pour l'ErgoDox EZ.
-
-## Couche de base
-C'est la couche par défaut, proche du TypeMatrix, avec les différences suivantes:
-- La ligne du haut (les touches `F`) et la colonne de droite sont retirées, les touches correspondantes étant déplacées ailleurs.
-- Les touches situés en bas à gauche sont redisposées dans cet ordre: `Ctrl`, `fn`, `Gui`, `num+Alt`, `Alt`
-- Les touches `shuffle` (`Alt+Tab`) et `desktop` ne sont pas supportés
-- `W` est déplacé à la place de `=`
-- `=` est déplacé sous `Tab` (au lieu d'avoir un grand `Shift`)
-- `%` et `Ç` sont déplacés à la place de `Home` et `End` respectivement
-- Les flèches ainsi que `PgUp`/`PgDown`/`Home`/`End` sont déplacées sur les pouces
-
-À noter que pour `W` et `Ç`, le but a été de ne pas les déplacer trop par rapport à la disposition BÉPO _standard_, afin de pouvoir repasser facilement sur un TypeMatrix ou un clavier traditionnel.
-
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-| Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
-|--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
-|   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
-|--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
-| LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |LCtrl |  fn  | LGui |numAlt| LAlt |                                       |Alt Gr|   %  |  App |   Ç  | RCtrl|
-  `----------------------------------'                                       `----------------------------------'
-                                      ,--------------.       ,-------------.
-                                      |  Esc  | num  |       | Left |Right |
-                               ,------+-------+------|       |------+------+------.
-                               |      |       | PgUp |       |  Up  |      |      |
-                               |Space | Home  |------|       |------| End  |Space |
-                               |      |       | PgDn |       | Down |      |      |
-                               `---------------------'       `--------------------'
-```
-
-### Changer de couche
-
-- Utilisez `num` pour activer/désactiver [la couche numérique](#couche-numérique)
-- Maintenez `fn` pour activer temporairement [les couches numériques et Fn](#couche-fn)
-- Maintenez `numAlt` pour activer temporairement la couche numérique combinée avec `Alt` (facilite l'utilisation des raccourcis tels que `Alt`+`F4`)
-
-### Diodes
-Les diodes de l'ErgoDox EZ (côté droit) sont utilisées de la façon suivante :
-
-- diode de gauche (rouge) : indique l'activation de [la couche numérique](#couche-numérique)
-- diode du milieu (verte) : indique l'activation du [mode CSA](#couche-csa)
-- diode de droite (bleue) : indique le verrouillage majuscules
-
-## Couche CSA
-La couche _CSA_ est la même que la couche de base, pour une utilisation avec un clavier Canadien Multilingue configuré dans le système d'exploitation.
-
-Pour l'activer, appuyez sur `fn`+`$`. La [diode](#diodes) verte indique que la couche CSA est activée.
-
-### Limitations
-Seuls les caractères présents dans le clavier CSA sont parfaitement supportés. De manière générale, il s'agit des caractères suivants :
-
-- toute la couche de base
-- tous les caractères accessibles en `Shift`
-- tous les caractères de la main gauche accessibles en `AltGr` à l'exception du `≠`
-- environ la moitié des caractères de la main droite accessibles en `AltGr` et la moitié des caractères accessibles en `AltGr`+`Shift` (consultez [le fichier source](keymap.c) pour voir les caractères supportés)
-
-En particulier, les caractères suivants sont émulés via le support Unicode (Windows seulement):
-
-- le tiret cadratin (tiret long) : —
-- le tiret demi-cadratin (demi tiret) : –
-- les points de suspension : …
-
-L'implémentation actuelle ne fonctionne pas dans toutes les applications, en particulier les applications MS Office.
-
-Il est probable que l'utilisation de la couche CSA ne fonctionne pas correctement dans certains jeux vidéos.
-
-Cette fonctionnalité a été conçue et testée essentiellment pour Windows (7).
-
-### Détails techniques
-Techniquement, la couche CSA est en réalité composée de 4 couches servant à émuler la couche de base, les appuis sur `Shift` ou `Alt` et la combinaison des deux.
-
-Le changement de couches se fait par des macros afin d'activer ou désactiver plusieurs couches et la touche `Shift` en même temps.
-
-Certains caractères sont également implémentés par des macros, notamment ceux de la couche `Shift` qui n'ont pas besoin de cette touche en CSA, comme les chiffres.
-
-Les caractères Unicode se basent sur une implémentation spécifique et non celle fournie dans QMK — il faudrait sans doute migrer le code. Notez la façon dont ces caractères sont déclarés tels quels dans [le code source](keymap.c) (tableau `unicode_char`).
-
-## Couche numérique
-Couche numérique proche du TM lorsqu'on active `num`, avec les différences suivantes :
-
-- Le clavier numérique est déplacés de 1 vers le haut et vers la droite.
-- Les flèches sont décalées de 1 vers la gauche.
-- Fournit l'accès aux touches `F1` à `F12`, `caps-lock` et `num-lock`.
-
-La couche numérique est indiquée par la [diode](#diodes) de gauche (rouge). Caps-lock est indiqué par la diode de droite (bleue).
-
-La touche `numAlt` de [la couche de base](#couche-de-base) permet d'activer la couche numérique et la touche `Alt` simultanément, afin de faciliter les raccourcis claviers comme `Alt`+`F4`.
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
-  `----------------------------------'                                       `-----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |n.lock|c.lock|
-                                ,------|------|------|       |------+------+------.
-                                |      |      |      |       |      |      |      |
-                                |      |      |------|       |------|      |      |
-                                |      |      |      |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
-
-## Couche Fn
-Activée simultanément avec la couche numérique lorsque l'on maintient la touche `fn`. Comme sur le TM, elle fournit l'accès aux fonctionnalités suivantes :
-
-- `couper`, `copier` et `coller` — attention: ne pas utiliser dans l'explorateur de fichiers.
-- monter/baisser/couper le volume — seulement accessible en main gauche, contrairement au TM.
-- piste précédente/suivante
-- calculatrice, e-mail et page d'accueil du navigateur web
-- `insert`, `power`, `sleep`, `wake`, `print screen`, `scroll-lock` et `pause`
-- ~CSA: (dés)activation de [la couche CSA](#couche-csa) sur `$`
-- RESET: rechargement du firmware avec Teensy-Loader (pour les développeurs)
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|  ~CSA  |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|  RESET |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        | App  | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      |      |      |                                       |      |      |      |      |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      |      |
-                                ,------|------|------|       |------+------+------.
-                                |      |      | Next |       |      |      |      |
-                                | Mute | play |------|       |------|      |      |
-                                |      |      | Prev |       |      |      |      |
-                                `--------------------'       `--------------------'
-```
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/bryan/keymap.c b/keyboards/ergodox/keymaps/bryan/keymap.c
deleted file mode 100644 (file)
index 572cea8..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-  RGB_SLD
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------------.           ,--------------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | Cmd,Shft,[ |           | Cmd,Shft,] |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------------|           |------------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1        |           |  L1        |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|            |           |            |------+------+------+------+------+--------|
- * |BkSp/Cmd|   A  |   S  |   D  |   F  |   G  |------------|           |------------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper      |           | Meh        |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |            |           |            |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Ctrl/Esc|PgUp|       | App  | LGui |       
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | PgDn |       | Home |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | Esc  |       | Alt  |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,                KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   M(2),
-        KC_DELT,               KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        GUI_T(KC_BSPC),        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,               CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                                 CTL_T(KC_ESC),KC_PGUP,
-                                                               KC_PGDN,
-                                               KC_SPC,KC_BSPC, KC_ESC,
-        // right hand
-             M(3),        KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             
-             ALT_T(KC_APP),  KC_LGUI,
-             KC_HOME,
-             KC_LALT,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |  <-  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, M(1), KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-// KC_COMM, KC_MINS
-
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-    case RGB_SLD:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_mode(1);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// Runs 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/Makefile b/keyboards/ergodox/keymaps/coderkun_neo2/Makefile
deleted file mode 100644 (file)
index b0fe90a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-SLEEP_LED_ENABLE = no
-UNICODE_ENABLE = yes
-COMMAND_ENABLE = no
diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c
deleted file mode 100644 (file)
index 2d6f768..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#include "ergodox.h"
-#include "action_layer.h"
-#include "led.h"
-#include "keymap_extras/keymap_neo2.h"
-
-// Layer names
-#define BASE 0      // default layer
-#define PMQ  1      // poor man’s QWERTZ
-#define PMN  2      // poor man’s Neo
-#define FMU  3      // FMU layer
-#define NHL  4      // Neo’s software layer 4 rebuilt in Hardware
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layer 0: default
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │     │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- *   │ CTL │ ALT │ MO1 │ Win │ Mod4│                             │ Mod4│ Win │ MO1 │ ALT │ CTL │
- *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- *                                   │  ←  │  ↑  │ │  ↓  │  →  │
- *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- *                             │     │     │  ─  │ │  ─  │     │     │
- *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- *                             │     │     │ HYP │ │ MEH │     │     │
- *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   NEO_GRV,
-        NEO_Y,      NEO_X,  NEO_V,  NEO_L,  NEO_C,  NEO_W,  KC_HOME,
-        NEO_L1_L,   NEO_U,  NEO_I,  NEO_A,  NEO_E,  NEO_O,
-        KC_LSFT,    NEO_UE, NEO_OE, NEO_AE, NEO_P,  NEO_Z,  TG(PMQ),
-        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,NEO_L2_L,
-                                                    KC_LEFT,    KC_UP,
-                                                                KC_MINS,
-                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
-        // right hand
-        NEO_ACUT,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
-        KC_END,     NEO_K,  NEO_H,  NEO_G,  NEO_F,  NEO_Q,  NEO_SS,
-                    NEO_S,  NEO_N,  NEO_R,  NEO_T,  NEO_D,  NEO_L1_R,
-        TG(PMN),    NEO_B,  NEO_M,  KC_COMM,KC_DOT, NEO_J,  KC_RSFT,
-                            NEO_L2_R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
-        KC_DOWN,    KC_RGHT,
-        KC_MINS,
-        MEH_T(KC_NO),KC_ENT,KC_SPC
-    ),
-
-/* Layer 1: poor man’s QWERTZ
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │   C   │  P  │  T  │  F  │  K  │  L  │ HOM │     │ END │  B  │  A  │  S  │  G  │  V  │  Y    │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3  │  D  │  H  │  Ö  │  O  │  I  ├─────┤     ├─────┤  U  │  -  │  Z  │  E  │  X  │ Mod3  │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │  Ä  │  Q  │  R  │  W  │  N  │     │     │     │  J  │  M  │  ,  │  .  │  ẞ  │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- *   │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ ALT │ CTL │
- *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- *                                   │  ←  │  ↑  │ │  ↓  │  →  │
- *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- *                             │     │     │  ─  │ │  ─  │     │     │
- *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- *                             │     │     │ HYP │ │ MEH │     │     │
- *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[PMQ] = KEYMAP(
-        // left hand
-        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
-        DE_C,       DE_P,   DE_T,   DE_F,   DE_K,   DE_L,   KC_HOME,
-        NEO_L1_L,   DE_D,   DE_H,   DE_OE,  DE_O,   DE_I,
-        KC_LSFT,    DE_AE,  DE_Q,   DE_R,   DE_W,   DE_N,   KC_TRNS,
-        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
-                                                    KC_LEFT,    KC_UP,
-                                                                KC_MINS,
-                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
-        // right hand
-        DE_ACUT,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
-        KC_END,     DE_B,   DE_A,   DE_S,   DE_G,   DE_V,   DE_Y,
-                    DE_U,   DE_MINS,DE_Z,   DE_E,   DE_X,   NEO_L1_R,
-        KC_TRNS,    DE_J,   DE_M,   DE_COMM,DE_DOT, DE_SS,  KC_RSFT,
-                            MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
-        KC_DOWN,    KC_RGHT,
-        KC_MINS,
-        MEH_T(KC_NO),KC_ENT,KC_SPC
-    ),
-
-/* Layer 2: poor man’s Neo
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- *   │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ ALT │ CTL │
- *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- *                                   │  ←  │  ↑  │ │  ↓  │  →  │
- *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- *                             │     │     │  ─  │ │  ─  │     │     │
- *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- *                             │     │     │ HYP │ │ MEH │     │     │
- *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[PMN] = KEYMAP(
-        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
-        DE_Y,       DE_X,   DE_V,   DE_L,   DE_C,   DE_W,   KC_HOME,
-        KC_NO,      DE_U,   DE_I,   DE_A,   DE_E,   DE_O,
-        KC_LSFT,    DE_UE,  DE_OE,  DE_AE,  DE_P,   DE_Z,   KC_TRNS,
-        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
-                                                    KC_LEFT,    KC_UP,
-                                                                KC_MINS,
-                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
-        // right hand
-        DE_ACUT,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
-        KC_END,     DE_K,   DE_H,   DE_G,   DE_F,   DE_Q,   DE_SS,
-                    DE_S,   DE_N,   DE_R,   DE_T,   DE_D,   KC_NO,
-        KC_TRNS,    DE_B,   DE_M,   KC_COMM,KC_DOT, DE_J,   KC_RSFT,
-                            MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
-        KC_DOWN,    KC_RGHT,
-        KC_MINS,
-        MEH_T(KC_NO),KC_ENT,KC_SPC
-    ),
-
-/* Layer 3: F-keys, Mouse and Unicode
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │       │ F1  │ F2  │ F3  │ F4  │ F5  │ F6  │     │ F7  │ F8  │ F9  │ F10 │ F11 │ F12 │       │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │       │  ┌  │  ┬  │  ┐  │  ─  │  │  │     │     │     │  ↔  │  ←  │  →  │  ↑  │  ↓  │       │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │       │  ├  │  ┼  │  ┤  │  〈 │  〉 ├─────┤     ├─────┤     │  ✓  │  ✕  │  •  │  ∶  │       │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │       │  └  │  ┴  │  ┘  │     │     │     │     │     │  ⇔  │  ⇐  │  ⇒  │  ⇑  │  ⇓  │       │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- *   │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
- *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- *                                   │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
- *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- *                             │     │     │ MLC │ │ MRC │     │     │
- *                             │     │     ├─────┤ ├─────┤     │     │
- *                             │     │     │     │ │     │     │     │
- *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[FMU] = KEYMAP(
-        // left hand
-        KC_TRNS,    KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,
-        KC_TRNS,    UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
-        KC_TRNS,    UC(0x251C),UC(0x253C),UC(0x2524),UC(0x3008),UC(0x3009),
-        KC_TRNS,    UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS,   KC_TRNS,   KC_TRNS,
-        KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
-                                                     KC_MS_L,   KC_MS_U,
-                                                                KC_BTN1,
-                                            KC_TRNS, KC_TRNS,   KC_TRNS,
-        // right hand
-        KC_F7,      KC_F8,     KC_F9,     KC_F10,    KC_F11,    KC_F12,    KC_TRNS,
-        KC_TRNS,    UC(0x2194),UC(0x2190),UC(0x2192),UC(0x2191),UC(0x2193),KC_TRNS,
-                    KC_TRNS,   UC(0x2713),UC(0x2715),UC(0x2022),UC(0x2236),KC_TRNS,
-        KC_TRNS,    UC(0x21D4),UC(0x21D0),UC(0x21D2),UC(0x21D1),UC(0x21D3),KC_TRNS,
-                               KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
-        KC_MS_D,    KC_MS_R,
-        KC_BTN2,
-        KC_TRNS,    KC_TRNS,   KC_TRNS
-    ),
-
-/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │       │     │     │     │     │     │     │     │     │     │     │     │     │     │       │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │       │ PgUp│ BSpc│  ↑  │ Del │ PgDn│     │     │     │     │  7  │  8  │  9  │  +  │   −   │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │       │ Home│  ←  │  ↓  │  →  │ End ├─────┤     ├─────┤     │  4  │  5  │  6  │  ,  │   .   │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │       │ Esc │ Tab │ Ins │ Ret │ Undo│     │     │     │     │  1  │  2  │  3  │     │       │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- *   │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
- *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- *                                   │     │     │ │     │     │
- *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- *                             │     │     │     │ │     │     │     │
- *                             │     │     ├─────┤ ├─────┤     │     │
- *                             │     │     │     │ │     │     │     │
- *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[NHL] = KEYMAP(
-        // left hand
-        KC_NO,      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-        KC_NO,      KC_PGUP,KC_BSPC,KC_UP,  KC_DELT,KC_PGDN,KC_NO,
-        KC_NO,      KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END,
-        KC_NO,      KC_ESC, KC_TAB, KC_INS, KC_ENT, KC_UNDO,KC_TRNS,
-        KC_NO,      KC_NO,  KC_TRNS,KC_NO,  KC_TRNS,
-                                                    KC_NO,      KC_NO,
-                                                                KC_NO,
-                                            KC_NO,  KC_NO,      KC_NO,
-        // right hand
-        KC_NO,      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-        KC_NO,      KC_NO,  KC_7,   KC_8,   KC_9,   DE_PLUS,DE_MINS,
-                    KC_NO,  KC_4,   KC_5,   KC_6,   KC_COMM,KC_DOT,
-        KC_TRNS,    KC_NO,  KC_1,   KC_2,   KC_3,   KC_NO,  KC_NO,
-                            KC_TRNS,KC_NO,  KC_TRNS,KC_NO,  KC_NO,
-        KC_NO,      KC_NO,
-        KC_NO,
-        KC_NO,      KC_NO,  KC_NO
-    ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [BASE] = ACTION_FUNCTION(BASE),
-    [PMQ]  = ACTION_FUNCTION(PMQ),
-    [PMN]  = ACTION_FUNCTION(PMN),
-    [FMU]  = ACTION_LAYER_TAP_TOGGLE(FMU),
-    [NHL]  = ACTION_LAYER_TAP_TOGGLE(NHL)
-};
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    // MACRODOWN only works in this function
-    switch(id) {
-        case 0:
-            if (record->event.pressed) {
-                register_code(KC_RSFT);
-            }
-            else {
-                unregister_code(KC_RSFT);
-            }
-        break;
-    }
-
-    return MACRO_NONE;
-};
-
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-    set_unicode_input_mode(UC_LNX);
-};
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void)
-{
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case FMU:
-            ergodox_right_led_1_on();
-        break;
-        case PMQ:
-            ergodox_right_led_2_on();
-        break;
-        case PMN:
-            ergodox_right_led_3_on();
-        break;
-        default:
-            if(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) {
-                ergodox_led_all_set(LED_BRIGHTNESS_HI);
-                ergodox_right_led_1_on();
-            }
-            else {
-                ergodox_board_led_off();
-            }
-        break;
-    }
-
-};
-
-
-// Override Unicode start method to use NEO_U instead of KC_U
-void unicode_input_start (void) {
-    register_code(KC_LCTL);
-    register_code(KC_LSFT);
-    register_code(NEO_U);
-    unregister_code(NEO_U);
-    unregister_code(KC_LSFT);
-    unregister_code(KC_LCTL);
-};
-
-// Override method to use NEO_A instead of KC_A
-uint16_t hex_to_keycode(uint8_t hex)
-{
-  if(hex == 0x0) {
-    return KC_0;
-  }
-  else if(hex >= 0xA) {
-    switch(hex) {
-      case 0xA:
-        return NEO_A;
-      case 0xB:
-        return NEO_B;
-      case 0xC:
-        return NEO_C;
-      case 0xD:
-        return NEO_D;
-      case 0xE:
-        return NEO_E;
-      case 0xF:
-        return NEO_F;
-      default:
-        return KC_NO;
-    }
-  }
-
-  return KC_1 + (hex - 0x1);
-}
diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/readme.md b/keyboards/ergodox/keymaps/coderkun_neo2/readme.md
deleted file mode 100644 (file)
index 0c9290b..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-# coderkun’s Neo2 layout for the ErgoDox EZ
-
-The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but also provide layers to use QWERTZ with activated Neo driver and to use (basic) Neo when no driver is available (standard QWERTZ driver is active) (e. g. on other computers, in virtual machines) and to make heavily use of thumb keys.
-
-The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
-
-It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and some useful Unicode symbols.
-
-
-## Build
-
-    ```
-    make clean
-    make coderkun_neo2
-    ```
-
-
-## Keymap
-
-0. Default layer for Neo2
-1. Poor man’s QWERTZ
-2. Poor man’s Neo
-3. F-keys, mouse keys und Unicode symbols
-4. Neo’s software layers 4 rebuilt in hardware
-
-
-### Layer 0: Default layer for Neo2
-
-    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
-    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
-    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
-    │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
-    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
-    │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
-    ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │     │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
-    │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
-    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
-      │ CTL │ ALT │ MO1 │ Win │ Mod4│                             │ Mod4│ Win │ MO1 │ Alt │ CTL │
-      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
-                                      │  ←  │  ↑  │ │  ↓  │  →  │
-                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
-                                │     │     │  ─  │ │  ─  │     │     │
-                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
-                                │     │     │ HYP │ │ MEH │     │     │
-                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 1: Poor man’s QWERTZ
-
-    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
-    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
-    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
-    │   C   │  P  │  T  │  F  │  K  │  L  │ HOM │     │ END │  B  │  A  │  S  │  G  │  V  │  Y    │
-    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
-    │ Mod3  │  D  │  H  │  Ö  │  O  │  I  ├─────┤     ├─────┤  U  │  -  │  Z  │  E  │  X  │ Mod3  │
-    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
-    │ LSHFT │  Ä  │  Q  │  R  │  W  │  N  │     │     │     │  J  │  M  │  ,  │  .  │  ẞ  │ Shift │
-    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
-      │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ Alt │ CTL │
-      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
-                                      │  ←  │  ↑  │ │  ↓  │  →  │
-                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
-                                │     │     │  ─  │ │  ─  │     │     │
-                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
-                                │     │     │ HYP │ │ MEH │     │     │
-                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 2: Poor man’s Neo
-
-    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
-    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
-    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
-    │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
-    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
-    │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
-    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
-    │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
-    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
-      │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ Alt │ CTL │
-      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
-                                      │  ←  │  ↑  │ │  ↓  │  →  │
-                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
-                                │     │     │  ─  │ │  ─  │     │     │
-                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
-                                │     │     │ HYP │ │ MEH │     │     │
-                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 3: F-keys, mouse keys und Unicode symbols
-
-    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
-    │       │ F1  │ F2  │ F3  │ F4  │ F5  │ F6  │     │ F7  │ F8  │ F9  │ F10 │ F11 │ F12 │       │
-    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
-    │       │  ┌  │  ┬  │  ┐  │  ─  │  │  │     │     │     │  ↔  │  ←  │  →  │  ↑  │  ↓  │       │
-    ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
-    │       │  ├  │  ┼  │  ┤  │ 〈  │  〉 ├─────┤     ├─────┤     │  ✓  │  ✕  │  •  │  ∶  │       │
-    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
-    │       │  └  │  ┴  │  ┘  │     │     │     │     │     │  ⇔  │  ⇐  │  ⇒  │  ⇑  │  ⇓  │       │
-    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
-      │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
-      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
-                                      │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
-                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
-                                │     │     │ MLC │ │ MRC │     │     │
-                                │     │     ├─────┤ ├─────┤     │     │
-                                │     │     │     │ │     │     │     │
-                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 4: Neo’s software layers 4 rebuilt in hardware
-
-    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
-    │       │     │     │     │     │     │     │     │     │     │     │     │     │     │       │
-    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
-    │       │ PgUp│ BSpc│  ↑  │ Del │ PgDn│     │     │     │     │  7  │  8  │  9  │  +  │   −   │
-    ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
-    │       │ Home│  ←  │  ↓  │  →  │ End ├─────┤     ├─────┤     │  4  │  5  │  6  │  ,  │   .   │
-    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
-    │       │ Esc │ Tab │ Ins │ Ret │ Undo│     │     │     │     │  1  │  2  │  3  │     │       │
-    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
-      │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
-      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
-                                      │     │     │ │     │     │
-                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
-                                │     │     │     │ │     │     │     │
-                                │     │     ├─────┤ ├─────┤     │     │
-                                │     │     │     │ │     │     │     │
-                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
diff --git a/keyboards/ergodox/keymaps/colemak/keymap.c b/keyboards/ergodox/keymaps/colemak/keymap.c
deleted file mode 100644 (file)
index 7ef81ab..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |O / L2|   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,   KC_D,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
-                          KC_H,   KC_N,   KC_E,   KC_I,   LT(MDIA, KC_O),   KC_QUOT,
-             MEH_T(KC_NO),KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/colemak/readme.md b/keyboards/ergodox/keymaps/colemak/readme.md
deleted file mode 100644 (file)
index e28b2f0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# ErgoDox EZ Colemak Configuration
-
-Colemak layout with same layers as default ergodox ez keymap.
-
diff --git a/keyboards/ergodox/keymaps/colemak_osx_pc_no/keymap.c b/keyboards/ergodox/keymaps/colemak_osx_pc_no/keymap.c
deleted file mode 100644 (file)
index eb0156c..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_norwegian.h"
-
-#define BASE 0 // default layer
-#define BASE_MAC 1 // default layer mac
-#define NUMB_SYMB 2 // numbers and symbols
-#define NUMB_SYMB_MAC 3 // numbers and symbols mac
-#define FUNCTION 4 // function keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Basic layer PC
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |    \   |   [  |   ]  |   {  |   }  |   *  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |    ?   |   Q  |   W  |   F  |   P  |   G  |  "   |           |   '  |   J  |   L  |   U  |   Y  |   Å  |   Æ    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |    :   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   Ø    |
- * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
- * |    !   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  | RIGHT| DOWN |   UP |   _    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Func | Lclk | Rclk | TAB  |,/CTRL|                                       | LEFT | Esc  |   `  |   #  | Num  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,--------------.
- *                                        |   &  |   |  |       |Insert|   /   |
- *                                 ,------|------|------|       |------+-------+------.
- *                                 |      |      |   +  |       |  Del |        |     |
- *                                 | Shift| ./Spc|------|       |------|  Enter |Space|
- *                                 |      |      |-/Alt |       | Bspc |        |     |
- *                                 `--------------------'       `---------------------'
- */
-[BASE] = KEYMAP(
-        // left hand
-        NO_BSLS,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, NO_ASTR,  TG(1),
-        NO_QUES,         KC_Q,         KC_W,    KC_F,   KC_P,   KC_G,   NO_QUO2,
-        NO_COLN,         KC_A,         KC_R,    KC_S,   KC_T,   KC_D,
-        KC_EXLM,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
-        MO(4),     KC_BTN1,      KC_BTN2, KC_TAB,GUI_T(KC_COMMA),
-                                                      NO_AMPR, NO_PIPE,
-                                                              NO_PLUS,
-                                               KC_FN1,CTL_T(KC_DOT),ALT_T(NO_MINS),
-        // right hand
-             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
-             NO_APOS,      KC_J,    KC_L,    KC_U,      KC_Y,     NO_AA,   NO_AE  ,
-                           KC_H,    KC_N,    KC_E,      KC_I,      KC_O,    NO_OSLH,
-             NO_EQL,        KC_K,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP, NO_UNDS,
-                                  KC_LEFT,  KC_ESC,   KC_FN7,   KC_HASH,   MO(2),
-             KC_INSERT,  NO_SLSH,
-             KC_DELT,
-             KC_BSPC,KC_ENT,KC_SPC
-    ),
-/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Func |      |      |      |,/Ctrl|                                       |      |      |  `   |      | Num  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |  |   |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |./Cmd |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[BASE_MAC] = KEYMAP(
-       NO_BSLS_MAC, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CTL_T(KC_COMMA),
-                                           KC_TRNS, NO_PIPE_MAC,
-                                                    KC_TRNS,
-                                  KC_TRNS,GUI_T(KC_DOT) , KC_TRNS,
-    // right hand
-       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
-       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, 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_GRV_MAC, KC_TRNS, MO(3),
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Number ++ layer pc
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |   %  |      |      |           |      |      |   ~  |   ´  |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   3  |  2   |  1   |   0  |      |------|           |------|      |   5  |   6  |   7  |   8  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |   4  |      |      |           |      |      |   9  |  END | PGDWN| PGUP |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMB_SYMB] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_3   , KC_2   , KC_1   , KC_0   , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_FN2, KC_FN6 , KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS,
-       KC_TRNS,  KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
-                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 3: Number ++ layer mac. Some keys have to be repeated from the pc symbol layer, since transient keys inherit from the layer we jump from, not the layer above.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |   %  |      |      |           |      |      |   ~  |   ´  |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   3  |  2   |  1   |   0  |      |------|           |------|      |   5  |   6  |   7  |   8  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |   4  |      |      |           |      |      |   9  |  END | PGDWN| PGUP |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMB_SYMB_MAC] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_3   , KC_2   , KC_1   , KC_0   , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_FN2, KC_FN10, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS,
-       KC_TRNS,  KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
-                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 4: Function layer mac + pc
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F3  |  F2  |  F1  |     |      |------|           |------|       |  F5  |  F6  |  F7  |  F8  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |  F4  |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[FUNCTION] = KEYMAP(
-       KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_F3   , KC_F2   , KC_F1 , KC_TRNS   , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F4, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS,
-       KC_TRNS,  NO_TILD, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-)
-};
-
-enum macro_id {
-    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
-    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
-    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
-    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
-    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
-    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
-    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
-    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
-    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
-    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
-};
-
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    keyevent_t event = record->event;
-
-    switch (id) {
-        case TILDE_NO:
-            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
-        case LESS_NO:
-            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
-        case GRTR_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
-        case CIRC_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
-        case ACUT_NO:
-            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
-        case GRV_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
-        case LESS_NO_MAC:
-            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
-        case GRTR_NO_MAC:
-            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
-        case ACUT_NO_MAC:
-            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
-    }
-    return MACRO_NONE;
-};
diff --git a/keyboards/ergodox/keymaps/colemak_osx_pc_no/readme.md b/keyboards/ergodox/keymaps/colemak_osx_pc_no/readme.md
deleted file mode 100644 (file)
index b28483f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Norwegian Colemak setup with osx/pc toggle
-
-## Motivation
-I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I  also wanted it to translate from a standard Norwegian keyboard OS setup.
-
-## Overview
-The setup is created to be programmer friendly.
-- Most of the symbols used in code can be activated without using layers or shift key.
-- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb.
-- Navigation is prioritized, arrows are right below the home row.
-
-## PC/Mac toggle
-The default setup is for Norwegian keyboard setting(not colemak variants) on a PC(Windows or Linux). Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
-
-## Layers
-Numbers and function buttons are on their own layers. The easiest way to switch layers(at least with my hands) in this setup, is to push your hand right below the little finger, on the layer switches. You will then have all your fingers free to type numbers or press function buttons.
-
-## Shift-key
-Tap for the next character to be shifted, hold down for regular shift functionality
-
-## Layout
-
-![keyboard-layout](https://i.imgur.com/168aGmR.png)
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/Makefile b/keyboards/ergodox/keymaps/colemak_programmer/Makefile
deleted file mode 100644 (file)
index 91b77c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-TAP_DANCE_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/keymap.c b/keyboards/ergodox/keymaps/colemak_programmer/keymap.c
deleted file mode 100644 (file)
index 1caccc5..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "ergodox.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- * MEH:   Alt+Control+Shift
- * HYPER: Alt+Control+Shift+Gui
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ` ~  |  1 ! | 2 @  | 3 #  | 4 $  | 5 %  |  6 ^ |           | 7 &  |  8 * | 9 (  |  0 ) | - _  | = +  | Backsp |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   TAB  |   Q  |   W  |   F  |   P  |   G  |TG(3) |           |TG(4) |   J  |   L  |   U  |   Y  |  ; : |  ' "   |
- * |--------+------+------+------+------+------|F-lck |           |N-lck |------+------+------+------+------+--------|
- * |  CAPS  |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |  ENT   |
- * |--------+------+------+------+------+------| MEH  |           | MEH  |------+------+------+------+------+--------|
- * | Shift  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |  , < |  . > |  UP  | Shift  |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LCTL | LCTL | LGUI | LALT | LGUI |                                       | RALT | RCTL | LEFT | DOWN | RIGHT|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,--------------.       ,--------------.
- *                                        |  Esc | App   |       | Ins  | Del   |
- *                                 ,------|------|-------|       |------+-------+------.
- *                                 |      |      | Home  |       | PgUp |       |      |
- *                                 | MO(2)| MO(4)|-------|       |------| Space |Space |
- *                                 |symbol|N-Lock| End   |       | PgDn |       |      |
- *                                 `---------------------'       `---------------------'
- */
-[0] = KEYMAP(  // layer 0 : default 
-        // left hand
-        KC_GRV,     KC_1,       KC_2,       KC_3,       KC_4,        KC_5,        KC_6,
-        KC_TAB,     KC_Q,       KC_W,       KC_F,       KC_P,        KC_G,        TG(3),
-        KC_CAPS,    KC_A,       KC_R,       KC_S,       KC_T,        KC_D,
-        KC_LSFT,    KC_Z,       KC_X,       KC_C,       KC_V,        KC_B,        KC_MEH,
-        KC_LCTL,    KC_LCTL,    KC_LGUI,    KC_LALT,    KC_LGUI,
-
-                    KC_ESC,     KC_APP,
-                    KC_HOME,
-        MO(2),      MO(4),      KC_END,
-
-        // right hand
-        KC_7,       KC_8,       KC_9,       KC_0,       KC_MINS,     KC_EQL,      KC_BSPC,
-        TG(4),      KC_J,       KC_L,       KC_U,       KC_Y,        KC_SCLN,     KC_QUOT,
-                    KC_H,       KC_N,       KC_E,       KC_I,        KC_O,        KC_ENT,
-        KC_MEH,     KC_K,       KC_M,       KC_COMM,    KC_DOT,      KC_UP,       KC_RSFT,
-                                KC_RALT,    KC_RCTL,    KC_LEFT,     KC_DOWN,     KC_RIGHT,
-
-        KC_INS,     KC_DEL,
-        KC_PGUP,
-        KC_PGDN,    KC_SPC,     KC_SPC
-    ),
-
-/* Keymap 1: QWERTY layer (games)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[1] = KEYMAP(  // layer 1: QWERTY layer (games) 
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       KC_TRNS,
-       KC_TRNS,        KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
-       KC_TRNS,        KC_Z,       KC_X,       KC_C,       KC_V,       KC_B,       KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-
-                       KC_TRNS,    KC_TRNS,
-                                   KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,
-       
-    // right hand
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_TRNS,
-                       KC_H,       KC_J,       KC_K,       KC_L,       KC_SCLN,    KC_TRNS,
-       KC_TRNS,        KC_N,       KC_M,       KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-                                   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS
-    ),
-
-/* Keymap 2: Symbol Layer
-*
-* ,--------------------------------------------------.           ,--------------------------------------------------.
-* |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
-* |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-* |        |   |  |   +  |  <   |   %  |  #   | DF(1)|           |      |  &   |   [  |   ]  |   \  |  :   |   "    |
-* |--------+------+------+------+------+------|QWERTY|           |      |------+------+------+------+------+--------|
-* |        |   !  |   -  |  >   |   =  |  @   |------|           |------|  *   |   {  |   }  |   /  |  ?   |        |
-* |--------+------+------+------+------+------| DF(0)|           |      |------+------+------+------+------+--------|
-* |        | NUBS | NUHS |  /   |   $  |  ^   |COLEMAK           |      |  |   |   (  |   )  |      |      |        |
-* `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-*   |      |      |      |      |      |                                       |      |      |      |      |      |
-*   `----------------------------------'                                       `----------------------------------'
-*                                        ,-------------.       ,-------------.
-*                                        |      |      |       |      |      |
-*                                 ,------|------|------|       |------+------+------.
-*                                 |      |      |      |       |      |      |      |
-*                                 |      |      |------|       |------|      |      |
-*                                 |      |      |      |       |      |      |      |
-*                                 `--------------------'       `--------------------'
-*/
-// SYMBOLS
-[2] = KEYMAP(
-       // left hand
-       KC_TRNS,        KC_F1,        KC_F2,       KC_F3,      KC_F4,       KC_F5,      KC_F6,
-       KC_TRNS,        KC_PIPE,      KC_PLUS,     KC_LT,      KC_PERC,     KC_HASH,    DF(1),
-       KC_LBRC,        KC_EXCLAIM,   KC_MINUS,    KC_GT,      KC_EQUAL,    KC_AT,
-       KC_TRNS,        KC_NUBS,      KC_NUHS,     KC_SLSH,    KC_DOLLAR,   KC_CIRC,    DF(0),
-       KC_TRNS,        KC_TRNS,      KC_TRNS,     KC_TRNS,    KC_TRNS,
-
-                       KC_TRNS,      KC_TRNS,
-                                     KC_TRNS,
-       KC_TRNS,        KC_TRNS,      KC_TRNS,
-
-       // right hand
-       KC_F7,          KC_F8,        KC_F9,        KC_F10,     KC_F11,      KC_F12,     KC_TRNS,
-       KC_TRNS,        KC_AMPERSAND, KC_LBRC,      KC_RBRC,    KC_BSLS,     KC_COLN,    KC_DQT,
-                       KC_ASTERISK,  KC_LCBR,      KC_RCBR,    KC_SLSH,     KC_QUES,    KC_TRNS,
-       KC_TRNS,        KC_PIPE,      KC_LPRN,      KC_RPRN,    KC_TRNS,     KC_TRNS,    KC_TRNS,
-                                     KC_TRNS,      KC_TRNS,    KC_TRNS,     KC_TRNS,    KC_TRNS,
-
-       KC_TRNS,        KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,        KC_TRNS,      KC_TRNS
-),
-
-/* Keymap 3:
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      | HYPR |           | HYPR |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------        |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// F-keys
-[3] = KEYMAP(
-       KC_TRNS,        KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_HYPR,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-
-                       KC_TRNS,    KC_TRNS,
-                                   KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,
-
-       // right hand
-       KC_F7,          KC_F8,      KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-                       KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_HYPR,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-                                   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-
-       KC_TRNS,        KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS
-),
-/* Keymap 4: Numlock
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | RESET  |      |      |      |P-SCRE|S-LOCK|PAUSE |           |NLOCK | CALC |  =   |  /   |  *   |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      | Vol+ |  7   |  8   |  9   |  -   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------| Vol- |  4   |  5   |  6   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      | HYPR |           | HYPR | Mute |  1   |  2   |  3   |Enter |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |  0   |  .   | RCTL | RCTL |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------        |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[4] = KEYMAP(
-       RESET,          KC_LSFT,    KC_LSFT,    KC_SYSREQ,  KC_PSCR,    KC_SLCK,    KC_PAUSE,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_HYPR,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-
-                       KC_TRNS,    KC_TRNS,
-                                   KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS,
-
-       // right hand
-       KC_NLCK,        KC_CALC,    KC_PEQL,    KC_PSLS,    KC_PAST,    KC_LSFT,    KC_TRNS,
-       KC_TRNS,        KC_VOLU,    KC_P7,      KC_P8,      KC_P9,      KC_PMNS,    KC_TRNS,
-                       KC_VOLD,    KC_P4,      KC_P5,      KC_P6,      KC_PPLS,    KC_TRNS,
-       KC_HYPR,        KC_MUTE,    KC_P1,      KC_P2,      KC_P3,      KC_PENT,    KC_TRNS,
-                                   KC_TRNS,    KC_P0,      KC_PDOT,    KC_RCTL,    KC_RCTL,
-
-       KC_TRNS,        KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,        KC_TRNS,    KC_TRNS
-),
-
-};
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-    static uint8_t state;
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-
-    //reduce LED on time to 1/6th because LEDs are too strong
-    if (++state < 6) return;
-    state = 0;
-
-    //bit 1: default layer 1 - QWERTY
-    if (default_layer_state & (1UL << 1)) ergodox_right_led_1_on();
-
-    uint8_t layer = biton32(layer_state);
-
-    //layer 2 : Symbols (& Fs)
-    //if (layer == 2) ergodox_right_led_2_on();
-
-    //layer 3 : F-lock
-    if (layer == 3) ergodox_right_led_2_on();
-
-    //layer 4 : Num-lock
-    if (layer == 4) ergodox_right_led_3_on();
-};
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/readme.md b/keyboards/ergodox/keymaps/colemak_programmer/readme.md
deleted file mode 100644 (file)
index a1544dc..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# ErgoDox EZ colemak_programmer
-
-## Features
-
-* Qwerty and colemak 2 in 1
-  * Use DF() macro to swap the bottom layer so it behaves literally as collemak or qwerty
-  * Graphical creator did not allow this so I had to use TO(0) and TO(1) on the picture
-* Symbol layer programmers friendly
-  * Not only symbols are easy to access but common combination are easy too: ->, =>, !=, etc.
-* Windows and Mac
-  * The extra repeated Win key is very handy on Mac
-* Numlock
-
-I came to this layout after several iterations. It is not the ultimate best ergonomic layout but it is the best if you switch back and forth between ergodox and laptops.
-
-## Notes
-* The Quote and Enter can be swapped
-* If you use sculpted key caps try turning the bottom key 180 degrees so it became very comfortable to type with thumb.
-
-Alternatively view the [graphical creator version](http://configure.ergodox-ez.com/keyboard_layouts/kmevwm/edit) but beware it is not the same due to the creator limitations.
-
-![Default](https://i.imgur.com/BCJEoKw.jpg)
-![Default](https://i.imgur.com/0P1jBph.jpg)
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/common-nighthawk/Makefile b/keyboards/ergodox/keymaps/common-nighthawk/Makefile
deleted file mode 100644 (file)
index fafa40c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBPROJECT_DEFAULT = ez
-TAP_DANCE_ENABLE = yes
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c
deleted file mode 100644 (file)
index debf384..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-//Tap Dance Declarations
-enum {
-  TD_U_LBRC = 0,
-  TD_I_RBRC,
-};
-
-//Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
-  [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC),
-  [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC)
-};
-
-//Macro Declarations
-static uint16_t sunds_timer;
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  _     |   x  |   x  |   _  |  Esc | Hypr | Home |           | End  | Hypr |   [  |   ]  |  `~  |  `~  |  Bks   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |Ctrl/Tab|   Q  |   W  |   E  |   R  |   T  |  Up  |           | PgUp |   Y  |   U  |   I  |   O  |   P  |  Ctrl  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Cmd/"' |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;:  |Cmd/Entr|
- * |--------+------+------+------+------+------| Down |           | PgDn |------+------+------+------+------+--------|
- * |  Shft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |  ,<  |  .>  |  /?  |  Shft  |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Alt  |   x  |   x  |   x  | Left |                                       |Right |  Bks |   x  |   x  |  Alt |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Teensy| VolUp|       | Play |  Del   |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | VolDn|       | Next |        |      |
- *                                 |Sp/~L1|  L2  |------|       |------|   L2   |'"/~L1|
- *                                 |      |      | Mute |       | Prev |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_UNDS,         KC_1,          KC_1,          KC_UNDS,         KC_ESC,   ALL_T(KC_NO),      KC_HOME,
-        CTL_T(KC_TAB),   KC_Q,          KC_W,          KC_E,            KC_R,     KC_T,              KC_UP,
-        M(1),            KC_A,          KC_S,          KC_D,            KC_F,     KC_G,
-        KC_LSFT,         KC_Z,          KC_X,          KC_C,            KC_V,     KC_B,              KC_DOWN,
-        KC_LALT,         KC_1,          KC_1,          KC_1,            KC_LEFT,
-                                                                        RESET,    KC_VOLU,
-                                                                        KC_VOLD,
-                                                                        LT(SYMB, KC_SPC),  TG(MDIA), KC_MUTE,
-        // right hand
-        KC_END,          ALL_T(KC_NO),  KC_LBRC,        KC_RBRC,        KC_GRV,   KC_GRV,            KC_BSPC,
-        KC_PGUP,         KC_Y,          KC_U,           KC_I,           KC_O,     KC_P,              KC_LCTRL,
-                         KC_H,          KC_J,           KC_K,           KC_L,     KC_SCOLON,         GUI_T(KC_ENT),
-        KC_PGDN,         KC_N,          KC_M,           KC_COMM,        KC_DOT,   KC_SLSH,           KC_RSFT,
-                                        KC_RGHT,        KC_BSPC,        KC_1,     KC_1,              KC_RALT,
-        KC_MPLY,         KC_DEL,
-        KC_MNXT,
-        KC_MPRV,         TG(MDIA),      LT(SYMB, KC_QUOT)
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   ^  |   [  |   (  |   {  |      |           |      |   =  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   &  |   $  |   ]  |   )  |   }  |------|           |------|   +  |   4  |   5  |   6  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   \  |   @  |   #  |   %  |   |  |      |           |      |   -  |   1  |   2  |   3  |   /  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0  |   0  |   .  |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,  KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_TRNS,
-       KC_TRNS,  KC_EXLM,  KC_CIRC,  KC_LBRC,  KC_LPRN,  KC_LCBR,  KC_TRNS,
-       KC_TRNS,  KC_AMPR,  KC_DLR,   KC_RBRC,  KC_RPRN,  KC_RCBR,
-       KC_TRNS,  KC_BSLS,  KC_AT,    KC_HASH,  KC_PERC,  KC_PIPE,  KC_TRNS,
-       KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-                                               KC_TRNS,  KC_TRNS,
-                                               KC_TRNS,
-                                               KC_TRNS,  KC_TRNS,  KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_TRNS,
-       KC_TRNS,  KC_EQL,   KC_7,     KC_8,     KC_9,     KC_0,     KC_TRNS,
-                 KC_PLUS,  KC_4,     KC_5,     KC_6,     KC_ASTR,  KC_TRNS,
-       KC_TRNS,  KC_MINS,  KC_1,     KC_2,     KC_3,     KC_TRNS,  KC_TRNS,
-                           KC_0,     KC_0,     KC_DOT,   KC_TRNS,  KC_TRNS,
-       KC_TRNS,  KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,  KC_TRNS,  KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | WhDn | WhUp |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      | R-Ck | L-Ck |      |------|           |------| MsLt | MsDn | MsUp | MsRt |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       M(0),    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS,     KC_WH_U,     KC_WH_D,     KC_TRNS,     KC_TRNS, KC_TRNS,
-                 KC_MS_LEFT,  KC_MS_DOWN,  KC_MS_UP,    KC_MS_RIGHT, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
-                              KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-          }
-          break;
-
-        case 1:
-          if (record->event.pressed) {
-            sunds_timer = timer_read();
-            register_code (KC_LGUI);
-          } else {
-            if (timer_elapsed (sunds_timer) < TAPPING_TERM) {
-              unregister_code (KC_LGUI);
-              register_code (KC_LSFT);
-              register_code (KC_QUOT);
-              unregister_code (KC_QUOT);
-              unregister_code (KC_LSFT);
-              register_code (KC_LGUI);
-            }
-            unregister_code (KC_LGUI);
-          }
-          break;
-
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_3_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-    if (keyboard_report->mods & MOD_BIT(KC_LSFT)) {
-        ergodox_right_led_1_on ();
-    }
-};
diff --git a/keyboards/ergodox/keymaps/csharp_dev/keymap.c b/keyboards/ergodox/keymaps/csharp_dev/keymap.c
deleted file mode 100644 (file)
index e0c66f4..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define FKEYS 1 // F keys + macros
-
-#define MACRO_PUBLIC 10
-#define MACRO_PRIVATE 11
-
-#define MACRO_STATIC 12
-#define MACRO_CONST 13
-
-#define MACRO_VOID 14
-#define MACRO_VAR 15
-#define MACRO_STRING 16
-
-#define MACRO_INT 17
-#define MACRO_FLOAT 18
-#define MACRO_BOOL 19
-
-#define MACRO_RETURN 20
-#define MACRO_NULL 21
-#define MACRO_BREAK 22
-
-#define MACRO_TODO 23
-#define MACRO_NEW 24
-#define MACRO_PARENTHESE 25
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   (    |   1  |   2  |   3  |   4  |   5  |  "   |           | Save |   6  |   7  |   8  |   9  |   0  |   [    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   )    |   Q  |   W  |   E  |   R  |   T  |Bkspa |           | Del  |   Y  |   U  |   I  |   O  |   P  |   ]    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   {    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   _  |   Redo |
- * |--------+------+------+------+------+------|   /  |           |  ;   |------+------+------+------+------+--------|
- * |   }    |Z~Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   '  |   !  |   ?  |   Undo |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Tab~CL|  <   |  >   |   |  |  &   |                                       |   =  |   +  |   -  |   *  |  L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |. ~L1 | ,    |       |Home  |End~L1|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Copy |       | UP   |      |      |
- *                                 | Enter| Space|------|       |------| Space|Enter |
- *                                 | ~WIN | ~LSFT| Past |       | DOWN | ~LSFT| ~WIN |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_LPRN,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LSFT(KC_QUOTE),
-        KC_RPRN,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_BSPACE,
-        KC_LCBR,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_RCBR,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_SLASH,
-        CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, 
-                                              LT(1,KC_DOT),  KC_COMM,
-                                                              LCTL(KC_C),
-                                               GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V),
-        // right hand
-             LCTL(KC_S)  ,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_LBRACKET,
-             KC_DELETE,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_RBRACKET,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_UNDS,LCTL(KC_Y),
-             KC_SCOLON,KC_N,   KC_M, KC_QUOTE  ,KC_EXLM , LSFT(KC_SLASH),   LCTL(KC_Z),
-                                  KC_EQUAL,KC_PLUS  ,  KC_MINUS,KC_ASTR  ,     TG(1),
-             KC_HOME,         LT(1,KC_END),
-             KC_UP,
-             KC_DOWN,SFT_T(KC_SPACE), GUI_T(KC_ENTER)
-    ),
-
-/* Keymap 1:  F keys + macros
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  ESC   |  F1  |  F2  |  F3  |  F4  |  F5  |  `   |           | Calc |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Tab   |Public|Static|string|int   |return|      |           |      |//TODO|      |      |      |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |Privat|Const |var   |float |null  |------|           |------|new   |      |      |      |      |        |
- * |--------+------+------+------+------+------|  \   |           |  ~   |------+------+------+------+------+--------|
- * |        |      |      |void  |bool  |break;|      |           |      |();   |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |  WIN | Alt  |      |      |                                       | PgUp | PgDw | Ins  | PtSc |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      | Cut  |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------| Left | Right|
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// FKEYS + MACROS
-[FKEYS] = KEYMAP(
-       // left hand
-       KC_ESCAPE,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_GRAVE,
-       KC_TAB,M(MACRO_PUBLIC),M(MACRO_STATIC),  M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS,
-       KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL),
-       KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_BSLASH,
-       KC_TRNS,KC_LGUI,KC_LALT,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,LCTL(KC_X),
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_CALCULATOR, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, M(MACRO_TODO),   KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_F12,
-                M(MACRO_NEW), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
-       KC_TILD, M(MACRO_PARENTHESE), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
-                         KC_PGUP,KC_PGDOWN,  KC_INSERT,   KC_PSCREEN,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_LEFT, KC_RIGHT
-),
-
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(FKEYS)                // FN1 - Momentary Layer 1
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-               case MACRO_PUBLIC:
-                       if (record->event.pressed) {
-                               return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
-                       } 
-                       break;
-               case MACRO_PRIVATE:
-                       if (record->event.pressed) {
-                               return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
-                       } 
-                       break;
-               case MACRO_STATIC:
-                       if (record->event.pressed) {
-                               return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_CONST:
-                       if (record->event.pressed) {
-                               return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_VOID:
-                       if (record->event.pressed) {
-                               return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_VAR:
-                       if (record->event.pressed) {
-                               return MACRO( T(V), T(A), T(R), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_STRING:
-                       if (record->event.pressed) {
-                               return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
-                       } 
-                       break;          
-               case MACRO_BOOL:
-                       if (record->event.pressed) {
-                               return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END);
-                       } 
-                       break;          
-               case MACRO_INT:
-                       if (record->event.pressed) {
-                               return MACRO( T(I), T(N), T(T), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_FLOAT:
-                       if (record->event.pressed) {
-                               return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_RETURN:
-                       if (record->event.pressed) {
-                               return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END);
-                       } 
-                       break;
-               case MACRO_NULL:
-                       if (record->event.pressed) {
-                               return MACRO( T(N), T(U), T(L), T(L), END);
-                       } 
-               case MACRO_BREAK:
-                       if (record->event.pressed) {
-                               return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END);
-                       } 
-                       break;
-               case MACRO_TODO:
-                       if (record->event.pressed) {
-                               return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END);
-                       } 
-                       break;
-               case MACRO_NEW:
-                       if (record->event.pressed) {
-                               return MACRO( T(N), T(E), T(W), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_PARENTHESE:
-                       if (record->event.pressed) {
-                               return MACRO(  D(LSHIFT),T(9), T(0),U(LSHIFT), T(SCOLON), END);
-                       } 
-                       break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/csharp_dev/readme.md b/keyboards/ergodox/keymaps/csharp_dev/readme.md
deleted file mode 100644 (file)
index 980480d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# ErgoDox EZ C# Developer configuration
-
-## Changelog
-
-* Feb 12, 2016 (V1): 
-  * First version commit
-* Mar 20, 2016 (V2):
-  * Removed "Classic QWERTY" layer, inverted GUI and SHIFT on Hold for Space and Enter
-
-## About
-This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions.
-
-I came to the realization that my main tool as a developer, the qwerty keyboard was something that did not evolved at its core in almost 150 years.
-There are a lot of reasons to this, and it would be a massive entreprise to change a standard so strongly anchored, but I wanted to give it a try and see how would look an input device dedicated to developers, more specifically a C# developer in my case.
-The biggest flaw in standard QWERTY keyboards was that I always needed to perform key combination to access commonly used characters or actions. Think about it a minute, how many times a day do you press a modifier key such as Ctrl or Shift, it's insane and could be so easily optimized to require only one key press.
-
-Then I came across the ErgoDox EZ project, that allowed a full customization of its firmware, and a unique 2 parts design.
-
-![CSharpDev](https://i.imgur.com/PkNqi7V.png)
-![CSharpDev](https://i.imgur.com/0IcMgMf.png)
-
-## Layout design principles
-* No key combination required for the most common input characters ( (),[],{},<> ... )
-* No key combination required for the most common actions (copy/paste/undo/save)
-* Regroup characters by usage ( + - * =  ...)
-* Easy access to the most commonly used characters: ; / " . ,
-* Preregistered macro for the most common C# langage instructions: public / private / string / int / float ...
-
-## Why is it specific to C Sharp
-I defined the characters priority based on their usage in C# language, most of this characters are also used in other coding languages but it may require some tweaking. 
-For example there is no direct access to ~ or $ keys which can be very common in some languages.
-Note it is also specific to Windows environement as the shortcut used in action keys would not work on Mac Os
-
-## In usage
-It was relatively easy to get used to the layout, but it's hard for me to define how easy it was as I was getting used to a blank Ergodox keyboard at the same time.
-Still it's extremely satisfying to Save your file with just one easily accessible key or to have one big key to end your code line ( ; )
-
-## Improvements
-This layout was shared after a bunch of iterations and only once I was happy with it.
-Still there are many way to improve or iterate on this:
-* Make it language agnostic
-* Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g.  https://dzone.com/articles/most-pressed-keys-various )
-* QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur
-
-## Issues 
-One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold )
-
-
diff --git a/keyboards/ergodox/keymaps/dave/keymap.c b/keyboards/ergodox/keymaps/dave/keymap.c
deleted file mode 100644 (file)
index 23c4e04..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define PROG 1 // programming
-#define NAVI 2 // navigation
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc    |   1  |   2  |   3  |   4  |   5  |   6  |           |   6  |   7  |   8  |   9  |   0  |   -  | BkSpce |
- * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |   Y  |           |   G  |   Y  |   U  |   I  |   O  |   P  | Enter  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
- * |--------+------+------+------+------+------|   H  |           |   B  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |`/Ctrl|   \  |      |      | LAlt |                                       | RAlt |   [  |   ]  |      |'/Ctrl|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | PrtS | PrtS |       | CtAl | CtAl |
- *                                 ,------+------+------|       |------+------+------.
- *                                 |      |      |  L1  |       |  L1  |      |      |
- *                                 | Spce | ~L2  +------|       |------+  ~L1 | Spce |
- *                                 |      |      | LGui |       | RGui |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,   KC_1,     KC_2,    KC_3,    KC_4,    KC_5,   KC_6,
-        KC_TAB,   KC_Q,     KC_W,    KC_E,    KC_R,    KC_T,   KC_Y,
-        KC_LCTRL, KC_A,     KC_S,    KC_D,    KC_F,    KC_G,
-        KC_LSFT,  KC_Z,     KC_X,    KC_C,    KC_V,    KC_B,   KC_H,
-        CTL_T(KC_GRV),KC_NUBS,KC_NO, KC_NO,   KC_LALT,
-                                                  KC_PSCREEN, KC_PSCREEN,
-                                                      TO(PROG),
-                                               KC_SPC, MO(NAVI), KC_LGUI,
-        // right hand
-             KC_6,    KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_BSPC,
-             KC_G,    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,    KC_ENTER,
-                      KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN, KC_ENTER,
-             KC_B,    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
-                              KC_RALT,KC_LBRC,KC_RBRC,KC_NO,   CTL_T(KC_QUOT),
-             MT(0x5, KC_NO), MT(0x5, KC_NO),
-             TO(PROG),
-             KC_RGUI, MO(PROG), KC_SPC
-    ),
-
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |  K/  |  K*  |  K-  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   (  |   )  |   |  |      |           |      |      |  K7  |  K8  |  K9  |  K+  |   #    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   {  |   }  |   `  |------|           |------|      |  K4  |  K5  |  K6  |  K+  |   '    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |  K1  |  K2  |  K3  |  K=  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  K0  |  K0  |  K.  |  K=  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |  L2  |       |  L2  |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// PROGRAMMING
-[PROG] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
-       KC_TRNS, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
-       KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                        KC_TRNS, KC_TRNS,
-                                      TO(NAVI),
-                               KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS, KC_NO,  KC_PSLS, KC_PAST, KC_PMNS, KC_EQUAL,
-       KC_TRNS, KC_TRNS, KC_P7,  KC_P8,   KC_P9,   KC_PPLS, KC_NUHS,
-                KC_TRNS, KC_P4,  KC_P5,   KC_P6,   KC_PPLS, KC_QUOT,
-       KC_TRNS, KC_TRNS, KC_P1,  KC_P2,   KC_P3,   KC_PENT, KC_TRNS,
-                         KC_P0,  KC_P0,   KC_PDOT, KC_PENT, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       TO(NAVI),
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Navigation and system keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        | Home |  Up  | End  | Ins  | PgUp |      |           |      |      |      | Ins  |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Left | Down | Rght | Del  | PgDn |------|           |------|      | Back | Del  | Fwrd |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Lclk | MsUp | Rclk |      |      |      |           |      |      | Prev | Play | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      | MsLt | MsDn | MsRt |      |                                       |VolDn | Mute |VolUp |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |  L0  |       |  L0  |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// NAVIGATION
-[NAVI] = KEYMAP(
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
-       KC_TRNS, KC_HOME, KC_UP,   KC_END,  KC_INS,  KC_PGUP, KC_TRNS,
-       KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELT, KC_PGDN,
-       KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                         TO(BASE),
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_INS,  KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_WBAK, KC_DELT, KC_WFWD, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       TO(BASE),
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    //[1] = ACTION_LAYER_TAP_TOGGLE(PROG),               // FN1 - Momentary Layer 1 (Symbols)
-    //[2] = ACTION_LAYER_TAP_TOGGLE(NAVI)                // FN2 - Momentary Layer 2 (Navigation)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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) {
-    /* leds is a static array holding the current brightness of each of the
-     * three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and
-     * -1s in the code below, and because wasting a byte really doesn't matter
-     * that much (no, it *doesn't*, stop whinging!). Note that because it's
-     * static it'll maintain state across invocations of this routine.
-     */
-    static uint8_t leds[4];
-    uint8_t led;
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-
-    /* Loop over each LED/layer */
-    for (led = 1; led <= 3; ++led) {
-        /* If the current layer matches the current LED, increment its
-         * brightness by 1 up to a maximum of 255. If the current layer doesn't
-         * match, decrement its brightness by 1 down to a minimum of zero.
-         */
-        leds[led] += (layer == led) ?
-            (leds[led] < 255 ? 1 : 0):
-            (leds[led] > 0 ? -1 : 0);
-        /* Set LED state according to the new brightness */
-        if (leds[led]) {
-            ergodox_right_led_on(led);
-            ergodox_right_led_set(led, leds[led]);
-        }
-        else {
-            ergodox_right_led_off(led);
-        }
-    }
-
-
-};
diff --git a/keyboards/ergodox/keymaps/dave/readme.md b/keyboards/ergodox/keymaps/dave/readme.md
deleted file mode 100644 (file)
index aa0f9bd..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-This keymap is my preferred layout (after a certain amount of experimentation).
-The rationale behind the design is as follows:
-
-I grew up typing from a very early age and thus never learned the "correct" way
-to touch type (essentially, I'm self-taught). As a, result my fingers don't
-tend to stay on the "home keys" and occasionally my right hand wants to type
-keys that are on the left of the keyboard, and vice versa.
-
-Hence, despite liking the idea of split keyboards in principle, I've never been
-able to get on with them because the split simply doesn't work with my style of
-typing. The Ergodox solves this neatly by virtue of having a few extra keys in
-the "middle" of the keyboard which I can utilise for deliberate redundancy.
-Thus in this keymap there are two "6" keys (one on the left, one on the right)
-and likewise Y, H, G, and B are all duplicated to enable one-handed patterns
-that I use frequently (e.g. "byobu" with the right hand, "yes" with the left,
-etc.).
-
-I occasionally use the numeric pad for data entry, thus this is duplicated
-under the natural home position of the right hand in layer 1 (activated by
-holding one of the right thumb buttons), while the cursor keys are duplicated
-under the classic WASD gaming layout of the left hand in layer 2 (activated by
-holding one of the left thumb buttons). Various other useful keys also appear
-in these layers (brackets and symbols for coding in layer 1, navigation and
-F-keys in layer 2, etc.).
-
-Finally, modifier keys like Ctrl, Shift, and Alt, along with Backspace and
-Enter are all in traditional locations in an effort to reuse existing muscle
-memory as much as possible (keys like =, #, and ' are in layer 1). The layout
-maps are in the comments of keymap_dave.c so I won't bother duplicating them
-here.
-
-Oh, and the LEDs are rather pimped ... because I could!
-
-Anyway, although I'm sure this keymap won't be to many people's taste you might
-find some interesting ideas in here for your own layouts. Do tweet me
-(@waveform80) if you have any questions / suggestions / bugs.
-
-Dave.
diff --git a/keyboards/ergodox/keymaps/deadcyclo/Makefile b/keyboards/ergodox/keymaps/deadcyclo/Makefile
deleted file mode 100644 (file)
index 039f07c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-UNICODE_ENABLE = yes
diff --git a/keyboards/ergodox/keymaps/deadcyclo/keymap.c b/keyboards/ergodox/keymaps/deadcyclo/keymap.c
deleted file mode 100644 (file)
index 243ce94..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys and navigation
-#define UNI 3  // unicode 1
-#define UNI2 4 // unicode 2
-
-enum macros {
-  RUN
-};
-
-enum function_ids {
-  EMOJI,
-  EMOJI2,
-  EPRM,
-  VRSN,
-  RGB_SLD,
-  GO_GROUP
-};
-
-/* opt can only be 0-15 */
-enum emojis {
-  SHRUG,
-  YAY,
-  HUG,
-  SMILE,
-  SMILE2,
-  HMM1,
-  HMM2,
-  BEAR1,
-  BEAR2,
-  FUU,
-  EGGY1,
-  EGGY2,
-  FACE1,
-  FACE2,
-  UHU,
-  SMRK1
-};
-
-enum emojis2 {
-  SMRK2,
-  LOVE
-};
-
-enum progmem_ids {
-  EMOJI_SHRUG,
-  EMOJI_YAY,
-  EMOJI_HUG,
-  EMOJI_SMILE,
-  EMOJI_SMILE2,
-  EMOJI_HMM1,
-  EMOJI_HMM2,
-  EMOJI_BEAR1,
-  EMOJI_BEAR2,
-  EMOJI_FUU,
-  EMOJI_EGGY1,
-  EMOJI_EGGY2,
-  EMOJI_FACE1,
-  EMOJI_FACE2,
-  EMOJI_UHU,
-  EMOJI_SMRK1,
-  EMOJI_SMRK2,
-  EMOJI_LOVE,
-  F_EPRM,
-  F_VRSN,
-  F_RGB_SLD,
-  I3_GO_GROUP_10,
-  I3_GO_GROUP_1,
-  I3_GO_GROUP_2,
-  I3_GO_GROUP_3,
-  I3_GO_GROUP_4,
-  I3_GO_GROUP_5,
-  I3_GO_GROUP_6,
-  I3_GO_GROUP_7,
-  I3_GO_GROUP_8,
-  I3_GO_GROUP_9,
-};
-
-// TODO: Finish the macros for i3 (Macros should potentially be own function instead to make things easier? some of them at least, f. ex. the ones that use 1-0 keys so we can have a single switch)
-
-// TODO: Do stuff with hyper and meh keys
-// TODO: Add macros for lots of stuff. (Lastpass cli, pushbullet cli, other push service cli, linode cli, more?)
-// TODO: Make macros for gnu screen and i3wm
-// TODO: Need to change hotkeys for lastpass, and potentially make my own keys for them on one of my layers
-// TODO: Look into using tap dance
-// TODO: Use leader key for stuff. See https://github.com/qmk/qmk_firmware/wiki
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc/L3 |   1  |   2  |   3  |   4  |   5  |  6   |           |   6  |   7  |   8  |   9  |   0  |   -  |   =/L3 |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab/L1 |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \/L1 |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | ctrl/'|
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z / L4|X / L2|   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |. / L2|/ / L4| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  UNI |AltShf| Lalt | Ralt |                                       | Lalt | Ralt | LEAD |  UNI | ~/L1 |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | Home |       | PgUp |  Ins   |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 | Space|  TAB |------|       |------|  BSPC  |Enter |
- *                                 |      |      |   [  |       |  ]   |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-       LT(UNI,KC_ESC),         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
-        LT(SYMB,KC_TAB),        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_LCTL,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        LT(4, KC_Z),  LT(MDIA, KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),LCTL(LSFT(KC_U)),      LALT(KC_LSFT),  KC_RALT,KC_LALT,
-                                              ALT_T(KC_APP),  KC_HOME,
-                                                              KC_END,
-                                               KC_SPC,KC_TAB,KC_LBRC,
-        // right hand
-               KC_6,     KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,             LT(UNI,KC_EQL),
-       TG(MDIA),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             LT(SYMB, KC_BSLS),
-       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,CTL_T(KC_QUOT),
-       MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,LT(MDIA, KC_DOT), LT(UNI2, KC_SLSH),   KC_RSFT,
-               KC_LALT,  KC_RALT,KC_LEAD,LCTL(LSFT(KC_U)),          LT(SYMB,KC_TILD),
-             KC_PGUP,        KC_INS,
-             KC_PGDN,
-             KC_RBRC,KC_BSPC, KC_ENT   
-    ),
-/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U))  
- *                                                  
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |   F12  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Toggle|Animat|       | Hue+ | Hue- |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |Bright|Bright|Solid |       |      |      |      |
- *                                 |ness- |ness+ |------|       |------| DEL  |      |
- *                                 |      |      |      |       | EPRM |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       RGB_TOG,RGB_MOD,
-       F(F_RGB_SLD),
-                               RGB_VAD,RGB_VAI,KC_TRNS,
-       // right hand
-       KC_F6, KC_F7,   KC_F8,  KC_F9,   KC_F10,   KC_F11,  KC_F12,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       RGB_HUD, RGB_HUI,
-       KC_TRNS,
-       F(F_EPRM), KC_DEL, KC_TRNS
-),
-/* Keymap 2: Media, mouse and navigation
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        | gg(1)| gg(2)| gg(3)| gg(4)| gg(5)| gg(6)|           | gg(6)| gg(7)| gg(8)| gg(9)| gg(0)|      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp | RUN  |      |      |           |      |      |      |  Up  |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Left | Down | Right|      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | Prev | Next |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA , MOUSE and NAVIGATION
-[MDIA] = KEYMAP(
-               KC_TRNS, F(I3_GO_GROUP_1), F(I3_GO_GROUP_2), F(I3_GO_GROUP_3), F(I3_GO_GROUP_4), F(I3_GO_GROUP_5), F(I3_GO_GROUP_6),
-KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-               F(I3_GO_GROUP_6), F(I3_GO_GROUP_7), F(I3_GO_GROUP_8), F(I3_GO_GROUP_9), F(I3_GO_GROUP_10), KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS,  KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE,  KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-
-/* Keymap 3: Unicode
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  ┌   |  ┐   |  └   |  ┘   |  │   |  ─   |           |  ╔   |  ╗   |  ╚   |  ╝   |  ║   |  ═   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        | shrug| yay  | hug  | smile|smile2|      |           |      |  ■   |  λ   |  →   |  ➙   |  ▻   |  █     |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | hmm1 | hmm2 | bear1| bear2| fuu  |------|           |------|  ☺   |  ☻   |  ☹   |  ♡   |  ♥   |  ░     |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | eggy1| eggy2| face1| face2| uhu  |      |           |      |  ❤   |  ☐   |  ☑   |  ☒   |  ✓   |  ▄     |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      | smrk1| smrk2| love | VER  |                                       |  ✔   |  ✗   |  ✘   |  ●   |  ▀   |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |   ▒  |  ▓   |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      | 
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Unicode
-[UNI] = KEYMAP(
-               KC_TRNS, UC(0x250c), UC(0x2510), UC(0x2514), UC(0x2518), UC(0x2502), UC(0x2500),
-               KC_TRNS, F(EMOJI_SHRUG), F(EMOJI_YAY), F(EMOJI_HUG), F(EMOJI_SMILE), F(EMOJI_SMILE2), KC_TRNS,
-               KC_TRNS, F(EMOJI_HMM1), F(EMOJI_HMM2), F(EMOJI_BEAR1), F(EMOJI_BEAR2), F(EMOJI_FUU),
-               KC_TRNS, F(EMOJI_EGGY1), F(EMOJI_EGGY2), F(EMOJI_FACE1), F(EMOJI_FACE2), F(EMOJI_UHU), KC_TRNS,
-               KC_TRNS, F(EMOJI_SMRK1), F(EMOJI_SMRK2), F(EMOJI_LOVE), F(F_VRSN),
-               KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       UC(0x2554),  UC(0x2557), UC(0x255a), UC(0x255d), UC(0x2551), UC(0x2550), KC_TRNS,
-       KC_TRNS,  UC(0x25a0), UC(0x03bb), UC(0x2192), UC(0x2799), UC(0x25bb), UC(0x2588),
-                 UC(0x263a), UC(0x263b), UC(0x2639), UC(0x2661), UC(0x2665), UC(0x2591),
-       KC_TRNS,  UC(0x2764), UC(0x2610), UC(0x2611), UC(0x2612), UC(0x2713), UC(0x2584),
-       UC(0x2714), UC(0x2717), UC(0x2718), UC(0x25cf), UC(0x2580),
-               UC(0x2592), UC(0x2593),
-               KC_TRNS,
-               KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 4: Unicode 2 
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  ¹   |  ²   |  ³   |  ⁴   |  ⁵   |  ⁶   |           |  ⁶   |  ⁷   |  ⁸   |  ⁹   |  ⁰   |  ℃   |   ™    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  ₁   |  ₂   |  ₃   |  ₄   |  ₅   |  ₆   |           |  ₆   |  ₇   |  ₈   |  ₉   |  ₀   |  ⁄   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  ⅞   |  ⅝   |  ⅜   |  ⅛   |  ⅚   |------|           |------|  ⅓   |  ⅒   |  ⅑   |  ⅐   |  ¾   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |  ⅗   |  ⅖   |  ⅕   |  ⅔   |           |  ¼   |  ⅙   |  ⅘   |  ½   |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      | 
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Unicode 2   
-[UNI2] = KEYMAP(
-               KC_TRNS, UC(0x00b9), UC(0x00b2), UC(0x00b3), UC(0x2074), UC(0x2075), UC(0x2076),
-               KC_TRNS, UC(0x2081), UC(0x2082), UC(0x2083), UC(0x2084), UC(0x2085), UC(0x2086),
-               KC_TRNS, UC(0x215e), UC(0x215d), UC(0x215c), UC(0x215b), UC(0x215a),
-               KC_TRNS, KC_TRNS, KC_TRNS, UC(0x2157), UC(0x2156), UC(0x2155), UC(0x2154),
-               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-               KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-               UC(0x2076),  UC(0x2077), UC(0x2078), UC(0x2079), UC(0x2070), UC(0x2103), UC(0x2122),
-               UC(0x2086),  UC(0x2087), UC(0x2088), UC(0x2089), UC(0x2080), UC(0x2044), KC_TRNS,
-               UC(0x2153), UC(0x2152), UC(0x2151), UC(0x2150), UC(0x00be), KC_TRNS,
-               UC(0x00bc),  UC(0x2159), UC(0x2158), UC(0x00bd), KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-               KC_TRNS, KC_TRNS,
-               KC_TRNS,
-               KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [EMOJI_SHRUG]   = ACTION_FUNCTION_OPT(EMOJI, SHRUG),
-  [EMOJI_YAY]     = ACTION_FUNCTION_OPT(EMOJI, YAY),
-  [EMOJI_HUG]     = ACTION_FUNCTION_OPT(EMOJI,HUG),
-  [EMOJI_SMILE]   = ACTION_FUNCTION_OPT(EMOJI,SMILE),
-  [EMOJI_SMILE2]  = ACTION_FUNCTION_OPT(EMOJI,SMILE2),
-  [EMOJI_HMM1]    = ACTION_FUNCTION_OPT(EMOJI,HMM1),
-  [EMOJI_HMM2]    = ACTION_FUNCTION_OPT(EMOJI,HMM2),
-  [EMOJI_BEAR1]   = ACTION_FUNCTION_OPT(EMOJI,BEAR1),
-  [EMOJI_BEAR2]   = ACTION_FUNCTION_OPT(EMOJI,BEAR2),
-  [EMOJI_FUU]     = ACTION_FUNCTION_OPT(EMOJI,FUU),
-  [EMOJI_EGGY1]   = ACTION_FUNCTION_OPT(EMOJI,EGGY1),
-  [EMOJI_EGGY2]   = ACTION_FUNCTION_OPT(EMOJI,EGGY2),
-  [EMOJI_FACE1]   = ACTION_FUNCTION_OPT(EMOJI,FACE1),
-  [EMOJI_FACE2]   = ACTION_FUNCTION_OPT(EMOJI,FACE2),
-  [EMOJI_UHU]     = ACTION_FUNCTION_OPT(EMOJI,UHU),
-  [EMOJI_SMRK1]   = ACTION_FUNCTION_OPT(EMOJI,SMRK1),
-  [EMOJI_SMRK2]   = ACTION_FUNCTION_OPT(EMOJI2,SMRK2),
-  [EMOJI_LOVE]    = ACTION_FUNCTION_OPT(EMOJI2,LOVE),
-  [F_EPRM]        = ACTION_FUNCTION(EPRM),
-  [F_VRSN]        = ACTION_FUNCTION(VRSN),
-  [F_RGB_SLD]     = ACTION_FUNCTION(RGB_SLD),
-  [I3_GO_GROUP_10]= ACTION_FUNCTION_OPT(GO_GROUP,0),
-  [I3_GO_GROUP_1] = ACTION_FUNCTION_OPT(GO_GROUP,1),
-  [I3_GO_GROUP_2] = ACTION_FUNCTION_OPT(GO_GROUP,2),
-  [I3_GO_GROUP_3] = ACTION_FUNCTION_OPT(GO_GROUP,3),
-  [I3_GO_GROUP_4] = ACTION_FUNCTION_OPT(GO_GROUP,4),
-  [I3_GO_GROUP_5] = ACTION_FUNCTION_OPT(GO_GROUP,5),
-  [I3_GO_GROUP_6] = ACTION_FUNCTION_OPT(GO_GROUP,6),
-  [I3_GO_GROUP_7] = ACTION_FUNCTION_OPT(GO_GROUP,7),
-  [I3_GO_GROUP_8] = ACTION_FUNCTION_OPT(GO_GROUP,8),
-  [I3_GO_GROUP_9] = ACTION_FUNCTION_OPT(GO_GROUP,9),
-};
-
-#define TAP_ONCE(code)  \
-  register_code (code); \
-  unregister_code (code)
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  if (record->event.pressed) {
-    switch(id) {
-    case EPRM:
-      eeconfig_init();
-      break;
-    case VRSN:
-      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      break;
-    case RGB_SLD:
-#ifdef RGBLIGHT_ENABLE
-      rgblight_mode(1);
-#endif
-      break;
-    case GO_GROUP:
-      register_code(KC_LCTL); TAP_ONCE(KC_I); unregister_code(KC_LCTL);
-      TAP_ONCE(KC_G);
-      if (opt == 0) {
-       TAP_ONCE(39);
-      } else {
-       TAP_ONCE(29+opt);
-      }
-      break;
-    case EMOJI:
-      switch(opt) {
-      case SHRUG:
-       unicode_input_start(); register_hex(0xaf); unicode_input_finish();
-       TAP_ONCE (KC_BSLS);
-       register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
-       unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
-       register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
-       TAP_ONCE (KC_SLSH);
-       unicode_input_start (); register_hex(0xaf); unicode_input_finish();
-       break;
-      case YAY:
-       SEND_STRING ("\\o/");   
-       break;
-      case HUG:
-       unicode_input_start(); register_hex(0x0f3c); unicode_input_finish();
-       TAP_ONCE (KC_SPC);
-       unicode_input_start(); register_hex(0x3064); unicode_input_finish();
-       TAP_ONCE (KC_SPC);
-       unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
-       TAP_ONCE (KC_SPC);
-       unicode_input_start(); register_hex(0x0f3d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x3064); unicode_input_finish();
-       break;
-      case SMILE:
-       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
-       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
-       break;
-      case SMILE2:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
-       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case HMM1:
-       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
-       break;
-      case HMM2:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case BEAR1:
-       unicode_input_start(); register_hex(0x0295); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
-       unicode_input_start(); register_hex(0x1d25); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0294); unicode_input_finish();
-       break;
-      case BEAR2:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x1d54); unicode_input_finish();
-       unicode_input_start(); register_hex(0x1d25); unicode_input_finish();
-       unicode_input_start(); register_hex(0x1d54); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case FUU:
-       unicode_input_start(); register_hex(0x256d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2229); unicode_input_finish();
-       unicode_input_start(); register_hex(0x256e); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       unicode_input_start(); register_hex(0x256d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2229); unicode_input_finish();
-       unicode_input_start(); register_hex(0x256e); unicode_input_finish();
-       break;
-      case EGGY1:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x256f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x00b0); unicode_input_finish();
-       unicode_input_start(); register_hex(0x25a1); unicode_input_finish();
-       unicode_input_start(); register_hex(0x00b0); unicode_input_finish();
-       unicode_input_start(); register_hex(0xff09); unicode_input_finish();
-       unicode_input_start(); register_hex(0x256f); unicode_input_finish();
-       break;
-      case EGGY2:
-       unicode_input_start(); register_hex(0x30ce); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0020); unicode_input_finish();
-       unicode_input_start(); register_hex(0x309c); unicode_input_finish();
-       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x309c); unicode_input_finish();
-       unicode_input_start(); register_hex(0x30ce); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case FACE1:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case FACE2:
-       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
-       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-       break;
-      case UHU:
-       unicode_input_start(); register_hex(0x2299); unicode_input_finish();
-       unicode_input_start(); register_hex(0xfe4f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2299); unicode_input_finish();
-       break;
-      case SMRK1:
-       unicode_input_start(); register_hex(0x005e); unicode_input_finish();
-       unicode_input_start(); register_hex(0x032e); unicode_input_finish();
-       unicode_input_start(); register_hex(0x005e); unicode_input_finish();
-       break;
-      }
-      break;
-    case EMOJI2:
-      switch(opt) {
-       case SMRK2:
-         unicode_input_start(); register_hex(0x0028); unicode_input_finish();
-         unicode_input_start(); register_hex(0x005e); unicode_input_finish();
-         unicode_input_start(); register_hex(0x032e); unicode_input_finish();
-         unicode_input_start(); register_hex(0x005e); unicode_input_finish();
-         unicode_input_start(); register_hex(0x0029); unicode_input_finish();
-         break;
-      case LOVE:
-       unicode_input_start(); register_hex(0x2665); unicode_input_finish();
-       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
-       unicode_input_start(); register_hex(0x2665); unicode_input_finish();
-       break;
-      }
-      break;   
-    }
-  }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  if (record->event.pressed) {
-    switch(id) {
-      case RUN:
-       return MACRO( D(LCTL), T(I), U(LCTL), T(R), END  );
-      break;
-    }
-  }
-  return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  set_unicode_input_mode(UC_LNX);
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-    case 1:
-      ergodox_right_led_1_on();
-      #ifdef RGBLIGHT_ENABLE
-      rgblight_setrgb(0xff,0x00,0x00);
-      #endif
-      break;
-    case 2:
-      ergodox_right_led_2_on();
-      #ifdef RGBLIGHT_ENABLE
-      rgblight_setrgb(0x00,0xff,0x00);
-      #endif
-      break;
-    case 3:
-      ergodox_right_led_3_on();
-      #ifdef RGBLIGHT_ENABLE
-       rgblight_setrgb(0x00,0x00,0xff);
-      #endif
-      break;
-    case 4:
-      ergodox_right_led_1_on();
-      ergodox_right_led_3_on();
-      #ifdef RGBLIGHT_ENABLE
-       rgblight_setrgb(0xff,0x00,0xff);
-      #endif
-      break;
-    default:
-      // none
-      break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/deadcyclo/readme.md b/keyboards/ergodox/keymaps/deadcyclo/readme.md
deleted file mode 100644 (file)
index 6ae5299..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# ErgoDox EZ 1337 configuration
-
-Custom layout based on the default layout. Intended for interational
-users of us intl-altgr layout. Note that some common keys might be
-missing, as this layout is intented to be used on *nix systems by
-users familiar with their system. The layout is geared towards
-avoiding using the rat (mouse for those of you who are unfamiliar with
-tiling window managers) as much as possibly.
-
-# Layouts
-
-All layer images created using [keyboard-layout-editor](http://www.keyboard-layout-editor.com/)
-
-## Base layer
-
-[![Base layer](https://i.imgur.com/PGhP2jZ.png)](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
-
-The base layer here is marked with the us international alt-gr layout,
-including characters bound to what on an iso keyboard would be alt-gr
-and on an ansi keyboard right alt.
-
-Regular (and irregular) modifier keys are marked with a yellowish
-gray. Layer moderators are marked with blue, red and green, which are
-the same colors each layer displays on the LEDs when active.
-
-All of the layer switch keys, except for the two center keys marked L1
-TOG, are dual purpose. Hence for example the top left key produces ESC
-if tapped, and temporarilly toggles L3 when hold down. The two center
-L1 TOG keys toggle L1 on and off for more permanent layer toggling.
-
-The UNI keys enter the linux ibus unicode composer mode
-(ie. Ctrl+Shift+u). Use this to enter unicode characters. Hit the key,
-type in the unicode hex value, and hit enter.
-
-## Layer 1 - Symbols and RGB
-
-[![Layer 1 - Symbols and RGB](https://i.imgur.com/SfkkU5D.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
-
-The Symbols and RGB layer contains function keys, commonly used
-symbols, a numpad and if you have the new Ergodox Ez shine keys for
-controlling various RGB-led functions. In addition, it provides an up
-and a down key for easy scrolling. RGB controller keys are yellow.
-
-## Layer 2 - Media, Mouse and Navigation
-
-[![Layer 2 - Media, Mouse and Navigation](https://i.imgur.com/UwPHjCO.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
-
-The Media, Mouse and unicode layer contains special keys for moving
-the mouse and clicking on it with the keyboard. In addition it
-provides standard media control keys, and default arrow keys.
-
-## Layer 3 - Unicode
-
-[![Layer 3 - Unicode](https://i.imgur.com/HRkeY8j.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
-
-The unicode layer provides keys for directly typing unicode (utf-8)
-
-## Layer 4 - Unicode 2
-
-[![Layer 43 - Unicode](https://i.imgur.com/dyB459q.png)](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a)
-
-The unicode 2 layer provides keys for directly typing unicode (utf-8)
-
-# Changelog
-
-- 02.01.2017 Added delete key on second layer
-- 10.01.2017 Added layer images to readme
-- 24.01.2017 Added support for Ergodox Shine. Added secondary L2 switch key on left hand
-- 24.01.2017 Added unicode keys. Added shrug hug and yay. Moved Navigation to layer 2
-- 25.01.2017 Added lots of new emojis and some unicode keys
-- 27.01.2017 Added new unicode keys and shortcut for ibus unicode composer key (CTRL+SHIFT+U)
-- 11.03.2017 Added additional unicode layer. Moved some layer switch keys to more sane locations
-
-# TODO
-
-- Add macros for lots of stuff. (Lastpass cli, pushbullet cli, other push service cli, linode cli, more?)
-- Make macros for gnu screen and i3wm
-- Look into the app launch macros in algernon keymap
-
diff --git a/keyboards/ergodox/keymaps/default/default.png.md b/keyboards/ergodox/keymaps/default/default.png.md
deleted file mode 100644 (file)
index 744e7d1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/fKX0Zbs.png
diff --git a/keyboards/ergodox/keymaps/default/default_highres.png.md b/keyboards/ergodox/keymaps/default/default_highres.png.md
deleted file mode 100644 (file)
index 074e063..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/giAc3M9.jpg
diff --git a/keyboards/ergodox/keymaps/default/keymap.c b/keyboards/ergodox/keymaps/default/keymap.c
deleted file mode 100644 (file)
index 4477cab..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-  RGB_SLD
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,  KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,  KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,  KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,  KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP, KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,---------------------------------------------------.           ,--------------------------------------------------.
- * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
- * |         |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | EPRM  |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `-----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Animat|      |       |Toggle|Solid |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
- *                                 |ness- |ness+ |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       RGB_MOD,KC_TRNS,
-                                               KC_TRNS,
-                               RGB_VAD,RGB_VAI,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       RGB_TOG, RGB_SLD,
-       KC_TRNS,
-       KC_TRNS, RGB_HUD, RGB_HUI
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-    case RGB_SLD:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_mode(1);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// Runs 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/default/readme.md b/keyboards/ergodox/keymaps/default/readme.md
deleted file mode 100644 (file)
index 1150a4f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# ErgoDox EZ Default Configuration
-
-## Changelog
-
-* Dec 2016:
-  * Added LED keys
-  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
-* Sep 22, 2016:
-  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
-* Feb 2, 2016 (V1.1): 
-  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
-
-This is what we ship with out of the factory. :) The image says it all:
-
-![Default](https://i.imgur.com/Be53jH7.png)
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/default/visualizer.c b/keyboards/ergodox/keymaps/default/visualizer.c
deleted file mode 100644 (file)
index 502e53f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "simple_visualizer.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-    uint8_t saturation = 60;
-    if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
-        saturation = 255;
-    }
-    if (state->status.layer & 0x4) {
-        state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
-        state->layer_text = "Media & Mouse";
-    }
-    else if (state->status.layer & 0x2) {
-        state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
-        state->layer_text = "Symbol";
-    }
-    else {
-        state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
-        state->layer_text = "Default";
-    }
-}
diff --git a/keyboards/ergodox/keymaps/default_osx/keymap.c b/keyboards/ergodox/keymaps/default_osx/keymap.c
deleted file mode 100644 (file)
index e9a242e..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-// Netable differences vs. the default firmware for the ErgoDox EZ:
-// 1. The Cmd key is now on the right side, making Cmd+Space easier.
-// 2. The media keys work on OSX (But not on Windows).
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_LGUI,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/default_osx/readme.md b/keyboards/ergodox/keymaps/default_osx/readme.md
deleted file mode 100644 (file)
index 28ca033..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# The OSX Friendly Version of the Default Firmware
-
-So, I took the default firmware and just made a couple of tweaks that make it easier to use with OS X:
-
-1. The Cmd key is now on the right side, making Cmd+Space easier.
-2. The media keys work on OSX (But not on Windows).
-
-![default osx](https://i.imgur.com/z0aqFDq.png)
diff --git a/keyboards/ergodox/keymaps/dragon788/keymap.c b/keyboards/ergodox/keymaps/dragon788/keymap.c
deleted file mode 100644 (file)
index d33bc6a..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define PLVR 3 // Plover layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LGui |           |Plover|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '"/Ctrl|
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | ~L1  | Grv  |  '"  | Left |Rgt/L2|                                       | Up/L2| Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | Home |       | PgUp |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 |Backsp|Delete|------|       |------| Enter  |Space |
- *                                 | ace  |      | LAlt |       |TabCtl|        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LGUI,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
-        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-         KC_FN1,      KC_GRV,      KC_QUOT,KC_LEFT, LT(MDIA, KC_RGHT),
-                                                     KC_APP,  KC_HOME,
-                                                               KC_END,
-                                              KC_BSPC,KC_DELT,KC_LALT,
-        // right hand
-             TG(3),       KC_6,   KC_7,   KC_8,   KC_9,   KC_0,           KC_MINS,
-             TG(2),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,           KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN, CTL_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,        KC_RSFT,
-                       LT(MDIA, KC_UP),   KC_DOWN,KC_LBRC,KC_RBRC,         KC_FN1,
-             KC_PGUP,        CTL_T(KC_ESC),
-             KC_PGDN,
-             CTL_T(KC_TAB),KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      | Calc |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_CALC,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | Rclk | Lclk |      |      |           |      |      | Lclk | Rclk |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft| MsUp |MsDown|MsRght|------|           |------|MsLeft|MsDown| MsUp |MsRght|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      | Prev |       |VolUp |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Play |       | Mute |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
- *                                 |      |      | Next |       |VolDn |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-         RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_MPRV,
-                                                    KC_MPLY,
-                                  KC_BTN1, KC_BTN2, KC_MNXT,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_VOLU,  KC_TRNS,
-       KC_MUTE,
-       KC_VOLD,  KC_WBAK, KC_WFWD
-),
-
-/* Keymap 4: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |  6   |  7   |   8  |   9  |  0   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   c  |   v  |------|       |------|  n   |  m   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-
-[PLVR] = KEYMAP(  // layout: layer 4: Steno for Plover
-        // left hand
-        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NO,
-        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
-        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
-        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                                      KC_FN4, KC_NO,
-                                           KC_NO,
-                                 KC_C,   KC_V,   KC_NO,
-        // right hand
-             KC_TRNS,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
-               KC_NO,   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
-                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
-               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
-                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
-        KC_TRNS, KC_TRNS,
-        KC_TRNS,
-        KC_NO,  KC_N,   KC_M
-),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/dvorak/dvorak.png.md b/keyboards/ergodox/keymaps/dvorak/dvorak.png.md
deleted file mode 100644 (file)
index 0022150..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/zLx5fus.png
diff --git a/keyboards/ergodox/keymaps/dvorak/keymap.c b/keyboards/ergodox/keymaps/dvorak/keymap.c
deleted file mode 100644 (file)
index d3609c6..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1  |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |S / L2|   -    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(1),
-        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
-             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MDIA, KC_S),   KC_MINS,
-             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c b/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c
deleted file mode 100755 (executable)
index d33c6e5..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-/******************************************************************************************
- * DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
- * Layer 1: auxiliary keys
- * Layer 2: full qwerty layout
- *****************************************************************************************/
-
-// LAYERS
-#define BASE    0 // dvorak layout (default)
-#define AUX     1 // auxiliary keys
-
-// MACROS
-/* #define OBRACE 0 // key { or shift */
-/* #define CBRACE 1 // key } or shift */
-/* #define OBRACK 2 // key [ or left alt */
-/* #define CBRACK 3 // key ] or left alt */
-/* #define CAPS   4 // caps lock */
-
-// LEDS
-#define USB_LED_NUM_LOCK    0
-#define USB_LED_CAPS_LOCK   1
-#define USB_LED_SCROLL_LOCK 2
-#define USB_LED_COMPOSE     3
-#define USB_LED_KANA        4
-
-// TIMERS
-#define KEY_TAP_FAST 85
-#define KEY_TAP_SLOW 95
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base layer
- * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
- *
-  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  | = / +  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   ~    |" / ' |, / < |. / > |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  | / / ?  |
- * |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
- * |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  | - / _  |
- * |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
- * | {/LSft |; / : |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      | ~L1  |                                       | ~L1  |      |      | \ / ||        |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | HOME |  END |       | LEFT | RIGHT|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
- *                                 |  /   |  /   |------|       |------|   /    |  /   |
- *                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
- *                                 `--------------------'       `----------------------'
- *
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_NO,          KC_1,     KC_2,   KC_3,   KC_4,          KC_5,           KC_ESC,
-        KC_TILD,        KC_QUOTE, KC_COMM,KC_DOT, KC_P,          KC_Y,           KC_LBRACKET,
-        KC_TAB,         KC_A,     KC_O,   KC_E,   SFT_T(KC_U),   LT(AUX, KC_I),
-        SFT_T(KC_LBRC), KC_SCLN,  KC_Q,   KC_J,   KC_K,          KC_X,           KC_LGUI,
-        KC_NO,          KC_NO,    KC_NO,  KC_NO,  MO(AUX),
-                                                           KC_HOME, KC_END,
-                                                                    KC_PGUP,
-                                      CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN,
-        // right hand
-                    KC_ESC,          KC_6,           KC_7,         KC_8,   KC_9,   KC_0,   KC_EQL,
-                    KC_RBRACKET,     KC_F,           KC_G,         KC_C,   KC_R,   KC_L,   KC_SLASH,
-                                     LT(AUX, KC_D),  SFT_T(KC_H),  KC_T,   KC_N,   KC_S,   KC_MINUS,
-                    KC_LGUI,         KC_B,           KC_M,         KC_W,   KC_V,   KC_Z,   SFT_T(KC_RBRC),
-                                                                 MO(AUX), KC_NO,   KC_NO,  KC_BSLASH, KC_NO,
-        KC_LEFT, KC_RIGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC)
-    ),
-/* Keymap 1: Aux layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
- * |  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | TRANS| TRANS|       | TRANS| TRANS|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | TRANS|       | TRANS|      |      |
- *                                 |TRANS |TRANS |------|       |------| TRANS| TRANS|
- *                                 |      |      | TRANS|       | TRANS|      |      |
- *                                 `--------------------'       `--------------------'
- */
-[AUX] = KEYMAP(
-       // left hand
-       KC_VOLU, KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_SLEP,
-       KC_VOLD, KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_NO,   KC_NO,
-       KC_NO  , KC_F5, KC_F6,  KC_F7,  KC_F8,  KC_TRNS,
-       KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO,   KC_NO,
-       LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_TRNS,
-                                                            KC_TRNS  , KC_TRNS,
-                                                                     KC_TRNS,
-                                                KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-            KC_PWR,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,
-            KC_NO,   KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_NO,
-                     KC_TRNS, KC_4,   KC_5,   KC_6,    KC_PPLS, KC_NO,
-            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_TRNS,
-                              KC_TRNS,KC_DOT, KC_0,    KC_PEQL, KC_NO,
-       KC_TRNS  , KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
-};
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-}
diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/readme.md b/keyboards/ergodox/keymaps/dvorak_emacs/readme.md
deleted file mode 100644 (file)
index a3fc34a..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Ergodox Dvorak Layout with emacs binding in mind
- * Control & Alt key on the thumbs (activated if pressed with another key).
- * In the same way, "U" and "R" are the shift modifier if pressed with another key.
- * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key.
- * Software layout set to english.
-
-## Keymap Layers
- - L0: dvorak with some customizations (see layout below)
- - L1: auxiliary keys (includes function keys, numpad...)
-
-
-### Keymap 0: Base layer
-Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
-|--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
-|  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
-|--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
-| {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | HOME |  END |       | LEFT | RIGHT|
-                                ,------|------|------|       |------+--------+------.
-                                | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
-                                |  /   |  /   |------|       |------|   /    |  /   |
-                                | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
-                                `--------------------'       `----------------------'
-
-</pre></code>
-
-### Keymap 1: Aux layer
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
-|--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
-|  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | TRANS| TRANS|       | TRANS| TRANS|
-                                ,------|------|------|       |------+------+------.
-                                |      |      | TRANS|       | TRANS|      |      |
-                                |TRANS |TRANS |------|       |------| TRANS| TRANS|
-                                |      |      | TRANS|       | TRANS|      |      |
-                                `--------------------'       `--------------------'
-
-</pre></code>
-
-
-
-## Generation of .hex file
-> In the "qmk_firmware/keyboards/ergodox" directory.
-
-> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware".
-
-> Flash with `teensy_loader` binary
diff --git a/keyboards/ergodox/keymaps/dvorak_emacs_software/keymap.c b/keyboards/ergodox/keymaps/dvorak_emacs_software/keymap.c
deleted file mode 100755 (executable)
index a2bc15c..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#include "ergodox.h"
-#include "keymap_dvorak.h"
-#include "debug.h"
-#include "action_layer.h"
-
-/******************************************************************************************
- * DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
- * Layer 1: auxiliary keys
- * Layer 2: full qwerty layout
- *****************************************************************************************/
-
-// LAYERS
-#define BASE    0 // dvorak layout (default)
-#define AUX     1 // auxiliary keys
-
-// MACROS
-/* #define OBRACE 0 // key { or shift */
-/* #define CBRACE 1 // key } or shift */
-/* #define OBRACK 2 // key [ or left alt */
-/* #define CBRACK 3 // key ] or left alt */
-/* #define CAPS   4 // caps lock */
-
-// LEDS
-#define USB_LED_NUM_LOCK    0
-#define USB_LED_CAPS_LOCK   1
-#define USB_LED_SCROLL_LOCK 2
-#define USB_LED_COMPOSE     3
-#define USB_LED_KANA        4
-
-// TIMERS
-#define KEY_TAP_FAST 85
-#define KEY_TAP_SLOW 95
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base layer
- * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
- *
-  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  | = / +  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   ~    |" / ' |, / < |. / > |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  | / / ?  |
- * |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
- * |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  | - / _  |
- * |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
- * | {/LSft |; / : |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      | ~L1  |                                       | ~L1  |      |      | \ / ||        |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | HOME |  END |       | LEFT | RIGHT|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
- *                                 |  /   |  /   |------|       |------|   /    |  /   |
- *                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
- *                                 `--------------------'       `----------------------'
- *
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_NO,          KC_1,     KC_2,   KC_3,   KC_4,          KC_5,           KC_ESC,
-        KC_TILD,        DV_QUOT,  DV_COMM,DV_DOT, DV_P,          DV_Y,           DV_LBRC,
-        KC_TAB,         DV_A,     DV_O,   DV_E,   SFT_T(DV_U),   LT(AUX, DV_I),
-        SFT_T(DV_LBRC), DV_SCLN,  DV_Q,   DV_J,   DV_K,          DV_X,           KC_LGUI,
-        KC_NO,          KC_NO,    KC_NO,  KC_NO,  MO(AUX),
-                                                            KC_HOME, KC_END,
-                                                                     KC_PGUP,
-                                      CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN,
-        // right hand
-        KC_ESC,         KC_6,         KC_7,   KC_8,   KC_9,   KC_0,   DV_EQL,
-        DV_RBRC,        DV_F,         DV_G,   DV_C,   DV_R,   DV_L,   DV_SLSH,
-        LT(AUX, DV_D),  SFT_T(DV_H),  DV_T,   DV_N,   DV_S,   DV_MINS,
-        KC_LGUI,        DV_B,         DV_M,   DV_W,   DV_V,   DV_Z,   SFT_T(DV_RBRC),
-                                                                 MO(AUX), KC_NO,   KC_NO,  KC_BSLS, KC_NO,
-        KC_LEFT, KC_RIGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC)
-    ),
-/* Keymap 1: Aux layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |PSCR  |------+-----aan+------+------+------+--------|
- * |  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | TRANS| TRANS|       | TRANS| TRANS|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | TRANS|       | TRANS|      |      |
- *                                 |TRANS |TRANS |------|       |------| TRANS| TRANS|
- *                                 |      |      | TRANS|       | TRANS|      |      |
- *                                 `--------------------'       `--------------------'
- */
-[AUX] = KEYMAP(
-       // left hand
-       KC_VOLU, KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_SLEP,
-       KC_VOLD, KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_NO,   KC_NO,
-       KC_NO  , KC_F5, KC_F6,  KC_F7,  KC_F8,  KC_TRNS,
-       KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO,   KC_NO,
-       LCTL(DV_S), LCTL(DV_Z), LCTL(DV_X), LCTL(DV_C), KC_TRNS,
-                                                            KC_TRNS  , KC_TRNS,
-                                                                     KC_TRNS,
-                                                KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-            KC_PWR,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,
-            KC_NO,   KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_NO,
-                     KC_TRNS, KC_4,   KC_5,   KC_6,    KC_PPLS, KC_NO,
-            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_TRNS,
-                              KC_TRNS,KC_DOT, KC_0,    KC_PEQL, KC_NO,
-       KC_TRNS  , KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
-};
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-}
diff --git a/keyboards/ergodox/keymaps/dvorak_emacs_software/readme.md b/keyboards/ergodox/keymaps/dvorak_emacs_software/readme.md
deleted file mode 100644 (file)
index 0e1e94f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# Ergodox Dvorak Layout with emacs binding in mind - software version
-
-This configuration is the same as the dvorak_emacs layout, but using a sofware dvorak configuration
-instead of a firmware configuration. This layout is for those who run their computer in dvorak mode.
-
- * Control & Alt key on the thumbs (activated if pressed with another key).
- * In the same way, "U" and "R" are the shift modifier if pressed with another key.
- * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key.
- * Software layout set to english.
-
-## Keymap Layers
- - L0: dvorak with some customizations (see layout below)
- - L1: auxiliary keys (includes function keys, numpad...)
-
-
-### Keymap 0: Base layer
-Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
-|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
-|   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
-|--------|------|------|------|------|------|   {  |           |   }  |------|------|------|------|------|--------|
-|  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
-|--------|------|------|------|------|------| LGUI |           | LGUI |------|------|------|------|------|--------|
-| {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
-`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | HOME |  END |       | LEFT | RIGHT|
-                                ,------|------|------|       |------|--------|------.
-                                | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
-                                |  /   |  /   |------|       |------|   /    |  /   |
-                                | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
-                                `--------------------'       `----------------------'
-
-</pre></code>
-
-### Keymap 1: Aux layer
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
-|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
-|  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
-|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
-|        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
-|--------|------|------|------|------|------|      |           |PSCR  |------|------|------|------|------|--------|
-|  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
-`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
-  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
-  `----------------------------------'                                       `----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       | TRANS| TRANS|       | TRANS| TRANS|
-                                ,------|------|------|       |------|------|------.
-                                |      |      | TRANS|       | TRANS|      |      |
-                                |TRANS |TRANS |------|       |------| TRANS| TRANS|
-                                |      |      | TRANS|       | TRANS|      |      |
-                                `--------------------'       `--------------------'
-
-</pre></code>
-
-
-
-## Generation of .hex file
-> In the "qmk_firmware/keyboards/ergodox" directory.
-
-> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware".
-
-> Flash with `teensy_loader` binary
diff --git a/keyboards/ergodox/keymaps/dvorak_intl_squisher/keymap.c b/keyboards/ergodox/keymaps/dvorak_intl_squisher/keymap.c
deleted file mode 100644 (file)
index 89eae52..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | BrBck|           | Play |   6  |   7  |   8  |   9  |   0  | \ / L2 |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Esc    |   '  |   ,  |   .  |   P  |   Y  | Del  |           | Ins  |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1| LAlt | LGui | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | App  | L1   |       | L2   |PrntScr |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space| Tab  |------|       |------| AltShf |Enter |
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_WBAK,
-        KC_ESC,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   KC_DELT,
-        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_LALT,      KC_LGUI,  KC_LEFT,KC_RGHT,
-                                              CTL_T(KC_APP),  TG(1),
-                                                              KC_HOME,
-                                               KC_SPC,KC_TAB,KC_END,
-        // right hand
-             KC_MPLY,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             LT(MDIA, KC_BSLS),
-             KC_INS,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
-             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             TG(2),        KC_PSCREEN,
-             KC_PGUP,
-             KC_PGDN,RALT(KC_RSFT), KC_ENT
-    ), 
-/* Keymap 1: Symbol & Media Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Prev | Next |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |VolUp |      |      |
- *                                 |      |      |------|       |------| Mute |      |
- *                                 |      |      |      |       |VolDn |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MNXT,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_VOLU,
-       KC_VOLD, KC_MUTE, KC_TRNS
-),
-/* Keymap 2: QWERTY Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl|        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(  // layer 0 : default
-        // left hand
-        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,        KC_Q,         KC_W,      KC_E,   KC_R,   KC_T,   KC_TRNS,
-        KC_TRNS,        KC_A,         KC_S,      KC_D,   KC_F,   KC_G,
-        KC_TRNS,        CTL_T(KC_Z),  KC_X,      KC_C,   KC_V,   KC_B,   KC_TRNS,
-        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-        // right hand
-        KC_TRNS,     KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
-        KC_TRNS,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_TRNS,
-                     KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_TRNS,
-        KC_TRNS,     KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_TRNS,
-                             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
-        KC_TRNS, KC_TRNS,
-        KC_TRNS,
-        KC_TRNS, KC_TRNS, KC_TRNS
-    ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/dvorak_intl_squisher/readme.md b/keyboards/ergodox/keymaps/dvorak_intl_squisher/readme.md
deleted file mode 100644 (file)
index 7a48bf5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# ErgoDox EZ Dvorak International Squisher
-
-Dvorak layout adjusted with several (linux) applications in mind:
-
-* Easier Escape for VIM
-* Windows/Super key for awesome WM
-* Alt+Shift for international characters
-* PrintScreen for sys-rq
-* Insert for the X11 clip-board
-
-Major layer changes:
-
-* Common multimedia keys are integrated into layer 0, less common into layer 1
-* No mouse keys
-* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users)
-
-Known issues:
-
-* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
-  entirely clear...)
-
-![layer0](https://i.imgur.com/AL70X44.png)
-![layer1](https://i.imgur.com/k1DcUdt.png)
-![layer2](https://i.imgur.com/nK80mKf.png)
-
-## Changelog
-
-* 2016-03-29
-  * Initial release
diff --git a/keyboards/ergodox/keymaps/dvorak_plover/README.md b/keyboards/ergodox/keymaps/dvorak_plover/README.md
deleted file mode 100644 (file)
index c8287b0..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Dvorak support, plover support, gaming support
-
-I'm used to the Kinesis, so originally I was just going to patch up
-the thumb keys to be more familiar. But the ergodox is really well
-suited to NKRO support in Plover, so I added a layer for that, and
-then I remembered that dvorak can be really annoying for video
-games (try to reach WASD), so I added a layer for that.
-
-The result is probably a bit idiosyncratic, but it works for me.
-
-(I also don't have any press/hold distinction keys, because that
-confuses my fuzzy little brain.)
-
-Contributed by seebs (seebs@seebs.net)
diff --git a/keyboards/ergodox/keymaps/dvorak_plover/keymap.c b/keyboards/ergodox/keymaps/dvorak_plover/keymap.c
deleted file mode 100644 (file)
index d050560..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define PLVR 2 // media keys
-#define QWRT 3 // qwerty layer for gaming
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L2  |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LGui   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
- * |--------+------+------+------+------+------| Esc  |           |  L3  |------+------+------+------+------+--------|
- * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Lalt  |  Grv |      | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | LCtrl| Alt  |       | LGui | RCtrl  |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 |Backsp|Delete|------|       |------| Enter  |Space |
- *                                 |   ace|      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_ESC,
-        KC_TAB,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   MO(SYMB),
-        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        KC_SCLN,        KC_Q,    KC_J,   KC_K,   KC_X,   KC_ESC,
-        KC_LALT,        KC_GRV,         KC_ESC,  KC_LEFT,KC_RGHT,
-                                               KC_LCTL,  KC_LALT,
-                                                              KC_HOME,
-                                               KC_BSPC,KC_DEL,KC_END,
-        // right hand
-            KC_ESC,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
-             TG(PLVR),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
-             TG(QWRT),KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,             KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT,
-             KC_LGUI,        KC_RCTL,
-             KC_PGUP,
-             KC_PGDN,KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |  KP7 |  KP8 | KP9  |  KP* |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |  KP4 |  KP5 | KP6  |  KP+ |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |  KP1 |  KP2 | KP3  |  KP/ |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |  KP. | KP0  |  KP= |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_P7,  KC_P8,   KC_P9,   KC_PAST, KC_F12,
-                KC_DOWN, KC_P4,  KC_P5,   KC_P6,   KC_PPLS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_P1,  KC_P2,   KC_P3,   KC_PSLS, KC_TRNS,
-                         KC_TRNS,KC_PDOT,  KC_P0,   KC_PEQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   1  |   2  |   3  |   4  |   5  |      |           | L2   |  6   |  7   |   8  |   9  |  0   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   c  |   v  |------|       |------|  n   |  m   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-
-[PLVR] = KEYMAP(  // layout: layer 2: Steno for Plover
-        // left hand
-        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
-        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
-        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
-        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                                      KC_FN4, KC_NO,
-                                           KC_NO,
-                                 KC_C,   KC_V,   KC_NO,
-        // right hand
-               KC_NO,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
-               TG(2),   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
-                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
-               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
-                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
-        KC_TRNS, KC_TRNS,
-        KC_TRNS,
-        KC_NO,  KC_N,   KC_M
-),
-/* Keymap 3: qwerty-ish
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LGui   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  LGui  |
- * |--------+------+------+------+------+------| Spc  |           |  L3  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Lalt |  Grv |  '"  | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | LCtrl| LAlt |       | LGui | RCtrl  |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 |Backsp|Delete|------|       |------| Enter  |Space |
- *                                 |   ace|      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[QWRT] = KEYMAP(  // layer 3: qwerty for gaming
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_SPACE,
-        KC_LALT,      KC_GRV,      KC_QUOT,  KC_LEFT,KC_RGHT,
-                                                                                       KC_LCTL,  KC_LALT,
-                                                                                                      KC_HOME,
-                                                                                       KC_BSPC,KC_DEL,KC_END,
-        // right hand
-             KC_ESC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             KC_NO,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
-             TG(QWRT),    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT,
-              KC_LGUI,        KC_RCTL,
-              KC_PGUP,
-              KC_PGDN,KC_ENT, KC_SPC
-    ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-               case 3:
-                       ergodox_right_led_3_on();
-                       break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/Makefile b/keyboards/ergodox/keymaps/dvorak_programmer/Makefile
deleted file mode 100644 (file)
index 44d7022..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-BOOTMAGIC_ENABLE=no
-COMMAND_ENABLE=no
-SLEEP_LED_ENABLE=no
-FORCE_NKRO = yes
-DEBUG_ENABLE = no
-CONSOLE_ENABLE = no
-TAP_DANCE_ENABLE = no
-MOUSEKEY_ENABLE = yes
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md
deleted file mode 100644 (file)
index 3672246..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-Dvorak Programmer Layout
-========================
-
-This is a dvorak-only layout. The overall philosophy is that the left hand contains a number of layer-switching shortcuts, and the right hand key codes vary based on the layer selected.
-
-Layers
-------
-
-* BASE: this is where you type.
-* SHELL_NAV: hold down the Tab key to access shell/terminal navigation shorcuts such as forward/backward word, history, Ctrl+C, screen tab movement.
-* KEY_NAV: arrow key movement with backward/forward word support, and copy/paste.
-* KEY_SEL: same as above, but every movement shift-selects.
-* NUMBER: keypad layer.
-* SYMBOL: all the symbols.
-* BRACKET: special brackets-only layer for programming. Activated by pressing left capslock (OSL)
-* SHORTCUTS: sends Hyper keys for Autohotkey to interpret. I use this to switch between specific apps.
-* MOUSE: use mouse keys
-
-Updates
--------
-
-2017/02/10:
-* Made left shift an MO for SHELL_NAV, and symbol+right shift CAPSLOCK. Made all modifiers OSM.
-
-2017/01/28:
-* Made the capslock key a dual momentary layer activation for BRACKETS and SHELL_NAV. One keypress held down for BRACKETS, one keypress, released and then held down for SHELL_NAV
-
-2017/01/22:
-* Made brackets toggle an OSL on the left capslock
-* Added SHELL_LAYER
-
-2016/12/10:
-* toggle for brackets layer is now on left thumb cluster.
-
-2016/11/05:
-* removed brackets anywhere but in brackets layer
-* added mouse layer back in
-* put semicolon-newline and end-newline on symbol layer
-* replaced all HYPR with MEH, added more shortcut keys
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c
deleted file mode 100644 (file)
index d299d02..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-
-#include "ergodox.h"
-#include "led.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_code.h"
-
-#define BASE    0 // default layer
-#define SHELL_NAV 2
-#define KEY_NAV 3 // key navigation layer
-#define KEY_SEL 4 // key selection layer
-#define NUMBER  5  // number layer
-#define SYMBOL  6
-#define BRACKETS  7
-#define SHORTCUTS 8
-#define MOUSE 9
-
-// macros
-#define MC_COPY_LINE  0
-#define MC_CUT_LINE   1
-#define MC_PASTE_LINE 2
-#define MC_NEW_SEARCH_TAB 3
-#define SCREEN_TAB_LEFT 4
-#define SCREEN_TAB_RIGHT 5
-#define SCREEN_NEW_TAB 6
-#define SWITCH_NDS 7
-#define SCREEN_COPY_MODE 8
-#define SCREEN_PASTE 9
-#define OPEN_CLOSE_PAREN 10
-#define OPEN_CLOSE_BRACKET 11
-#define OPEN_CLOSE_CURLY 12
-#define OPEN_CLOSE_SINGLE_QUOTE 13
-#define OPEN_CLOSE_DOUBLE_QUOTE 14
-#define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15
-#define SEMICOLON_NEWLINE 16
-#define END_NEWLINE 17
-
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// base layer
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,                    KC_F1,          KC_F2,       KC_F3,        KC_F4,       KC_F5,       KC_F6,
-        KC_TAB,                    KC_QUOT,        KC_COMM,     KC_DOT,       KC_P,        KC_Y,        MO(KEY_SEL),
-        MO(BRACKETS),              KC_A,           KC_O,        KC_E,         KC_U,        KC_I,
-        MO(SHELL_NAV),             KC_SCLN,        KC_Q,        KC_J,         KC_K,        KC_X,        MO(KEY_NAV),
-                   OSL(SHORTCUTS),OSM(MOD_LCTL), OSM(MOD_LALT),OSL(SYMBOL),MO(NUMBER),  
-                                              // thumb cluster
-                                               OSM(MOD_LSFT), RCTL(KC_S),
-                                                          RCTL(KC_DEL),
-                                               KC_BSPC,RCTL(KC_BSPC),KC_DEL,
-        // right hand
-             KC_F7,       KC_F8,       KC_F9,       KC_F10,        KC_F11,       KC_F12,       KC_BSLS,
-             KC_PGUP,     KC_F,        KC_G,        KC_C,          KC_R,         KC_L,         KC_SLSH,
-                          KC_D,        KC_H,        KC_T,          KC_N,         KC_S,         KC_MINS,
-             KC_PGDN,     KC_B,        KC_M,        KC_W,          KC_V,         KC_Z,         OSM(MOD_LSFT),
-                                  // lower keys - browser tab control
-                                  RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W),
-             // thumb cluster
-             KC_HOME,KC_END,
-             KC_UP,
-             KC_DOWN,KC_ENT, KC_SPC
-    ),
-     
-
-        
-        
-// shell navigation layer
-[SHELL_NAV] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-               // bottom row
-               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       // thumb cluster
-                                       KC_TRNS,KC_TRNS,
-                                               LALT(KC_D),
-                               KC_TRNS,RCTL(KC_W),KC_TRNS,
-       // right hand
-       KC_TRNS,    KC_TRNS,        KC_TRNS,             KC_TRNS,         KC_TRNS,         KC_TRNS,        KC_TRNS,
-       RCTL(KC_L), RCTL(KC_W),     KC_HOME,             KC_UP,           KC_END,          LALT(KC_D),     RCTL(KC_R),
-                   LALT(KC_B),     KC_LEFT,             KC_DOWN,         KC_RIGHT,        LALT(KC_F),     LALT(KC_DOT),
-       RCTL(KC_C), RCTL(KC_U),     M(SCREEN_COPY_MODE), M(SCREEN_PASTE), MEH(KC_V),      RCTL(KC_K),     M(SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND),
-                // bottom row
-                 M(SCREEN_TAB_LEFT), M(SCREEN_TAB_RIGHT), M(SCREEN_NEW_TAB),  KC_TRNS,    KC_TRNS,
-       // thumb cluster
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-    
-// key navigation layer
-[KEY_NAV] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-               // bottom row
-               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       // thumb cluster
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,        KC_TRNS,
-       KC_TRNS, KC_PGDN,        KC_HOME,    KC_UP,      KC_END,     KC_PGUP,        M(MC_COPY_LINE),
-                RCTL(KC_LEFT),  KC_LEFT,    KC_DOWN,    KC_RIGHT,   RCTL(KC_RIGHT), M(MC_CUT_LINE),
-       KC_TRNS, KC_TRNS,        RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_TRNS,        M(MC_PASTE_LINE),
-                // bottom row
-                KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
-       // thumb cluster
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-// key selection layer
-[KEY_SEL] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-               // bottom row
-               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       // thumb cluster
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS,       KC_TRNS,             KC_TRNS,       KC_TRNS,       KC_TRNS,        KC_TRNS,              KC_TRNS,
-       RSFT(KC_PGUP), RSFT(KC_PGDN),       RSFT(KC_HOME), RSFT(KC_UP),   RSFT(KC_END),   RSFT(KC_PGUP),        M(MC_COPY_LINE),
-                      RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), M(MC_CUT_LINE),
-       RSFT(KC_PGDN), KC_TRNS,             RCTL(KC_C),    RCTL(KC_X),    RCTL(KC_V),     KC_TRNS,              M(MC_PASTE_LINE),
-                // bottom row
-                KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
-       // thumb cluster
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-// number layer
-[NUMBER] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-               // bottom row
-               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       // thumb cluster
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_PLUS,  KC_7,    KC_8,    KC_9,     KC_ASTR, KC_TRNS,
-                KC_MINS,  KC_4,    KC_5,    KC_6,     KC_SLSH, KC_TRNS,
-       KC_TRNS, KC_EQUAL, KC_1,    KC_2,    KC_3,     KC_COLN, KC_TRNS,
-                               // bottom row
-                                KC_0, KC_DOT, KC_COMMA, KC_TRNS,  KC_TRNS,
-       // thumb cluster
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-
-[SYMBOL] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,       
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_PLUS, KC_AMPR, KC_ASTR, KC_GRAVE,KC_TILD, KC_TRNS,
-                KC_MINS, KC_DLR,  KC_PERC, KC_CIRC, KC_PIPE, KC_TRNS,
-       KC_TRNS, KC_EQUAL,KC_EXLM, KC_AT,   KC_HASH, KC_TRNS, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-       M(SEMICOLON_NEWLINE), M(END_NEWLINE),
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-[BRACKETS] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,             KC_TRNS,            KC_TRNS,               KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,M(OPEN_CLOSE_CURLY), M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_BRACKET), KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_LPRN, KC_RPRN,            KC_LBRC,            KC_RBRC,               KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,             KC_LCBR,            KC_RCBR,               KC_TRNS,KC_TRNS,       
-       KC_TRNS,KC_TRNS,KC_TRNS,             KC_TRNS,            KC_TRNS,
-                                        KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS, KC_TRNS, M(OPEN_CLOSE_BRACKET),M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_CURLY),KC_TRNS,KC_TRNS,
-                KC_TRNS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-[SHORTCUTS] = KEYMAP(
-       // left hand
-       KC_NO,  MEH(KC_F1), MEH(KC_F2), MEH(KC_F3),  MEH(KC_F4), MEH(KC_F5), MEH(KC_F6),
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,       
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                         MEH(KC_0),MEH(KC_1),
-                                                   MEH(KC_2),
-                               MEH(KC_3),MEH(KC_4),MEH(KC_5),
-       // right hand
-       MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10),  MEH(KC_F11), MEH(KC_F12),  M(SWITCH_NDS),
-       KC_TRNS, MEH(KC_A), MEH(KC_B),    MEH(KC_C),    MEH(KC_D),    MEH(KC_E), MEH(KC_F),
-                MEH(KC_G), MEH(KC_H),    MEH(KC_I),    MEH(KC_J),    MEH(KC_K), MEH(KC_L),
-       KC_TRNS, MEH(KC_M), MEH(KC_N),    MEH(KC_O),    MEH(KC_P),    MEH(KC_Q), KC_CAPSLOCK,
-                           MEH(KC_S),    MEH(KC_T),    MEH(KC_U),    MEH(KC_V), MEH(KC_X),
-       MEH(KC_6), MEH(KC_7),
-       MEH(KC_8),
-       MEH(KC_9), MEH(KC_Y), MEH(KC_Z)
-),
-
-
-[MOUSE] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-          KC_TRNS, KC_BTN1, KC_BTN2
-),
-
-};
-
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case MC_COPY_LINE:
-            if (record->event.pressed) {
-                return MACRO( T(HOME), D(LSFT), T(END), U(LSFT), D(LCTL), T(C), U(LCTL), END);
-            }
-            break;
-        case MC_CUT_LINE:
-            if (record->event.pressed) {
-                return MACRO( T(HOME), D(LSFT), T(END), U(LSFT), D(LCTL), T(X), U(LCTL), END);
-            }        
-            break;
-        case MC_PASTE_LINE:
-            if (record->event.pressed) {
-                return MACRO( T(END), T(ENTER), D(LCTL), T(V), U(LCTL), END);
-            }                
-            break;
-        case MC_NEW_SEARCH_TAB:
-             if (record->event.pressed) {
-                return MACRO( D(LCTL), T(T), T(K), U(LCTL), END);
-            }
-            break;
-        case SCREEN_TAB_LEFT:
-             if (record->event.pressed) {
-                return MACRO( D(LCTL), T(A), U(LCTL), T(P), END);
-            }        
-            break;
-        case SCREEN_TAB_RIGHT:
-             if (record->event.pressed) {
-                return MACRO( D(LCTL), T(A), U(LCTL), T(N), END);
-            }                    
-            break;
-        case SCREEN_NEW_TAB:
-             if (record->event.pressed) {
-                return MACRO( D(LCTL), T(A), U(LCTL), T(C), END);
-            }                                
-        break;
-        case SCREEN_COPY_MODE:
-            if (record->event.pressed) {
-                return MACRO( D(LCTL), T(A), U(LCTL), T(ESC), END);
-            }
-        break;
-        case SCREEN_PASTE:
-            if (record->event.pressed) {
-                return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END); 
-            }
-        break;        
-        case SWITCH_NDS:
-             if (record->event.pressed) {
-                return MACRO( D(LSFT), T(F11), U(LSFT), W(255), D(LALT), T(TAB), U(LALT), END);
-            }                                
-        break;        
-        case OPEN_CLOSE_PAREN:
-            if (record->event.pressed) {
-                return MACRO( D(LSFT), T(9), T(0), U(LSFT), T(LEFT), END);
-            }
-        break;
-        case OPEN_CLOSE_BRACKET:
-            if (record->event.pressed) {
-                return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
-            }
-        break;        
-        case OPEN_CLOSE_CURLY:
-            if (record->event.pressed) {
-                return MACRO( D(LSFT), T(LBRC), T(RBRC), U(LSFT), T(LEFT), END);
-            }
-        break;                
-        case OPEN_CLOSE_SINGLE_QUOTE:
-            if (record->event.pressed) {
-                return MACRO( T(QUOT), T(QUOT), T(LEFT), END);
-            }
-        break;        
-        case OPEN_CLOSE_DOUBLE_QUOTE:
-            if (record->event.pressed) {
-                return MACRO( D(LSFT), T(QUOT), T(QUOT), U(LSFT), T(LEFT), END);
-            }
-        break;                        
-        case SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND:
-            if (record->event.pressed) {
-                return MACRO( T(UP), T(HOME), D(LALT), T(D), U(LALT), END);
-            }
-        break;                                
-               case SEMICOLON_NEWLINE:
-            if (record->event.pressed) {
-                return MACRO( T(END), T(SCLN), T(ENTER), END);
-            }          
-               break;
-               case END_NEWLINE:
-            if (record->event.pressed) {
-                return MACRO( T(END), T(ENTER), END);
-            }          
-               break;  
-               
-        
-      }
-    return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-    return;
-};
-
-void led_set_user(uint8_t usb_led) {
-    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
-        ergodox_right_led_1_on();
-    } else {
-        ergodox_right_led_1_off();
-    }
-}
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case NUMBER:
-        case SYMBOL:
-               case BRACKETS:
-               //case SHELL_LAYER:             
-            ergodox_right_led_2_on();
-            break;
-        case KEY_NAV:
-        case KEY_SEL:
-            ergodox_right_led_3_on();
-            break;        
-        case SHORTCUTS:
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        default:
-            // none
-            break;
-    } 
-    return;
-};
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
deleted file mode 100644 (file)
index 8d65f7c..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "keymap_nordic.h"
-#include "keymap_norwegian.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // mouse keys
-#define DEVL 3 // dev keys
-
-#define MACRO_PUBLIC 10
-#define MACRO_PRIVATE 11
-#define MACRO_PROT 12
-
-#define MACRO_SHARED 13
-#define MACRO_CONST 14
-#define MACRO_DIM 15
-#define MACRO_STRING 16
-#define MACRO_INT 17
-#define MACRO_DEC 18
-#define MACRO_BOOL 19
-
-#define MACRO_RETURN 20
-#define MACRO_NOTHING 21
-#define MACRO_TODO 22
-
-#define MACRO_SAVE 24
-#define MACRO_BUILD 25
-#define MACRO_DEBUG 26
-
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   L3   |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   -  |   ,  |   .  |   P  |   Y  |  LT1 |           |  LT1 |   F  |   G  |   C  |   R  |   L  |   Å    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | WIN    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   Ä    |
- * |--------+------+------+------+------+------|  LT2 |           |  LT2 |------+------+------+------+------+--------|
- * | LShift |   Ö  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | CTRL |  L1  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        MO(DEVL),       KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        NO_MINS,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(SYMB),
-        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(MDIA),
-        CTL_T(KC_NO),   MO(SYMB),       LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLASH,
-             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             NO_AM,
-                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             NO_AE,
-             TG(MDIA),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   @  |   {  |   }  |   [  |   ]  |      |           |      |   <  |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   (  |   )  |   \  |   /  |------|           |------|   >  |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      | UND  | CUT  | COP  | PAS  |      |           |      |   ?  |   1  |   2  |   3  |   %  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   .  |   0  |   =  |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),      KC_F1,   KC_F2,    KC_F3,    KC_F4,     KC_F5,    KC_TRNS,
-       KC_TRNS,   NO_AT,   ALGR(KC_7),  ALGR(KC_0),  NO_LBRC,   NO_RBRC,  KC_TRNS,
-       KC_TRNS,   KC_HASH, NO_LPRN,  NO_RPRN,  ALGR(KC_MINS), NO_SLSH,
-       KC_TRNS,   KC_TRNS, LCTL(KC_Z),  LCTL(KC_X),  LCTL(KC_C),    LCTL(KC_V),  KC_TRNS,
-       KC_TRNS,   KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, NO_LESS,   KC_7,   KC_8,    KC_9,    KC_KP_ASTERISK, KC_F12,
-                LSFT(NO_LESS), KC_4,   KC_5,    KC_6,    KC_KP_PLUS, KC_TRNS,
-       KC_TRNS, NO_QUES, KC_1,   KC_2,    KC_3,    LSFT(KC_5), KC_TRNS,
-                         KC_DOT,KC_0,  LSFT(KC_0),    KC_TRNS,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 3: Developer keys in vb.net
- * shortened in layout beneth, for example int-> integer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        | Save |Build |Debug |      |      |      |           |      | bool | int  |string| dec  | Todo |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------| priv | publ |shared| prot |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      | const| dim  |return|nothin|      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[DEVL] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, M(MACRO_SAVE), M(MACRO_BUILD), M(MACRO_DEBUG), KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  M(MACRO_BOOL), M(MACRO_INT), M(MACRO_STRING), M(MACRO_DEC), M(MACRO_TODO), KC_TRNS,
-                 M(MACRO_PRIVATE), M(MACRO_PUBLIC), M(MACRO_SHARED), M(MACRO_PROT), KC_TRNS, KC_TRNS,
-       KC_TRNS,  M(MACRO_CONST), M(MACRO_DIM), M(MACRO_RETURN), M(MACRO_NOTHING), KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-            if (record->event.pressed) {
-                register_code(KC_RSFT);
-            } else {
-                unregister_code(KC_RSFT);
-            }
-            break;
-        case MACRO_PUBLIC:
-                       if (record->event.pressed) {
-                               return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
-                       } 
-                       break;
-               case MACRO_PRIVATE:
-                       if (record->event.pressed) {
-                               return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
-                       } 
-                       break;
-        case MACRO_PROT:
-                       if (record->event.pressed) {
-                               return MACRO( T(P), T(R), T(O), T(T), T(E), T(C), T(T), T(E), T(D), T(SPACE),END);
-                       } 
-                       break;
-               case MACRO_SHARED:
-                       if (record->event.pressed) {
-                               return MACRO( T(S), T(H), T(A), T(R), T(E), T(D), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_CONST:
-                       if (record->event.pressed) {
-                               return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
-                       } 
-                       break;          
-               case MACRO_DIM:
-                       if (record->event.pressed) {
-                               return MACRO( T(D), T(I), T(M), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_STRING:
-                       if (record->event.pressed) {
-                               return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
-                       } 
-                       break;          
-               case MACRO_BOOL:
-                       if (record->event.pressed) {
-                               return MACRO( T(B), T(O), T(O), T(L), T(E), T(A), T(N), T(SPACE), END);
-                       } 
-                       break;          
-               case MACRO_INT:
-                       if (record->event.pressed) {
-                               return MACRO( T(I), T(N), T(T), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_DEC:
-                       if (record->event.pressed) {
-                               return MACRO( T(D), T(E), T(C), T(I), T(M), T(A), T(L), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_RETURN:
-                       if (record->event.pressed) {
-                               return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), T(SPACE), END);
-                       } 
-                       break;
-               case MACRO_NOTHING:
-                       if (record->event.pressed) {
-                               return MACRO( T(N), T(O), T(T), T(H), T(I), T(N), T(G), T(SPACE), END);
-                       }               
-               case MACRO_TODO:
-                       if (record->event.pressed) {
-                               return MACRO( KC_BSLASH, D(LSHIFT) ,T(T), T(O), T(D), T(O), KC_DOT, U(LSHIFT),  T(SPACE),END);
-                       } 
-                       break;  
-        case MACRO_SAVE:
-                       if (record->event.pressed) {
-                               return MACRO( D(LCTL) ,T(S), U(LCTL),END);
-                       } 
-                       break;  
-        case MACRO_BUILD:
-                       if (record->event.pressed) {
-                               return MACRO(  D(LCTL), D(LSHIFT) ,T(B), U(LSHIFT), U(LCTL),END);
-                       } 
-                       break;
-        case MACRO_DEBUG:
-                       if (record->event.pressed) {
-                               return MACRO( KC_F5 ,END);
-                       } 
-                       break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md b/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md
deleted file mode 100644 (file)
index 552fa0e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# ErgoDox EZ Dvorak Programmer SWEDISH
-
-Dvorak layout adjusted for a suitable programmer layout and swedish special characters added:
-
-* åäö characters added
-* Layout for common vb.net keywords
-* Common Visual Studio commands like Save, Build, Debug
-
-TODO:
-
-* (Layer 4 is qwerty (for easier gaming & less fortunate keyboard users)) Like this idea, will add it later on
-
-Known issues:
-
-* Keymap 2 modifier has not gotten its place yet..
-* Print screen, where?
-
-
-## Changelog
-
-* 2017-05-16
-  * Initial release
-
-# Author
-Christian Westerlund
-cwesterlund @ github
-
-Thanks to the author of keymap csharp_dev for inspiration!
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/dvorak_spanish/keymap.c b/keyboards/ergodox/keymaps/dvorak_spanish/keymap.c
deleted file mode 100755 (executable)
index 6d7adf9..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-/******************************************************************************************
- * SPANISH DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
- * Layer 1: auxiliary keys
- * Layer 2: full qwerty layout
- ******************************************************************************************
- * IMPORTANT: Software layout must be set to SPANISH QWERTY to work properly
- *****************************************************************************************/
-
-// LAYERS
-#define BASE    0 // dvorak layout (default)
-#define AUX     1 // auxiliary keys
-#define QWERTY  2 // qwerty layout
-
-// MACROS
-#define OBRACE 0 // key { or shift
-#define CBRACE 1 // key } or shift
-#define OBRACK 2 // key [ or left alt
-#define CBRACK 3 // key ] or left alt
-#define CAPS   4 // caps lock
-
-// LEDS
-#define USB_LED_NUM_LOCK    0
-#define USB_LED_CAPS_LOCK   1
-#define USB_LED_SCROLL_LOCK 2
-#define USB_LED_COMPOSE     3
-#define USB_LED_KANA        4
-
-// TIMERS
-#define KEY_TAP_FAST 85
-#define KEY_TAP_SLOW 95
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base layer
- * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | F1/~L1 |   .  |   ,  |   Ñ  |   P  |   Y  |MEH_T |           |  L1  |   F  |   G  |   C  |   H  |   L  |ALL_T/+ |
- * |--------+------+------+------+------+------| DEL  |           | ~L1  |------+------+------+------+------+--------|
- * |Esc/Ctrl|   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   R  |   T  |   N  |   S  |'/RCtrl |
- * |--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
- * | {/LSft |   -  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |F5/CAG|F6/~L1|       |F7/~L1|F8/CAG|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |F4/CA |       |F11/CA|        |      |
- *                                 | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
- *                                 |      |      |F3/SA |       |F12/SA|        |      |
- *                                 `--------------------'       `----------------------'
- *  CAG = CTRL-ALT-GUI
- *   CA = CTRL-ALT
- *   SA = SHIFT-ALT
- *
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_GRAVE,       KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NONUS_BSLASH,
-        LT(AUX, KC_F1), KC_DOT, KC_COMM,KC_SCLN,KC_P,   KC_Y,   MEH_T(KC_DEL),
-        CTL_T(KC_ESC),  KC_A,   KC_O,   KC_E,   KC_U,   KC_I,
-        M(OBRACE),      KC_SLSH,KC_Q,   KC_J,   KC_K,   KC_X,   KC_LGUI,
-        M(OBRACK),      KC_HOME,KC_PGDN,KC_PGUP,KC_END,
-                                                           LCAG_T(KC_F5),  LT(AUX, KC_F6),
-                                                           MT((MOD_LALT | MOD_LCTL), KC_F4),
-                                           KC_ENT,KC_TAB,MT((MOD_LALT | MOD_LSFT), KC_F3),
-        // right hand
-                    KC_EQL,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINUS,
-                    KC_FN1,    KC_F,   KC_G,   KC_C,   KC_H,   KC_L,   ALL_T(KC_RBRACKET),
-                               KC_D,   KC_R,   KC_T,   KC_N,   KC_S,   CTL_T(KC_QUOTE),
-                    KC_RALT,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,   M(CBRACE),
-                                       KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,M(CBRACK),
-        LT(AUX, KC_F7), LCAG_T(KC_F8),
-        MT((MOD_LALT | MOD_LCTL), KC_F11),
-        MT((MOD_LALT | MOD_LSFT), KC_F12),KC_BSPC, KC_SPC
-    ),
-/* Keymap 1: Aux layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  | SLEEP            | PWR  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  <   |  >   | MsUp |      |      |      |           | ~L0  |      |   7  |   8  |   9  |   *  |  `^    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |   4  |   5  |   6  |   +  |   Ç    |
- * |--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
- * |CAPSLOCK|      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   /  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V|                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      | Play |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       | VolUp|      |      |
- *                                 | Lclk | Rclk |------|       |------| Prev | Next |
- *                                 |      |      |  L2  |       | VolDn|      |      |
- *                                 `--------------------'       `--------------------'
- */
-[AUX] = KEYMAP(
-       // left hand
-       KC_NO  , KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_SLEP,
-       KC_TRNS, KC_NONUS_BSLASH, LSFT(KC_NONUS_BSLASH), KC_MS_U, KC_NO, KC_NO, KC_NO,
-       KC_NO  , KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO  ,
-       M(CAPS), KC_NO, KC_NO  , KC_NO  , KC_NO  , KC_NO  , KC_NO,
-       LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V),
-                                                            KC_NO  , KC_TRNS,
-                                                                       KC_NO,
-                                                KC_BTN1, KC_BTN2, TG(QWERTY),
-       // right hand
-            KC_PWR,  KC_F6,   KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,
-            KC_TRNS, KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_LBRACKET,
-                     KC_NO,   KC_4,   KC_5,   KC_6,    KC_PPLS, KC_BSLASH,
-            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_NO,
-                              KC_NO  ,KC_DOT, KC_0,    KC_PEQL, KC_NO,
-       KC_TRNS, KC_MPLY,
-       KC_VOLU,
-       KC_VOLD, KC_MPRV, KC_MNXT
-),
-/* Keymap 2: QWERTY layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  TRANS |   Q  |   W  |   E  |   R  |   T  |MEH_T |           | TRANS|   Y  |   U  |   I  |   O  |   P  |ALL_T/+ |
- * |--------+------+------+------+------+------| DEL  |           |      |------+------+------+------+------+--------|
- * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ñ  |'/RCtrl |
- * |--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
- * | {/LSft |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   -  | }/RSft |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |F5/CAG| TRANS|       | TRANS|F8/CAG|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |F4/CA |       |F11/CA|        |      |
- *                                 | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
- *                                 |      |      | TRANS|       |F12/SA|        |      |
- *                                 `--------------------'       `----------------------'
- *  CAG = CTRL-ALT-GUI
- *   CA = CTRL-ALT
- *   SA = SHIFT-ALT
- *
- */
-[QWERTY] = KEYMAP(
-        // left hand
-        KC_GRAVE,       KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NONUS_BSLASH,
-        KC_TRNS,        KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   MEH_T(KC_DEL),
-        CTL_T(KC_ESC),  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
-        M(OBRACE),      KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
-        M(OBRACK),      KC_HOME,KC_PGDN,KC_PGUP,KC_END,
-                                                                  LCAG_T(KC_F5),  KC_TRNS,
-                                                           MT((MOD_LALT | MOD_LCTL), KC_F4),
-                                                                    KC_ENT,KC_TAB,KC_TRNS,
-        // right hand
-                    KC_EQL,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINUS,
-                    KC_TRNS,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   ALL_T(KC_RBRACKET),
-                               KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,CTL_T(KC_QUOTE),
-                    KC_RALT,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,M(CBRACE),
-                                       KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,M(CBRACK),
-        KC_TRNS, LCAG_T(KC_F8),
-        MT((MOD_LALT | MOD_LCTL), KC_F11),
-        MT((MOD_LALT | MOD_LSFT), KC_F12),KC_BSPC, KC_SPC
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
-};
-
-static uint16_t key_timer;
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case OBRACE: {
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                register_code(KC_RSFT);
-            } else {
-                unregister_code(KC_RSFT);
-                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
-                    register_code(KC_RALT);
-                    register_code(KC_QUOTE);
-                    unregister_code(KC_QUOTE);
-                    unregister_code(KC_RALT);
-                }
-            }
-            break;
-        }
-        case CBRACE: {
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                register_code(KC_RSFT);
-            } else { 
-                unregister_code(KC_RSFT);
-                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
-                    register_code(KC_RALT); 
-                    register_code(KC_BSLS); 
-                    unregister_code(KC_BSLS); 
-                    unregister_code(KC_RALT); 
-                }
-            }
-            break;
-        }
-        case OBRACK: {
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                register_code(KC_LALT);
-            } else { 
-                unregister_code(KC_LALT);
-                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
-                    register_code(KC_RALT); 
-                    register_code(KC_LBRACKET); 
-                    unregister_code(KC_LBRACKET); 
-                    unregister_code(KC_RALT); 
-                }
-            }
-            break;
-        }
-        case CBRACK: {
-            if (record->event.pressed) {
-                key_timer = timer_read();
-                register_code(KC_LALT);
-            } else { 
-                unregister_code(KC_LALT);
-                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
-                    register_code(KC_RALT); 
-                    register_code(KC_RBRACKET); 
-                    unregister_code(KC_RBRACKET); 
-                    unregister_code(KC_RALT); 
-                }
-            }
-            break;
-        }
-        case CAPS: {
-            if (record->event.pressed) {
-                register_code(KC_CAPSLOCK);
-            } else { 
-                unregister_code(KC_CAPSLOCK);
-            }
-            break;
-        }
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_3_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-    
-    // Turn the caps lock led on
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
-        ergodox_right_led_1_on();
-    }
-
-}
-
diff --git a/keyboards/ergodox/keymaps/dvorak_spanish/readme.md b/keyboards/ergodox/keymaps/dvorak_spanish/readme.md
deleted file mode 100644 (file)
index e075e3c..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-# Ergodox Spanish Dvorak Layout
- * See spanish dvorak layout [here](http://djelibeibi.unex.es/dvorak/)
- * Software layout must be set to SPANISH QWERTY to work properly
-
-## Keymap Layers
- - L0: spanish dvorak with some customizations (see layout below)
- - L1: auxiliary keys (includes qwerty shortcuts, numpad...)
- - L2: qwerty layout with customizations
-
-
-### Keymap 0: Base layer
-Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-| F1/~L1 |   .  |   ,  |   Ñ  |   P  |   Y  |MEH_T |           |  L1  |   F  |   G  |   C  |   H  |   L  |ALL_T/+ |
-|--------+------+------+------+------+------| DEL  |           | ~L1  |------+------+------+------+------+--------|
-|Esc/Ctrl|   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   R  |   T  |   N  |   S  |'/RCtrl |
-|--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
-| {/LSft |   -  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
-'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
-  |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
-  '----------------------------------'                                       '----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |F5/CAG|F6/~L1|       |F7/~L1|F8/CAG|
-                                ,------|------|------|       |------+--------+------.
-                                |      |      |F4/CA |       |F11/CA|        |      |
-                                | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
-                                |      |      |F3/SA |       |F12/SA|        |      |
-                                '--------------------'       '----------------------'
- CAG = CTRL-ALT-GUI
-  CA = CTRL-ALT
-  SA = SHIFT-ALT
-
-</pre></code>
-
-### Keymap 1: Aux layer
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|        |  F1  |  F2  |  F3  |  F4  |  F5  | SLEEP|           | PWR  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|        |  <   |  >   | MsUp |      |      |      |           | ~L0  |      |   7  |   8  |   9  |   *  |  '^    |
-|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |   4  |   5  |   6  |   +  |   Ç    |
-|--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
-|CAPSLOCK|      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   /  |        |
-'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
-  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V|                                       |      |    . |   0  |   =  |      |
-  '----------------------------------'                                       '----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |      |      |       |      | Play |
-                                ,------|------|------|       |------+------+------.
-                                |      |      |      |       | VolUp|      |      |
-                                | Lclk | Rclk |------|       |------| Prev | Next |
-                                |      |      |  L2  |       | VolDn|      |      |
-                                '--------------------'       '--------------------'
-
-</pre></code>
-
-### Keymap 2: QWERTY layer
-
-<pre><code>
-
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-|  TRANS |   Q  |   W  |   E  |   R  |   T  |MEH_T |           | TRANS|   Y  |   U  |   I  |   O  |   P  |ALL_T/+ |
-|--------+------+------+------+------+------| DEL  |           |      |------+------+------+------+------+--------|
-|Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ñ  |'/RCtrl |
-|--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
-| {/LSft |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   -  | }/RSft |
-'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
-  |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
-  '----------------------------------'                                       '----------------------------------'
-                                       ,-------------.       ,-------------.
-                                       |F5/CAG| TRANS|       | TRANS|F8/CAG|
-                                ,------|------|------|       |------+--------+------.
-                                |      |      |F4/CA |       |F11/CA|        |      |
-                                | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
-                                |      |      | TRANS|       |F12/SA|        |      |
-                                '--------------------'       '----------------------'
- CAG = CTRL-ALT-GUI
-  CA = CTRL-ALT
-  SA = SHIFT-ALT
-
-</pre></code>
-
-
-## Generation of .hex file
-> [Download scripts from here](https://github.com/johgh/keyboard/tree/master/ergodox)
-
-> Execute install.sh and generate.sh scripts.
-
-> Flash with `teensy_loader` binary (should be installed from previous step)
diff --git a/keyboards/ergodox/keymaps/emacs_osx_dk/keymap.c b/keyboards/ergodox/keymaps/emacs_osx_dk/keymap.c
deleted file mode 100644 (file)
index e80f08d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   Grv  |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L2  |   6  |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   -    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | \/LCtrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |'/RCtrl |
- * |--------+------+------+------+------+------| RAlt |           | RAlt |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | ~L1  | LCtrl|  Left| Right| LAlt |                                       | LAlt | Up   | Down | RCtrl|  ~L2 |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Del  | Ins  |       | Esc  | App  |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  LGui  |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
-        CTL_T(KC_BSLS), KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_RALT,
-        MO(SYMB),       KC_LCTRL,     KC_LEFT,KC_RGHT,KC_LALT,
-                                                      KC_DELT,KC_INS,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             TG(MDIA),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_EQL,
-             KC_RBRC,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          CTL_T(KC_QUOT),
-             KC_RALT,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                  KC_LALT,KC_UP,  KC_DOWN,KC_RCTRL,         MO(MDIA),
-             KC_ESC,      KC_APP,
-             KC_PGUP,
-             KC_PGDN,     KC_LGUI, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0  |    0 |   .  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/emacs_osx_dk/readme.md b/keyboards/ergodox/keymaps/emacs_osx_dk/readme.md
deleted file mode 100644 (file)
index bd12c7d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# ErgoDox EZ Emacs-OSX-DeadKeys Configuration
-
-Since I'm an Emacs user, ctrl keys are very important and gets a placement where the usual caps_lock is. There
-are an extra pair of ctrls, just in case there where problems with the holding one's, but not as comfortable.
-
-Gui button takes a predominant place on the thumb cluster, as I'm using a mac os x and it relies heavily on it.
-
-Finally there is also two Right Alts to easily access to accented letters of the spanish alphabet.
-
-![Default](https://i.imgur.com/EDgp9xj.png)
diff --git a/keyboards/ergodox/keymaps/erez_experimental/Makefile b/keyboards/ergodox/keymaps/erez_experimental/Makefile
deleted file mode 100644 (file)
index b673c5c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Having a file like this allows you to override Makefile definitions
-# for your own particular keymap
-
-SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/erez_experimental/config.h b/keyboards/ergodox/keymaps/erez_experimental/config.h
deleted file mode 100644 (file)
index 4da18c6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#define ONESHOT_TAP_TOGGLE 2
-#define ONESHOT_TIMEOUT 300
-
-#undef LEADER_TIMEOUT
-#define LEADER_TIMEOUT 300
-
-#endif
diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c
deleted file mode 100644 (file)
index 13b8240..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-#include <keymap_extras/keymap_colemak.h>
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  RGB_FF00BB // always start with RGB_
-};
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  |Ctrl- |           | Ctrl+|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  | Alt/J|   K  |   L  |; / L2| LGui/' |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * |LShift/(|Z/Ctrl|   X  |   C  |   V  |   B  |   [  |           |  ]   |   N  |   M  |   ,  |   .  |//Ctrl|RShift/)|
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | -/L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Leader|------|       |------| Tab/L1 |Enter |
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,     KC_5,   LCTL(KC_MINS),
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,     KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,     KC_G,
-        KC_LSPO,       CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,     KC_B,   ALL_T(KC_LBRC),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,  KC_RGHT,
-                                              ALT_T(KC_APP),    KC_LGUI,
-                                                                KC_HOME,
-                                                 KC_SPC,KC_LEAD,KC_END,
-        // right hand
-             LCTL(KC_EQL),       KC_6,KC_7,       KC_8,   KC_9,   KC_0,            KC_MINS,
-             TG(SYMB),      KC_Y,KC_U,       KC_I,   KC_O,   KC_P,            KC_BSLS,
-                            KC_H,ALT_T(KC_J),KC_K,   KC_L,   LT(MDIA,KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_RBRC),KC_N,KC_M,       KC_COMM,KC_DOT, CTL_T(KC_SLSH),  KC_RSPC,
-                            KC_UP,           KC_DOWN,KC_LBRC,KC_RBRC,         LT(SYMB,KC_MINS),
-             KC_LALT,       CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,LT(SYMB, KC_TAB), KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   1  |   2  |   3  |   4  |   5  |------|           |------|   &  |   _  |   -  |   ;  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   6  |   7  |   8  |   9  |   0  |      |           |      |   |  |   @  |   =  |   %  |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |NxtTab|PrvTab|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |TOG   |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |VAI   |VAD   |HUI   |       |SAI   |      |MOD   |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |HUD   |       |SAD   |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       RGB_FF00BB, KC_F1,  KC_F2,  KC_F3,      KC_F4,        KC_F5,   KC_TRNS,
-       KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,       KC_TRNS,      KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_1,   KC_2,   KC_3,          KC_4,         KC_5,
-       KC_TRNS, KC_6,   KC_7,   KC_8,          KC_9,         KC_0,    KC_TRNS,
-       KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN),
-                                                                              KC_TRNS,KC_TRNS,
-                                                                                      RGB_HUI,
-                                                                      RGB_VAI,RGB_VAD,RGB_HUD,
-               // right hand
-       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
-                KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_PIPE, KC_AT,   KC_EQL,  KC_PERC,   KC_TRNS, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       RGB_TOG, KC_TRNS,
-       RGB_SAI,
-       RGB_SAD, KC_TRNS, RGB_MOD
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | PgUp | Home | End  | PgDn |      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_PGUP, KC_HOME, KC_END,  KC_PGDN, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),               // FN1 - Momentary Layer 1 (Symbols)
-    [2] = ACTION_MACRO_TAP(0),                         // Eric Tang's Famous Macro!
-    [3] = ACTION_MACRO_TAP(1)                          // Eric Tang's Famous Macro!
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case RGB_FF00BB:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_enable();
-          rgblight_mode(1);
-          rgblight_setrgb(0xff,0x00,0xbb);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-LEADER_EXTERNS();
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-  uint8_t layer = biton32(layer_state);
-
-  ergodox_board_led_off();
-  ergodox_right_led_1_off();
-  ergodox_right_led_2_off();
-  ergodox_right_led_3_off();
-  switch (layer) {
-    // TODO: Make this relevant to the ErgoDox EZ.
-    case 1:
-      ergodox_right_led_1_on();
-      break;
-    case 2:
-      ergodox_right_led_2_on();
-      break;
-    default:
-      // none
-      break;
-  }
-
-  LEADER_DICTIONARY() {
-    leading = false;
-    leader_end();
-
-    SEQ_ONE_KEY(KC_W) {
-      register_code(KC_LALT);
-      register_code(KC_F4);
-      unregister_code(KC_F4);
-      unregister_code(KC_LALT);
-    }
-    SEQ_ONE_KEY(KC_O) {
-      register_code(KC_LCTL);
-      register_code(KC_LSFT);
-      register_code(KC_O);
-      unregister_code(KC_O);
-      unregister_code(KC_LSFT);
-      unregister_code(KC_LCTL);
-    }
-  }
-}
-
diff --git a/keyboards/ergodox/keymaps/erez_experimental/readme.md b/keyboards/ergodox/keymaps/erez_experimental/readme.md
deleted file mode 100644 (file)
index f0738d9..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# Erez's experimental layout
-
-This is my personal layout which I use to test out ideas which may or may not make it onto the default layout we ship with. It's based off the default layout, with various tweaks.
-
-Changelog:
-
-## Nov 1, 2016:
-
-* Adds dedicated text zooming keys in inner corners
-
-## May 24, 2016:
-
-* Implements Leader key example
-  * Leader, W sends Alt-F4
-  * Leader, O sends Ctrl-shift-o (a shortcut I use in FrontApp) 
-
-## May 8, 2016:
-
-* Makes bottom-right key send minus/underscore when tapped, L1 temporary toggle when held
-* Tweaked the positions of the numbers on the symbol layer. Basically, 12345 are now directly under their number-row counterparts in layer 0. You can imagine pulling the number row down to the home row. And 67890 are directly under 12345 - so it's a matter of just adding 5 and going to the next row (1+5 = 6, 2+5 = 7 and so on).
-* Tweaks media/nav layer
-  * Removes mouse control, as I don't use it
-  * Makes left home row keys PgUp, Home, End, PgDn
-
-## Apr 29, 2016:
-
-* Tweaks the Hyper and Meh key to send brackets when tapped
-* Turns bottom-right key into a minus/underscore (easy to reach with the right pinky)
-
-## Apr 25, 2016:
-
-* Made it so that the right and left Shift keys send opening and closing parens ( ) when tapped
-
-## Feb 11, 2016:
-
-* Updated ASCII legend for thumb clusters
-* Made it so outer left-hand thumb key is L1 momentary toggle
-* Added % and @ to L1
-* Swapped positions for _ and - on L1
-
-## Feb 5, 2016:
-
-* A whole new design for the symbol layer. Specifically:
-  * Put the minus, underscore, and semicolon right in the homerow for the right hand
-  * Parens are in better places for me
-  * The arrow keys now send Ctrl-PgUp and Ctrl-PgDn, for switching browser tabs with the arrows when in symbol layer
-  * Tab (right-hand outer thumb key) now does double duty to toggle symbol layer when held down
-  * Backspace (left-hand outer thumb key) now just toggles symbol layer (I wasn't using it as a backspace)
-  
-
-## Jan 19, 2016:
-
-* Made J into dual-action key (Alt when held down), to make Alt-tab more ergonomic.
-* Made ' into dual-action key (Win/Cmd when held down).
-
diff --git a/keyboards/ergodox/keymaps/familiar/Makefile b/keyboards/ergodox/keymaps/familiar/Makefile
deleted file mode 100644 (file)
index 31e0fcf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-TAP_DANCE_ENABLE=yes
diff --git a/keyboards/ergodox/keymaps/familiar/README.md b/keyboards/ergodox/keymaps/familiar/README.md
deleted file mode 100644 (file)
index 5361793..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# ErgoDox Familiar Layout
-Familiar layout for those who regularly switch back and forth from ErgoDox to "normal" QWERTY.
-
-[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](../../../../license_GPLv3.md../../../../license_GPLv3.md) [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme)
-
-## Table of Contents
-
-- [Background](#background)
-- [Install](#install)
-- [Usage](#usage)
-    - [Layers](#layers)
-- [Contribute](#contribute)
-    - [Issues](#issues)
-- [License](#license)
-
-## Background
-
-This layout is built to be as familiar as possible for users coming directly from a default (QWERTY US) keyboard, while gaining as much advantage as possible from the ErgoDox and QMK featureset. I use an ErgoDoxEZ at home, but I don't have a regular office (CS grad student) so I regularly use either my laptop or a default-setup lab computer; I context switch daily so this layout is meant to reduce the mental overhead as much as possible.
-
-The default ErgoDoxEZ layout is probably more optimized as a solo daily driver - as are a lot of the others available keymaps. The focus of this layout is to get as much from the 'Dox as possible without overly disrupting long-established muscle memory.
-
-Key features of the familiar layout:
-1. QWERTY default layout.
-1. International symbols layer, mapped in the US-International layout default positions, through [UCIS](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable).
-1. Numpad layer on right hand.
-1. Thumb cluster holds spacebar and access to secondary layers.
-1. Function-layer arrow keys in both the first-person-shooter (actually ESDF instead of WASD) and vim (HJKL) locations.
-
-## Install
-
-If you are on Windows or Mac, choose the proper line in [`keymap.c`](keymap.c) for [unicode/international character support](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable) (starts at line 253).
-```c
-void matrix_init_user(void) {
-    set_unicode_input_mode(UC_LNX); // Linux
-    //set_unicode_input_mode(UC_OSX); // Mac OSX
-    //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki)
-    //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
-};
-```
-
-For instructions on building and installing this keymap, [go to the wiki](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ergodox#build-dependencies). Below is the command for me; it may be different for you.
-```sh
-$ make ergodox-ez-familiar-teensy
-```
-
-## Usage
-
-[![Familiar Layout](http://i.imgur.com/6nLN9UT.png)](https://gist.github.com/nstickney/13508a9f99cff381d58b7be6f7dcc644)
-
-### Layers
-1. Base Layer: QWERTY, with arrow keys at bottom right.
-1. UCIS Layer: US-International symbols layer, plus —. Accessed by toggling the `SYMB` layer using the UCIS key (bottom of left thumb cluster).
-1. UCIS-Shifted Layer: Making shift work for UCIS characters. An ugly workaround. Any ideas? Accessed by holding shift while the `SYMB` layer is active (toggles the `CSYM` layer).
-1. Numpad Layer: Right hand number pad. Accessed by toggling the `NUMP` layer using the NUMP key (bottom of right thumb cluster).
-1. Function Layer: F1-F12, arrows on ESDF and HJKL, media player controls. Accessed by holding either FN key (center key of each thumb cluster), which toggles the `ARRW` layer. I know, I need to work on my naming conventions.
-
-## Contribute
-
-[Contributor Covenant](http://contributor-covenant.org/)
-
-I'm terrible at this; I have no background in human-computer interaction, kinesiology, or keyboard-ology. Please send comments/issues/pull requests/angry tweets/etc. If you think there is a better way to take advantage of the ErgoDox/QMK comination without straying far from 84/101-key QWERTY, I want to know it.
-
-### Issues
-1. The `CSYM` layer is an ugly workaround. I should write a function for doing different things in the `SYMB` layer depending on whether SHIFT is being held. Or something. Ideas?
-1. Right now, the thumb cluster function keys double as slash and whack... this really isnt a great solution.
-1. `MENU` and `LEAD` are useless, at the moment.
-
-## License
-QMK is licensed ([mostly](https://github.com/qmk/qmk_firmware/issues/1038)) under the [GPLv2](blob/master/license_GPLv2.md). Accordingly, to whatever extent applicable, this keymap is licensed under the [GPLv3](../../../../license_GPLv3.md).
diff --git a/keyboards/ergodox/keymaps/familiar/keymap.c b/keyboards/ergodox/keymaps/familiar/keymap.c
deleted file mode 100644 (file)
index c033461..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-// Layers
-#define BASE 0 // default layer
-#define SYMB 1 // international symbols
-#define CSYM 2 // international symbols shifted
-#define NUMP 3 // numpad
-#define ARRW 4 // function, media, arrow keys
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-// Tap Dancing
-void dance_lock (qk_tap_dance_state_t *state, void *user_data) {
-    if (state->count == 1) { // Press once for NUMLOCK
-        register_code (KC_NLCK);
-        unregister_code (KC_NLCK);
-    } else if (state->count == 2) { // Press twice for CAPSLOCK
-        register_code (KC_CAPS);
-        unregister_code (KC_CAPS);
-    } else if (state->count == 3) { //Press thrice for SCROLLLOCK
-        register_code (KC_SLCK);
-        unregister_code (KC_SLCK);
-    }
-}
-enum {LOCKS = 0};
-qk_tap_dance_action_t tap_dance_actions[] = {
-    [LOCKS] = ACTION_TAP_DANCE_FN(dance_lock)
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-/* layer 0 : default
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | `      |   1  |   2  |   3  |   4  |   5  |   6  |           |  7   |   8  |   9  |   0  |   -  |   =  | BCKSPC |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | TAB    |   Q  |   W  |   E  |   R  |   T  | HOME |           | PGUP |   Y  |   U  |   I  |   O  |   P  | DELETE |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | '      |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  ENTER |
- * |--------+------+------+------+------+------|  END |           | PGDN |------+------+------+------+------+--------|
- * | (/LSFT |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  UP  | )/RSFT |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- * | LCTRL  | LGUI | MENU | LEAD | LALT |                                       |[/RALT|]/RCTL| LEFT | DOWN |  RIGHT |
- * `------------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |PRTSCR| ESC  |       | VOL- | VOL+ |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |SLASH/| LOCKS|       | MUTE |WHACK/|      |
- *                                 |  SPC | MO(4)|------|       |------|MO(4) | SPC  |
- *                                 |      |      | TO(1)|       |TO(3) |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_GRV,     KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       KC_6,
-        KC_TAB,     KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       KC_HOME,
-        KC_QUOT,    KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
-        KC_LSPO,    KC_Z,       KC_X,       KC_C,       KC_V,       KC_B,       KC_END,
-        KC_LCTL,    KC_LGUI,    KC_MENU,    KC_LEAD,    KC_LALT,
-                                                                    KC_PSCR,    KC_ESC,
-                                                                                TD(LOCKS),
-                                                KC_SPC,     LT(ARRW, KC_SLSH),  TG(SYMB),
-        // right hand
-            KC_7,       KC_8,       KC_9,       KC_0,       KC_MINS,    KC_EQL,     KC_BSPC,
-            KC_PGUP,    KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_DEL,
-                        KC_H,       KC_J,       KC_K,       KC_L,       KC_SCLN,    KC_ENTER,
-            KC_PGDN,    KC_N,       KC_M,       KC_COMM,    KC_DOT,     KC_UP,      KC_RSPC,
-                        MT(MOD_RALT, KC_LBRC),  MT(MOD_RCTL, KC_RBRC),  KC_LEFT,    KC_DOWN,    KC_RGHT,
-            KC_VOLD,    KC_VOLU,
-            KC_MUTE,
-            TG(NUMP),   LT(ARRW, KC_BSLS),   KC_SPC
-    ),
-
-/* layer 1: International symbols, etc
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   ¡  |   ²  |   ³  |   ¤  |   €  |   ¼  |           |  ½   |  ¾   |  ‘   |  ’   |  ¥   |  ×   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   ä  |   å  |   é  |   ®  |   þ  |      |           |      |  ü   |  ú   |  í   |  ó   |  ö   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |     ´  |   á  |   ß  |   ð  |      |      |------|           |------|      |      |      |  ø   |  ¶   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |MO(CSYM)|   æ  |   ¿  |   ©  |   ¬  |      |      |           |      |  ñ   |  µ   |  ç   |      |      |MO(CSYM)|
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- * |        |      |      |      |      |                                       |  «   |  »   |      |      |        |
- * `------------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[SYMB] = KEYMAP(
-        // left hand
-        _______,    UC(0x00A1), UC(0x00B2), UC(0x00B3), UC(0x00A4), UC(0x20AC), UC(0x00BC),
-        _______,    UC(0x00E4), UC(0x00E5), UC(0x00E9), UC(0x00AE), UC(0x00FE), _______,
-        UC(0x00B4), UC(0x00E1), UC(0x00DF), UC(0x00F0), _______,    _______,
-        MO(CSYM),   UC(0x00E6), UC(0x00BF), _______,    UC(0x00AC), UC(0x00A9),    _______,
-        _______,    _______,    _______,    _______,    _______,
-                                            _______,    _______,
-                                                        _______,
-                            _______,        _______,    _______,
-        // right hand
-            UC(0x00BD), UC(0x00BE), UC(0x2018), UC(0x2019), UC(0x00A5), UC(0x00D7), _______,
-            _______,    UC(0x00FC), UC(0x00FA), UC(0x00ED), UC(0x00F3), UC(0x00F6), _______,
-                        _______,    _______,    _______,    UC(0x00F8), UC(0x00B6), _______,
-            _______,    UC(0x00F1), UC(0x00B5), UC(0x00E7), _______,    _______,    MO(CSYM),
-                                    UC(0x00AB), UC(0x00BB), _______,    _______,    _______,
-            _______,    _______,
-            _______,
-            _______,    _______,    _______
-    ),
-
-/* layer 2 : international symbols, shifted
- * This layer is an ugly workaround; it pretends that SHIFT still works normally on keys
- * which don't produce an "upper case" or "shifted" international symobol.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   ¹  |      |      |   £  |      |      |           |      |      |      |      |  —  |  ÷   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Ä  |   Å  |   É  |      |   Þ  |      |           |      |  Ü   |  Ú   |  Í   |  Ó   |  Ö   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |     ¨  |   Á  |   §  |   Ð  |      |      |------|           |------|      |      |      |  Ø   |  °   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   Æ  |      |   ¢  |   ¦  |      |      |           |      |  Ñ   |      |  Ç   |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- * |        |      |      |      |      |                                       |  “   |  ”   |      |      |        |
- * `------------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[CSYM] = KEYMAP(
-        // left hand
-        _______,    UC(0x00B9), _______,    _______,    UC(0x00A3), _______,    _______,
-        _______,    UC(0x00C4), UC(0x00C5), UC(0x00C9), S(KC_R),    UC(0x00DE), _______,
-        UC(0x00A8), UC(0x00C1), UC(0x00A7), UC(0x00D0), S(KC_F),    S(KC_G),
-        _______,    UC(0x00C6), UC(0x00A6), UC(0x00A2), S(KC_V),    S(KC_B),    _______,
-        _______,    _______,    _______,    _______,    _______,
-                                                                    _______,    _______,
-                                                                                _______,
-                                                    _______,        _______,    _______,
-        // right hand
-            _______,    _______,    _______,    _______,    UC(0x2014), UC(0x00F7), _______,
-            _______,    UC(0x00DC), UC(0x00DA), UC(0x00CD), UC(0x00D3), UC(0x00D6), _______,
-                        S(KC_H),    S(KC_J),    S(KC_K),    UC(0x00D8), UC(0x00B0), _______,
-            _______,    UC(0x00D1), _______,    UC(0x00C7), S(KC_DOT),  _______,    _______,
-                                    UC(0x201C), UC(0x201D), _______,    _______,    _______,
-            _______,    _______,
-            _______,
-            _______,    _______,    _______
-    ),
-
-/* layer 3: numberpad
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |   (  |   )  |   /  |  *   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |   7  |   8  |   9  |  -   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |   4  |   5  |   6  |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |  =   |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- * |        |      |      |      |      |                                       |0/RALT|./RCTL|   ,  | ENTER|        |
- * `------------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMP] = KEYMAP(
-        // left hand
-        _______,    _______,    _______,    _______,    _______,    _______,    _______,
-        _______,    _______,    _______,    _______,    _______,    _______,    _______,
-        _______,    _______,    _______,    _______,    _______,    _______,
-        _______,    _______,    _______,    _______,    _______,    _______,    _______,
-        _______,    _______,    _______,    _______,    _______,
-                                            _______,    _______,
-                                                        _______,
-                            _______,        _______,    _______,
-        // right hand
-            _______,    _______,    S(KC_9),    S(KC_0),    KC_PSLS,    KC_PAST,    _______,
-            _______,    _______,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_PMNS,    _______,
-                        _______,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_PPLS,    _______,
-            _______,    _______,    KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_PEQL,    _______,
-                                    MT(MOD_RALT, KC_KP_0),  MT(MOD_RCTL, KC_KP_DOT),KC_PCMM,    KC_PENT,    _______,
-            _______,    _______,
-            _______,
-            _______,    _______,    _______
-    ),
-
-/* layer 4 : functions and arrows
- * This layer is at the top so that the functions still work no matter what layers are active.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | ESCAPE |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |  UP  |      |      |      |           |      |      |      |      |      |      | INSERT |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      | LEFT | DOWN |RIGHT |      |------|           |------| LEFT | DOWN |  UP  | RIGHT|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |M_PREV|M_STOP|M_PLPS|M_NEXT|      |      |           |      |      |      |      |      | PGUP |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- * |        |      |      |      |      |                                       |      |      | HOME | PGDN |    END |
- * `------------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | SYSRQ| PAUSE|       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[ARRW] = KEYMAP(
-        // left hand
-        KC_ESC,     KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,
-        _______,    _______,    _______,    KC_UP,      _______,    _______,    _______,
-        _______,    _______,    KC_LEFT,    KC_DOWN,    KC_RGHT,    _______,
-        _______,    KC_MPRV,    KC_MSTP,    KC_MPLY,    KC_MNXT,    _______,    _______,
-        _______,    _______,    _______,    _______,    _______,
-                                                                    KC_SYSREQ,  KC_PAUSE,
-                                                                                _______,
-                                                    _______,        _______,    _______,
-        // right hand
-            KC_F7,      KC_F8,      KC_F9,      KC_F10,     KC_F11,     KC_F12,     _______,
-            _______,    _______,    _______,    _______,    _______,    _______,    KC_INS,
-                        KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT,    _______,    _______,
-            _______,    _______,    _______,    _______,    _______,    KC_PGUP,    _______,
-                                    _______,    _______,    KC_HOME,    KC_PGDN,    KC_END,
-            _______,    _______,
-            _______,
-            _______,    _______,    _______
-    ),
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-    set_unicode_input_mode(UC_LNX); // Linux
-    //set_unicode_input_mode(UC_OSX); // Mac OSX
-    //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki)
-    //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case SYMB:
-        case CSYM:
-            ergodox_right_led_1_on();
-            break;
-        case NUMP:
-            ergodox_right_led_2_on();
-            break;
-        case ARRW:
-            ergodox_right_led_3_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/french_hacker/keymap.c b/keyboards/ergodox/keymaps/french_hacker/keymap.c
deleted file mode 100644 (file)
index 33b84c2..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "keymap_french.h"
-
-#define BASE 0 // default Colemak Mod-DH layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define ACC 3 // accented characters
-
-#define QCOPY 0 // Qubes OS VM to VM copy
-#define QPASTE 1 // Qubes OS VM to VM paste
-#define M_ACIRC 2 // â
-#define M_ECIRC 3 // ê
-#define M_ICIRC 4 // î
-#define M_OCIRC 5 // ô
-#define M_UCIRC 6 // û
-#define M_YCIRC 7 // ŷ
-#define M_AUMLT 8 // ä
-#define M_EUMLT 9 // ë
-#define M_IUMLT 10 // ï
-#define M_OUMLT 11 // ö
-#define M_UUMLT 12 // ü
-#define M_YUMLT 13 // ÿ
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base Colemak Mod-DH layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   W  |   F  |   P  |   B  | TO(0)|           |TO(2) |   J  |   L  |   U  |   Y  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Tab    |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  | Bcksp  |
- * |--------+------+------+------+------+------| TO(1)|           |OSL(3)|------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   .  |   :  | Rshift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Ins  | Caps | Left | Right| MO(2)|                                       | MO(2)| Down |  Up  | PgDn | PgUp  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |QCopy | Ralt |       | Ralt |QPaste|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Home |       | End  |      |      |
- *                                 | Space| Ctrl |------|       |------| Ctrl |Enter |
- *                                 |      |      | LAlt |       | LAlt |      |      |
- *                                 `--------------------'       `--------------------'
- */
-  // If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
-        KC_TRNS,        FR_Q,         FR_W,   KC_F,   KC_P,   KC_B,   TO(BASE),
-        KC_TAB,         FR_A,         KC_R,   KC_S,   KC_T,   KC_G,
-        KC_LSFT,        FR_Z,         KC_X,   KC_C,   KC_D,   KC_V,   TO(SYMB),
-        KC_INS,         KC_CAPS,      KC_LEFT,KC_RIGHT, MO(SYMB),
-                                               M(QCOPY),          KC_RALT,
-                                                                  KC_HOME,
-                                               KC_SPC,KC_LCTRL,   KC_LALT,
-        // right hand
-        KC_TRNS,     KC_6,    KC_7,   KC_8,     KC_9,    KC_0,             KC_TRNS,
-        TO(MDIA),    KC_J,    KC_L,   KC_U,     KC_Y,    FR_SCLN,          KC_TRNS,
-                     FR_M,    KC_N,   KC_E,     KC_I,    KC_O,             KC_BSPC,
-        OSL(ACC),    KC_K,    KC_H,   FR_COMM,  FR_DOT,  FR_COLN,          KC_RSFT,
-        MO(SYMB),    KC_DOWN, KC_UP,  KC_PGDN,  KC_PGUP,
-
-        KC_RALT,        M(QPASTE),
-        KC_END,
-        KC_LALT,KC_RCTL, KC_ENT
-                  ),
-
-
-/* Keymap 1: Symbol Layer
- * // TODO missing: ¤
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   §  |   <  |   {  |   \  |   ~  |      |           |      |   %  |   @  |   }  |  >   |  µ   |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   '  |   =  |   -  |   (  |   +  |------|           |------|   *  |   )  |   _  |  /   |   "  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   `  |   ?  |   #  |   [  |   |  |      |           |      |   &  |   ]  |   $  |   !  |   ^  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |   €  |   £  |   $  |      |      |                                       |      |      |      |   ß  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,FR_SECT,FR_LESS,  FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS,
-       KC_TRNS,FR_APOS,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS,
-       KC_TRNS,FR_GRV,FR_QUES,FR_HASH,FR_LBRC,FR_PIPE,KC_TRNS,
-          FR_EURO,FR_PND,FR_DLR,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, FR_PERC, FR_AT,  FR_RCBR, FR_GRTR, FR_MU, KC_F12,
-                FR_ASTR,   FR_RPRN, FR_UNDS, FR_SLSH, FR_QUOT, KC_TRNS,
-       KC_TRNS, FR_AMP,  FR_RBRC, FR_DLR,  FR_EXLM,  FR_CIRC, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS,  ALGR(KC_S),  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-
-/* Keymap 3: accented characters
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |  à   |  â   |  ä   |      |      |           |      |      |      |  î   |  ï   |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  é   |  è   |  ê   |  ë   |      |------|           |------|      |      |  ô   |  ö   |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |  ù   |  û   |  ü   |      |      |           |      |      |      |  ŷ   |  ÿ   |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// ACCENTED CHARACTERS
-[ACC] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,    KC_TRNS, KC_TRNS,
-
-       KC_TRNS, KC_TRNS, FR_AGRV, M(M_ACIRC),  M(M_AUMLT), KC_TRNS, KC_TRNS,
-       KC_TRNS, FR_EACU, FR_EGRV, M(M_ECIRC),  M(M_EUMLT), KC_TRNS,
-       KC_TRNS, KC_TRNS, FR_UGRV, M(M_UCIRC),  M(M_UUMLT), KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,
-                                               KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, M(M_ICIRC), M(M_IUMLT), KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, M(M_OCIRC), M(M_OUMLT), KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, M(M_YCIRC), M(M_YUMLT), KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-  switch(id) {
-  case QCOPY:
-    if (record->event.pressed) {
-      return MACRO(I(255),
-                   D(LCTRL),
-                   T(C),
-                   D(LSFT),
-                   T(C),
-                   U(LCTRL),
-                   U(LSFT),
-                   END);
-    }
-    break;
-  case QPASTE:
-    if (record->event.pressed) {
-      return MACRO(I(255),
-                   D(LCTRL),
-                   D(LSFT),
-                   T(V),
-                   U(LCTRL),
-                   T(INS),
-                   U(LSFT),
-                   END);
-    }
-    break;
-  case M_ACIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(Q), // FR_A
-                   END);
-    }
-    break;
-  case M_ECIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(E),
-                   END);
-    }
-    break;
-  case M_UCIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(U),
-                   END);
-    }
-    break;
-  case M_ICIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(I),
-                   END);
-    }
-    break;
-  case M_OCIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(O),
-                   END);
-    }
-    break;
-  case M_YCIRC:
-    if (record->event.pressed) {
-      return MACRO(T(LBRC), // FR_CIRC
-                   T(Y),
-                   END);
-    }
-    break;
-  case M_AUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(Q),
-                   END);
-    }
-    break;
-  case M_EUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(E),
-                   END);
-    }
-    break;
-  case M_UUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(U),
-                   END);
-    }
-    break;
-  case M_IUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(I),
-                   END);
-    }
-    break;
-  case M_OUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(O),
-                   END);
-    }
-    break;
-  case M_YUMLT:
-    if (record->event.pressed) {
-      return MACRO(D(LSFT),
-                   T(LBRC),
-                   U(LSFT),
-                   T(Y),
-                   END);
-    }
-    break;
-
-  }
-  return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-    case SYMB:
-      ergodox_right_led_1_on();
-      break;
-    case MDIA:
-      ergodox_right_led_2_on();
-      break;
-    case ACC:
-      ergodox_right_led_3_on();
-      break;
-    default:
-      // none
-      break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/french_hacker/readme.md b/keyboards/ergodox/keymaps/french_hacker/readme.md
deleted file mode 100644 (file)
index 6b0575a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# French hacker layout
-
-## Introduction
-
-[Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for
-users keeping an `azerty` layout configuration on their OS.
-
-This keymap is for users keeping their operating systems configured with
-`azerty` - for typing passwords or in their native languages - but who
-wants a Colemak Mod-DH layout on their mechanical.
-
-The symbols layers was done after analysing various programming
-languages sources codes and should be close to optimal for typing
-confort.
-
-Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
-
-There is an accented characters layer for infrequent typing of french
-accents.
-
-Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
-
-## Build
-
-    cd keyboards/ergodox
-    make french_hacker
-
-## Design explanations
-
-See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/).
diff --git a/keyboards/ergodox/keymaps/galson/Makefile b/keyboards/ergodox/keymaps/galson/Makefile
deleted file mode 100644 (file)
index f008f50..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-COMMAND_ENABLE   = no  # Commands for debug and configuration
-
diff --git a/keyboards/ergodox/keymaps/galson/keymap.c b/keyboards/ergodox/keymaps/galson/keymap.c
deleted file mode 100644 (file)
index 0d3e756..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   +    |   1  |   2  |   3  |   4  |   5  | rclk |           | lclk |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   =    |   Q  |   W  |   E  |   R  |cmd/T |shift |           |shift |cmd/Y |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|  (   |           |  )   |------+------+------+------+------+--------|
- * |   "    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|    '   |
- * |--------+------+------+------+------+------| ctrl |           | ctrl |------+------+------+------+------+--------|
- * |   {    |   Z  |   X  |   C  |   V  |   B  |  [   |           |   ]  |   N  |   M  |   ,  |   .  |   /  |    }   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |  _   |   `  |  $   | Left | Right|                                       |  Up  | Down |   :  |   *  |  !     |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |   <  |  |   |       |   &  |   >   |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |  #   |       |   @  |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   |  %   |       |  ESC |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_PLUS,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_BTN2,
-        KC_EQL,          KC_Q,         KC_W,   KC_E,   KC_R,   GUI_T(KC_T),   KC_LSPO,
-        KC_DQUO,  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LCBR,  CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   CTL_T(KC_LBRC),
-        KC_UNDS,         KC_GRV,       KC_DLR, KC_LEFT,KC_RGHT,
-                                                               KC_LABK,  KC_PIPE,
-                                                                       KC_HASH,
-                                                       KC_SPC, KC_BSPC,KC_PERC,
-        // right hand
-        KC_BTN1,         KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-        KC_RSPC,  GUI_T(KC_Y),   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                         KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN), KC_QUOT,
-        CTL_T(KC_RBRC),  KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,   KC_RCBR,
-                                 KC_UP,  KC_DOWN,KC_COLN,KC_ASTR,          KC_EXLM,
-        KC_AMPR,          KC_RABK,
-        KC_AT,
-        KC_ESC,         KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------. 
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/galson/readme.md b/keyboards/ergodox/keymaps/galson/readme.md
deleted file mode 100644 (file)
index ebc9167..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Galson keymap
-
-
-Sep 26, 2016.
-
-This is an ergonomic layout for programming for those with typing-related injuries. Key features:
-
-- As many symbol keys as possible are accessible without shifting. These should be accessed by moving the entire hand and pressing with a strong finger.
-- Arrow keys and left and right mouse clicks for mouse-free navigation when combined with head mouse or eyetracker.
-- Modifier keys are dual role and relocated to positions convenient for the index finger.
-- Positions are more convenient when the keyboard is vertically mounted (as it should be!)
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/german-kinergo/keymap.c b/keyboards/ergodox/keymaps/german-kinergo/keymap.c
deleted file mode 100644 (file)
index 971318d..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-// German keymap derived from "german", but more closely resembling the German layout of the Kinesis Ergo Elan.
-//
-// chschmitz, 2016-01-27
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_german.h"
-
-// Layer names
-#define BASE 0 // default layer
-#define SYMB 1 // symbol layer
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * X'es mark the spots where this is different from the "german" layout which it is based on.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |X Esc  X|   1  |   2  |   3  |   4  |   5  |X `  X|           |XPRSCX|   6  |   7  |   8  |   9  |   0  |   ß    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |X Tab  X|   Q  |   W  |   E  |   R  |   T  |X L1 X|           |X L1 X|   Z  |   U  |   I  |   O  |   P  |   Ü    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Caps  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
- * |--------+------+------+------+------+------|X L2 X|           |X L2 X|------+------+------+------+------+--------|
- * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |X -  X| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |XLGuiX|X  ^ X|X  < X|XLEFTX|XRIGHT|                                       |XDownX|X Up X|X #  X|X  + X|XRGuiX|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |XCTRLX|XALTX |       | Alt  |Ctrl/Esc|
- *                                 ,------+------+------|       |------+--------+------.
- *                                 |XXX   |XXX   | Home |       | PgUp |XXX     |XXX   |
- *                                 | Bkspc|Del   |------|       |------|  Enter | Space|
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   DE_ACUT,
-        KC_TAB,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   MO(1),
-        KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
-        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   MO(2),
-        KC_LGUI,      DE_CIRC, DE_LESS,  KC_LEFT,  KC_RIGHT,
-                                               KC_LCTRL, KC_LALT,
-                                                              KC_HOME,
-                                               KC_BSPC,KC_DELT,KC_END,
-        // right hand
-        KC_PSCREEN,  KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
-        MO(1),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
-                     KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
-        MO(2),       KC_N,   KC_M,    KC_COMM, KC_DOT, DE_MINS,          KC_RSFT,
-                             KC_DOWN, KC_UP,   DE_HASH,  DE_PLUS,          KC_RGUI,
-        KC_RALT, KC_RCTRL,
-        KC_PGUP,
-        KC_PGDN, KC_ENT, KC_SPC
-    ),
-// [BASE] = KEYMAP(  // layer 0 : default
-//         // left hand
-//         KC_CIRC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   KC_MPLY,
-//         KC_DELT,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(1),
-//         KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
-//         KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
-//         LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT,  DE_MINS,  DE_PLUS,
-//                                                ALT_T(KC_APP), KC_LGUI,
-//                                                               KC_HOME,
-//                                                KC_SPC,KC_BSPC,KC_END,
-//         // right hand
-//         KC_MNXT,     KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
-//         TG(2),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
-//                      KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
-//         MEH_T(KC_NO),KC_N,   KC_M,    KC_COMM, KC_DOT, CTL_T(DE_MINS),   KC_RSFT,
-//                              KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT,          KC_FN1,
-//         KC_LALT,CTL_T(KC_ESC),
-//         KC_PGUP,
-//         KC_PGDN,KC_TAB, KC_ENT
-//     ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
-       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
-       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
-       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
-       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
-       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
-                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
-       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_WBAK, KC_WFWD
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case SYMB:
-            ergodox_right_led_1_on();
-            break;
-        case MDIA:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/german-kinergo/readme.md b/keyboards/ergodox/keymaps/german-kinergo/readme.md
deleted file mode 100644 (file)
index addead0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# German Layout for the ErgoDox
-
-This layout is inspired by the "kinesis-qwerty-mod" from benblazak's
-[ergodox-firmware](https://github.com/benblazak/ergodox-firmware), as well as by the "german" layout from the 
-[qmk_firmware](https://github.com/qmk/qmk_firmware).
-The goal was to have a layout that is pretty close to an ordinary German
-keyboard, so I don't have to make adjustments on the operating system level
-and I keep some of the muscle memory to use a regular keyboard.
-
-Modifications I made with regard to the aforementioned layouts:
-
-* The key layout is pretty close to the layout of a German Kinesis Ergo Elan.
-  The only exception I made is that I reversed the "up" and "down" cursor keys,
-  since that feels more natural to me.
-
-* All layer changes are "momentary", i.e. they only last as long as the respective key is pressed.
-
-* I sacrificed the Hyper and Meh keys, which I don't use, and put layer change keys in their place.
-
-* I added a PrintScreen key which I use quite regularly for screenshots.
-
-## Default Layer
-
-![Layout of the default layer](https://i.imgur.com/BIn8QF8.png "Layout of the default layer")
-
-## Code Layer
-
-![Layout of the code layer](https://i.imgur.com/RHZjBlt.png "Layout of the code layer")
-
-## Media Layer
-
-![Layout of the media layer](https://i.imgur.com/qRMmrL4.png "Layout of the media layer")
-
-Christoph Schmitz &lt;schm4704 at web dot de&gt;
-2016-01-28
diff --git a/keyboards/ergodox/keymaps/german-lukas/README.md b/keyboards/ergodox/keymaps/german-lukas/README.md
deleted file mode 100644 (file)
index 3566b4e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# About this keymap
-
-This keymap is based on the qwertz layout.
-It has a key for pressing the left control and the left alt key at once.
-
-Linux makes a difference between AltGr and Control + Alt. Some keybindings are easier to press now.
-
-Also, I added a layer for pressing Control + Alt + F-Keys very fast.
-
-# Layer
-
-Each layer in the *keymap.c*-file has a comment showing the mappings of the layer.
diff --git a/keyboards/ergodox/keymaps/german-lukas/keymap.c b/keyboards/ergodox/keymaps/german-lukas/keymap.c
deleted file mode 100644 (file)
index c6e9f2f..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_german.h"
-
-// Layer names
-#define BASE 0 // default layer
-#define SYMB 1 // symbol layer
-#define MDIA 2 // media keys
-#define SHRT 3 // shortcut layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Caps   |   1  |   2  |   3  |   4  |   5  |X `  X|           | PRSC |   6  |   7  |   8  |   9  |   0  |   ß    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Tab   |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Z  |   U  |   I  |   O  |   P  |   Ü    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Esc   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
- * |--------+------+------+------+------+------|  L2  |           |  L2  |------+------+------+------+------+--------|
- * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  -   | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LGui |   ^  |   <  | LEFT | RIGHT|                                       | Up   | Down |  #   |   +  | LCA |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | CTRL | ALT  |       | Alt  |Ctrl/Esc|
- *                                 ,------+------+------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Del   |------|       |------|  Bkspc | Enter|
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_CAPS,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   DE_ACUT,
-        KC_TAB,          KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(SYMB),
-        KC_ESC,          KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
-        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
-        KC_LGUI,      DE_CIRC, DE_LESS,  KC_LEFT,  KC_RIGHT,
-                                               KC_LCTRL, KC_LALT,
-                                                              KC_HOME,
-                                               KC_SPC ,KC_DELT,KC_END,
-        // right hand
-        KC_PSCREEN,   KC_6,   KC_7,    KC_8,    KC_9,    KC_0,        KC_MINS,
-        TG(MDIA),     DE_Z,   KC_U,    KC_I,    KC_O,    KC_P,        LT(SHRT,DE_UE),
-                      KC_H,   KC_J,    KC_K,    KC_L,    DE_OE,       LT(MDIA,DE_AE),
-        MEH_T(KC_NO),     KC_N,   KC_M,    KC_COMM, KC_DOT,  DE_MINS,     KC_RSFT,
-                              KC_UP,   KC_DOWN, DE_HASH, DE_PLUS,     LCA_T(KC_NO),
-        KC_RALT, KC_RCTRL,
-        KC_PGUP,
-        KC_PGDN, KC_BSPC, KC_ENT
-    ),
-
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
-       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
-       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
-       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-    // left hand
-       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
-       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
-       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
-                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
-       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_WBAK, KC_WFWD
-),
-
-/* Keymap 3: Linux shortcuts
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |LCA-F1|LCA-F2|LCA-F3|LCA-F4|LCA-F5|      |           |      |LCA-F6|LCA-F7|LCA-F8|LCA-F9|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |LCA-Le|      |LCA-Ri|      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |LCA-Le|LCA-Ri|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Shortcuts
-[SHRT] = KEYMAP(
-    // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), KC_TRNS,
-       KC_TRNS, KC_TRNS, LCA(KC_LEFT), KC_TRNS, LCA(KC_RIGHT), KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_LEFT), LCA(KC_RIGHT),
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), KC_TRNS, KC_TRNS,
-                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                         LCA(KC_UP), LCA(KC_DOWN), KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case SYMB:
-            ergodox_right_led_1_on();
-            break;
-        case MDIA:
-            ergodox_right_led_2_on();
-            break;
-        case SHRT:
-            ergodox_right_led_3_on();
-            break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/german-manuneo/compile_keymap.py b/keyboards/ergodox/keymaps/german-manuneo/compile_keymap.py
deleted file mode 100644 (file)
index 7076a6e..0000000
+++ /dev/null
@@ -1,710 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Compiler for keymap.c files
-
-This scrip will generate a keymap.c file from a simple
-markdown file with a specific layout.
-
-Usage:
-    python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
-"""
-from __future__ import division
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import os
-import io
-import re
-import sys
-import json
-import unicodedata
-import collections
-import itertools as it
-
-PY2 = sys.version_info.major == 2
-
-if PY2:
-    chr = unichr
-
-
-KEYBOARD_LAYOUTS = {
-    # These map positions in the parsed layout to
-    # positions in the KEYMAP MATRIX
-    'ergodox_ez': [
-        [ 0,  1,  2,  3,  4,  5,  6],  [38, 39, 40, 41, 42, 43, 44],
-        [ 7,  8,  9, 10, 11, 12, 13],  [45, 46, 47, 48, 49, 50, 51],
-        [14, 15, 16, 17, 18, 19    ],  [    52, 53, 54, 55, 56, 57],
-        [20, 21, 22, 23, 24, 25, 26],  [58, 59, 60, 61, 62, 63, 64],
-        [27, 28, 29, 30, 31        ],  [        65, 66, 67, 68, 69],
-        [                    32, 33],  [70, 71                    ],
-        [                        34],  [72                        ],
-        [                35, 36, 37],  [73, 74, 75                ],
-    ]
-}
-
-ROW_INDENTS = {
-    'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
-}
-
-BLANK_LAYOUTS = [
-# Compact Layout
-"""
-.------------------------------------.------------------------------------.
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-|     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- |    |    |    |    |    |                     !    |    |    |    |    |
- '------------------------'                     '------------------------'
-                        .-----------. .-----------.
-                        |     |     | !     |     |
-                  .-----+-----+-----! !-----+-----+-----.
-                  !     !     |     | !     |     !     !
-                  !     !     !-----! !-----!     !     !
-                  |     |     |     | !     |     |     |
-                  '-----------------' '-----------------'
-""",
-
-# Wide Layout
-"""
-.---------------------------------------------. .---------------------------------------------.
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
-|       |     |     |     |     |     |-------! !-------!     |     |     |     |     |       |
-!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
-|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
-'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
- |      |     |     |     |     |                             !     |     |     |     |      |
- '------------------------------'                             '------------------------------'
-                              .---------------. .---------------.
-                              |       |       | !       |       |
-                      .-------+-------+-------! !-------+-------+-------.
-                      !       !       |       | !       |       !       !
-                      !       !       !-------! !-------!       !       !
-                      |       |       |       | !       |       |       |
-                      '-----------------------' '-----------------------'
-""",
-]
-
-
-DEFAULT_CONFIG = {
-    "keymaps_includes": [
-        "keymap_common.h",
-    ],
-    'filler': "-+.'!:x",
-    'separator': "|",
-    'default_key_prefix': ["KC_"],
-}
-
-
-SECTIONS = [
-    'layout_config',
-    'layers',
-]
-
-
-#       Markdown Parsing
-
-ONELINE_COMMENT_RE = re.compile(r"""
-    ^                       # comment must be at the start of the line
-    \s*                     # arbitrary whitespace
-    //                      # start of the comment
-    (.*)                    # the comment
-    $                       # until the end of line
-""", re.MULTILINE | re.VERBOSE
-)
-
-INLINE_COMMENT_RE = re.compile(r"""
-    ([\,\"\[\]\{\}\d])      # anythig that might end a expression
-    \s+                     # comment must be preceded by whitespace
-    //                      # start of the comment
-    \s                      # and succeded by whitespace
-    (?:[^\"\]\}\{\[]*)      # the comment (except things which might be json)
-    $                       # until the end of line
-""", re.MULTILINE | re.VERBOSE)
-
-TRAILING_COMMA_RE = re.compile(r"""
-    ,                       # the comma
-    (?:\s*)                 # arbitrary whitespace
-    $                       # only works if the trailing comma is followed by newline
-    (\s*)                   # arbitrary whitespace
-    ([\]\}])                # end of an array or object
-""", re.MULTILINE | re.VERBOSE)
-
-
-def loads(raw_data):
-    if isinstance(raw_data, bytes):
-        raw_data = raw_data.decode('utf-8')
-
-    raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
-    raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
-    raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
-    return json.loads(raw_data)
-
-
-def parse_config(path):
-    def reset_section():
-        section.update({
-            'name': section.get('name', ""),
-            'sub_name': "",
-            'start_line': -1,
-            'end_line': -1,
-            'code_lines': [],
-        })
-
-    def start_section(line_index, line):
-        end_section()
-        if line.startswith("# "):
-            name = line[2:]
-        elif line.startswith("## "):
-            name = line[3:]
-        else:
-            name = ""
-
-        name = name.strip().replace(" ", "_").lower()
-        if name in SECTIONS:
-            section['name'] = name
-        else:
-            section['sub_name'] = name
-        section['start_line'] = line_index
-
-    def end_section():
-        if section['start_line'] >= 0:
-            if section['name'] == 'layout_config':
-                config.update(loads("\n".join(
-                    section['code_lines']
-                )))
-            elif section['sub_name'].startswith('layer'):
-                layer_name = section['sub_name']
-                config['layer_lines'][layer_name] = section['code_lines']
-
-        reset_section()
-
-    def amend_section(line_index, line):
-        section['end_line'] = line_index
-        section['code_lines'].append(line)
-
-    config = DEFAULT_CONFIG.copy()
-    config.update({
-        'layer_lines': collections.OrderedDict(),
-        'macro_ids': {'UM'},
-        'unicode_macros': {},
-    })
-
-    section = {}
-    reset_section()
-
-    with io.open(path, encoding="utf-8") as fh:
-        for i, line in enumerate(fh):
-            if line.startswith("#"):
-                start_section(i, line)
-            elif line.startswith("    "):
-                amend_section(i, line[4:])
-            else:
-                # TODO: maybe parse description
-                pass
-
-    end_section()
-    assert 'layout' in config
-    return config
-
-#       header file parsing
-
-IF0_RE = re.compile(r"""
-    ^
-    #if 0
-    $.*?
-    #endif
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-COMMENT_RE = re.compile(r"""
-    /\*
-    .*?
-    \*/"
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def read_header_file(path):
-    with io.open(path, encoding="utf-8") as fh:
-        data = fh.read()
-    data, _ = COMMENT_RE.subn("", data)
-    data, _ = IF0_RE.subn("", data)
-    return data
-
-
-def regex_partial(re_str_fmt, flags):
-    def partial(*args, **kwargs):
-        re_str = re_str_fmt.format(*args, **kwargs)
-        return re.compile(re_str, flags)
-    return partial
-
-
-KEYDEF_REP = regex_partial(r"""
-    #define
-    \s
-    (
-        (?:{})          # the prefixes
-        (?:\w+)         # the key name
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_RE = re.compile(r"""
-    (
-        enum
-        \s\w+\s
-        \{
-        .*?             # the enum content
-        \}
-        ;
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_KEY_REP = regex_partial(r"""
-    (
-        {}              # the prefixes
-        \w+             # the key name
-    )                   # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def parse_keydefs(config, data):
-    prefix_options = "|".join(config['key_prefixes'])
-    keydef_re = KEYDEF_REP(prefix_options)
-    enum_key_re = ENUM_KEY_REP(prefix_options)
-    for match in keydef_re.finditer(data):
-        yield match.groups()[0]
-
-    for enum_match in ENUM_RE.finditer(data):
-        enum = enum_match.groups()[0]
-        for key_match in enum_key_re.finditer(enum):
-            yield key_match.groups()[0]
-
-
-def parse_valid_keys(config, out_path):
-    basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
-    dirpaths = []
-    subpaths = []
-    while len(subpaths) < 6:
-        path = os.path.join(basepath, *subpaths)
-        dirpaths.append(path)
-        dirpaths.append(os.path.join(path, "tmk_core", "common"))
-        dirpaths.append(os.path.join(path, "quantum"))
-        subpaths.append('..')
-
-    includes = set(config['keymaps_includes'])
-    includes.add("keycode.h")
-
-    valid_keycodes = set()
-    for dirpath, include in it.product(dirpaths, includes):
-        include_path = os.path.join(dirpath, include)
-        if os.path.exists(include_path):
-            header_data = read_header_file(include_path)
-            valid_keycodes.update(
-                parse_keydefs(config, header_data)
-            )
-    return valid_keycodes
-
-
-#       Keymap Parsing
-
-def iter_raw_codes(layer_lines, filler, separator):
-    filler_re = re.compile("[" + filler + " ]")
-    for line in layer_lines:
-        line, _ = filler_re.subn("", line.strip())
-        if not line:
-            continue
-        codes = line.split(separator)
-        for code in codes[1:-1]:
-            yield code
-
-
-def iter_indexed_codes(raw_codes, key_indexes):
-    key_rows = {}
-    key_indexes_flat = []
-
-    for row_index, key_indexes in enumerate(key_indexes):
-        for key_index in key_indexes:
-            key_rows[key_index] = row_index
-        key_indexes_flat.extend(key_indexes)
-    assert len(raw_codes) == len(key_indexes_flat)
-    for raw_code, key_index in zip(raw_codes, key_indexes_flat):
-        # we keep track of the row mostly for layout purposes
-        yield raw_code, key_index, key_rows[key_index]
-
-
-LAYER_CHANGE_RE = re.compile(r"""
-    (DF|TG|MO)\(\d+\)
-""", re.VERBOSE)
-
-
-MACRO_RE = re.compile(r"""
-    M\(\w+\)
-""", re.VERBOSE)
-
-
-UNICODE_RE = re.compile(r"""
-    U[0-9A-F]{4}
-""", re.VERBOSE)
-
-
-NON_CODE = re.compile(r"""
-    ^[^A-Z0-9_]$
-""", re.VERBOSE)
-
-
-def parse_uni_code(raw_code):
-    macro_id = "UC_" + (
-        unicodedata.name(raw_code)
-        .replace(" ", "_")
-        .replace("-", "_")
-    )
-    code = "M({})".format(macro_id)
-    uc_hex = "{:04X}".format(ord(raw_code))
-    return code, macro_id, uc_hex
-
-
-def parse_key_code(raw_code, key_prefixes, valid_keycodes):
-    if raw_code in valid_keycodes:
-        return raw_code
-
-    for prefix in key_prefixes:
-        code = prefix + raw_code
-        if code in valid_keycodes:
-            return code
-
-
-def parse_code(raw_code, key_prefixes, valid_keycodes):
-    if not raw_code:
-        return 'KC_TRNS', None, None
-
-    if LAYER_CHANGE_RE.match(raw_code):
-        return raw_code, None, None
-
-    if MACRO_RE.match(raw_code):
-        macro_id = raw_code[2:-1]
-        return raw_code, macro_id, None
-
-    if UNICODE_RE.match(raw_code):
-        hex_code = raw_code[1:]
-        return parse_uni_code(chr(int(hex_code, 16)))
-
-    if NON_CODE.match(raw_code):
-        return parse_uni_code(raw_code)
-
-    code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
-    return code, None, None
-
-
-def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
-    keymap = {}
-    raw_codes = list(iter_raw_codes(
-        layer_lines, config['filler'], config['separator']
-    ))
-    indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
-    key_prefixes = config['key_prefixes']
-    for raw_code, key_index, row_index in indexed_codes:
-        code, macro_id, uc_hex = parse_code(
-            raw_code, key_prefixes, valid_keycodes
-        )
-        # TODO: line numbers for invalid codes
-        err_msg = "Could not parse key '{}' on row {}".format(
-            raw_code, row_index
-        )
-        assert code is not None, err_msg
-        # print(repr(raw_code), repr(code), macro_id, uc_hex)
-        if macro_id:
-            config['macro_ids'].add(macro_id)
-        if uc_hex:
-            config['unicode_macros'][macro_id] = uc_hex
-        keymap[key_index] = (code, row_index)
-    return keymap
-
-
-def parse_keymaps(config, valid_keycodes):
-    keymaps = collections.OrderedDict()
-    key_indexes = config.get(
-        'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
-    )
-    # TODO: maybe validate key_indexes
-
-    for layer_name, layer_lines, in config['layer_lines'].items():
-        keymaps[layer_name] = parse_keymap(
-            config, key_indexes, layer_lines, valid_keycodes
-        )
-    return keymaps
-
-#       keymap.c output
-
-USERCODE = """
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case L1:
-            ergodox_right_led_1_on();
-            break;
-        case L2:
-            ergodox_right_led_2_on();
-            break;
-        case L3:
-            ergodox_right_led_3_on();
-            break;
-        case L4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case L5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        // case L6:
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        // case L7:
-        //     ergodox_right_led_1_on();
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-};
-"""
-
-MACROCODE = """
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {{
-    if (hex == 0x0) {{
-        return KC_P0;
-    }}
-    if (hex < 0xA) {{
-        return KC_P1 + (hex - 0x1);
-    }}
-    return KC_A + (hex - 0xA);
-}}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {{
-    switch (unicode_mode) {{
-    case UC_MODE_WIN:
-        register_code(KC_LALT);
-
-        register_code(KC_PPLS);
-        unregister_code(KC_PPLS);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LALT);
-        break;
-    case UC_MODE_LINUX:
-        register_code(KC_LCTL);
-        register_code(KC_LSFT);
-
-        register_code(KC_U);
-        unregister_code(KC_U);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LCTL);
-        unregister_code(KC_LSFT);
-        break;
-    case UC_MODE_OSX:
-        break;
-    }}
-}}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
-    if (!record->event.pressed) {{
-        return MACRO_NONE;
-    }}
-    // MACRODOWN only works in this function
-    switch(id) {{
-        case UM:
-            unicode_mode = (unicode_mode + 1) % 2;
-            break;
-{macro_cases}
-{unicode_macro_cases}
-        default:
-            break;
-    }}
-    return MACRO_NONE;
-}};
-"""
-
-
-UNICODE_MACRO_TEMPLATE = """
-case {macro_id}:
-    unicode_action_function(0x{hi:02x}, 0x{lo:02x});
-    break;
-""".strip()
-
-
-def unicode_macro_cases(config):
-    for macro_id, uc_hex in config['unicode_macros'].items():
-        hi = int(uc_hex, 16) >> 8
-        lo = int(uc_hex, 16) & 0xFF
-        unimacro_keys = ", ".join(
-            "T({})".format(
-                "KP_" + digit if digit.isdigit() else digit
-            ) for digit in uc_hex
-        )
-        yield UNICODE_MACRO_TEMPLATE.format(
-            macro_id=macro_id, hi=hi, lo=lo
-        )
-
-
-def iter_keymap_lines(keymap, row_indents=None):
-    col_widths = {}
-    col = 0
-    # first pass, figure out the column widths
-    prev_row_index = None
-    for code, row_index in keymap.values():
-        if row_index != prev_row_index:
-            col = 0
-            if row_indents:
-                col = row_indents[row_index]
-        col_widths[col] = max(len(code), col_widths.get(col, 0))
-        prev_row_index = row_index
-        col += 1
-
-    # second pass, yield the cell values
-    col = 0
-    prev_row_index = None
-    for key_index in sorted(keymap):
-        code, row_index = keymap[key_index]
-        if row_index != prev_row_index:
-            col = 0
-            yield "\n"
-            if row_indents:
-                for indent_col in range(row_indents[row_index]):
-                    pad = " " * (col_widths[indent_col] - 4)
-                    yield (" /*-*/" + pad)
-                col = row_indents[row_index]
-        else:
-            yield pad
-        yield " {}".format(code)
-        if key_index < len(keymap) - 1:
-            yield ","
-            # This will be yielded on the next iteration when
-            # we know that we're not at the end of a line.
-            pad = " " * (col_widths[col] - len(code))
-        prev_row_index = row_index
-        col += 1
-
-
-def iter_keymap_parts(config, keymaps):
-    # includes
-    for include_path in config['keymaps_includes']:
-        yield '#include "{}"\n'.format(include_path)
-
-    yield "\n"
-
-    # definitions
-    for i, macro_id in enumerate(sorted(config['macro_ids'])):
-        yield "#define {} {}\n".format(macro_id, i)
-
-    yield "\n"
-
-    for i, layer_name in enumerate(config['layer_lines']):
-        yield '#define L{0:<3} {0:<5}  // {1}\n'.format(i, layer_name)
-
-    yield "\n"
-
-    # keymaps
-    yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
-
-    for i, layer_name in enumerate(config['layer_lines']):
-        # comment
-        layer_lines = config['layer_lines'][layer_name]
-        prefixed_lines = " * " + " * ".join(layer_lines)
-        yield "/*\n{} */\n".format(prefixed_lines)
-
-        # keymap codes
-        keymap = keymaps[layer_name]
-        row_indents = ROW_INDENTS.get(config['layout'])
-        keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
-        yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines)
-
-    yield "};\n\n"
-
-    # no idea what this is for
-    yield "const uint16_t PROGMEM fn_actions[] = {};\n"
-
-    # macros
-    yield MACROCODE.format(
-        macro_cases="",
-        unicode_macro_cases="\n".join(unicode_macro_cases(config)),
-    )
-
-    # TODO: dynamically create blinking lights
-    yield USERCODE
-
-
-def main(argv=sys.argv[1:]):
-    if not argv or '-h' in argv or '--help' in argv:
-        print(__doc__)
-        return 0
-
-    in_path = os.path.abspath(argv[0])
-    if not os.path.exists(in_path):
-        print("No such file '{}'".format(in_path))
-        return 1
-
-    if len(argv) > 1:
-        out_path = os.path.abspath(argv[1])
-    else:
-        dirname = os.path.dirname(in_path)
-        out_path = os.path.join(dirname, "keymap.c")
-
-    config = parse_config(in_path)
-    valid_keys = parse_valid_keys(config, out_path)
-    keymaps = parse_keymaps(config, valid_keys)
-
-    with io.open(out_path, mode="w", encoding="utf-8") as fh:
-        for part in iter_keymap_parts(config, keymaps):
-            fh.write(part)
-
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/keyboards/ergodox/keymaps/german-manuneo/keymap.c b/keyboards/ergodox/keymaps/german-manuneo/keymap.c
deleted file mode 100644 (file)
index 16e92bc..0000000
+++ /dev/null
@@ -1,783 +0,0 @@
-#include "ergodox.h"
-#include "action_layer.h"
-#include "keymap.h"
-#include "keymap_german.h"
-
-#define UC_ASYMPTOTICALLY_EQUAL_TO 0
-#define UC_DIVISION_SIGN 1
-#define UC_DOWNWARDS_ARROW 2
-#define UC_ELEMENT_OF 3
-#define UC_EMPTY_SET 4
-#define UC_FOR_ALL 5
-#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
-#define UC_GREEK_CAPITAL_LETTER_BETA 7
-#define UC_GREEK_CAPITAL_LETTER_CHI 8
-#define UC_GREEK_CAPITAL_LETTER_DELTA 9
-#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
-#define UC_GREEK_CAPITAL_LETTER_ETA 11
-#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
-#define UC_GREEK_CAPITAL_LETTER_IOTA 13
-#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
-#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
-#define UC_GREEK_CAPITAL_LETTER_MU 16
-#define UC_GREEK_CAPITAL_LETTER_NU 17
-#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
-#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
-#define UC_GREEK_CAPITAL_LETTER_PHI 20
-#define UC_GREEK_CAPITAL_LETTER_PI 21
-#define UC_GREEK_CAPITAL_LETTER_PSI 22
-#define UC_GREEK_CAPITAL_LETTER_RHO 23
-#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
-#define UC_GREEK_CAPITAL_LETTER_TAU 25
-#define UC_GREEK_CAPITAL_LETTER_THETA 26
-#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
-#define UC_GREEK_CAPITAL_LETTER_XI 28
-#define UC_GREEK_CAPITAL_LETTER_ZETA 29
-#define UC_GREEK_SMALL_LETTER_ALPHA 30
-#define UC_GREEK_SMALL_LETTER_BETA 31
-#define UC_GREEK_SMALL_LETTER_CHI 32
-#define UC_GREEK_SMALL_LETTER_DELTA 33
-#define UC_GREEK_SMALL_LETTER_EPSILON 34
-#define UC_GREEK_SMALL_LETTER_ETA 35
-#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
-#define UC_GREEK_SMALL_LETTER_GAMMA 37
-#define UC_GREEK_SMALL_LETTER_IOTA 38
-#define UC_GREEK_SMALL_LETTER_KAPPA 39
-#define UC_GREEK_SMALL_LETTER_LAMDA 40
-#define UC_GREEK_SMALL_LETTER_MU 41
-#define UC_GREEK_SMALL_LETTER_NU 42
-#define UC_GREEK_SMALL_LETTER_OMEGA 43
-#define UC_GREEK_SMALL_LETTER_OMICRON 44
-#define UC_GREEK_SMALL_LETTER_PHI 45
-#define UC_GREEK_SMALL_LETTER_PI 46
-#define UC_GREEK_SMALL_LETTER_PSI 47
-#define UC_GREEK_SMALL_LETTER_RHO 48
-#define UC_GREEK_SMALL_LETTER_SIGMA 49
-#define UC_GREEK_SMALL_LETTER_TAU 50
-#define UC_GREEK_SMALL_LETTER_THETA 51
-#define UC_GREEK_SMALL_LETTER_UPSILON 52
-#define UC_GREEK_SMALL_LETTER_XI 53
-#define UC_GREEK_SMALL_LETTER_ZETA 54
-#define UC_INFINITY 55
-#define UC_LEFTWARDS_ARROW 56
-#define UC_MULTIPLICATION_SIGN 57
-#define UC_NOT_AN_ELEMENT_OF 58
-#define UC_NOT_EQUAL_TO 59
-#define UC_PLUS_MINUS_SIGN 60
-#define UC_RIGHTWARDS_ARROW 61
-#define UC_SUBSCRIPT_EIGHT 62
-#define UC_SUBSCRIPT_FIVE 63
-#define UC_SUBSCRIPT_FOUR 64
-#define UC_SUBSCRIPT_NINE 65
-#define UC_SUBSCRIPT_ONE 66
-#define UC_SUBSCRIPT_SEVEN 67
-#define UC_SUBSCRIPT_SIX 68
-#define UC_SUBSCRIPT_THREE 69
-#define UC_SUBSCRIPT_TWO 70
-#define UC_SUBSCRIPT_ZERO 71
-#define UC_SUPERSCRIPT_EIGHT 72
-#define UC_SUPERSCRIPT_FIVE 73
-#define UC_SUPERSCRIPT_FOUR 74
-#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
-#define UC_SUPERSCRIPT_NINE 76
-#define UC_SUPERSCRIPT_ONE 77
-#define UC_SUPERSCRIPT_SEVEN 78
-#define UC_SUPERSCRIPT_SIX 79
-#define UC_SUPERSCRIPT_THREE 80
-#define UC_SUPERSCRIPT_TWO 81
-#define UC_SUPERSCRIPT_ZERO 82
-#define UC_THERE_DOES_NOT_EXIST 83
-#define UC_THERE_EXISTS 84
-#define UC_UPWARDS_ARROW 85
-#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
-#define UC_VULGAR_FRACTION_ONE_FIFTH 87
-#define UC_VULGAR_FRACTION_ONE_HALF 88
-#define UC_VULGAR_FRACTION_ONE_QUARTER 89
-#define UC_VULGAR_FRACTION_ONE_SIXTH 90
-#define UC_VULGAR_FRACTION_ONE_THIRD 91
-#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
-#define UC_VULGAR_FRACTION_TWO_THIRDS 93
-#define UM 94
-
-#define L0   0      // layer_0
-#define L1   1      // layer_1
-#define L2   2      // layer_2
-#define L3   3      // layer_3
-#define L4   4      // layer_4
-#define L5   5      // layer_5
-#define L6   6      // layer_6
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/*
- * .------------------------------------.------------------------------------.
- * |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |INS  |TG(2)| !M(UM)|DELT |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     | APP | ! PGUP|     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
- *                   '-----------------' '-----------------'
- */
-[L0] = KEYMAP(
- MO(5),   DE_1,     DE_2,     DE_3,    DE_4,    DE_5,    DE_ACUT,
- MO(4),   DE_X,     DE_P,     DE_F,    DE_W,    DE_G,    KC_HOME,
- MO(1),   DE_U,     DE_I,     DE_A,    DE_E,    DE_O,
- MO(3),   DE_UE,    DE_OE,    DE_AE,   DE_C,    DE_V,    KC_END,
- KC_TRNS, KC_TRNS,  KC_LGUI,  KC_LALT, KC_LCTL,
- /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    KC_INS,  TG(2),
- /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    /*-*/    KC_APP,
- /*-*/    /*-*/     /*-*/     /*-*/    KC_BSPC, KC_LSFT, KC_ESC,
- DE_GRV,  DE_6,     DE_7,     DE_8,    DE_9,    DE_0,    DE_CIRC,
- TG(2),   DE_H,     DE_J,     DE_K,    DE_L,    DE_Q,    DE_Z,
- /*-*/    DE_S,     DE_N,     DE_R,    DE_T,    DE_D,    DE_SS,
- KC_TAB,  DE_B,     DE_M,     DE_COMM, DE_DOT,  KC_UP,   DE_Y,
- /*-*/    /*-*/     KC_RCTL,  KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
- M(UM),   KC_DELT,
- KC_PGUP,
- KC_PGDN, KC_ENTER, KC_SPACE
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L1] = KEYMAP(
- KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS,               KC_TRNS,               KC_TRNS,
- KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR,               DE_RCBR,               KC_TRNS,
- KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC,               DE_RBRC,
- KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL,  KC_TRNS,               KC_TRNS,               KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/                  KC_TRNS,               KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/                  /*-*/                  KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,               KC_TRNS,               KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,               DE_RING,               KC_TRNS,
- KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS,               DE_DQOT,               KC_TRNS,
- /*-*/    DE_DLR,  DE_LPRN, DE_RPRN, DE_TILD,               DE_QUOT,               DE_QST,
- KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN,               M(UC_UPWARDS_ARROW),   KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L2] = KEYMAP(
- KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_PEQL,
- KC_TRNS, KC_TRNS, KC_P7,   KC_P8,   KC_P9,   KC_PAST, KC_PSLS,
- /*-*/    KC_TRNS, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, KC_PMNS,
- KC_NLCK, KC_TRNS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PPLS,
- /*-*/    /*-*/    KC_P0,   KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L3] = KEYMAP(
- KC_TRNS, M(UC_SUPERSCRIPT_ONE),           M(UC_SUPERSCRIPT_TWO),                  M(UC_SUPERSCRIPT_THREE),          M(UC_SUPERSCRIPT_FOUR),               M(UC_SUPERSCRIPT_FIVE),          M(UC_FOR_ALL),
- KC_TRNS, M(UC_MULTIPLICATION_SIGN),       M(UC_VULGAR_FRACTION_ONE_HALF),         M(UC_DIVISION_SIGN),              M(UC_VULGAR_FRACTION_ONE_QUARTER),    M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
- KC_TRNS, KC_TRNS,                         M(UC_PLUS_MINUS_SIGN),                  DE_AT,                            DE_EURO,                              M(UC_EMPTY_SET),
- KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO),                     M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO),   KC_TRNS,
- KC_TRNS, KC_TRNS,                         KC_TRNS,                                KC_TRNS,                          KC_TRNS,
- /*-*/    /*-*/                            /*-*/                                   /*-*/                             /*-*/                                 KC_TRNS,                         KC_TRNS,
- /*-*/    /*-*/                            /*-*/                                   /*-*/                             /*-*/                                 /*-*/                            KC_TRNS,
- /*-*/    /*-*/                            /*-*/                                   /*-*/                             KC_TRNS,                              KC_TRNS,                         KC_TRNS,
- KC_TRNS, M(UC_SUPERSCRIPT_SIX),           M(UC_SUPERSCRIPT_SEVEN),                M(UC_SUPERSCRIPT_EIGHT),          M(UC_SUPERSCRIPT_NINE),               M(UC_SUPERSCRIPT_ZERO),          KC_TRNS,
- KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS,                                M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS,                              KC_TRNS,                         KC_TRNS,
- /*-*/    M(UC_INFINITY),                  M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS),               M(UC_ELEMENT_OF),                     KC_TRNS,                         KC_TRNS,
- KC_TRNS, DE_EXLM,                         KC_TRNS,                                M(UC_THERE_DOES_NOT_EXIST),       M(UC_NOT_AN_ELEMENT_OF),              KC_TRNS,                         KC_TRNS,
- /*-*/    /*-*/                            KC_TRNS,                                KC_TRNS,                          KC_TRNS,                              KC_TRNS,                         KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS,                         KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L4] = KEYMAP(
- KC_TRNS, M(UC_SUBSCRIPT_ONE),              M(UC_SUBSCRIPT_TWO),            M(UC_SUBSCRIPT_THREE),          M(UC_SUBSCRIPT_FOUR),             M(UC_SUBSCRIPT_FIVE),             KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI),     M(UC_GREEK_SMALL_LETTER_PI),    M(UC_GREEK_SMALL_LETTER_PHI),   M(UC_GREEK_SMALL_LETTER_OMEGA),   M(UC_GREEK_SMALL_LETTER_GAMMA),   KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA),  M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
- KC_TRNS, KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_THETA), KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          KC_TRNS,
- KC_TRNS, KC_TRNS,                          KC_TRNS,                        KC_TRNS,                        KC_TRNS,
- /*-*/    /*-*/                             /*-*/                           /*-*/                           /*-*/                             KC_TRNS,                          KC_TRNS,
- /*-*/    /*-*/                             /*-*/                           /*-*/                           /*-*/                             /*-*/                             KC_TRNS,
- /*-*/    /*-*/                             /*-*/                           /*-*/                           KC_TRNS,                          KC_TRNS,                          KC_TRNS,
- KC_TRNS, M(UC_SUBSCRIPT_SIX),              M(UC_SUBSCRIPT_SEVEN),          M(UC_SUBSCRIPT_EIGHT),          M(UC_SUBSCRIPT_NINE),             M(UC_SUBSCRIPT_ZERO),             KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA),     M(UC_GREEK_SMALL_LETTER_XI),    M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA),   KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_ZETA),
- /*-*/    M(UC_GREEK_SMALL_LETTER_SIGMA),   M(UC_GREEK_SMALL_LETTER_NU),    M(UC_GREEK_SMALL_LETTER_RHO),   M(UC_GREEK_SMALL_LETTER_TAU),     M(UC_GREEK_SMALL_LETTER_DELTA),   M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA),    M(UC_GREEK_SMALL_LETTER_MU),    KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_PSI),
- /*-*/    /*-*/                             KC_TRNS,                        KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS,                          KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L5] = KEYMAP(
- KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI),     M(UC_GREEK_CAPITAL_LETTER_PI),    M(UC_GREEK_CAPITAL_LETTER_PHI),   M(UC_GREEK_CAPITAL_LETTER_OMEGA),   M(UC_GREEK_CAPITAL_LETTER_GAMMA),   KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA),  M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
- KC_TRNS, KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
- KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,
- /*-*/    /*-*/                               /*-*/                             /*-*/                             /*-*/                               KC_TRNS,                            KC_TRNS,
- /*-*/    /*-*/                               /*-*/                             /*-*/                             /*-*/                               /*-*/                               KC_TRNS,
- /*-*/    /*-*/                               /*-*/                             /*-*/                             KC_TRNS,                            KC_TRNS,                            KC_TRNS,
- KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA),     M(UC_GREEK_CAPITAL_LETTER_XI),    M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA),   KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_ZETA),
- /*-*/    M(UC_GREEK_CAPITAL_LETTER_SIGMA),   M(UC_GREEK_CAPITAL_LETTER_NU),    M(UC_GREEK_CAPITAL_LETTER_RHO),   M(UC_GREEK_CAPITAL_LETTER_TAU),     M(UC_GREEK_CAPITAL_LETTER_DELTA),   KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA),    M(UC_GREEK_CAPITAL_LETTER_MU),    KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_PSI),
- /*-*/    /*-*/                               KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS,                            KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L6] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {};
-
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {
-    if (hex == 0x0) {
-        return KC_P0;
-    }
-    if (hex < 0xA) {
-        return KC_P1 + (hex - 0x1);
-    }
-    return KC_A + (hex - 0xA);
-}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {
-    switch (unicode_mode) {
-    case UC_MODE_WIN:
-        register_code(KC_LALT);
-
-        register_code(KC_PPLS);
-        unregister_code(KC_PPLS);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LALT);
-        break;
-    case UC_MODE_LINUX:
-        register_code(KC_LCTL);
-        register_code(KC_LSFT);
-
-        register_code(KC_U);
-        unregister_code(KC_U);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LCTL);
-        unregister_code(KC_LSFT);
-        break;
-    case UC_MODE_OSX:
-        break;
-    }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    if (!record->event.pressed) {
-        return MACRO_NONE;
-    }
-    // MACRODOWN only works in this function
-    switch(id) {
-        case UM:
-            unicode_mode = (unicode_mode + 1) % 2;
-            break;
-
-case UC_GREEK_SMALL_LETTER_OMICRON:
-    unicode_action_function(0x03, 0xbf);
-    break;
-case UC_LEFTWARDS_ARROW:
-    unicode_action_function(0x21, 0x90);
-    break;
-case UC_GREEK_CAPITAL_LETTER_RHO:
-    unicode_action_function(0x03, 0xa1);
-    break;
-case UC_SUBSCRIPT_THREE:
-    unicode_action_function(0x20, 0x83);
-    break;
-case UC_VULGAR_FRACTION_ONE_EIGHTH:
-    unicode_action_function(0x21, 0x5b);
-    break;
-case UC_GREEK_SMALL_LETTER_LAMDA:
-    unicode_action_function(0x03, 0xbb);
-    break;
-case UC_VULGAR_FRACTION_ONE_THIRD:
-    unicode_action_function(0x21, 0x53);
-    break;
-case UC_GREEK_SMALL_LETTER_XI:
-    unicode_action_function(0x03, 0xbe);
-    break;
-case UC_THERE_DOES_NOT_EXIST:
-    unicode_action_function(0x22, 0x04);
-    break;
-case UC_SUPERSCRIPT_ONE:
-    unicode_action_function(0x00, 0xb9);
-    break;
-case UC_GREEK_SMALL_LETTER_BETA:
-    unicode_action_function(0x03, 0xb2);
-    break;
-case UC_SUBSCRIPT_FIVE:
-    unicode_action_function(0x20, 0x85);
-    break;
-case UC_GREEK_CAPITAL_LETTER_IOTA:
-    unicode_action_function(0x03, 0x99);
-    break;
-case UC_VULGAR_FRACTION_ONE_FIFTH:
-    unicode_action_function(0x21, 0x55);
-    break;
-case UC_GREEK_SMALL_LETTER_PSI:
-    unicode_action_function(0x03, 0xc8);
-    break;
-case UC_SUBSCRIPT_NINE:
-    unicode_action_function(0x20, 0x89);
-    break;
-case UC_SUPERSCRIPT_FOUR:
-    unicode_action_function(0x20, 0x74);
-    break;
-case UC_RIGHTWARDS_ARROW:
-    unicode_action_function(0x21, 0x92);
-    break;
-case UC_SUPERSCRIPT_SIX:
-    unicode_action_function(0x20, 0x76);
-    break;
-case UC_DOWNWARDS_ARROW:
-    unicode_action_function(0x21, 0x93);
-    break;
-case UC_GREEK_SMALL_LETTER_PI:
-    unicode_action_function(0x03, 0xc0);
-    break;
-case UC_SUPERSCRIPT_TWO:
-    unicode_action_function(0x00, 0xb2);
-    break;
-case UC_GREEK_CAPITAL_LETTER_OMEGA:
-    unicode_action_function(0x03, 0xa9);
-    break;
-case UC_GREEK_CAPITAL_LETTER_PSI:
-    unicode_action_function(0x03, 0xa8);
-    break;
-case UC_SUBSCRIPT_FOUR:
-    unicode_action_function(0x20, 0x84);
-    break;
-case UC_GREEK_CAPITAL_LETTER_NU:
-    unicode_action_function(0x03, 0x9d);
-    break;
-case UC_DIVISION_SIGN:
-    unicode_action_function(0x00, 0xf7);
-    break;
-case UC_GREEK_SMALL_LETTER_SIGMA:
-    unicode_action_function(0x03, 0xc3);
-    break;
-case UC_GREEK_SMALL_LETTER_RHO:
-    unicode_action_function(0x03, 0xc1);
-    break;
-case UC_VULGAR_FRACTION_ONE_SIXTH:
-    unicode_action_function(0x21, 0x59);
-    break;
-case UC_GREEK_SMALL_LETTER_GAMMA:
-    unicode_action_function(0x03, 0xb3);
-    break;
-case UC_VULGAR_FRACTION_TWO_THIRDS:
-    unicode_action_function(0x21, 0x54);
-    break;
-case UC_GREEK_SMALL_LETTER_NU:
-    unicode_action_function(0x03, 0xbd);
-    break;
-case UC_GREEK_SMALL_LETTER_ZETA:
-    unicode_action_function(0x03, 0xb6);
-    break;
-case UC_GREEK_SMALL_LETTER_EPSILON:
-    unicode_action_function(0x03, 0xb5);
-    break;
-case UC_GREEK_SMALL_LETTER_KAPPA:
-    unicode_action_function(0x03, 0xba);
-    break;
-case UC_SUPERSCRIPT_SEVEN:
-    unicode_action_function(0x20, 0x77);
-    break;
-case UC_GREEK_CAPITAL_LETTER_PI:
-    unicode_action_function(0x03, 0xa0);
-    break;
-case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
-    unicode_action_function(0x03, 0xc2);
-    break;
-case UC_GREEK_CAPITAL_LETTER_XI:
-    unicode_action_function(0x03, 0x9e);
-    break;
-case UC_GREEK_SMALL_LETTER_THETA:
-    unicode_action_function(0x03, 0xb8);
-    break;
-case UC_GREEK_SMALL_LETTER_ETA:
-    unicode_action_function(0x03, 0xb7);
-    break;
-case UC_SUBSCRIPT_TWO:
-    unicode_action_function(0x20, 0x82);
-    break;
-case UC_ASYMPTOTICALLY_EQUAL_TO:
-    unicode_action_function(0x22, 0x43);
-    break;
-case UC_GREEK_SMALL_LETTER_ALPHA:
-    unicode_action_function(0x03, 0xb1);
-    break;
-case UC_GREEK_CAPITAL_LETTER_PHI:
-    unicode_action_function(0x03, 0xa6);
-    break;
-case UC_GREEK_SMALL_LETTER_PHI:
-    unicode_action_function(0x03, 0xc6);
-    break;
-case UC_INFINITY:
-    unicode_action_function(0x22, 0x1e);
-    break;
-case UC_GREEK_CAPITAL_LETTER_OMICRON:
-    unicode_action_function(0x03, 0x9f);
-    break;
-case UC_ELEMENT_OF:
-    unicode_action_function(0x22, 0x08);
-    break;
-case UC_MULTIPLICATION_SIGN:
-    unicode_action_function(0x00, 0xd7);
-    break;
-case UC_SUBSCRIPT_ZERO:
-    unicode_action_function(0x20, 0x80);
-    break;
-case UC_GREEK_CAPITAL_LETTER_SIGMA:
-    unicode_action_function(0x03, 0xa3);
-    break;
-case UC_GREEK_SMALL_LETTER_OMEGA:
-    unicode_action_function(0x03, 0xc9);
-    break;
-case UC_SUBSCRIPT_ONE:
-    unicode_action_function(0x20, 0x81);
-    break;
-case UC_GREEK_CAPITAL_LETTER_ZETA:
-    unicode_action_function(0x03, 0x96);
-    break;
-case UC_GREEK_SMALL_LETTER_TAU:
-    unicode_action_function(0x03, 0xc4);
-    break;
-case UC_SUPERSCRIPT_FIVE:
-    unicode_action_function(0x20, 0x75);
-    break;
-case UC_THERE_EXISTS:
-    unicode_action_function(0x22, 0x03);
-    break;
-case UC_PLUS_MINUS_SIGN:
-    unicode_action_function(0x00, 0xb1);
-    break;
-case UC_VULGAR_FRACTION_THREE_QUARTERS:
-    unicode_action_function(0x00, 0xbe);
-    break;
-case UC_SUPERSCRIPT_THREE:
-    unicode_action_function(0x00, 0xb3);
-    break;
-case UC_EMPTY_SET:
-    unicode_action_function(0x22, 0x05);
-    break;
-case UC_UPWARDS_ARROW:
-    unicode_action_function(0x21, 0x91);
-    break;
-case UC_SUPERSCRIPT_NINE:
-    unicode_action_function(0x20, 0x79);
-    break;
-case UC_GREEK_SMALL_LETTER_DELTA:
-    unicode_action_function(0x03, 0xb4);
-    break;
-case UC_GREEK_SMALL_LETTER_MU:
-    unicode_action_function(0x03, 0xbc);
-    break;
-case UC_GREEK_CAPITAL_LETTER_KAPPA:
-    unicode_action_function(0x03, 0x9a);
-    break;
-case UC_SUBSCRIPT_EIGHT:
-    unicode_action_function(0x20, 0x88);
-    break;
-case UC_GREEK_CAPITAL_LETTER_ALPHA:
-    unicode_action_function(0x03, 0x91);
-    break;
-case UC_SUBSCRIPT_SEVEN:
-    unicode_action_function(0x20, 0x87);
-    break;
-case UC_GREEK_CAPITAL_LETTER_BETA:
-    unicode_action_function(0x03, 0x92);
-    break;
-case UC_GREEK_CAPITAL_LETTER_ETA:
-    unicode_action_function(0x03, 0x97);
-    break;
-case UC_SUPERSCRIPT_EIGHT:
-    unicode_action_function(0x20, 0x78);
-    break;
-case UC_SUPERSCRIPT_ZERO:
-    unicode_action_function(0x20, 0x70);
-    break;
-case UC_NOT_AN_ELEMENT_OF:
-    unicode_action_function(0x22, 0x09);
-    break;
-case UC_GREEK_SMALL_LETTER_UPSILON:
-    unicode_action_function(0x03, 0xc5);
-    break;
-case UC_NOT_EQUAL_TO:
-    unicode_action_function(0x22, 0x60);
-    break;
-case UC_GREEK_CAPITAL_LETTER_CHI:
-    unicode_action_function(0x03, 0xa7);
-    break;
-case UC_FOR_ALL:
-    unicode_action_function(0x22, 0x00);
-    break;
-case UC_GREEK_CAPITAL_LETTER_TAU:
-    unicode_action_function(0x03, 0xa4);
-    break;
-case UC_VULGAR_FRACTION_ONE_QUARTER:
-    unicode_action_function(0x00, 0xbc);
-    break;
-case UC_GREEK_SMALL_LETTER_CHI:
-    unicode_action_function(0x03, 0xc7);
-    break;
-case UC_GREEK_CAPITAL_LETTER_THETA:
-    unicode_action_function(0x03, 0x98);
-    break;
-case UC_GREEK_SMALL_LETTER_IOTA:
-    unicode_action_function(0x03, 0xb9);
-    break;
-case UC_GREEK_CAPITAL_LETTER_LAMDA:
-    unicode_action_function(0x03, 0x9b);
-    break;
-case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
-    unicode_action_function(0x20, 0x7f);
-    break;
-case UC_GREEK_CAPITAL_LETTER_UPSILON:
-    unicode_action_function(0x03, 0xa5);
-    break;
-case UC_GREEK_CAPITAL_LETTER_MU:
-    unicode_action_function(0x03, 0x9c);
-    break;
-case UC_GREEK_CAPITAL_LETTER_EPSILON:
-    unicode_action_function(0x03, 0x95);
-    break;
-case UC_GREEK_CAPITAL_LETTER_GAMMA:
-    unicode_action_function(0x03, 0x93);
-    break;
-case UC_SUBSCRIPT_SIX:
-    unicode_action_function(0x20, 0x86);
-    break;
-case UC_GREEK_CAPITAL_LETTER_DELTA:
-    unicode_action_function(0x03, 0x94);
-    break;
-case UC_VULGAR_FRACTION_ONE_HALF:
-    unicode_action_function(0x00, 0xbd);
-    break;
-        default:
-            break;
-    }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case L1:
-            ergodox_right_led_1_on();
-            break;
-        case L2:
-            ergodox_right_led_2_on();
-            break;
-        case L3:
-            ergodox_right_led_3_on();
-            break;
-        case L4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case L5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        // case L6:
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        // case L7:
-        //     ergodox_right_led_1_on();
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-};
diff --git a/keyboards/ergodox/keymaps/german-manuneo/keymap.md b/keyboards/ergodox/keymaps/german-manuneo/keymap.md
deleted file mode 100644 (file)
index 837b254..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# ManuNeo Ergodox Keyboard Layout
-
-Compile this file to a `keymap.c` file using `compile_keymap.py`
-
-    python compile_keymap.py keymaps/german-manuneo/keymap.md
-
-Tested with python 2.7 and python 3.4
-
-
-# Layout Config
-
-    {
-        "layout": "ergodox_ez",
-        "keymaps_includes": [
-            "ergodox.h",
-            "action_layer.h",
-            "keymap_common.h",
-            "keymap_extras/keymap_german.h",
-        ],
-        "key_prefixes": ["DE_", "KC_"],
-        "macros": {
-            // TODO: implement macros
-            // "MUC": "",
-        },
-        // TODO: implement default unicode mode
-    }
-
-
-# Layers
-
-
-## Layer 0
-
-    .------------------------------------.------------------------------------.
-    |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |INS  |TG(2)| !M(UM)|DELT |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     | APP | ! PGUP|     !     !
-                      !     !     !-----! !-----!     !     !
-                      |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
-                      '-----------------' '-----------------'
-
-
-## Layer 1
-
-    .------------------------------------.------------------------------------.
-    |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 2
-
-    .------------------------------------.------------------------------------.
-    |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-
-## Layer 3
-
-http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
-
-    .------------------------------------.------------------------------------.
-    |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 4
-
-
-    .------------------------------------.------------------------------------.
-    |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 5
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 6
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
diff --git a/keyboards/ergodox/keymaps/german/keymap.c b/keyboards/ergodox/keymaps/german/keymap.c
deleted file mode 100644 (file)
index 9b2f6ff..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_german.h"
-
-// Layer names
-#define BASE 0 // default layer
-#define SYMB 1 // symbol layer
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ^    |   1  |   2  |   3  |   4  |   5  | Play |           | Next |   6  |   7  |   8  |   9  |   0  |   ß    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Del   |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Z  |   U  |   I  |   O  |   P  |   Ü    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Caps  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | </L1 |#/Ctrl|   ´  |   -  |   +  |                                       | Right| Down |  Up  | Left | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------+------+------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_CIRC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   KC_MPLY,
-        KC_DELT,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(1),
-        KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
-        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
-        LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT,  DE_MINS,  DE_PLUS,
-                                               ALT_T(KC_APP), KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-        KC_MNXT,     KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
-        TG(2),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
-                     KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
-        MEH_T(KC_NO),KC_N,   KC_M,    KC_COMM, KC_DOT, CTL_T(DE_MINS),   KC_RSFT,
-                             KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT,          KC_FN1,
-        KC_LALT,CTL_T(KC_ESC),
-        KC_PGUP,
-        KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
-       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
-       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
-       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
-       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
-       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
-                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
-       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_WBAK, KC_WFWD
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case SYMB:
-            ergodox_right_led_1_on();
-            break;
-        case MDIA:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c
deleted file mode 100644 (file)
index 9d9191f..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "bootloader.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL  ,  KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
-       KC_FN25 ,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
-        KC_FN27 ,  KC_A,    KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT ,  KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_PGUP,
-        KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
-                                          KC_NO , KC_NO  ,
-                                               KC_NO  ,
-                                     KC_BSPC,KC_DEL ,KC_FN23,
-        // right hand
-             KC_RBRC , KC_6,   KC_7 ,  KC_8,   KC_9,   KC_0,   KC_MINS,
-             KC_END  , KC_Y,   KC_U ,  KC_I,   KC_O,   KC_P,   KC_FN28,
-             KC_H    , KC_J,   KC_K ,  KC_L,   KC_SCLN,KC_FN30,
-             KC_PGDN , KC_N,   KC_M ,  KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
-             KC_RALT , KC_DOWN,KC_UP,  KC_NO  ,KC_RGUI,
-        KC_NO  , KC_NO,
-        KC_NO  ,
-        KC_FN29,KC_ENT ,KC_SPC 
-    ),
-
-    KEYMAP(  // layer 1 : function and symbol keys
-        // left hand
-        KC_TRNS,KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
-        KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
-        KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
-        KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1,
-        // right hand
-             KC_F12, KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_TRNS,
-             KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
-             LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
-             KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
-                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-    KEYMAP(  // layer 2: navigation 
-        // left hand
-        KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
-        KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
-        KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,KC_NO,KC_NO,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1 ,
-        // right hand
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS ,KC_TRNS,  KC_HOME,  KC_TRNS,  KC_TRNS, KC_END ,KC_TRNS,
-                  KC_NO,  KC_LEFT,  KC_UP,   KC_DOWN, KC_RGHT,KC_TRNS,
-             KC_TRNS,KC_TRNS,  KC_HOME,  KC_UP,  KC_END, KC_PGUP,KC_TRNS,
-                       KC_LEFT,  KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-    KEYMAP(  // layer 3 : teensy bootloader functions
-        // left hand
-        KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1 ,
-        // right hand
-             KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-
-    KEYMAP(  // layer 4: numpad
-        // left hand
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_TRNS,
-        // right hand
-             KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
-             KC_TRNS,KC_NO,  KC_P7,  KC_P8,  KC_P9,  KC_PMNS,KC_BSPC,
-                  KC_NO,  KC_P4,  KC_P5,  KC_P6,  KC_PPLS,KC_PENT,
-             KC_TRNS,KC_NO,  KC_P1,  KC_P2,  KC_P3,  KC_PPLS,KC_PENT,
-                       KC_P0,  KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-};
-
-/* id for user defined functions */
-enum function_id {
-    TEENSY_KEY,
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-       [0]   =  ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
-       [1]   =  ACTION_LAYER_SET(0, ON_PRESS),              
-               //[11]  =  ACTION_MODS_KEY(MOD_LSFT, KC_COMM),
-       //[12]  =  ACTION_MODS_KEY(MOD_LSFT, KC_DOT),
-       
-       //[14]  =  ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),
-       //[17]  =  ACTION_MODS_KEY(MOD_LSFT, KC_SCLN),
-       //[20]  =  ACTION_MODS_KEY(MOD_LSFT, KC_5),
-       //[21]  =  ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
-       [23]  =  ACTION_LAYER_SET(3, ON_PRESS),
-        [24]  =  ACTION_LAYER_SET(2, ON_PRESS),   
-       [25]  =  ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
-       [26]  =  ACTION_LAYER_SET(1, ON_PRESS),
-       [27]  =  ACTION_LAYER_TAP_KEY(1, KC_CAPS),
-        [28]  =  ACTION_MODS_TAP_KEY(MOD_RCTL,KC_BSLS),
-       //[29]  =  ACTION_LAYER_TOGGLE(4),
-        [29]  = ACTION_MODS_TAP_KEY(MOD_RSFT,KC_ESC),
-       [30]  =  ACTION_LAYER_TAP_KEY(1, KC_QUOT),
-        [31]  =  ACTION_LAYER_MOMENTARY(2),
-       //[]  =  ACTION_LAYER_TAP_KEY(4, KC_S),
-};
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-
-void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
-{
-   
-    if (id == TEENSY_KEY) {
-        clear_keyboard();
-        print("\n\nJump to bootloader... ");
-        wait_ms(250);
-        bootloader_jump(); // should not return
-        print("not supported.\n");
-    }
-}
diff --git a/keyboards/ergodox/keymaps/guni/readme.txt b/keyboards/ergodox/keymaps/guni/readme.txt
deleted file mode 100644 (file)
index 93ae5f0..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-My main layout (Layer 0) is based on qwerty. I tried to fit the layout of the kinesis keyboard onto the ergodox. Furthermore I did some tweaks. 
-The other layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I cant press the reset button, so i need a key to send the teensy into reprogram mode.
-There is a layer with symbols a numpad. These layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I need a key to reprogram, because I can't access the reset button.
-
-I am a linux user and need the esc key and str keys often therefore it is easyly accessed. Switching console str+alt+tab+f2 (layer 2 and 2) is tricky but you get it after a while.
-As I live in germany and need to type umlaut frquently, i mapped the CAPS to the meta key, and swapped ' and ". So I can type ö with CAPS o + ¨. no need to press o+SHIFT+'
-As a note for linux users i use str+p to get last command, instead of using the cursor keys.  
-
-HOWTO to convert CAPS to Meta-Key and swap ' with "
-
-* create file with following content 
-.Xmodmap
- clear Lock
- keycode 48 = quotedbl apostrophe quotedbl apostrophe
- keycode 66 = Multi_key
-
-* apply with
-xmodmap .Xmodmap
-
-* convert to xkbmap
-xkbcomp $DISPLAY $HOME/.xkbmap
-
-* automatic startup each time you startup x
-echo 'xkbcomp $HOME/.xkbmap $DISPLAY' >> ~/.xinitrc
-
-    KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL  ,  KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
-       KC_FN25 ,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
-        KC_FN27 ,  KC_A,    KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT ,  KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_PGUP,
-        KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
-                                          KC_NO , KC_NO  ,
-                                               KC_NO  ,
-                                     KC_BSPC,KC_DEL ,KC_FN23,
-        // right hand
-             KC_RBRC , KC_6,   KC_7 ,  KC_8,   KC_9,   KC_0,   KC_MINS,
-             KC_END  , KC_Y,   KC_U ,  KC_I,   KC_O,   KC_P,   KC_FN28,
-             KC_H    , KC_J,   KC_K ,  KC_L,   KC_SCLN,KC_FN30,
-             KC_PGDN , KC_N,   KC_M ,  KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
-             KC_RALT , KC_DOWN,KC_UP,  KC_NO  ,KC_RGUI,
-        KC_NO  , KC_NO,
-        KC_NO  ,
-        KC_FN29,KC_ENT ,KC_SPC 
-    ),
-
-    KEYMAP(  // layer 1 : function and symbol keys
-        // left hand
-        KC_TRNS,KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
-        KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
-        KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
-        KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1,
-        // right hand
-             KC_F12, KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_TRNS,
-             KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
-             LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
-             KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
-                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-    KEYMAP(  // layer 2: navigation 
-        // left hand
-        KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
-        KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
-        KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,KC_NO,KC_NO,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1 ,
-        // right hand
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS ,KC_TRNS,  KC_HOME,  KC_TRNS,  KC_TRNS, KC_END ,KC_TRNS,
-                  KC_NO,  KC_LEFT,  KC_UP,   KC_DOWN, KC_RGHT,KC_TRNS,
-             KC_TRNS,KC_TRNS,  KC_HOME,  KC_UP,  KC_END, KC_PGUP,KC_TRNS,
-                       KC_LEFT,  KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-    KEYMAP(  // layer 3 : teensy bootloader functions
-        // left hand
-        KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_FN1 ,
-        // right hand
-             KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-
-    KEYMAP(  // layer 4: numpad
-        // left hand
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                      KC_TRNS,KC_TRNS,
-                                           KC_TRNS,
-                                 KC_TRNS,KC_TRNS,KC_TRNS,
-        // right hand
-             KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
-             KC_TRNS,KC_NO,  KC_P7,  KC_P8,  KC_P9,  KC_PMNS,KC_BSPC,
-                  KC_NO,  KC_P4,  KC_P5,  KC_P6,  KC_PPLS,KC_PENT,
-             KC_TRNS,KC_NO,  KC_P1,  KC_P2,  KC_P3,  KC_PPLS,KC_PENT,
-                       KC_P0,  KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
-        KC_TRNS,KC_TRNS,
-        KC_TRNS,
-        KC_TRNS,KC_TRNS,KC_TRNS
-    ),
-
-};
-
-
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c b/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
deleted file mode 100644 (file)
index c219ce8..0000000
+++ /dev/null
@@ -1,962 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_jp.h"
-
-static uint16_t start;
-
-#define BASE 0 // EN layer
-#define JP 1 // Japanese
-#define JPXON 2 // JP + Fn
-#define JPKAZARI 3 // JP + KAZARI
-#define JPTOPROW 4 // JP + TOPROW
-#define JPTRKZ 5 // JP + TOPROW + KAZARI
-#define NUM 6 // Numbers
-
-#define CTLSHFT 1
-#define CUTCOPY 2
-
-//kana macro definitions start here
-
-#define JPVU 4
-#define JPNU 6
-#define JPKO 7
-#define JPSA 8
-#define JPKE 9
-#define JPHE 10
-#define JPSHI 11
-#define JPKA 12
-#define JPKI 13
-#define JPSU 14
-#define JPSO 15
-#define JPHI 16
-#define JPCHI 17
-#define JPFU 18
-#define JPSE 19
-#define JPTSU 20
-#define JPKU 21
-#define JPTE 22
-#define JPTA 23
-#define JPTO 24
-#define JPHA 25
-#define JPHO 26
-#define JPXKE 27
-#define JPXU 28
-#define JPXKA 29
-#define JPXA 30
-#define JPXO 31
-#define JPGO 32
-#define JPZA 33
-#define JPGE 34
-#define JPBE 35
-#define JPYU 36
-#define JPJI 37
-#define JPGA 38
-#define JPGI 39
-#define JPZU 40
-#define JPZO 41
-#define JPBI 42
-#define JPDI 43
-#define JPZE 44
-#define JPDU 45
-#define JPGU 46
-#define JPYA 47
-#define JPYO 48
-#define JPDE 49
-#define JPDA 50
-#define JPDO 51
-#define JPBA 52
-#define JPBO 53
-#define JPRI 54
-#define JPRE 55
-#define JPRA 56
-#define JPNA 57
-#define JPNO 58
-#define JPMI 59
-#define JPMU 60
-#define JPME 61
-#define JPNE 62
-#define JPMA 63
-#define JPXTU 64
-#define JPWA 65
-#define JPRU 66
-#define JPWO 67
-#define JPNI 68
-#define JPNN 69
-#define JPMO 70
-#define JPRO 71
-#define JPXE 72
-#define JPXI 73
-#define JPXYU 74
-#define JPXYA 75
-#define JPXYO 76
-#define JPPE 77
-#define JPPU 78
-#define JPPI 79
-#define JPPA 80
-#define JPPO 81
-#define JPBU 82
-
-// kana macro definitions end here
-
-#define SHIFT 86
-#define KAZARI 87
-#define JPFN 88 //shifts to JPXON layer
-#define TOJPLOUT 89
-#define TOENL 90
-#define TOJPL 91
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * 
- * ,----------------------------------------------------.           ,--------------------------------------------------.
- * | En / 和  |      |   ^  |   %  |      |      |Selall|           | Undo |      |   $  |   @  |   LT |  UP  |   RT   |
- * |----------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab      |   Q  |   D  |   R  |   W  |   B  | Cut  |           | PgUP |   J  |   F  |   U  |   P  |  DN  |   \    |
- * |----------+------+------+------+------+------| Copy |           |      |------+------+------+------+------+--------|
- * |   /      |   A  |   S  |   H  |   T  |   G  |------|           |------|   Y  |   N  |   E  |   O  |   I  |   ,    |
- * |----------+------+------+------+------+------|Paste |           | PgDN |------+------+------+------+------+--------|
- * | Ctl+Shft |   Z  |   X  |   M  |   C  |   V  |      |           |      | .    |   L  |   K  |  '   |   ?  | tmux   |
- * `----------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LCtrl  | LGui |   Alt|   _  | Esc  |                                       |MouseL|MouseR|   -  |  ~   | Ctrl |
- *   `------------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |MidMs | Del  |       | VolUp| Mute |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       | VolDn|        |      |
- *                                 | Space| Shift|------|       |------| Backsp |Enter |
- *                                 |      |      | Num  |       |  Esc |        |      |
- *                                 `--------------------'       `----------------------'
- *
- * 
- * tmux prefix set to C-b
- * 
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        M(TOJPLOUT),   KC_NO,   KC_EQL, LSFT(KC_5), KC_NO,   KC_NO,   LCTL(KC_A),
-        KC_TAB,        KC_Q,         KC_D,   KC_R,   KC_W,   KC_B,   M(CUTCOPY),
-        KC_SLSH,       KC_A,         KC_S,   KC_H,   KC_T,   KC_G,
-        M(CTLSHFT),    KC_Z,         KC_X,   KC_M,   KC_C,   KC_V,   LCTL(KC_V),
-        KC_RCTL,       KC_LGUI,      KC_LALT,JP_UNDS,KC_LCTL,
-                                              KC_BTN3,  KC_DEL,
-                                                              KC_NO,
-                                               KC_SPC,KC_LSFT,F(1),
-        // right hand
-             LCTL(KC_Z), KC_NO, LSFT(KC_4),      JP_AT,   KC_LEFT,       KC_UP,   KC_RIGHT,
-             KC_PGUP,    KC_J,       KC_F,       KC_U,       KC_P,       KC_DOWN, LSFT(KC_3),
-                         KC_Y,       KC_N,       KC_E,       KC_O,       KC_I,    KC_COMMA,
-             KC_PGDN, KC_DOT,     KC_L,       KC_K,       LSFT(KC_7), KC_QUES,   LCTL(KC_B),
-                                  KC_BTN1,  KC_BTN2,KC_MINS,JP_TILD,          KC_RCTL,
-             KC_VOLU,        KC_MUTE,
-             KC_VOLD,
-             KC_SPC,KC_BSLS, KC_ENT
-    ),
-/* Keymap 1: Japanese
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | En / 和|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   nu |  ko  |   sa |  he  |  ke  |      |           |      |  fu  |  se  | tsu  | ku   |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   to |  shi |  ka  |  ki  |  su  |------|           |------|  a   |  ha  | te   | ta   |  u   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   mu |  so  |  hi  |  chi |  me  |      |           |      |      |  ma  |  ho  |  i   |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 | shift|  fn  |------|       |------|      |kazari|
- *                                 |      |      | Num  |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- * 
- * 
- * 
- */
-[JP] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, M(JPNU), M(JPKO), M(JPSA), M(JPHE), M(JPKE), KC_TRNS,
-       KC_TRNS, M(JPTO), M(JPSHI), M(JPKA), M(JPKI), M(JPSU),
-       KC_TRNS, M(JPMU), M(JPSO), M(JPHI), M(JPCHI), M(JPME), KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_NO,
-                                  M(SHIFT), M(JPFN), F(1),
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  M(JPFU), M(JPSE), M(JPTSU), M(JPKU), KC_TRNS, KC_TRNS,
-                 KC_A, M(JPHA), M(JPTE), M(JPTA), KC_U, KC_TRNS,
-       KC_TRNS,  KC_TRNS, M(JPMA), M(JPHO), KC_I, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_TRNS,        KC_TRNS,
-             KC_TRNS,
-             KC_TRNS,KC_TRNS,M(KAZARI)
-),
-/* Keymap 2: Japanese with Fn
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |  xe  |      |      |  xke |      |           |      |  xya |      | xtsu |  xo  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |  xka |      |      |------|           |------|  xa  | xyo  |      |      |  xu  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |  xi  |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- * 
- * 
- * 
- */
-[JPXON] = KEYMAP(
-          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
-          KC_NO, KC_NO,    M(JPXE),        KC_NO,    M(JPXKE),   KC_NO, KC_NO,
-       KC_NO, KC_NO,    KC_NO,          M(JPXKA),      KC_NO, KC_NO, 
-       KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
-       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
-                                           KC_NO, KC_NO,
-                                                    KC_NO,
-                                  KC_NO, KC_TRNS, KC_TRNS,
-    // right hand
-          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO,  M(JPXYA), KC_NO, M(JPXTU), M(JPXO), KC_NO, KC_NO,
-                 M(JPXA), M(JPXYO), M(JPXYU), KC_NO, M(JPXU), KC_NO,
-       KC_NO,  KC_NO,KC_NO, KC_NO, M(JPXI), KC_NO, KC_NO,
-                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO, KC_NO,
-       KC_NO,
-       KC_NO, KC_NO, KC_NO
-),
-/* Keymap 3: Japanese with kazari
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |  go  |  za  |  be  |  ge  |      |           |      |  bu  |  ze  |  du  |  gu  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  do  |  ji  |  ga  |  gi  |  zu  |------|           |------|      |  ba  |  de  |  da  |  vu  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |  zo  |  bi  |  di  |      |      |           |      |      |      |  bo  |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- * 
- * 
- * 
- */
-[JPKAZARI] = KEYMAP(
-          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
-          KC_NO, KC_NO,    M(JPGO),        M(JPZA),    M(JPBE), M(JPGE), KC_NO,
-       KC_NO, M(JPDO),    M(JPJI),        M(JPGA),    M(JPGI), M(JPZU), 
-       KC_NO, KC_NO,    M(JPZO),        M(JPBI),    M(JPDI), KC_NO, KC_NO,
-       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
-                                           KC_NO, KC_NO,
-                                                    KC_NO,
-                                  M(SHIFT), KC_NO, KC_TRNS,
-    // right hand
-          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO,  M(JPBU), M(JPZE), M(JPDU), M(JPGU), KC_NO, KC_NO,
-                 KC_NO, M(JPBA), M(JPDE), M(JPDA), M(JPVU), KC_NO,
-       KC_NO,  KC_NO, KC_NO, M(JPBO), KC_NO, KC_NO, KC_NO,
-                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO, KC_NO,
-       KC_NO,
-       KC_NO, KC_NO, KC_TRNS
-),
-/* Keymap 4: Japanese with Toprow
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |  e   |  -   | re   |      |      |           |      |  ya  | ne   |  ru  | o    |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | ra   |  ri  | na   | no   | mi   |------|           |------| wa   |  yo  | yu   | ni   | nn   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | mo   | ro   |  wo  |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- * 
- * 
- * 
- */
-[JPTOPROW] = KEYMAP(
-          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO,   KC_NO, KC_NO,
-          KC_NO, KC_NO,    KC_E,       KC_MINS,  M(JPRE), KC_NO, KC_NO,
-       KC_NO, M(JPRA),  M(JPRI),       M(JPNA),  M(JPNO), M(JPMI), 
-       KC_NO, KC_NO, KC_NO,    KC_NO,  KC_NO, KC_NO, KC_NO,
-       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
-                                           KC_NO, KC_NO,
-                                                    KC_NO,
-                                  KC_TRNS, KC_NO, KC_NO,
-    // right hand
-          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO,  M(JPYA), M(JPNE), M(JPRU), KC_O, KC_NO, KC_NO,
-                 M(JPWA), M(JPYO), M(JPYU), M(JPNI), M(JPNN), KC_NO,
-       KC_NO,  KC_NO, M(JPMO), M(JPRO), M(JPWO), KC_NO, KC_NO,
-                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO, KC_NO,
-       KC_NO,
-       KC_NO, KC_NO, M(KAZARI)
-),
-
-/* Keymap 5: Japanese with Toprow and Kazari
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |  pe  |      |      |           |      |  pu  |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |  pa  |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |  pi  |      |      |      |           |      |      |      |  po  |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- * 
- * 
- * 
- */
-[JPTRKZ] = KEYMAP(
-          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
-          KC_NO, KC_NO,    KC_NO,        KC_NO,    M(JPPE),KC_NO,  KC_NO,
-       KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, 
-       KC_NO, KC_NO,    KC_NO,        M(JPPI),    KC_NO, KC_NO, KC_NO,
-       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
-                                           KC_NO, KC_NO,
-                                                    KC_NO,
-                                  KC_TRNS, KC_NO, KC_NO,
-    // right hand
-          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO,  M(JPPU), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-                 KC_NO, M(JPPA), KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO,  KC_NO, KC_NO, M(JPPO), KC_NO, KC_NO, KC_NO,
-                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
-       KC_NO, KC_NO,
-       KC_NO,
-       KC_NO, KC_NO, KC_TRNS
-),
-/* Keymap 6: Number Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |   "  |   [  |   ]  |      |           |   |  |   %  |   7  |   8  |   9  |      |   F12  |
- * |--------+------+------+------+------+------|   ;  |           |      |------+------+------+------+------+--------|
- * |        |      |   /  |   +  |   {  |   }  |------|           |------|   !  |   4  |   5  |   6  |   0  |   ,    |
- * |--------+------+------+------+------+------|   :  |           |   &  |------+------+------+------+------+--------|
- * |        |      |   *  |   -  |   (  |   )  |      |           |      |   .  |   1  |   2  |   3  |   ?  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |   #  |                                       |   <  |   =  |   >  |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------| Back |  Ent |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Numbers
-[NUM] = KEYMAP(
-       // left hand
-          KC_NO, KC_F1,      KC_F2,          KC_F3,      KC_F4,   KC_F5,   KC_NO,
-          KC_NO, KC_NO,    KC_NO,        JP_DQT,    KC_RBRACKET,   KC_BSPC, KC_SCLN,
-       KC_NO, KC_NO,    KC_SLSH,        JP_PLUS,    LSFT(KC_RBRACKET),   JP_RCBR, 
-       KC_NO, KC_NO,    JP_ASTR,        KC_MINS,    LSFT(KC_8), LSFT(KC_9), JP_COLN,
-       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_HASH,
-                                           KC_NO, KC_NO,
-                                                    KC_NO,
-                                  KC_NO, KC_NO, KC_TRNS,
-       // right hand
-       KC_NO, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       LSFT(KC_JYEN), KC_PERC,   KC_7,   KC_8,    KC_9,    KC_NO, KC_F12,
-                KC_EXLM, KC_4,   KC_5,    KC_6,    KC_0, KC_COMM,
-       LSFT(KC_6), KC_DOT, KC_1,   KC_2,    KC_3,    KC_QUES, KC_NO,
-                         KC_LT,JP_EQL,  KC_GT,    KC_NO,  KC_NO,
-       KC_NO, KC_NO,
-       KC_NO,
-       KC_SPC, KC_BSLS, KC_DOT
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(NUM)                // FN1 - Momentary Layer 6 (Numbers)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-       
-  // MACRO only works in this function
-       switch(id) {
-               case 0:
-                       if (record->event.pressed) {
-                               register_code(KC_RSFT);
-                       } else {
-                               unregister_code(KC_RSFT);
-                       }
-                       break;
-               case CTLSHFT:
-                       if (record->event.pressed) {
-                               return MACRO( D(LSFT), D(LCTL), END);
-                       } else {
-                               return MACRO( U(LSFT), U(LCTL), END);
-                       }
-                       break;
-               case CUTCOPY:
-                       if (record->event.pressed) {
-                               start = timer_read();
-                       } else {
-                               if (timer_elapsed(start) > 150) {
-                                       return MACRO( D(LCTL), T(X), U(LCTL), END);
-                               } else {
-                                       return MACRO( D(LCTL), T(C), U(LCTL), END);
-                               }
-                       }
-                       break;
-                       
-               // kana macros start here
-                       
-               case JPVU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(V), T(U), END);
-                       }
-                       break;
-               case JPNU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(U), END);
-                       }
-                       break;
-               case JPKO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(K), T(O), END);
-                       }
-                       break;
-               case JPSA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(S), T(A), END);
-                       }
-                       break;
-               case JPKE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(K), T(E), END);
-                       }
-                       break;
-               case JPHE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(H), T(E), END);
-                       }
-                       break;
-               case JPSHI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(S), T(I), END);
-                       }
-                       break;
-                       case JPKA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(K), T(A), END);
-                       }
-                       break;
-               case JPKI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(K), T(I), END);
-                       }
-                       break;
-               case JPSU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(S), T(U), END);
-                       }
-                       break;
-               case JPSO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(S), T(O), END);
-                       }
-                       break;
-               case JPHI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(H), T(I), END);
-                       }
-                       break;
-               case JPCHI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(T), T(I), END);
-                       }
-                       break;
-               case JPFU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(F), T(U), END);
-                       }
-                       break;
-               case JPSE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(S), T(E), END);
-                       }
-                       break;
-               case JPTSU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(T), T(U), END);
-                       }
-                       break;
-               case JPKU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(K), T(U), END);
-                       }
-                       break;
-               case JPTE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(T), T(E), END);
-                       }
-                       break;
-               case JPTA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(T), T(A), END);
-                       }
-                       break;
-               case JPTO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(T), T(O), END);
-                       }
-                       break;
-               case JPHA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(H), T(A), END);
-                       }
-                       break;
-               case JPHO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(H), T(O), END);
-                       }
-                       break;
-               case JPXKE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(K), T(E), END);
-                       }
-                       break;
-               case JPXU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(U), END);
-                       }
-                       break;
-               case JPXKA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(K), T(A), END);
-                       }
-                       break;
-               case JPXA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(A), END);
-                       }
-                       break;
-               case JPXO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(O), END);
-                       }
-                       break;
-               case JPGO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(G), T(O), END);
-                       }
-                       break;
-               case JPZA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Z), T(A), END);
-                       }
-                       break;
-               case JPGE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(G), T(E), END);
-                       }
-                       break;
-               case JPBE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(B), T(E), END);
-                       }
-                       break;
-               case JPYU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Y), T(U), END);
-                       }
-                       break;
-               case JPJI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(J), T(I), END);
-                       }
-                       break;
-               case JPGA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(G), T(A), END);
-                       }
-                       break;
-               case JPGI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(G), T(I), END);
-                       }
-                       break;
-               case JPZU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Z), T(U), END);
-                       }
-                       break;
-               case JPZO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Z), T(O), END);
-                       }
-                       break;
-               case JPBI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(B), T(I), END);
-                       }
-                       break;
-               case JPDI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(D), T(I), END);
-                       } 
-                       break;
-               case JPZE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Z), T(E), END);
-                       }
-                       break;
-               case JPDU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(D), T(U), END);
-                       }
-                       break;
-               case JPGU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(G), T(U), END);
-                       }
-                       break;
-               case JPYA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Y), T(A), END);
-                       }
-                       break;
-               case JPYO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(Y), T(O), END);
-                       }
-                       break;
-               case JPDE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(D), T(E), END);
-                       }
-                       break;
-               case JPDA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(D), T(A), END);
-                       }
-                       break;
-               case JPDO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(D), T(O), END);
-                       }
-                       break;
-               case JPBA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(B), T(A), END);
-                       }
-                       break;
-               case JPBO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(B), T(O), END);
-                       }
-                       break;
-               case JPRI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(R), T(I), END);
-                       }
-                       break;
-               case JPRE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(R), T(E), END);
-                       }
-                       break;
-               case JPRA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(R), T(A), END);
-                       }
-                       break;
-               case JPNA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(A), END);
-                       }
-                       break;
-               case JPNO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(O), END);
-                       }
-                       break;
-               case JPMI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(M), T(I), END);
-                       }
-                       break;
-               case JPMU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(M), T(U), END);
-                       }
-                       break;
-               case JPME:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(M), T(E), END);
-                       }
-                       break;
-               case JPNE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(E), END);
-                       }
-                       break;
-               case JPMA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(M), T(A), END);
-                       }
-                       break;
-               case JPXTU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(T), T(U), END);
-                       }
-                       break;
-               case JPWA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(W), T(A), END);
-                       }
-                       break;
-               case JPRU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(R), T(U), END);
-                       }
-                       break;
-               case JPWO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(W), T(O), END);
-                       }
-                       break;
-               case JPNI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(I), END);
-                       }
-                       break;
-               case JPNN:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(N), T(N), END);
-                       }
-                       break;
-               case JPMO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(M), T(O), END);
-                       }
-                       break;
-               case JPRO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(R), T(O), END);
-                       }
-                       break;
-               case JPXE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(E), END);
-                       }
-                       break;
-               case JPXI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(I), END);
-                       }
-                       break;
-               case JPXYU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(Y), T(U), END);
-                       }
-                       break;
-               case JPXYA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(Y), T(A), END);
-                       }
-                       break;
-               case JPXYO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(X), T(Y), T(O), END);
-                       }
-                       break;
-               case JPPE:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(P), T(E), END);
-                       }
-                       break;
-               case JPPU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(P), T(U), END);
-                       }
-                       break;
-               case JPPI:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(P), T(I), END);
-                       }
-                       break;
-               case JPPA:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(P), T(A), END);
-                       }
-                       break;
-               case JPPO:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(P), T(O), END);
-                       }
-                       break;
-               case JPBU:
-                       if (record->event.pressed) {
-                               return MACRO( I(1), T(B), T(U), END);
-                       }
-                       break;
-                       
-                       // kana macros end here
-                       
-                       break;
-               case SHIFT:
-               if (record->event.pressed) {
-                       start = timer_read();
-                       if (layer_state == (1<<JPKAZARI)) {
-                               layer_state = (1<<JPTOPROW)| (1<<JPTRKZ);
-                       } else {
-                               layer_state = (1<<JPTOPROW);                                                    
-                       } 
-      } else {
-                       layer_state = (0<<JPTOPROW);
-                       clear_keyboard_but_mods();
-                       if (timer_elapsed(start) < 100) {
-                               return MACRO( I(1), T(SPC), END);
-                       }
-      }
-      break;
-               case KAZARI:
-               if (record->event.pressed) {
-                       start = timer_read();
-                       if (layer_state == (1<<JPTOPROW)) {
-                               layer_state = (1<<JPKAZARI)| (1<<JPTRKZ);
-                       } else {
-                               layer_state = (1<<JPKAZARI);                                                    
-                       } 
-                       break;
-      } else {
-                       layer_state = (0<<JPKAZARI);
-                       layer_state = (0<<JPTRKZ);
-               if (timer_elapsed(start) < 100) {
-          return MACRO( T(ENTER), END);
-        }
-      }
-      break;  
-               case JPFN:
-                       if (record->event.pressed) {
-                               start = timer_read();
-                               layer_state = (1<<JPXON);
-                       } else {
-                               layer_state = (0<<JPXON);
-                               if (timer_elapsed(start) < 100) {
-                                       return MACRO( T(F7), END);
-                               }
-                       }
-      break;
-               case TOJPLOUT:
-                       if (record->event.pressed) {
-                               if (default_layer_state == (1<<JP)) {
-                                       default_layer_state = (0<<JP);
-                               } else {
-                                       default_layer_state = (1<<JP);
-                               }
-                               return MACRO( T(ZKHK), END);
-                       }
-                       break;
-/*
-               // TOJPL and TOENL switch keyboard language.
-               // The Ctrl+[] commands here load the appropriate ibus-anthy input engine via a WM shortcut
-               // The first key pressed in the new engine is missed, thus the space key
-               // TOJPLOUT works in the same way but is used for switching engines on external systems.
-               case TOJPL:
-                       if (record->event.pressed) {
-                               default_layer_state = (1<<JP);
-                               return MACRO( D(LCTL), T(END), U(LCTL), END);
-                               //return MACRO( D(LCTL), T(END), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
-                       }
-                       break;
-               case TOENL:
-                       if (record->event.pressed) {
-                               default_layer_state = (1<<BASE);
-                               return MACRO( D(LCTL), T(HOME), U(LCTL), END);
-                       //return MACRO( D(LCTL), T(HOME), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
-                       }
-                       break;
-*/
-               }
-    return MACRO_NONE;   
-};
-
-// 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);
-   uint8_t deflayer = biton32(default_layer_state);
-
-       ergodox_board_led_off();
-       ergodox_right_led_1_off();
-       ergodox_right_led_2_off();
-       ergodox_right_led_3_off();
-    
-  
-       switch (layer) {
-               case 0:
-                       //none
-                       break;
-//             case 1:
-//                     ergodox_right_led_2_on();
-//                     break;
-               case 6:
-                       ergodox_right_led_3_on();
-                       break;
-    }
-    switch (deflayer) {
-                case 0:
-                ergodox_right_led_1_off();
-                break;
-                case 1:
-                ergodox_right_led_1_on();
-                break;
-       }
-};
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/readme.md b/keyboards/ergodox/keymaps/ishigoya-jp/readme.md
deleted file mode 100644 (file)
index 839fe97..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-This is a dual English-Japanese keymap that utilises a thumb-shift system for Japanese input. You can read more about this layout on my blog [here](https://ishigoya.com). 
-
-### Some Editing Necessary
-The system I created this on is a Chromebook, and uses a Japanese keymap, so some of the key mappings may not be the same as those on your system. In particular, the Escape key on layer 0 is mapped to KC_LCTL.
-
-### Layouts
-------
-#### English layer - layer 0
-The English layout is a modified Workman layout, and is pictured below:
-
-![English layout](https://i.imgur.com/X1j2Mya.png)
-
-Some of the punctuation keys have been moved to a separate number/symbol layer.
-
-#### Number / Symbol layer - layer 6
-
-The Number / Symbol layer is reachable through a ACTION_LAYER_MOMENTARY function. The blue LED is illuminated when this layer is active. It is accessible from the English or Japanese layers.
-
-![Number layout](https://i.imgur.com/oNSNXPU.png)
-
-#### Japanese layers - layers 1-5
-
-There are 5 layers involved in Japanese input. The TOJPLOUT macro is mapped to the En / 和 button, and switches default layer between layer 0 (English) and 1 (main Japanese layer). When layer 1 is the default layer, the red LED is on. It also outputs the ZKHK button to change the input method language.
-
-On keypress, strings of romaji characters are output by the keyboard using macros, and these simulate the input of individual keys on a latin keyboard.
-
-![Japanese layout](https://i.imgur.com/qMvt92j.png)
-
-Layer 1 is the JP layer. Keys on this layer correspond to singleton keys, or keys on the bottom row where a key is shared. For example, pressing the "ふ や" key outputs `ふ` (or "fu").
-
-Layer 2 is the JPXON layer, and is active while holding the Fn key. This prints keys that are prefaced by "x" when writing in romaji. For example, pressing the "ふ や" key while holding the Fn key outputs `ゃ` (or "xya").
-
-Layer 3 is the JPKAZARI layer, and is active while holding the 飾り key. This provides letters with dakuten. For example, pressing the "ふ や" key while holding the 飾り key outputs `ぶ` (or "bu").
-
-Layer 4 is the JPTOPROW layer, and is active while holding the シフト key. Keys on this line correspond to top row keys on shared keys in the image. For example, pressing the "ふ や" key while holding the シフト key outputs `や` (or "ya").
-
-Layer 5 is the JPTRKZ layer, and is active while holding both the シフト key and the 飾り key. This layer contains handakuten keys. For example, pressing the "ふ や" while holding both the シフト key and the 飾り key outputs `ぷ` (or "pu").
-
-I've also separated out the #define sections and the macros required for kana for easy copying, in case anyone else should wish to make a kana-based layout.
-
-When tapped, the シフト key acts as a space key, and the 飾り key acts as a return key. This allows them to function as 変換 and 無変換, respectively, in many IMEs.
-
-Furthermore the Fn key, when tapped, acts as an F7 key, providing easy switching to katakana in many IMEs.
-
-### Other features
-The cut/copy button gives copy functionality on a short press, and cut functionality on a long press.
-
-The tmux prefix button outputs Control-B.
-
-The Control & Shift key acts as holding the control and shift keys at the same time.
-
-SelAll outputs Control-A.
-
-Undo outputs Control-Z.
diff --git a/keyboards/ergodox/keymaps/italian/keymap.c b/keyboards/ergodox/keymaps/italian/keymap.c
deleted file mode 100644 (file)
index e4c7a56..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-  RGB_SLD
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
- * |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Ins  | LGui |       | Win  | Ctrl |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 |Backsp| Del  |------|       |------|  Enter |Space |
- *                                 |ace   |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,                      KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
-        KC_TAB,                      KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TT(SYMB),
-        KC_CAPS,                     KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,                     KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LALT, 
-        MT(MOD_LGUI,KC_NONUS_BSLASH),KC_PPLS,      KC_PMNS,KC_PAST,MT(MOD_LCTL,KC_PSLS),
-                                                           KC_INS,  KC_LGUI,
-                                                                    KC_HOME,
-                                                   KC_BSPC,KC_DEL,  KC_END,
-        // right hand
-             TG(MDIA),    KC_6,   KC_7,                 KC_8,   KC_9,   KC_0,      KC_MINS,
-             TT(SYMB),    KC_Y,   KC_U,                 KC_I,   KC_O,   KC_P,      KC_LBRC,
-                          KC_H,   KC_J,                 KC_K,   KC_L,   KC_SCLN,   KC_QUOT,
-             KC_LALT,     KC_N,   KC_M,                 KC_COMM,KC_DOT, KC_BSLASH, MT(MOD_RSFT,KC_SLSH),
-                                  MT(MOD_RALT,KC_EQL), KC_LEFT,KC_DOWN,KC_UP,     KC_RIGHT,
-             KC_LGUI,     KC_RCTL,
-             KC_PGUP,
-             KC_PGDN,     KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   .  |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |  0   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),    KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS, KC_EXLM,                RALT(KC_SCLN), RALT(KC_LCBR), RALT(KC_RCBR), KC_TILD,  KC_TRNS,
-       KC_TRNS, RALT(KC_QUOT),          KC_DLR,        RALT(KC_LBRC), RALT(KC_RBRC), KC_CIRC,
-       KC_TRNS, KC_PERC,                LSFT(KC_EQL),  LSFT(KC_8),    LSFT(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,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_TRNS, KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_TRNS, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_0
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-    case RGB_SLD:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_mode(1);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// Runs 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md
deleted file mode 100644 (file)
index 215c24a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-# ErgoDox Italian layout
-
-## Layer 0
-```
- ,--------------------------------------------------.           ,--------------------------------------------------.
- |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
- |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
- |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
- |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
- | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
- `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
-   `----------------------------------'                                       `----------------------------------'
-                                        ,-------------.       ,-------------.
-                                        | Ins  | LGui |       | Win  | Ctrl |
-                                 ,------|------|------|       |------+--------+------.
-                                 |      |      | Home |       | PgUp |        |      |
-                                 |Backsp| Del  |------|       |------|  Enter |Space |
-                                 |ace   |      | End  |       | PgDn |        |      |
-                                 `--------------------'       `----------------------'
-```
-
-## Layer 1
-```
-
- ,--------------------------------------------------.           ,--------------------------------------------------.
- |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
- |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
- |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
- `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-   |      |      |      |      |      |                                       |   .  |      |      |      |      |
-   `----------------------------------'                                       `----------------------------------'
-                                        ,-------------.       ,-------------.
-                                        |      |      |       |      |      |
-                                 ,------|------|------|       |------+------+------.
-                                 |      |      |      |       |      |      |      |
-                                 |      |      |------|       |------|      |  0   |
-                                 |      |      |      |       |      |      |      |
-                                 `--------------------'       `--------------------'
-```
-
-## Layer 2
-```
-
- ,--------------------------------------------------.           ,--------------------------------------------------.
- |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
- |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
-   `----------------------------------'                                       `----------------------------------'
-                                        ,-------------.       ,-------------.
-                                        |      |      |       |      |      |
-                                 ,------|------|------|       |------+------+------.
-                                 |      |      |      |       |      |      |Brwser|
-                                 |      |      |------|       |------|      |Back  |
-                                 |      |      |      |       |      |      |      |
-                                 `--------------------'       `--------------------' 
-```
-
-
diff --git a/keyboards/ergodox/keymaps/j3rn/keymap.c b/keyboards/ergodox/keymaps/j3rn/keymap.c
deleted file mode 100644 (file)
index 2069f26..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Grv    |   1  |   2  |   3  |   4  |   5  |  [   |           |  ]   |   6  |   7  |   8  |   9  |   0  |  BkSp  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  -   |           |  =   |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | ~L1  | Alt  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | Home |       | PgUp |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 |Space | LGui |------|       |------|  Tab   |Enter |
- *                                 |      |      | ~L2  |       | ~L1  |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_MINS,
-        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        MO(SYMB),       KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-
-                                              ALT_T(KC_APP),  KC_HOME,
-                                                              KC_END,
-                                               KC_SPC,KC_LGUI,MO(MDIA),
-        // right hand
-             KC_RBRC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSPC,
-             KC_EQL,      KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          MO(SYMB),
-
-             KC_PGUP,         CTL_T(KC_ESC),
-             KC_PGDN,
-             MO(SYMB),KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Lclk | Rclk |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_F12,
-                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),               // FN1 - Momentary Layer 1 (Symbols)
-    [2] = ACTION_LAYER_TAP_TOGGLE(MDIA)                // FN2 - Momentary Layer 2 (Media)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/j3rn/readme.md b/keyboards/ergodox/keymaps/j3rn/readme.md
deleted file mode 100644 (file)
index 178aba7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# J3RN's Mac-Centric ErgoDox EZ keymap
-
-## Motivation
-
-Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
-
-## How is it different from the default ErgoDox EZ layout?
-
-This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means:
-
-### Mac-like changes
-
-- **The key to the left of "1" is "~" instead of "=".**
-- **The key to the right of "0" is Backspace instead of "-"** (misleadingly labeled "delete" on the Mac's keyboard). There was no room to fit in "-" and "=" between "0" and Backspace, unfortunately.
-- **The key to the left of "Q" is Tab instead of Delete.**
-- **The rightmost big key on the left thumb is CMD (LGui) instead of Backspace.**
-- **The key to the left of Alt-Shift is an Alt key**. This is close to it's position on the Mac keyboard, though slightly further left.
-
-### Other changes
-
-- **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a  CAPS LOCK key. This is the Ctrl key I find myself using most.
-- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys.
-- **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach.
-- **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better.
-- **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold."
-- **The Home and End buttons have been shifted up on the left thumb, and Shift inserted below them.** This makes doing Shift-5 and other such combinations less painful.
-- **The Page Up and Page Down buttons have been shifted up on the right thumb.** I don't use either of these keys often, and wanted to free up some real estate.
-- **The bottommost-inner keys on the left and right thumb are momentary L2 and momentary L1, respectively**. I have found that both modes are useful, and this seemed like a reasonably accessible place to put these.
-- **Traditional numpad layout.** The base of most numpads is a double-wide "0" key to the left of a "." key. This is reflected in my layout by having two "0" keys to the left of a "." key.
-- **The function keys (F1-F12) have been moved to L2.** They were in the way in L1.
-
-**I'm always open to feedback and/or suggestions!**
diff --git a/keyboards/ergodox/keymaps/jack/Makefile b/keyboards/ergodox/keymaps/jack/Makefile
deleted file mode 100644 (file)
index 457a3d0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h
deleted file mode 100644 (file)
index 5c11652..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D7
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 15     // Number of LEDs
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 255
-#define RGBLIGHT_VAL_STEP 12
-
-#define RGB_MIDI
-#define RGBW_BB_TWI
-
-#endif
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c
deleted file mode 100644 (file)
index 9cb80c5..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-// TODO: Define layer names that make sense for the ErgoDox EZ.
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_NO,          KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_NO,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_NO,
-        KC_ESC,         KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_NO,
-        KC_NO,          KC_LCTL,      KC_LALT,KC_LGUI, MO(2),
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_SPC,KC_END,
-        // right hand
-             KC_NO,     M(1),   KC_7,   KC_8,   KC_9,   KC_0,             KC_NO,
-             KC_NO,     RGB_TOG,   RGB_MOD,   RGB_HUI,   RGB_HUD,   KC_P,             KC_BSPC,
-                        RGB_SAI,   RGB_SAD,   RGB_VAI,   RGB_VAD,   KC_SCLN,          KC_QUOT,
-             KC_NO,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_ENT,
-                                  MO(1), KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,  
-             RGB_TOG,        RGB_HUI,
-             RGB_MOD,
-             M(2), KC_SPC,KC_SPC
-    ),
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,  KC_TRNS,
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5, 
-       KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC,
-                KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
-       KC_TRNS, KC_F12,  KC_NO,   KC_NO, KC_NO, RESET,   KC_TRNS,
-                         KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, 
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_TRNS,
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  
-       KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
-                 KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
-       KC_TRNS,  KC_F12,  KC_NO,   KC_NO, KC_NO, RESET,   KC_TRNS,
-                          KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, 
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-        case 2:
-        if (record->event.pressed) { // For resetting EEPROM
-          api_send_unicode(0x0CA0);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/jacobono/keymap.c b/keyboards/ergodox/keymaps/jacobono/keymap.c
deleted file mode 100644 (file)
index dc7382b..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define COLEMAK 0 // new colemak layout
-#define QWERTY 1 // default layer
-#define SYMB 2 // symbols
-#define NUMPAD 3 // number pad
-#define MDIA 4 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-       /* Keymap 0: Basic COLEMAK layer
-        *
-        * ,--------------------------------------------------.           ,--------------------------------------------------.
-        * |        |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
-        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-        * | Tab    |   Q  |   W  |   F  |   P  |   G  |      |           |      |   J  |   L  |   U  |   Y  |   ;  |  TAB   |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |  DEL   |
-        * |--------+------+------+------+------+------|      |          LGUI(TAB)------+------+------+------+------+--------|
-        * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
-        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-        *   |  L1  |      |      | UP   |MO(L2)|                                       |MO(L2)| Down |      |  ALT | RGUI   |
-        *   `----------------------------------'                                       `------------------------------------'
-        *                                        ,-------------.       ,---------------.
-        *                                        | LGUI | App  |       |Ctrl/Esc|  Alt |
-        *                                 ,------|------|------|       |--------+--------+------.
-        *                                 |      |      |QUKSL |       |  QUKSL |        |      |
-   *                                 |Space |ENTER |------|       |--------| ENTER  |Space |
-        *                                 |      |      |MO(L3)|       | MO(L3) |        |      |
-        *                                 `--------------------'       `------------------------'
-        */
-
-       // If it accepts an argument (i.e, is a function), it doesn't need KC_.
-       // Otherwise, it needs KC_*
-       [COLEMAK] = KEYMAP(  // layer 0 : Colemak layout default layer
-           // left hand
-            KC_TRNS,        KC_1,         KC_2,   KC_3,   KC_4,    KC_5,   KC_LEFT,
-            KC_TAB,         KC_Q,         KC_W,   KC_F,   KC_P,    KC_G,   KC_TRNS,
-            KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,    KC_D,
-            KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,    KC_B,   KC_TRNS,
-            TG(QWERTY),     KC_TRNS,      KC_TRNS,KC_UP,  MO(SYMB),
-            KC_LGUI,        KC_APP,
-            LGUI(S(KC_SPC)),
-            KC_SPC,KC_ENT,MO(NUMPAD),
-           // right hand
-            KC_RGHT,      KC_6,    KC_7,    KC_8,    KC_9,   KC_0,              KC_DELT,
-            KC_TRNS,      KC_J,    KC_L,    KC_U,    KC_Y,   KC_SCLN,           KC_TAB,
-            KC_H,         KC_N,    KC_E,    KC_I,    KC_O,   KC_DEL,
-            LGUI(KC_TAB), KC_K,    KC_M,    KC_COMM, KC_DOT, CTL_T(KC_SLSH),    KC_RSFT,
-            MO(SYMB),     KC_DOWN, KC_TRNS, KC_RALT, KC_RGUI,
-            CTL_T(KC_ESC), KC_LALT,
-            LGUI(S(KC_SPC)),
-            MO(NUMPAD), KC_ENT, KC_SPC),
-
-       /* Keymap 1: Basic QWERTY layer
-        *
-        * ,--------------------------------------------------.           ,--------------------------------------------------.
-        * | BkSp   |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   DEL  |
-        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-        * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L0  |           |  L0  |   Y  |   U  |   I  |   O  |   P  |   \    |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-   * | Ctrl   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L4|  CTRL  |
-   * |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
-   * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
-   * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-   *   |Grv/L3|  '"  |AltShf| Left |MO(L2)|                                       |MO(L2)| Down |   [  |   ]  | ~L3  |
-   *   `----------------------------------'                                       `----------------------------------'
-   *                                        ,-------------.       ,---------------.
-   *                                        | Tab  | BkSp |       | Alt  |Ctrl/Esc|
-   *                                 ,------|------|------|       |------+--------+------.
-   *                                 |      |      | Home |       | PgUp |        |      |
-   *                                 | Space| LGUI |------|       |------|  RGUI  |Enter |
-   *                                 |      |      | End  |       | PgDn |        |      |
-   *                                `--------------------'       `----------------------'
-   */
-       // If it accepts an argument (i.e, is a function), it doesn't need KC_.
-       // Otherwise, it needs KC_*
-       [QWERTY] = KEYMAP(  // layer 1
-           // left hand
-           KC_BSPC,           KC_1,         KC_2,   KC_3,   KC_4,    KC_5,   KC_LEFT,
-           KC_TAB,            KC_Q,         KC_W,   KC_E,   KC_R,    KC_T,   KC_TRNS,
-           KC_LCTRL,          KC_A,         KC_S,   KC_D,   KC_F,    KC_G,
-           KC_LSFT,           CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,    KC_B,   KC_LALT,
-           KC_TRNS, KC_QUOT,  LALT(KC_LSFT),  KC_LEFT, MO(SYMB),
-           KC_TAB,  KC_DELT,
-           KC_HOME,
-           KC_SPC, KC_LGUI, KC_END,
-           // right hand
-           KC_RGHT,      KC_6,    KC_7,    KC_8,    KC_9,              KC_0,           KC_DELT,
-           KC_TRNS,      KC_Y,    KC_U,    KC_I,    KC_O,              KC_P,           KC_BSLS,
-           KC_H,         KC_J,    KC_K,    KC_L,    LT(MDIA, KC_SCLN), KC_RCTRL,
-           KC_RALT,      KC_N,    KC_M,    KC_COMM, KC_DOT,            CTL_T(KC_SLSH), KC_RSFT,
-           MO(SYMB),     KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1,
-           KC_LALT, CTL_T(KC_ESC),
-           KC_PGUP,
-           KC_PGDN, KC_RGUI, KC_ENT),
-
-
-       /* Keymap 2: Symbol Layer
-        *
-        * ,--------------------------------------------------.           ,--------------------------------------------------.
-        * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
-        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-        * |        |      |   @  |   *  |   =  |   _  |      |           |      |   ~  |   {  |   }  |   #  |   :  |   F12  |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |   |  |   !  |   +  |   -  |   "  |------|           |------|   "  |   (  |   )  |   '  |   `  |        |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |      |   %  |   ^  |   $  |   &  |      |           |      |   ;  |   [  |   ]  |   \  |   /  |        |
-        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-        *   |      |      |      |      |      |                                       |      |      |      |      |      |
-        *   `----------------------------------'                                       `----------------------------------'
-        *                                        ,-------------.       ,-------------.
-        *                                        |      |      |       |      |      |
-        *                                 ,------|------|------|       |------+------+------.
-        *                                 |      |      |      |       |      |      |      |
-        *                                 |      |      |------|       |------|      |      |
-        *                                 |      |      |      |       |      |      |      |
-        *                                 `--------------------'       `--------------------'
-        */
-       // SYMBOL
-       [SYMB] = KEYMAP(
-           // left hand
-           KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_AT,   KC_ASTR, KC_EQL,  KC_UNDS, KC_TRNS,
-           KC_TRNS, KC_PIPE, KC_EXLM, KC_PLUS, KC_MINS, S(KC_QUOTE),
-           KC_TRNS, KC_TRNS, KC_PERC, KC_CIRC, KC_DLR,  KC_AMPR, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS,
-
-           // right hand
-           KC_TRNS, KC_F6,      KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
-           KC_TRNS, KC_TILD,    KC_LCBR, KC_RCBR, KC_HASH, S(KC_SCLN), KC_F12,
-           S(KC_QUOTE),KC_LPRN, KC_RPRN, KC_QUOTE, KC_GRV, KC_TRNS,
-           KC_TRNS, KC_SCLN,    KC_LBRC, KC_RBRC, KC_BSLS, KC_SLSH, KC_TRNS,
-           KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS),
-
-       /* Keymap 3: Numpad Layer
-        *
-        * ,--------------------------------------------------.           ,--------------------------------------------------.
-        * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-        * |        |      |      |  UP  |      |      |      |           |      |   $  |   7  |   8  |   9  |   +  |        |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |      | LEFT | DOWN | RIGHT|      |------|           |------|   =  |   4  |   5  |   6  |   -  |        |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   *  |        |
-        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-        *   |      |      |      |      |      |                                       |   ,  |   0  |   .  |   /  |      |
-        *   `----------------------------------'                                       `----------------------------------'
-        *                                        ,-------------.       ,-------------.
-        *                                        |      |      |       |      |      |
-        *                                 ,------|------|------|       |------+------+------.
-        *                                 |      |      |      |       |      |      |      |
-        *                                 |      |      |------|       |------|      |      |
-        *                                 |      |      |      |       |      |      |      |
-        *                                 `--------------------'       `--------------------'
-        */
-       // Numpad
-       [NUMPAD] = KEYMAP(
-           // left hand
-           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-           KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,
-           KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRNS,
-           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-           KC_TRNS,KC_TRNS,
-           KC_TRNS,
-           KC_TRNS,KC_TRNS,KC_TRNS,
-           // right hand
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,
-           KC_TRNS, KC_DLR,  KC_7,    KC_8,    KC_9,    KC_PLUS,  KC_TRNS,
-                    KC_EQL,  KC_4,    KC_5,    KC_6,    KC_MINS,  KC_TRNS,
-           KC_TRNS, KC_AMPR, KC_1,    KC_2,    KC_3,    KC_ASTR,  KC_TRNS,
-                             KC_COMMA,KC_0,    KC_DOT,  KC_SLSH,  KC_TRNS,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS),
-
-       /* Keymap 4: Media and mouse keys
-        *
-        * ,--------------------------------------------------.           ,--------------------------------------------------.
-        * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-        * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
-        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-        * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
-        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-        *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
-        *   `----------------------------------'                                       `----------------------------------'
-        *                                        ,-------------.       ,-------------.
-        *                                        |      |      |       |      |      |
-        *                                 ,------|------|------|       |------+------+------.
-        *                                 |      |      |      |       |      |      |Brwser|
-        *                                 |      |      |------|       |------|      |Back  |
-        *                                 |      |      |      |       |      |      |      |
-        *                                 `--------------------'       `--------------------'
-        */
-       // MEDIA AND MOUSE
-       KEYMAP(
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS,
-           // right hand
-           KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-           KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-           KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-           KC_TRNS, KC_TRNS,
-           KC_TRNS,
-           KC_TRNS, KC_TRNS, KC_WBAK),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-       [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-       // MACRODOWN only works in this function
-       switch(id) {
-               case 0:
-                       if (record->event.pressed) {
-                               register_code(KC_RSFT);
-                       } else {
-                               unregister_code(KC_RSFT);
-                       }
-                       break;
-       }
-       return MACRO_NONE;
-};
-
-// 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);
-
-       ergodox_board_led_off();
-       ergodox_right_led_1_off();
-       ergodox_right_led_2_off();
-       ergodox_right_led_3_off();
-       switch (layer) {
-               // TODO: Make this relevant to the ErgoDox EZ.
-               case 1:
-                       ergodox_right_led_1_on();
-                       break;
-               case 2:
-                       ergodox_right_led_2_on();
-                       break;
-               default:
-                       // none
-                       break;
-       }
-
-};
diff --git a/keyboards/ergodox/keymaps/jacobono/readme.md b/keyboards/ergodox/keymaps/jacobono/readme.md
deleted file mode 100644 (file)
index f977054..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Default Layer #
-
-I'm using the colemak layer -- customized a bit to work a bit better when using spacemacs as my editor.
-
-![default-layer](https://i.imgur.com/7uRqlWw.png)
-
-## Special Keys ##
-
-`SC1` => `LGUI + TAB`
-
-`SC2` => `LGUI + SPACE + TAB`
-
-`L1` => Switch to QWERTY Layout
-
-`T(L2)` => Toggle Symbol Layer
-
-`T(L3)` =>  Toggle Number and D-Pad Layer
-
-# QWERTY #
-
-Nothing special here -- just need this layer tucked away for the `WASD`.  Which is literally the only reason I use it.
-Just have the same button to toggle back to colemak.
-
-# Symbol Layer #
-
-![symbol-layer](https://i.imgur.com/ppT0rIU.png)
-
-This is just putting matching closing symbols next to each other -- useful when editing lisp.
-
-# Number and D-Pad Layer #
-
-Just a basic number layer with a D-PAD on the other side.
-
-![number-dpad-layer](https://i.imgur.com/Q0VHfyq.png)
diff --git a/keyboards/ergodox/keymaps/jafo/jafo-Notes b/keyboards/ergodox/keymaps/jafo/jafo-Notes
deleted file mode 100644 (file)
index 9376125..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-These are notes on how to build and deploy the firmware to Ez, but they are
-from before the qmk restructuring.
-
-cd qmk_firmware/keyboard/ergodox_ez
-make KEYMAP=jafo
-cp ergodox_ez.hex keymaps/jafo/
-/tmp/teensy.64bit
-Open hex keymap file
-Program
-Upload
diff --git a/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf b/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf
deleted file mode 100644 (file)
index 760a0ec..0000000
Binary files a/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf and /dev/null differ
diff --git a/keyboards/ergodox/keymaps/jafo/keymap.c b/keyboards/ergodox/keymaps/jafo/keymap.c
deleted file mode 100644 (file)
index 4f1428f..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Grv    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   =    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Esc/Cmd|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------|  L2  |           |  L2  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  | Del  | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Ctrl/Esc| Alt|       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_EQL,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        GUI_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(MDIA),
-        LT(SYMB,KC_GRV),KC_QUOT,      KC_DELT,  KC_LEFT,KC_RGHT,
-                                              CTL_T(KC_ESC),  KC_LALT,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             TG(MDIA),    KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------| LEFT | DOWN |  UP  | RIGHT|      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      | Lclk | Mclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/jafo/readme.md b/keyboards/ergodox/keymaps/jafo/readme.md
deleted file mode 100644 (file)
index 219cb06..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# ErgoDox EZ "jafo" Configuration
-
-This is a layout based on the ErgoDox Ez default layout, but with some
-customizations I made for my use-case.  I use Linux, vi and the i3 window
-manager, so I made these changes:
-
-- Arrow keys laid out in vi positions in media layer.
-
-- Esc (tap) and Win (held) to the left of A.  i3 uses Win key for navigation
-  and having that be symmetric on the left and right makes it easier.
-
-- Grave accent below equals, I was having a hard time using ~
-
-- Layer 2 switch below the L1 switch, so I can go into a mode where I get
-  arrow keys under my vi motion fingers.
-
-- Making the Ctrl (held) and Esc (tap) on my thumbs symmetric.  Not sure I
-  need that with the Esc left of A and Ctrl on the Z and / keys when held...
-
-![Jafo](https://i.imgur.com/ISEc630.png)
diff --git a/keyboards/ergodox/keymaps/jgarr/keymap.c b/keyboards/ergodox/keymaps/jgarr/keymap.c
deleted file mode 100644 (file)
index 42d5842..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,-----------------------------------------------------.
- * |   Grv  |   1  |   2  |   3  |   4  |   5  | Del  |           |Backspace|   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+------+-------------|           |---------+------+------+------+------+------+--------|
- * |   Tab  |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1     |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |         |------+------+------+------+------+--------|
- * |Ctrl/Esc|   A  |   O  |   E  |   U  |   I  |------|           |---------|   D  |   H  |   T  |   N  |S / L2|   -    |
- * |--------+------+------+------+------+------| Hyper|           | Meh     |------+------+------+------+------+--------|
- * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |         |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `----------------+------+------+------+------+--------'
- *   | Ctrl | LGui |  Alt | Left | Right|                                          |  Up  | Down |   [  |   ]  |  =   |
- *   `----------------------------------'                                          `----------------------------------'
- *                                        ,--------------.       ,-------------.
- *                                        | AltShf| LGui |       | Alt  | ~L1  |
- *                                 ,------|-------|------|       |------+--------+------.
- *                                 |      |       | Home |       | PgUp |        |      |
- *                                 | Space|Backsp |------|       |------|  Enter |Space |
- *                                 |      |ace    | End  |       | PgDn |        |      |
- *                                 `---------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_DELT,
-        KC_TAB,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(1),
-        CTL_T(KC_ESC),  KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
-        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
-        KC_LCTL,  KC_LGUI,  KC_LALT,  KC_LEFT, KC_RGHT,
-                                              LALT(KC_LSFT),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_BSPC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
-             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MDIA, KC_S),   KC_MINS,
-             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_EQL,
-             KC_LALT,        KC_FN1,
-             KC_PGUP,
-             KC_PGDN,KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/josh/keymap.c b/keyboards/ergodox/keymaps/josh/keymap.c
deleted file mode 100644 (file)
index da887fc..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-//macros
-#define CTL_SFT_T 100 // open type
-#define CTL_SFT_G 101 // find references
-#define CTL_ALT_H 102 // open call hierarchy
-#define CTL_SFT_R 103 // open resource
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |           |M100/3|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |TAB /Alt|   Q  |   W  |   E  |   R  |   T  | Meh  |           | Meh  |   Y  |   U  |   I  |   O  |   P  |\ / ALT |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LCTL   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / CTL |
- * |--------+------+------+------+------+------| ~L1  |           | ~L1  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | WIN  |  `   | M 102| M 101|AltShf|                                       |AltShf| Left | Down |  Up  | Right  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LALT |       | Alt  |  CAPS  |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------| Delete |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        LT(MDIA, KC_EQL),KC_1,        KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
-        ALT_T(KC_TAB),  KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   ALL_T(KC_NO),
-        KC_LCTL,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   MO(SYMB),
-        KC_LGUI,        KC_GRV, M(CTL_ALT_H),M(CTL_SFT_G),LALT(KC_LSFT),
-                                              CTL_T(KC_APP),  KC_LALT,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             LT(M(CTL_SFT_T),
-                M(CTL_SFT_R)),KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   LT(MDIA, KC_MINS),
-             MEH_T(KC_NO),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,                 KC_BSLS,
-                              KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN), CTL_T(KC_QUOT),
-             MO(SYMB),        KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                        LALT(KC_LSFT),KC_LEFT,KC_DOWN,KC_UP,            KC_RIGHT,
-             KC_LALT,        KC_CAPS,
-             KC_PGUP,
-             KC_PGDN,KC_DEL, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  | F11  |           | F12  |  F6  |  F7  |  F8  |  F9  |  F10 |  CALC  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Left | Down |  Up  | Right|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_F12,  KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_CALC,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                KC_LEFT, KC_DOWN,KC_UP,   KC_RIGHT,KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                         KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |RESET |           |RESET |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       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_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-        case 0:
-            if (record->event.pressed) {
-                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-            }
-            break;
-        case CTL_SFT_T:
-            if (record->event.pressed) {
-                return MACRO(D(LCTL), D(LSFT), T(T), END);
-            }
-            return MACRO(U(LCTL), U(LSFT), END);
-            break;
-        case CTL_SFT_G:
-            if (record->event.pressed) {
-                return MACRO(D(LCTL), D(LSFT), T(G), END);
-            }
-            return MACRO(U(LCTL), U(LSFT), END);
-            break;
-        case CTL_ALT_H:
-            if (record->event.pressed) {
-                return MACRO(D(LCTL), D(LALT), T(H), END);
-            }
-            return MACRO(U(LCTL), U(LALT), END);
-            break;
-        case CTL_SFT_R:
-            if (record->event.pressed) {
-                return MACRO(D(LCTL), D(LSFT), T(R), END);
-            }
-            return MACRO(U(LCTL), U(LSFT), END);
-            break;
-    }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/josh/readme.md b/keyboards/ergodox/keymaps/josh/readme.md
deleted file mode 100644 (file)
index cee19d4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Layout is based on the default layout that comes on the ergodox infinity. Focused mostly on making ctl and alt easy to reach. I spend most my day working in Eclipse which has just so many 3 key shortcuts.
-
-* Removed numpad keys from symbol layer (I don't use them)
-* Added arrow keys under h, j, k, l on symbol layer. vi movement keys!
-* Added a few macros for eclipse hotkeys that I used all the time
-* Added calc button on symbol layer
-* tap vs hold on tab and \. Gives alt, ctl and shift on both sides of the keyboard
-
diff --git a/keyboards/ergodox/keymaps/kastyle/keymap.c b/keyboards/ergodox/keymaps/kastyle/keymap.c
deleted file mode 100644 (file)
index 4679966..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/* Setup to approximate a Kinesis Advantage with an eye to use in a
- * Mac/OSX environment 
- * This version adds a hand swap feature to flip the keyboard */
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LGUI |           | App  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|   \  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  |Grv/L1|
- *   `----------------------------------'                                       `----------------------------------'
- *                                      ,---------------.       ,---------------.
- *                                      |  LGUI  |Al/Esc|       |Al/Esc|  RGUI  |
- *                               ,------|--------|------|       |------+--------+------.
- *                               |      |        | Home |       | PgUp |        |      |
- *                               |Backsp|   Del  |------|       |------| Enter  | Space|
- *                               |      |        | End  |       | PgDn |        |      |
- *                               `----------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-    // left hand
-    KC_EQL,          KC_1,         KC_2,          KC_3,    KC_4,    KC_5,   KC_LGUI,
-    KC_TAB,          KC_Q,         KC_W,          KC_E,    KC_R,    KC_T,   TG(1),
-    KC_LCTL,         KC_A,         KC_S,          KC_D,    KC_F,    KC_G,
-    KC_LSFT,         CTL_T(KC_Z),  KC_X,          KC_C,    KC_V,    KC_B,   ALL_T(KC_NO),
-    KC_FN1, KC_BSLS,      LALT(KC_LSFT), KC_LEFT, KC_RGHT,
-                                                                    KC_LGUI,         ALT_T(KC_ESC),
-                                                                                     KC_HOME,
-                                                                    KC_BSPC, KC_DEL, KC_END,
-    // right hand
-    KC_APP,       KC_6,    KC_7,    KC_8,    KC_9,    KC_0,              KC_MINS,
-    TG(1),        KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,              KC_BSLS,
-                  KC_H,    KC_J,    KC_K,    KC_L,    LT(MDIA, KC_SCLN), KC_QUOT,
-    MEH_T(KC_NO), KC_N,    KC_M,    KC_COMM, KC_DOT,  CTL_T(KC_SLSH),    KC_RSFT,
-                           KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,           KC_FN1,
-    ALT_T(KC_ESC),         KC_RGUI,
-    KC_PGUP,
-    KC_PGDN,      KC_ENT,  KC_SPC
-),
-
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | PrScr  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | ScrLk  |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Pause  |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_PSCR, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-       KC_SLCK, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
-       KC_PAUS, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
-       KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_SWAP_HANDS_TAP_KEY(KC_GRV)       // FN1 - Tap = Grave/Tilde - Hold Momentary swap hands
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/kastyle/readme.md b/keyboards/ergodox/keymaps/kastyle/readme.md
deleted file mode 100644 (file)
index 944286a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-The kastyle keymap was originally intended to remap the ErgoDox EZ to more
-closely approximate the layout of a Kinesis Advantage. Notable changes
-over the stock ErgoDox layout include:
-
-  * Re-arragnement of tab, enter, space, and delete to match the Kinesis
-  * Addition of print screen, pause, etc. keys following the kines-ish keymap
-  on L1
-  * GUI keys have replaced Ctrl on the thumb keys (for Mac use), and Alt keys
-  are mapped to allow Esc on tap (good for Vi users)
-  * Most notably, the addition of a momentary one-handed mode for quick and
-  easy access to keys on the other half of the keyboard, e.g. while using a 
-  mouse in one hand, one may add text to a dialogue box with the other without
-  having to reach across the keyboard or remove one's hand from the mouse.
-
diff --git a/keyboards/ergodox/keymaps/kines-ish/keymap.c b/keyboards/ergodox/keymaps/kines-ish/keymap.c
deleted file mode 100644 (file)
index 83f5b0e..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Esc  | Grv  |Insert| Left | Right|                                       |  Up  | Down |   [  |   ]  |  L2  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Ctrl | Alt  |       | LGui | Ctrl |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Home |       | PgUp |      |      |
- *                                 |Backsp| Del  |------|       |------| Enter| Space|
- *                                 |ace   |      | End  |       | PgDn |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,   KC_1,    KC_2,    KC_3,     KC_4,     KC_5,  KC_LEFT,
-        KC_TAB,   KC_Q,    KC_W,    KC_E,     KC_R,     KC_T,  TG(SYMB),
-        KC_CAPS,  KC_A,    KC_S,    KC_D,     KC_F,     KC_G,
-        KC_LSFT,  KC_Z,    KC_X,    KC_C,     KC_V,     KC_B,  ALL_T(KC_NO),
-        KC_ESC,   KC_GRV,  KC_INS,  KC_LEFT,  KC_RGHT,
-                                               KC_LCTL,KC_LALT,
-                                                       KC_HOME,
-                                         KC_BSPC,KC_DEL,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,     KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,  KC_QUOT,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,  KC_FN2,
-             KC_LGUI, KC_RCTL,
-             KC_PGUP,
-             KC_PGDN, KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | PrScr  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | ScrLk  |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Pause  |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_PSCR,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_SLCK,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_PAUS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/kines-ish/readme.md b/keyboards/ergodox/keymaps/kines-ish/readme.md
deleted file mode 100644 (file)
index 5d39a05..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-This keymap attempts to match the Kinesis Contoured (aka Advantage) default
-layout as closely as possible. See
-http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf
-
-Apart from the obvious mappings, this keymap also:
-
-* removes the dual-purpose momentary layer/normal keys: Z, /, and Grv;
-  because the author--coming from a Kinesis keyboard--finds the delays and
-  accidental modifiers to be more disconcerting than helpful.
-
-* puts Esc in the bottom left since there's no place for it in the top
-  left to match the Kinesis.
-
-* changes the bottom-right key into an L2 toggle since there's otherwise no
-  way to get to L2.
-
-* adds PrScr, ScrLk and Pause to the L1 keymap, down the left side, since
-  they're present on the Kinesis but not available in the default
-  ergodox_ez keymap.
diff --git a/keyboards/ergodox/keymaps/kristian/keymap.c b/keyboards/ergodox/keymaps/kristian/keymap.c
deleted file mode 100644 (file)
index e7e4243..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "keymap_fr_ch.h"
-#include "keymap_french.h"
-#include "keymap_german.h"
-#include "keymap_german_ch.h"
-#include "keymap_nordic.h"
-#include "keymap_norwegian.h"
-#include "keymap_spanish.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-
-[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_APOS),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_APOS),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER),
-
-[1] = KEYMAP(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER),
-
-[2] = KEYMAP(KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LALT,KC_LGUI,KC_MS_BTN1,KC_MS_BTN2,KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_LGUI,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_ESCAPE,KC_MS_WH_UP,KC_MS_WH_DOWN,KC_MS_ACCEL0,KC_MS_ACCEL1),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_TAP_TOGGLE(1)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_3_on();
-            break;
-        case 4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case 5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        case 6:
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        case 7:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        default:
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/maz/keymap.c b/keyboards/ergodox/keymaps/maz/keymap.c
deleted file mode 100644 (file)
index 6378f87..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define ARRW 2 // arrow keys
-#define MDIA 3 // media keys, including mouse
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           | CAPS |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  ESC   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |  Grv |      |*SYMB*|*ARRW*|                                       |*MDIA*|*SYMB*|   [  |  ]   |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 | Space| Bksp |------|       |------|  Tab   |Enter |
- *                                 | ctrl | gui  | Alt  |       | Alt  |  gui   | ctrl |
- *                                 `--------------------'       `----------------------'
- */
-    // TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
-    // not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,                 KC_1,             KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
-        KC_TAB,                 KC_Q,             KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_ESC,                 KC_A,             KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,                KC_Z,             KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        KC_TRNS,                KC_GRV,  KC_TRNS,MO(SYMB),MO(ARRW),
-                                                    KC_TRNS,  KC_TRNS,
-                                                              KC_TRNS,
-                                               CTL_T(KC_SPC),GUI_T(KC_BSPC),KC_LALT,
-        // right hand
-        KC_TRNS,      KC_6,   KC_7,             KC_8,    KC_9,   KC_0,             KC_MINS,
-        KC_CAPSLOCK,     KC_Y,   KC_U,             KC_I,    KC_O,   KC_P,             KC_BSLS,
-                      KC_H,   KC_J,             KC_K,    KC_L,   KC_SCLN,          KC_QUOT,
-        MEH_T(KC_NO), KC_N,   KC_M,             KC_COMM, KC_DOT, KC_SLSH,          KC_RSFT,
-        MO(MDIA),                  MO(SYMB), KC_LBRC,KC_RBRC, KC_TRNS,
-        KC_TRNS, KC_TRNS,
-        KC_TRNS,
-        KC_RALT,GUI_T(KC_TAB), CTL_T(KC_ENT)
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   .    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_DOT,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_TRNS,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Arrow keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |PGDOWN| PGUP |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------| LEFT | DOWN |  UP  |RIGHT |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | HOME | END  |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[ARRW] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_PGDOWN, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN,   KC_UP,   KC_RGHT, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_HOME,   KC_END,  KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 3: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |Mute  |VolDn | VolUp|      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      | Prev | Play | Next |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |Brwser|      |      |       |      |      |      |
- *                                 |Back  |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_WBAK, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/maz/readme.md b/keyboards/ergodox/keymaps/maz/readme.md
deleted file mode 100644 (file)
index 000a8d0..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# Introduction
-
-## Motivation
-I created this keymap in an attempt to optimize my typing experience in text editors (vim and emacs) and the command-line.
-
-More specifically, I wanted to have each modifier key controlled by the thumbs, the most powerful of the digits (I think). This cured me of emacs pinky, which had surprisingly grown quite quickly over the first two weeks of using emacs & emacs-like commands on the command-line.
-
-## Changes
-There are some miscellaneous changes that I kind of forgot I made, such as moving the tilde key, but you can check out the visual layouts below, which I **have** kept up to date.
-### Modifier Keys
-The biggest changes from the ergodox ez default keymap are the modifiers on the thumb cluster. You must hold each key down for a certain amount of time (forgot where this is specified) in order for the modifier key to activate.
-
-### Layers
-* an arrow layer (ARRW) has been created because the default arrow keys suck. Beware, these do use vim bindings because they're the best.
-* the keys in the media layer have been moved around for a better experience (imo), especially with respect to the mouse
-* the three layers (SYMB, MDIA, and ARRW) now have their own dedicated keys accessible by the thumbs in the basic layer
-* caps lock has been put in place of the right-side `L1` toggle key because there was really no need to have two keys to toggle one layer, and caps lock is useful when writing queries
-** unfortunatley, caps lock is not indicated by an LED, so be careful. I use caps lock just like I do insert in vim; for a short burst of text. I always turn off caps lock when I change my focus
-
-### Removal Of Keys
-I also removed a bunch of unnecessary keys that I wasn't going to use anyway. You'll see such keys are blank in the basic layer. I will probably add some more keys in place of these, but I'm fine for now; I just didn't want the distraction of extra keys I barely use.
-
-## Caveats
-### Thumb Cluster Range
-I've heard many complaints about the thumb clusters. I agree that the three outter keys are almost impossible to reach. I am going to try to build [Matt Adereth's keyboard](https://github.com/adereth/dactyl-keyboard), which looks to have a better layout. However, I am able to comfortably use the three modifier keys mainly because:
-* I use DCS keycaps with SA Row 3 keycaps where the Alt keys are
-* I have relatively large hands (I guarantee you there's no problem - I guarantee you)
-
-### Dangerous positioning
-I think it's quite dangerous to put something like control on the same key as enter. Alas, this is a risk I'm willing to accept, and so should you if you decide to use this keymap. I tend to avoid putting myself in situtations in which disaster could occur with one fell swoop of a keypress.
-
-# Keymap
-## Keymap 0: Basic layer
-```
-,--------------------------------------------------. ,--------------------------------------------------.
-|   =    |   1  |   2  |   3  |   4  |   5  |      | |      |   6  |   7  |   8  |   9  |   0  |   -    |
-|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
-| Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  | | CAPS |   Y  |   U  |   I  |   O  |   P  |   \    |
-|--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
-|  ESC   |   A  |   S  |   D  |   F  |   G  |------| |------|   H  |   J  |   K  |   L  |   ;  |   '    |
-|--------+------+------+------+------+------| Hyper| | Meh  |------+------+------+------+------+--------|
-| LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   N  |   M  |   ,  |   .  |   /  | RShift |
-`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
-  |      |  Grv |      |*SYMB*|*ARRW*|                             |*MDIA*|*SYMB*|   [  |  ]   |      |
-  `----------------------------------'                             `----------------------------------'
-                                   ,-------------.     ,-------------.
-                                   |      |      |     |      |      |
-                            ,------|------|------|     |------+--------+------.
-                            |      |      |      |     |      |        |      |
-                            | Space| Bksp |------|     |------|  Tab   |Enter |
-                            | ctrl | gui  | Alt  |     | Alt  |  gui   | ctrl |
-                            `--------------------'     `----------------------'
-
-```
-
-## Keymap 1: Symbol Layer
-The only change here is the *dot* (`.`) character moving from next to `0` next to `+` in order to move the layer keys in the correct position
-```
-  ,--------------------------------------------------.           ,--------------------------------------------------.
-  |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
-  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-  |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   .    |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
-  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-    |      |      |      |      |      |                                       |      |      |   0  |   =  |      |
-    `----------------------------------'                                       `----------------------------------'
-                                         ,-------------.       ,-------------.
-                                         |      |      |       |      |      |
-                                  ,------|------|------|       |------+------+------.
-                                  |      |      |      |       |      |      |      |
-                                  |      |      |------|       |------|      |      |
-                                  |      |      |      |       |      |      |      |
-                                  `--------------------'       `--------------------'
-```
-
-## Keymap 2: Arrow Layer
-```
-  ,--------------------------------------------------.           ,--------------------------------------------------.
-  |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-  |        |      |      |      |      |      |      |           |      |      |PGDOWN| PGUP |      |      |        |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |      |      |      |      |      |------|           |------| LEFT | DOWN |  UP  |RIGHT |      |        |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |      |      |      |      |      |      |           |      |      | HOME | END  |      |      |        |
-  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-    |      |      |      |      |      |                                       |      |      |      |      |      |
-    `----------------------------------'                                       `----------------------------------'
-                                         ,-------------.       ,-------------.
-                                         |      |      |       |      |      |
-                                  ,------|------|------|       |------+------+------.
-                                  |      |      |      |       |      |      |      |
-                                  |      |      |------|       |------|      |      |
-                                  |      |      |      |       |      |      |      |
-                                  `--------------------'       `--------------------'
-```
-
-## Keymap 3: Media and mouse keys
-``` 
-  ,--------------------------------------------------.           ,--------------------------------------------------.
-  |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-  |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |        |
-  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-  |        |      |Mute  |VolDn | VolUp|      |      |           |      |      |      |      |      |      |        |
-  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-    |      |      | Prev | Play | Next |                                       |      |      |      |      |      |
-    `----------------------------------'                                       `----------------------------------'
-                                         ,-------------.       ,-------------.
-                                         |      |      |       |      |      |
-                                  ,------|------|------|       |------+------+------.
-                                  |Brwser|      |      |       |      |      |      |
-                                  |Back  |      |------|       |------|      |      |
-                                  |      |      |      |       |      |      |      |
-                                  `--------------------'       `--------------------'
-```
diff --git a/keyboards/ergodox/keymaps/mclennon_osx/README.md b/keyboards/ergodox/keymaps/mclennon_osx/README.md
deleted file mode 100644 (file)
index 28cdb7c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Ergodox EZ for OS X
-
-This keymapping is designed to be reasonably familiar to an ordinary Mac keyboard while taking advantage of the Ergodox EZ's features. Caps lock instead enables a layer which allows a user to use HJKL as arrow keys and to control media. Shift and control have additional mappings on S and D to provide easier access while holding down caps lock. 
-
-If you choose to compile this yourself, be sure to compile with `#define PREVENT_STUCK_MODIFIERS` in your `config.h`. Firmware built using [qmk_firmware](https://github.com/qmk/qmk_firmware/).
diff --git a/keyboards/ergodox/keymaps/mclennon_osx/keymap.c b/keyboards/ergodox/keymaps/mclennon_osx/keymap.c
deleted file mode 100644 (file)
index 627ff01..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-// Media keys work on OSX, but not on Windows.
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0  // Default layer
-#define AUXI 1  // Auxiliary layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ~`   |   1  |   2  |   3  |   4  |   5  |   6  |           |   7  |   8  |   9  |   0  |   -_ |   += |  Bkspc |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  Del |   Y  |   U  |   I  |   O  |   P  |   |\   |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   L1   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;:  |  Enter |
- * |--------+------+------+------+------+------| {[   |           | }]   |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   <, |   >. |  ?/  |   "'   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl |      |      |      |  Esc |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |Power |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 | LGui | LAlt |------|       |------|  Bkspc |Space |
- *                                 |      |      |      |       |  Del |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
-        KC_TAB,     KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   MO(1),
-        MO(1),      KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSHIFT,  KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_LBRC,
-        KC_LCTL,    KC_TRNS,KC_TRNS,KC_TRNS,KC_ESC,
-                                                    KC_TRNS,KC_TRNS,
-                                                            KC_TRNS,
-                                            KC_LGUI,KC_LALT,KC_TRNS,
-
-        // right hand
-        KC_7,       KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,
-        KC_DELETE,  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_BSLASH,
-                    KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_ENT,
-        KC_RBRC,    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_QUOT,
-                         KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-        KC_PWR,    KC_TRNS,
-        KC_TRNS,
-        KC_DELETE,    KC_BSPC, KC_SPC
-    ),
-/* Keymap 1: Auxiliary Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      | TRNS |           |      | Mute | VolDn| VolUp| Play |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   TRNS |      |LShift| LCtrl|      |      |------|           |------| LEFT | DOWN | UP   |RIGHT |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LShift |      |      |      |      |      |      |           |      | MPrv | MNxt |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 | LGui | LAlt |------|       |------| Bkspc| Space|
- *                                 |      |      |      |       |  Del |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// AUXILIARY
-[AUXI] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_LSHIFT,KC_LCTL, KC_TRNS, KC_TRNS,
-       KC_LSHIFT,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_LGUI, KC_LALT, KC_TRNS,
-       // right hand
-       KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS,
-       KC_TRNS,  KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_PWR, KC_TRNS,
-       KC_TRNS,
-       KC_DELETE, KC_BSPC, KC_SPC
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(AUXI)                // FN1 - Momentary Layer 1 (Auxiliary)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-          break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/mpiechotka/keymap.c b/keyboards/ergodox/keymaps/mpiechotka/keymap.c
deleted file mode 100644 (file)
index 67aca44..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_colemak.h"
-
-enum {
-    BASE = 0,
-    BASE_CM,
-    SYMB,
-    MACR
-};
-
-enum {
-    LWIN = 1,
-    PC1,
-    PC2,
-    PC3,
-    PC4,
-    DL_BASE,
-    DL_BASE_CM,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0a: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
- * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | LAlt | LGui |       | LAlt | RAlt |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |Backsp| Home |       | PgUp |        |      |
- *                                 | Space|ace/  |------|       |------|  Tab/  |Enter/|
- *                                 | /Shft|Ctrl  |  1)  |       |  2)  |  Ctrl  |Shift |
- *                                 `--------------------'       `----------------------'
- *
- * 1) End/L1
- * 2) PgDown/L2
- */
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,     KC_W,   KC_F,   KC_P,          KC_G,   TG(SYMB),
-        KC_ESC,         KC_A,     KC_R,   KC_S,   KC_T,          KC_D,
-        KC_LSFT,        KC_Z,     KC_X,   KC_C,   KC_V,          KC_B,   KC_EQL,
-        LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
-                                                             KC_LALT,       F(LWIN),
-                                                                            KC_HOME,
-                                               SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END),
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
-                          KC_H,   KC_N,   KC_E,   KC_I,   KC_O,             KC_QUOT,
-             KC_MINS,     KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
-             KC_LALT,         KC_RALT,
-             KC_PGUP,
-             LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT)
-    ),
-/* Keymap 0b: Basic layer (Colemak keycodes or QWERTY)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
- * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | LAlt | LGui |       | LAlt | RAlt |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |Backsp| Home |       | PgUp |        |      |
- *                                 | Space|ace/  |------|       |------|  Tab/  |Enter/|
- *                                 | /Shft|Ctrl  |  1)  |       |  2)  |  Ctrl  |Shift |
- *                                 `--------------------'       `----------------------'
- *
- * 1) End/L1
- * 2) PgDown/L2
- */
-[BASE_CM] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
-        KC_DELT,        CM_Q,     CM_W,   CM_F,   CM_P,          CM_G,   TG(SYMB),
-        KC_ESC,         CM_A,     CM_R,   CM_S,   CM_T,          CM_D,
-        KC_LSFT,        CM_Z,     CM_X,   CM_C,   CM_V,          CM_B,   KC_EQL,
-        LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
-                                                             KC_LALT,       F(LWIN),
-                                                                            KC_HOME,
-                                               SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END),
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    CM_J,   CM_L,   CM_U,   CM_Y,   KC_P, /*CM_SCLN*/ KC_BSLS,
-                          CM_H,   CM_N,   CM_E,   CM_I,   CM_O,             KC_QUOT,
-             KC_MINS,     CM_K,   CM_M,   CM_COMM,CM_DOT, CTL_T(CM_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
-             KC_LALT,         KC_RALT,
-             KC_PGUP,
-             LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT)
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Macros
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        | DLa  | DLb  |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | PC1  | PC2  | PC3  | PC4  |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MACROS
-[MACR] = KEYMAP(
-       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_NO,   F(DL_BASE),F(DL_BASE_CM),KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_NO,   F(PC1),    F(PC2),       F(PC3),  F(PC4),  KC_NO,
-       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,
-                                           KC_TRNS,KC_TRNS,
-                                                   KC_TRNS,
-                                   KC_TRNS,KC_TRNS,KC_TRNS,
-    // right hand
-       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-                 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,
-       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-                          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [LWIN] = ACTION_MACRO(LWIN),
-    [PC1] = ACTION_MACRO(PC1),
-    [PC2] = ACTION_MACRO(PC2),
-    [PC3] = ACTION_MACRO(PC3),
-    [PC4] = ACTION_MACRO(PC4),
-    [DL_BASE] = ACTION_DEFAULT_LAYER_SET(BASE),
-    [DL_BASE_CM] = ACTION_DEFAULT_LAYER_SET(BASE_CM)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch(id) {
-    case 0:
-        if (record->event.pressed) {
-            register_code(KC_RSFT);
-        } else {
-            unregister_code(KC_RSFT);
-        }
-        break;
-    case LWIN:
-        if (record->event.pressed) {
-             register_code(KC_RSFT);
-             unregister_code(KC_RSFT);
-             register_code(KC_LGUI);
-        } else {
-             unregister_code(KC_LGUI);
-        }
-        break;
-    case PC1:
-        if (!record->event.pressed) {
-             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END);
-        }
-        break;
-    case PC2:
-        if (!record->event.pressed) {
-             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END);
-        }
-        break;
-    case PC3:
-        if (!record->event.pressed) {
-             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END);
-        }
-        break;
-    case PC4:
-        if (!record->event.pressed) {
-             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END);
-        }
-        break;
-    }
-    return MACRO_NONE;
-}
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case SYMB:
-            ergodox_right_led_1_on();
-            break;
-        case MACR:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-};
diff --git a/keyboards/ergodox/keymaps/mpiechotka/readme.md b/keyboards/ergodox/keymaps/mpiechotka/readme.md
deleted file mode 100644 (file)
index 785400d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# ErgoDox EZ mpiechotka Configuration
-
-Modification of ErgoDox EZ Colemak layout with additional QWERTY/software Colemak layer and change of the special keys.
-
-
-
diff --git a/keyboards/ergodox/keymaps/msc/keymap.c b/keyboards/ergodox/keymaps/msc/keymap.c
deleted file mode 100644 (file)
index c43aecf..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Cmd  | Alt  |AltShf| Left | Right|                                       | Left | Down |  Up  |Right | L2  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        KC_LGUI,KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_LEFT,  KC_DOWN, KC_UP, KC_RIGHT,       TG(MDIA),
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      | Mute |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | Prev |VolDn |VolUp | Next |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 | Lclk | Rclk |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/msc/readme.md b/keyboards/ergodox/keymaps/msc/readme.md
deleted file mode 100644 (file)
index ff24d2b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# MSC Configuration
-
-### Based mostly on the ErgoDox EZ default layout with optimizations for coding on osx.
-
-#### Expecting the user to rely on Coder Layer this keymap removes some of the duplicate symbol keys in the lower portions of the board and replaces them with arrow keys and modifiers. The Media Layer is also updated to match the change in the arrow keys and the left and right click buttons are moved under the thumb position. The Media layer is now reached with toggle button in the lower right.
-
-### Main Layer
-
-![Main Layer](https://i.imgur.com/n1Bl4R3.png)
-
-### Code Layer
-
-![Code Layer](https://i.imgur.com/1B0vfpG.png)
-
-### Media Layer
-
-![Media Layer](https://i.imgur.com/CGPyOfj.png)
-
-## Changelog
-
-Version 1.0
-
-- Changed the temp code layer key in the bottom right to toggle media layer
-- Changed the temp media key to only be ";"
-- Changed right hand bottom row to match vim home row nav directions
-- Changed media keys to match arrow key changes
-- Changed media left and right click to spacebar and backspace locations
-- Changed bottom left to Cmd
-- Changed single quote on left bottom row to alt
-
-#### Coming Soon:
-- A new layer for Blender editing with a focus on left hand shortcut and a righthand num pad to control the view in Blender.
diff --git a/keyboards/ergodox/keymaps/naps62/keymap.c b/keyboards/ergodox/keymaps/naps62/keymap.c
deleted file mode 100644 (file)
index 9064053..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Esc   | 1  ! | 2  @ | 3  # | 4  $ | 5  % | Lang |           | Esc  | 6  ^ | 7  & | 8  * | 9  ( | 0  ) | Bckspc |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Tab   |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  | \   |  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Ctrl  |   A  |   S  |  D   |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  | ;  : |  ' "   |
- * |--------+------+------+------+------+------|  L1  |           |  L1  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  | ,  < | . >  | /  ? |  - _   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |  L1  | `  ~ | ' "  | \  | |  L2  |                                       |  {   |  }   | [  { | ]  } |  L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,--------------.       ,---------------.
- *                                        | Home  | End  |       | PgUp  |Insert |
- *                                 ,------|-------|------|       |-------+-------+------.
- *                                 |      |       | LGui |       | Del   |       |      |
- *                                 | Space|  Alt  |------|       |-------| Enter |Space |
- *                                 |      |       | LGui |       | Bcsp  |       |      |
- *                                 `---------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-  // left hand
-  KC_ESC,     KC_1,    KC_2,     KC_3,     KC_4,               KC_5,  LGUI(KC_SPC),
-  KC_TAB,     KC_Q,    KC_W,     KC_E,     KC_R,               KC_T,  MO(2),
-  KC_LCTL,    KC_A,    KC_S,     KC_D,     KC_F,               KC_G,
-  KC_LSFT,    KC_Z,    KC_X,     KC_C,     KC_V,               KC_B,  MO(1),
-  MO(1),      KC_GRV,  KC_QUOT,  KC_BSLS,  MO(2),
-
-                                               KC_HOME,   KC_END,
-                                                          KC_LGUI,
-                                      KC_SPC,  KC_LALT,   KC_LGUI,
-
-  // right hand
-  KC_ESC,  KC_6,     KC_7,     KC_8,     KC_9,     KC_0,      KC_BSPC,
-  MO(2),   KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,      KC_BSLS,
-           KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,   KC_QUOT,
-  MO(1),   KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,   KC_MINS,
-                     KC_LCBR,  KC_RCBR,  KC_LBRC,  KC_RBRC,   MO(1),
-
-  KC_PGUP,  KC_INS,
-  KC_DEL,
-  KC_BSPC,  KC_ENT,    KC_SPC
-),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   =  |    . |   0  |   -  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_EQL,KC_DOT,  KC_0,    KC_MINS,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |GuiUp | Expl |      | Term |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |GuiLft|GuiDwn|GuiRgt|      |      |------|           |------| Left | Down |  Up  |Right |      |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |Browsr|      |           |      |      |VolDwn|VolUp | Mute |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       | Play | Prev | Next |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-         RESET, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
-       KC_TRNS, KC_TRNS,        LGUI(KC_W),  LGUI(KC_E),     KC_BTN1, LGUI(KC_T), KC_TRNS,
-       KC_TRNS, LGUI(KC_A),     LGUI(KC_S),  LGUI(KC_D),     KC_MS_D, KC_MS_R,
-       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
-       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,  KC_TRNS, KC_TRNS,
-                          KC_MPLY, KC_MPRV, KC_MNXT,  KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,  KC_WBAK, KC_WFWD
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/naps62/readme.md b/keyboards/ergodox/keymaps/naps62/readme.md
deleted file mode 100644 (file)
index 14728e4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# ErgoDox EZ naps62 Configuration
-
-## Motivation
-
-I wanted a layout that suited my Linux & Vim usage. I also didn't like the lack of efficient access to some of the more common special characters used in programming.
-
-## Key features / changes
-
-### Base Layer (L1)
-
-* **No `MT(mod, kc)` keys (modifier when pressed, key when tapped).** Those keys work with a global timeout. When a key press is shorter than the timeout, it's considered a tap, otherwise it's a hold. I couldn't find any particular timeout that would work for me. I need to use mods extremely fast, but also want the confort of using them more slowly in other occasions. So I gave up on this feature altogether.
-* **Direct access to `{}[]`.** When programming, these are used extremely often. I was still getting used to the coder layer, and I prefer the arrows on the home row, so I used the bottom-right keys for this.
-* **Layer keys everywhere.** I either use my little finger or my index finger to go to L1, whichever is more confortable in any given situation. L2 is not used while coding/writing, so I don't need an extremely-optimized access to it.
-* **Lang key.** This is nothing more than `Super-Space` combo, which in my systems (both Linux & Windows) is the shortcut to change the keyboard language. I'm Portuguese, so I often cycle between US layout for coding, and PT layout for writing.
-* **Special chars on the right-most column.** I only use Ctrl & Shift keys on the left side, so I used the right keys to include some of the more useful special characters as well.
-
-### Coder Layer (L2)
-
-* The `=` and `-` signs where nowhere to be found. `-` was already on the base layer, but it's still useful to have a fully-featured NumPad on the coder layer.
-
-### Media Layer (L3)
-
-* **Better media keys**. Why was Play/Pause so far away? And where was Mute? I put all my media keys close to each other, including the missing ones
-* **Arrow keys on home row.** I use vim, so I'm always on my home row. I use this sometimes to get around, but not as often as to need them on the base row. I'm fine with them here
-* I don't use mouse keys. They're still set up, and I made some changes as an experiment, but I mostly forgot they exist by now.
-
-## Author
-
-[Miguel Palhas](https://github.com/naps62)
diff --git a/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c
deleted file mode 100644 (file)
index ab2464c..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-#include "ergodox.h"
-#include "action_layer.h"
-#include "keymap_extras/keymap_german.h"
-
-#define UM 0
-
-#define L0   0      // layer_0
-#define L1   1      // layer_1  
-#define L2   2      // layer_2
-#define L3   3      // layer_3
-#define L4   4      // layer_4
-#define L5   5      // layer_5
-#define L6   6      // layer_6
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/*
-    .------------------------------------.------------------------------------.
-    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |VOL- |VOL+ | !MUTE |PLAY |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     |-----| !-----|     !     !
-                      ! CTL !     ! ALT ! ! CTL !     ! ALT !
-                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
-                      '-----------------' '-----------------'
- */
-[L0] = KEYMAP(
- KC_ESC,  DE_1,    DE_2,     DE_3,    DE_4,     DE_5,    DE_ACUT,
- KC_TAB,  DE_X,    DE_V,     DE_L,    DE_C,     DE_W,    KC_PSCR,
- MO(1),   DE_U,    DE_I,     DE_A,    DE_E,     DE_O,
- KC_LSFT, DE_UE,   DE_OE,    DE_AE,   DE_P,     DE_Z,    KC_SPACE,
- KC_LCTL, KC_LGUI, KC_LALT,  MO(3),   MO(2),
- /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     KC_VOLD, KC_VOLU,
- /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/     /*-*/    CTL_T(KC_ENTER), MO(1),   ALT_T(KC_TAB),
- DE_GRV,  DE_6,    DE_7,     DE_8,    DE_9,     DE_0,    DE_CIRC,
- KC_TRNS, DE_K,    DE_H,     DE_G,    DE_F,     DE_Q,    DE_SS,
- /*-*/    DE_S,    DE_N,     DE_R,    DE_T,     DE_D,    DE_Y,
- KC_TRNS, DE_B,    DE_M,     DE_COMM, DE_DOT,   DE_J,    KC_RSFT,
- /*-*/    /*-*/    MO(2),    MO(3),   KC_APP,   KC_RALT, KC_RCTL,
- KC_MUTE, KC_MPLY,
- KC_TRNS,
- CTL_T(KC_ESC), MO(1),   ALT_T(KC_SPACE)
-),
-/*
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
- */
-[L1] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR,
- KC_TRNS, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_TRNS,
- /*-*/    DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT,
- KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |  0  |
- *                   '-----------------' '-----------------'
- */
-[L2] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_TRNS,
- KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, DE_7,    DE_8,    DE_9,    KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, DE_4,    DE_5,    DE_6,    KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, DE_1,    DE_2,    DE_3,    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, DE_0
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L3] = KEYMAP(
- KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
- KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
- KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L4] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L5] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
- * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
- * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- *  |    |    |    |    |    |                     !    |    |    |    |    |
- *  '------------------------'                     '------------------------'
- *                         .-----------. .-----------.
- *                         |     |     | !     |     |
- *                   .-----+-----+-----! !-----+-----+-----.
- *                   !     !     |     | !     |     !     !
- *                   !     !     !-----! !-----!     !     !
- *                   |     |     |     | !     |     |     |
- *                   '-----------------' '-----------------'
- */
-[L6] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
- /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {};
-
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {
-    if (hex == 0x0) {
-        return KC_P0;
-    }
-    if (hex < 0xA) {
-        return KC_P1 + (hex - 0x1);
-    }
-    return KC_A + (hex - 0xA);
-}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {
-    switch (unicode_mode) {
-    case UC_MODE_WIN:
-        register_code(KC_LALT);
-
-        register_code(KC_PPLS);
-        unregister_code(KC_PPLS);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LALT);
-        break;
-    case UC_MODE_LINUX:
-        register_code(KC_LCTL);
-        register_code(KC_LSFT);
-
-        register_code(KC_U);
-        unregister_code(KC_U);
-
-        register_code(hextokeycode((hi & 0xF0) >> 4));
-        unregister_code(hextokeycode((hi & 0xF0) >> 4));
-        register_code(hextokeycode((hi & 0x0F)));
-        unregister_code(hextokeycode((hi & 0x0F)));
-        register_code(hextokeycode((lo & 0xF0) >> 4));
-        unregister_code(hextokeycode((lo & 0xF0) >> 4));
-        register_code(hextokeycode((lo & 0x0F)));
-        unregister_code(hextokeycode((lo & 0x0F)));
-
-        unregister_code(KC_LCTL);
-        unregister_code(KC_LSFT);
-        break;
-    case UC_MODE_OSX:
-        break;
-    }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    if (!record->event.pressed) {
-        return MACRO_NONE;
-    }
-    // MACRODOWN only works in this function
-    switch(id) {
-        case UM:
-            unicode_mode = (unicode_mode + 1) % 2;
-            break;
-
-
-        default:
-            break;
-    }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case L1:
-            ergodox_right_led_1_on();
-            break;
-        case L2:
-            ergodox_right_led_2_on();
-            break;
-        case L3:
-            ergodox_right_led_3_on();
-            break;
-        case L4:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-            break;
-        case L5:
-            ergodox_right_led_1_on();
-            ergodox_right_led_3_on();
-            break;
-        // case L6:
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        // case L7:
-        //     ergodox_right_led_1_on();
-        //     ergodox_right_led_2_on();
-        //     ergodox_right_led_3_on();
-        //     break;
-        default:
-            ergodox_board_led_off();
-            break;
-    }
-};
diff --git a/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md
deleted file mode 100644 (file)
index d9fcda9..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-# Neo2 for ErgoDox on QWERTZ
-#
-# Description
-This layout is ment to be used on PCs with DE-de with an additional guest keyboard. E.g. on your PC at work you can use your ergodox with neo but a second keybord is plugged in so your coworkers can enter a few signs if necessary. I live in Germany, so this is my usecase.
-# Layers
-[Layer0](#layer-0)
-Letters, modifiers and volume
-
-[Layer1](#layer-1)
-Symbols
-
-[Layer2](#layer-2)
-Motion, digits and next/prev Song
-
-[Layer3](#layer-3)
-F1 to F12 and mouse actions
-
-[Layer4](#layer-4)
-not used
-
-[Layer5](#layer-5)
-not used
-
-[Layer6](#layer-6)
-not used
-
-
-## Layer 0
-
-    .------------------------------------.------------------------------------.
-    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |VOL- |VOL+ | !MUTE |PLAY |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     |-----| !-----|     !     !
-                      ! CTL !     ! ALT ! ! CTL !     ! ALT !
-                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
-                      '-----------------' '-----------------'
-                      
-* Left side ESC, TAB, [SymbolLayer], Shift, Ctr, Gui(Windows key), and Alt like normal QWERTZ with neo2.
-* Space on right side of left half for mous activity so you don't have to leave the mouse for Space.
-* Top row of thumb keys is hard to reach for me, so I put media control on there.
-* Thumb keys make use of modifier/tap. E.g. if you tap the Enter key it will be Enter. If you keep it pressed down it will be Ctr. The hold action is written on top of the tap action.
-* The small middle thumb keys are not used, es well as the 1.5 sized ones on the left side of the right half.
-
-
-## Layer 1
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 2
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |  0  |
-                      '-----------------' '-----------------'
-
-
-
-## Layer 3
-
-    .------------------------------------.------------------------------------.
-    |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-* M_A Mouse acceleration
-* M_B Mouse button
-* M_C Mouse cursor
-* M_W Mouse wheel
-
-## Layer 4
-
-
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 5
-
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
-
-## Layer 6
-
-    .------------------------------------.------------------------------------.
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
-    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
-    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
-    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
-     |    |    |    |    |    |                     !    |    |    |    |    |
-     '------------------------'                     '------------------------'
-                            .-----------. .-----------.
-                            |     |     | !     |     |
-                      .-----+-----+-----! !-----+-----+-----.
-                      !     !     |     | !     |     !     !
-                      !     !     !-----! !-----!     !     !
-                      |     |     |     | !     |     |     |
-                      '-----------------' '-----------------'
-
diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c
deleted file mode 100644 (file)
index 1d505f8..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_norwegian.h"
-
-#define BASE 0 // default layer
-#define BASE_MAC 1 // default layer mac
-#define NUMB_FUNC 2 // numbers and function keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Basic layer PC
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |    *   |   [  |   ]  |   {  |   }  |   ~  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |    +   |   Q  |   W  |   E  |   R  |   T  |  "   |           |   '  |   Y  |   U  |   I  |   O  |   P  |   Å    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |    /   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ø  |   Æ    |
- * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
- * |    -   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  | RIGHT| DOWN |   UP |   _    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Alt/esc|  !  |   ?  |   :  | TAB  |                                       | LEFT |  _  |   &   |   |  |Num/fn|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,--------------.
- *                                        |   #  |  `   |       |Insert|   %   |
- *                                 ,------|------|------|       |------+-------+------.
- *                                 |      |      |  ´   |       |  Del |       |      |
- *                                 | Shift|Ctrl/.|------|       |------| Enter |Space |
- *                                 |      |      |GUI/, |       | Bspc |       |      |
- *                                 `--------------------'       `---------------------'
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_PAST,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, KC_FN2,  TG(1),
-        KC_PPLS,         KC_Q,         KC_W,    KC_E,   KC_R,   KC_T,   NO_QUO2,
-        KC_PSLS,         KC_A,         KC_S,    KC_D,   KC_F,   KC_G,
-        KC_PMNS,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
-        ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB,
-                                                      KC_HASH, KC_FN7,
-                                                              KC_FN6,
-                                               KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA),
-        // right hand
-             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
-             NO_APOS,      KC_Y,    KC_U,    KC_I,      KC_O,     KC_P,   NO_AA  ,
-                           KC_H,    KC_J,    KC_K,      KC_L,  NO_OSLH,    NO_AE,
-             NO_EQL,        KC_N,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP,    NO_BSLS,
-                                  KC_LEFT,  NO_UNDS, NO_AMPR,  NO_PIPE,    OSL(2),
-             KC_INSERT,  KC_PERC,
-             KC_DELT,
-             KC_BSPC,KC_ENT,KC_SPC
-    ),
-/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |,/Ctrl|                                       |      |      |  `   |      |Num/fn|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |  `   |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |   ´  |       |      |      |      |
- *                                 |      |GUI/. |------|       |------|      |      |
- *                                 |      |      |crtl/,|       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[BASE_MAC] = KEYMAP(
-       KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, 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_GRV_MAC,
-                                                    KC_FN10,
-                                  KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA),
-    // right hand
-       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
-       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 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_BSLS_MAC,
-                          KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2),
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Number ++´ánd Fn layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  8   |  7   |  6   |   5  |  9   |      |           |      |      |  F5  |  F6  |  F7  |  F8  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  4   |  3   |  2   |   1  |  0   |------|           |------|      |  F1  |  F2  |  F3  |  F4  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |  END | PGDWN| PGUP |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMB_FUNC] = KEYMAP(
-       NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS,
-       NO_SLSH , KC_4   , KC_3   , KC_2   , KC_1   , KC_0,
-       NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS,
-                 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS,
-       KC_TRNS,  KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
-                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-)
-};
-
-enum macro_id {
-    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
-    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
-    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
-    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
-    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
-    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
-    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
-    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
-    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
-    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
-};
-
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    keyevent_t event = record->event;
-
-    switch (id) {
-        case TILDE_NO:
-            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
-        case LESS_NO:
-            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
-        case GRTR_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
-        case CIRC_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
-        case ACUT_NO:
-            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
-        case GRV_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
-        case LESS_NO_MAC:
-            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
-        case GRTR_NO_MAC:
-            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
-        case ACUT_NO_MAC:
-            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
-    }
-    return MACRO_NONE;
-};
diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md
deleted file mode 100644 (file)
index 444f2e9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# Norwegian setup with osx/pc toggle
-
-## Motivation
-I wanted a Norwegian setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup.
-
-## Overview
-The setup is created to be programmer friendly.
-- Most of the symbols used in code can be activated without using layers or shift key.
-- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist.
-- Navigation is prioritized, arrows below the home row.
-
-## PC/Mac toggle
-The default setup is for Norwegian keyboard setting(on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
-
-## Layers
-Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys.
-
-## Tap-shift
-Tap for the next character to be shifted, hold down for regular shift.
-
-## Comma dot and escape
-Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys.
-
-## Numpad symbols
-+-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0.
-If you really need the norwegian symbols in a program, you can access them using the number toggle button. 
-
-## Layout
-
-![keyboard-layout](https://i.imgur.com/Qz3E9po.png)
diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c
deleted file mode 100644 (file)
index acf74a4..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_norwegian.h"
-
-#define BASE 0 // default layer
-#define BASE_MAC 1 // default layer mac
-#define NUMB_FUNC 2 // numbers and function keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Basic layer PC
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |    *   |   [  |   ]  |   {  |   }  |   ~  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |    +   |   Q  |   W  |   F  |   P  |   G  |  "   |           |   '  |   J  |   L  |   U  |   Y  |   Å  |   Æ    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |    /   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   Ø    |
- * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
- * |    -   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  | RIGHT| DOWN |   UP |   _    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Alt/esc|  !  |   ?  |   :  | TAB  |                                       | LEFT |  _  |   &   |   |  |Num/fn|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,--------------.
- *                                        |   #  |  `   |       |Insert|   %   |
- *                                 ,------|------|------|       |------+-------+------.
- *                                 |      |      |  ´   |       |  Del |       |      |
- *                                 | Shift|Ctrl/.|------|       |------| Enter |Space |
- *                                 |      |      |GUI/, |       | Bspc |       |      |
- *                                 `--------------------'       `---------------------'
- */
-[BASE] = KEYMAP(
-        // left hand
-        KC_PAST,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, KC_FN2,  TG(1),
-        KC_PPLS,         KC_Q,         KC_W,    KC_F,   KC_P,   KC_G,   NO_QUO2,
-        KC_PSLS,         KC_A,         KC_R,    KC_S,   KC_T,   KC_D,
-        KC_PMNS,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
-        ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB,
-                                                      KC_HASH, KC_FN7,
-                                                              KC_FN6,
-                                               KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA),
-        // right hand
-             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
-             NO_APOS,      KC_J,    KC_L,    KC_U,      KC_Y,     NO_AA,   NO_AE  ,
-                           KC_H,    KC_N,    KC_E,      KC_I,      KC_O,    NO_OSLH,
-             NO_EQL,        KC_K,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP,    NO_BSLS,
-                                  KC_LEFT,  NO_UNDS, NO_AMPR,  NO_PIPE,    OSL(2),
-             KC_INSERT,  KC_PERC,
-             KC_DELT,
-             KC_BSPC,KC_ENT,KC_SPC
-    ),
-/* Keymap 1: Basic layer MAC (Same as pc, except for cmd/ctrl, which are swapped)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |,/Ctrl|                                       |      |      |  `   |      |Num/fn|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |  `   |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |   ´  |       |      |      |      |
- *                                 |      |GUI/. |------|       |------|      |      |
- *                                 |      |      |crtl/,|       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[BASE_MAC] = KEYMAP(
-       KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, 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_GRV_MAC,
-                                                    KC_FN10,
-                                  KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA),
-    // right hand
-       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
-       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 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_BSLS_MAC,
-                          KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2),
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Number ++´ánd Fn layer pc
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  8   |  7   |  6   |   5  |  9   |      |           |      |      |  F5  |  F6  |  F7  |  F8  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  4   |  3   |  2   |   1  |  0   |------|           |------|      |  F1  |  F2  |  F3  |  F4  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |  END | PGDWN| PGUP |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[NUMB_FUNC] = KEYMAP(
-       NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS,
-       NO_SLSH , KC_4   , KC_3   , KC_2   , KC_1   , KC_0,
-       NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS,
-                 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS,
-       KC_TRNS,  KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
-                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-)
-};
-
-enum macro_id {
-    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
-    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
-    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
-    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
-    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
-    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
-    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
-    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
-    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
-    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
-};
-
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    keyevent_t event = record->event;
-
-    switch (id) {
-        case TILDE_NO:
-            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
-        case LESS_NO:
-            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
-        case GRTR_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
-        case CIRC_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
-        case ACUT_NO:
-            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
-        case GRV_NO:
-            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
-        case LESS_NO_MAC:
-            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
-        case GRTR_NO_MAC:
-            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
-        case ACUT_NO_MAC:
-            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
-    }
-    return MACRO_NONE;
-};
diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md
deleted file mode 100644 (file)
index ad568ec..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# Norwegian Colemak setup with osx/pc toggle
-
-## Motivation
-I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup.
-
-## Overview
-The setup is created to be programmer friendly.
-- Most of the symbols used in code can be activated without using layers or shift key.
-- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist.
-- Navigation is prioritized, arrows below the home row.
-
-## PC/Mac toggle
-The default setup is for Norwegian keyboard setting(not colemak software variants) on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
-
-## Layers
-Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys.
-
-## Tap-shift
-Tap for the next character to be shifted, hold down for regular shift.
-
-## Comma dot and escape
-Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys.
-
-## Numpad symbols
-+-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0.
-If you really need the norwegian symbols in a program, you can access them using the number toggle button. 
-
-## Layout
-
-![keyboard-layout](https://i.imgur.com/sArgD9S.png)
diff --git a/keyboards/ergodox/keymaps/ordinary/keymap.c b/keyboards/ergodox/keymaps/ordinary/keymap.c
deleted file mode 100644 (file)
index ac84df5..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-#include "ergodox.h"
-#include "led.h"
-#include "mousekey.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-
-#define BASE   0 // default layer
-#define SYMB   1 // symbols layer
-#define MDIA   2 // media layer
-#define SPEC   3 // special layer
-#define RBASE  4 // reverse default layer
-
-#define LSymb 10 // left symbol-shift key
-#define LMdia 11 // left media-shift key
-#define LSpec 12 // left special-shift key
-#define RSymb 13 // right symbol-shift key
-#define RMdia 14 // right media-shift key
-#define RSpec 15 // right special-shift key
-
-#define NotEq 16 // != macro
-#define GrtEq 17 // >= macro
-#define LesEq 18 // <= macro
-#define DeRef 19 // -> macro
-
-#define MUL   20 // mouse up left
-#define MUR   21 // mouse up right
-#define MDL   22 // mouse down left
-#define MDR   23 // mouse down right
-
-
-
-/*
- * The Ordinary Layout for the Ergodox EZ keyboard, v5
- *
- * Modifications from the default Ergodox EZ layout
- * by Nicholas Keene ergodoxez@nicholaskeene.com
- *
- * No rights reserved. This software is in the public domain.
- * Credit me if you are friendly but if you're a jerk don't bother.
- * If you use or modify this layout I would love to hear from you.
- *
- * Details: readme.md
- *          https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/******* Base Layer ****************************************************************************************************
- *
- * ,------------------------------------------------------.       ,------------------------------------------------------.
- * | Special `~ |   1  |   2  |   3  |   4  |   5  | ESC  |       |  -   |   6  |   7  |   8  |   9  |   0  | =+ Special |
- * |------------+------+------+------+------+-------------|       |------+------+------+------+------+------+------------|
- * | Media  Tab |   Q  |   W  |   E  |   R  |   T  |   [  |       |  ]   |   Y  |   U  |   I  |   O  |   P  | \|   Media |
- * |------------+------+------+------+------+------|      |       |      |------+------+------+------+------+------------|
- * | Symbol     |  ^A  |   S  |   D  |  ^F  |   G  |------|       |------|   H  |  ^J  |   K  |   L  |  ^;  | '"  Symbol |
- * |------------+------+------+------+------+------|Shift |       | Tab  |------+------+------+------+------+------------|
- * | Capitals   |   Z  |   X  |   C  |   V  |   B  | -Tab |       |      |   N  |   M  |   ,  |   .  |  /   |   Capitals |
- * `------------+------+------+------+------+-------------'       `-------------+------+------+------+------+------------'
- *      | LCtrl | Meh  |Hyper | LAlt | LGui |                                   | RGui | RAlt | Hyper|  Meh | RCtrl |
- *      `-----------------------------------'                                   `-----------------------------------'
- *                                          ,-------------.       ,-------------.
- *                                          | Home | End  |       | Left | Right|
- *                                   ,------|------|------|       |------+------+------.
- *                                   |      |      | PgUp |       |  Up  |      |      |
- *                                   |Backsp| Del  |------|       |------| Enter| Space|
- *                                   |      |      | PgDn |       | Down |      |      |
- *                                   `--------------------'       `--------------------'
- */
-[BASE] = KEYMAP(
-// left hand
- F(LSpec)  ,KC_1           ,KC_2   ,KC_3   ,KC_4  ,KC_5  ,KC_ESC
-,F(LMdia)  ,KC_Q           ,KC_W   ,KC_E   ,KC_R  ,KC_T  ,KC_LBRC
-,M(LSymb)  ,LT(RBASE, KC_A),KC_S   ,KC_D   ,LT(RBASE, KC_F)  ,KC_G
-,KC_LSFT   ,KC_Z           ,KC_X   ,KC_C   ,KC_V  ,KC_B  ,LSFT(KC_TAB)
-,KC_LCTL   ,MEH_T(KC_NO)   ,ALL_T(KC_NO),KC_LALT,KC_LGUI
-                                         ,KC_HOME,KC_END
-                                                 ,KC_PGUP
-                                 ,KC_BSPC,KC_DEL ,KC_PGDN
-                                                                  // right hand
-                                                                 ,KC_MINS ,KC_6 ,KC_7           ,KC_8   ,KC_9   ,KC_0             ,F(RSpec)
-                                                                 ,KC_RBRC ,KC_Y ,KC_U           ,KC_I   ,KC_O   ,KC_P             ,F(RMdia)
-                                                                          ,KC_H ,LT(RBASE, KC_J),KC_K   ,KC_L   ,LT(RBASE,KC_SCLN),F(RSymb)
-                                                                 ,KC_TAB  ,KC_N ,KC_M           ,KC_COMM,KC_DOT ,KC_SLSH          ,KC_RSFT
-                                                                                ,KC_RGUI        ,KC_RALT,KC_HYPR,KC_MEH           ,KC_RCTL
-                                                                 ,KC_LEFT ,KC_RGHT
-                                                                 ,KC_UP
-                                                                 ,KC_DOWN ,KC_ENT ,KC_SPC
-),
-
-/******* Symbols Layer *************************************************************************************************
- *
- * ,-----------------------------------------------------.       ,-----------------------------------------------------.
- * |           |  F1  |  F2  |  F3  |  F4  |  F5  | Esc  |       |  -   |  F6  |  F7  |  F8  |  F9  |  F10 |           |
- * |-----------+------+------+------+------+-------------|       |------+------+------+------+------+------+-----------|
- * |           |   !  |   @  |   {  |   }  |   &  |  <   |       |  >   |   |  |   7  |   8  |   9  |   /  |           |
- * |-----------+------+------+------+------+------|      |       |      |------+------+------+------+------+-----------|
- * |           |   #  |   $  |   (  |   )  |   `  |------|       |------|   /  |   4  |   5  |   6  |   *  |           |
- * |-----------+------+------+------+------+------|  '   |       |  "   |------+------+------+------+------+-----------|
- * |           |   %  |   ^  |   [  |   ]  |   ~  |      |       |      |   \  |   1  |   2  |   3  |   -  |           |
- * `-----------+------+------+------+------+-------------'       `-------------+------+------+------+------+-----------'
- *     |   ;   |   &  |   *  |   <  |   >  |                                   |   0  |   .  |   =  |   +  | Enter |
- *     `-----------------------------------'                                   `-----------------------------------'
- *                                         ,-------------.       ,-------------.
- *                                         | |||| | |||| |       | |||| | |||| |
- *                                  ,------|------|------|       |------+------+------.
- *                                  | Plus | Equal| |||| |       | |||| | Under| Dash |
- *                                  |      |      |------|       |------| Score|      |
- *                                  |  +   |   =  |  !=  |       |  ->  |  _   |  -   |
- *                                  `--------------------'       `--------------------'
- */
-[SYMB] = KEYMAP(
-// left hand
- KC_TRNS ,KC_F1       ,KC_F2        ,KC_F3   ,KC_F4   ,KC_F5   ,KC_ESC
-,KC_TRNS ,KC_EXLM     ,KC_AT        ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
-,KC_TRNS ,KC_HASH     ,KC_DLR       ,KC_LPRN ,KC_RPRN ,KC_GRV
-,KC_TRNS ,KC_PERC     ,KC_CIRC      ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_QUOT
-,KC_SCLN ,KC_AMPR     ,KC_ASTR ,LSFT(KC_COMM),LSFT(KC_DOT)
-                                                      ,M(GrtEq),M(LesEq)
-                                                               ,KC_NO
-                                             ,KC_PLUS ,KC_EQL  ,M(NotEq)
-                                                                 // right hand
-                                                                 ,KC_MINS     ,KC_F6        ,KC_F7 ,KC_F8  ,KC_F9 ,KC_F10  ,KC_TRNS
-                                                                 ,LSFT(KC_DOT),KC_PIPE      ,KC_7  ,KC_8   ,KC_9  ,KC_SLSH ,KC_TRNS
-                                                                              ,KC_SLSH      ,KC_4  ,KC_5   ,KC_6  ,KC_ASTR ,KC_TRNS
-                                                                 ,LSFT(KC_QUOT),KC_BSLS     ,KC_1  ,KC_2   ,KC_3  ,KC_MINS ,KC_TRNS
-                                                                                            ,KC_0  ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT
-                                                                 ,KC_NO       ,KC_NO
-                                                                 ,KC_NO
-                                                                 ,M(DeRef)    ,LSFT(KC_MINS),KC_MINS
-),
-
-/******* Media Layer *******************************************************************************************************
- *
- * ,---------------------------------------------------------------.    ,---------------------------------------------------------------.
- * |      |   F11   |   F12   |   F13   |   F14   |   F15   | Esc  |    | |||| |   F16   |   F17   |   F18   |   F19   |   F20   |      |
- * |------+---------+---------+---------+---------+----------------|    |------+---------+---------+---------+---------+---------+------|
- * |      |Shut Down|MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll|    |Scroll|PrintScrn|   Home  |    Up   |   PgUp  |   Mail  |      |
- * |------+---------+---------+---------+---------+---------|  Up  |    |  Up  |---------+---------+---------+---------+---------+------|
- * |      |  Sleep  |MouseLeft|MouseDown|MouseRght|Volume Dn|------|    |------| Num Lock|   Left  |   Down  |   Right | MyComp  |      |
- * |------+---------+---------+---------+---------+---------|Scroll|    |Scroll|---------+---------+---------+---------+---------+------|
- * |      |  ||||   |MouseDnLf|MouseDown|MouseDnRg|  Mute   | Down |    | Down |  ||||   |   End   |   Down  |   PgDn  |  ||||   |      |
- * `------+---------+---------+---------+---------+----------------'    `----------------+---------+---------+---------+---------+------'
- *  | ||| |  ||||   |  MClick | LClick  |  R Click|                                      |  Insert |   Del   |   ||||  |  ||||   | ||| |
- *  `---------------------------------------------'                                      `---------------------------------------------'
- *                                                   ,-------------.    ,-------------.
- *                                                   | Stop |Refrsh|    | Prev | Next |
- *                                            ,------|------|------|    |------+------+------.
- *                                            |Brwser|Brwser|Search|    |VolUp |      |      |
- *                                            |Back  | Fwd  |------|    |------| Stop | Play-|
- *                                            |      |      | Home |    |VolDn |      | Pause|
- *                                            `--------------------'    `--------------------'
- */
-[MDIA] = KEYMAP(
-// left hand
- KC_TRNS ,KC_F11   ,KC_F12  ,KC_F13   ,KC_F14  ,KC_F15  ,KC_ESC
-,KC_TRNS ,KC_POWER ,M(MUL)  ,KC_MS_U  ,M(MUR)  ,KC_VOLU ,KC_WH_U
-,KC_TRNS ,KC_SLEP  ,KC_MS_L ,KC_MS_D  ,KC_MS_R ,KC_VOLD
-,KC_TRNS ,KC_NO    ,M(MDL)  ,KC_MS_D  ,M(MDR)  ,KC_MUTE ,KC_WH_D
-,KC_NO ,KC_NO   ,KC_BTN3 ,KC_BTN1  ,KC_BTN2
-                                               ,KC_WSTP ,KC_WREF
-                                                        ,KC_WSCH
-                                      ,KC_WBAK ,KC_NO   ,KC_WHOM
-                                                                     // right hand
-                                                                     ,KC_NO    ,KC_F16  ,KC_F17       ,KC_F18       ,KC_F19  ,KC_F20  ,KC_TRNS
-                                                                     ,KC_WH_U  ,KC_PSCR ,KC_HOME      ,KC_UP        ,KC_PGUP ,KC_MAIL ,KC_TRNS
-                                                                               ,KC_NLCK ,KC_LEFT      ,KC_DOWN      ,KC_RIGHT,KC_MYCM ,KC_TRNS
-                                                                     ,KC_WH_D  ,KC_NO   ,KC_END       ,KC_DOWN      ,KC_PGDN ,KC_NO   ,KC_TRNS
-                                                                                        ,KC_INS       ,KC_DEL       ,KC_NO   ,KC_NO   ,KC_NO
-                                                                     ,KC_MPRV  ,KC_MNXT
-                                                                     ,KC_VOLU
-                                                                     ,KC_VOLD  ,KC_MSTP ,KC_MPLY
-),
-
-/******* Special Layer *****************************************************************************************************
- *
- * ,-------------------------------------------------------.    ,-------------------------------------------------------.
- * |             |  Esc |      |      |      |      |      |    |      |      |      |      |   -  | Bspc |             |
- * |-------------+------+------+------+------+-------------|    |------+------+------+------+------+------+-------------|
- * | Media Lock  |      |      |      |      |      |      |    |      |      |      |      |  [   |   ]  | Media Lock  |
- * |-------------+------+------+------+------+------|      |    |      |------+------+------+------+------+-------------|
- * | Symbol Lock |      |      |      |      |      |------|    |------|      |      |      |      |      | Symbol Lock |
- * |-------------+------+------+------+------+------|      |    |      |------+------+------+------+------+-------------|
- * | Caps Lock   |      |      |      |      |      |      |    |      |      |      |      |      |      | Caps Lock   |
- * `-------------+------+------+------+------+-------------'    `-------------+------+------+------+------+-------------'
- *      |        |      |      |      |      |                                |      |      |      |      |        |
- *      `------------------------------------'                                `------------------------------------'
- *                                         ,-------------.     ,-------------.
- *                                         |      |      |     |      |      |
- *                                  ,------|------|------|     |------+------+------.
- *                                  |      |      |      |     |      |      |      |
- *                                  |      |      |------|     |------|      |      |
- *                                  |      |      |      |     |      |      |      |
- *                                  `--------------------'     `--------------------'
- */
-[SPEC] = KEYMAP(
-// left hand
- KC_TRNS ,KC_ESC  ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_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
-                                                             // right hand
-                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_MINS ,KC_BSPC ,KC_TRNS
-                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LBRC ,KC_RBRC ,KC_TRNS
-                                                                      ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_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
-),
-
-/******* Reverse Base Layer *********************************************************************************************
- *
- * ,------------------------------------------------------.       ,------------------------------------------------------.
- * |    =+      |   0  |   9  |   8  |   7  |   6  |  -   |       |  Esc |   5  |   4  |   3  |   2  |   1  |    `~      |
- * |------------+------+------+------+------+-------------|       |------+------+------+------+------+------+------------|
- * |    \|      |   P  |   O  |   I  |   U  |   Y  |   ]  |       |  [   |   T  |   R  |   E  |   W  |   Q  |    Tab     |
- * |------------+------+------+------+------+------|      |       |      |------+------+------+------+------+------------|
- * |    '"      |   ;  |   L  |   K  |   J  |   H  |------|       |------|   G  |   F  |   D  |   S  |  A   |            |
- * |------------+------+------+------+------+------| Tab  |       |Shift |------+------+------+------+------+------------|
- * | Capitals   |   /  |   .  |   ,  |   M  |   N  |      |       | -Tab |   B  |   V  |   C  |   X  |  Z   |   Capitals |
- * `------------+------+------+------+------+-------------'       `-------------+------+------+------+------+------------'
- *      | LCtrl | Meh  |Hyper | LAlt | LGui |                                   | RGui | RAlt | Hyper|  Meh | RCtrl |
- *      `-----------------------------------'                                   `-----------------------------------'
- *                                         ,-------------.       ,-------------.
- *                                         | Left | Right|       | Home | End  |
- *                                  ,------|------|------|       |------+------+------.
- *                                  |      |      |  Up  |       | PgUp |      |      |
- *                                  |Space |Enter |------|       |------|BackSp| Del  |
- *                                  |      |      | Down |       | PgDn |      |      |
- *                                  `--------------------'       `--------------------'
- */
-[RBASE] = KEYMAP(
-// left hand
- KC_EQL    ,KC_0        ,KC_9   ,KC_8   ,KC_7  ,KC_6  ,KC_MINS
-,KC_BSLS   ,KC_P        ,KC_O   ,KC_I   ,KC_U  ,KC_Y  ,KC_RBRC
-,KC_QUOT     ,LT(RBASE, KC_SCLN)     ,KC_L   ,KC_K   ,LT(RBASE, KC_J)  ,KC_H
-,KC_RSFT   ,KC_SLSH     ,KC_DOT ,KC_COMM,KC_M  ,KC_N  ,KC_TAB
-,KC_RCTL   ,MEH_T(KC_NO),ALL_T(KC_NO),KC_RALT,KC_RGUI
-                                             ,KC_LEFT ,KC_RGHT
-                                                      ,KC_UP
-                                    ,KC_SPC  ,KC_ENT  ,KC_DOWN
-                                                                  // right hand
-                                                                 ,KC_ESC      ,KC_5   ,KC_4   ,KC_3   ,KC_2    ,KC_1  ,KC_GRV
-                                                                 ,KC_LBRC     ,KC_T   ,KC_R   ,KC_E   ,KC_W    ,KC_Q  ,KC_TAB
-                                                                              ,KC_G   ,LT(RBASE, KC_F),KC_D   ,KC_S   ,LT(RBASE, KC_A)  ,KC_NO
-                                                                 ,LSFT(KC_TAB),KC_B   ,KC_V   ,KC_C   ,KC_X    ,KC_Z  ,KC_LSFT
-                                                                                      ,KC_LGUI,KC_LALT,KC_HYPR ,KC_MEH,KC_LCTL
-                                                                 ,KC_HOME     ,KC_END
-                                                                 ,KC_PGUP
-                                                                 ,KC_PGDN     ,KC_BSPC ,KC_DEL
-)
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-     // the faux shift keys are implemented as macro taps
-     [LSymb] = ACTION_MACRO_TAP(LSymb)
-    ,[LMdia] = ACTION_MACRO_TAP(LMdia)
-    ,[LSpec] = ACTION_MACRO_TAP(LSpec)
-    ,[RSymb] = ACTION_MACRO_TAP(RSymb)
-    ,[RMdia] = ACTION_MACRO_TAP(RMdia)
-    ,[RSpec] = ACTION_MACRO_TAP(RSpec)
-};
-
-uint16_t symb_shift = 0;
-uint16_t mdia_shift = 0;
-uint16_t spec_shift = 0;
-
-bool mdia_lock = false;
-bool symb_lock = false;
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch(id) {
-        // There are two shift keys for each layer so we increment a layer_shift var when one
-        // is pressed and decrement when one is released. The shift counts are bound between 0 and 2
-        // only because sometimes rapid pressing led to irregular events; this way the states
-        // are self healing during use.
-
-        case LSymb:                                               //
-        if (record->event.pressed) {                              // when the LSymb button is pressed
-            if(++symb_shift > 2) symb_shift = 2;                  // increment the symb shift count, max two
-            if(spec_shift) symb_lock = !symb_lock;                // if the Special layer is on, toggle the shift lock
-            layer_on(SYMB);                                       // in any case, turn on the Symbols layer
-        } else {                                                  // when the LSymb button is released
-            if(--symb_shift < 0) symb_shift = 0;                  // decrement the shift count, minimum zero
-            if((!symb_shift) && (!symb_lock)) layer_off(SYMB);    // if both shifts are released and the lock is off, turn off the Symbols layer
-        }
-        break;
-
-        case LMdia:
-        if (record->event.pressed) {
-           if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
-                register_code(KC_TAB);
-            } else {
-                if(spec_shift) mdia_lock = !mdia_lock;
-                if(++mdia_shift > 2) mdia_shift = 2;
-                layer_on(MDIA);
-            }
-        } else {
-            if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
-                unregister_code(KC_TAB);
-            } else {
-                if(--mdia_shift < 0) mdia_shift = 0;
-                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
-            }
-        }
-        break;
-
-        case LSpec:
-        if (record->event.pressed) {                                     // when the LSpec button is pressed
-            if(symb_shift) symb_lock = !symb_lock;                       // if another layer button is engaged, then
-            else if(mdia_shift) mdia_lock = !mdia_lock;                  // lock that layer, be it caps or symb or mdia
-            else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) {
-                register_code(KC_GRV);                                   // otherwise, if it's an uninterrupted tap, emit a char
-            } else {
-                if(++spec_shift > 2) spec_shift = 2;
-                layer_on(SPEC);                                          // otherwise, turn on the Special layer
-            }
-        } else {
-            if(record->tap.count && !record->tap.interrupted && (!spec_shift)) {
-                unregister_code(KC_GRV);
-            } else {
-                if(--spec_shift < 0) spec_shift = 0;
-                if(!spec_shift) layer_off(SPEC);
-            }
-        }
-        break;
-
-        case RSymb:
-        if (record->event.pressed) {
-            if (record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) {
-                register_code(KC_QUOT);
-            } else {
-                if(++symb_shift > 2) symb_shift = 2;
-                if(spec_shift) symb_lock = !symb_lock;
-                layer_on(SYMB);
-            }
-        } else {
-            if(record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) {
-                unregister_code(KC_QUOT);
-            } else {
-                if(--symb_shift < 0) symb_shift = 0;
-                if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
-            }
-        }
-        break;
-
-        case RMdia:
-        if (record->event.pressed) {
-            if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
-                register_code(KC_BSLS);
-            } else {
-                if(++mdia_shift > 2) mdia_shift = 2;
-                if(spec_shift) mdia_lock = !mdia_lock;
-                layer_on(MDIA);
-            }
-        } else {
-            if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
-                unregister_code(KC_BSLS);
-            } else {
-                if(--mdia_shift < 0) mdia_shift = 0;
-                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
-            }
-        }
-        break;
-
-        case RSpec:
-        if (record->event.pressed) {
-            if(symb_shift) symb_lock = !symb_lock;
-            else if(mdia_shift) mdia_lock = !mdia_lock;
-            else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) {
-                register_code(KC_EQL);
-            } else {
-                if(++spec_shift > 2) spec_shift = 2;
-                layer_on(SPEC);
-            }
-        } else {
-            if(record->tap.count && !record->tap.interrupted && (!spec_shift)) {
-                unregister_code(KC_EQL);
-            } else {
-                if(--spec_shift < 0) spec_shift = 0;
-                if(!spec_shift) layer_off(SPEC);
-            }
-        }
-        break;
-
-        case NotEq:
-        if (record->event.pressed) {
-            return MACRO( I(10), D(LSFT), T(1), U(LSFT), T(EQL), END  ); // !=
-        }
-        break;
-
-        case GrtEq:
-        if (record->event.pressed) {
-            return MACRO( I(10), D(LSFT), T(COMM), U(LSFT), T(EQL), END  ); // <=
-        }
-        break;
-
-        case LesEq:
-        if (record->event.pressed) {
-            return MACRO( I(10), D(LSFT), T(DOT), U(LSFT), T(EQL), END  ); // >=
-        }
-        break;
-
-        case DeRef:
-        if (record->event.pressed) {
-            return MACRO( I(10), T(MINS), D(LSFT), T(DOT), U(LSFT), END  ); // ->
-        }
-        break;
-
-        // mouse diagonals
-
-        case MUL: // mouse up left
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_UP);
-            mousekey_on(KC_MS_LEFT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_UP);
-            mousekey_off(KC_MS_LEFT);
-            mousekey_send();
-        }
-        break;
-
-        case MUR: // mouse up right
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_UP);
-            mousekey_on(KC_MS_RIGHT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_UP);
-            mousekey_off(KC_MS_RIGHT);
-            mousekey_send();
-        }
-        break;
-
-        case MDL: // mouse down left
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_DOWN);
-            mousekey_on(KC_MS_LEFT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_DOWN);
-            mousekey_off(KC_MS_LEFT);
-            mousekey_send();
-        }
-        break;
-
-        case MDR: // mouse down right
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_DOWN);
-            mousekey_on(KC_MS_RIGHT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_DOWN);
-            mousekey_off(KC_MS_RIGHT);
-            mousekey_send();
-        }
-        break;
-
-        default:
-            // none
-            break;
-    }
-
-    return MACRO_NONE;
-};
-
-// 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) {
-    // shift or caps lock turns on red light
-    if((keyboard_report->mods & MOD_BIT(KC_LSFT))
-    || (keyboard_report->mods & MOD_BIT(KC_RSFT))
-    || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
-        ergodox_right_led_1_on();
-    } else {
-        ergodox_right_led_1_off();
-    }
-
-    // Symbol layer turns on green light
-    if(layer_state & (1UL<<SYMB)) {
-        ergodox_right_led_2_on();
-    } else {
-        ergodox_right_led_2_off();
-    }
-
-    // Media layer turns on blue light
-    if(layer_state & (1UL<<MDIA)) {
-        ergodox_right_led_3_on();
-    } else {
-        ergodox_right_led_3_off();
-    }
-};
diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt
deleted file mode 100644 (file)
index 4fc11fa..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[{x:3.5},"#\n3",{x:10.5},"*\n8"],
-[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
-[{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"],
-[{y:-0.875,c:"#c6c600",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#c6c600",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"],
-[{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"],
-[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
-[{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"],
-[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\nTab\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Q",{x:14.5},"P",{c:"#c6c600",t:"#002299",w:1.5},"|\n\\\nMedia\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000"},"D",{x:10.5},"K"],
-[{y:-0.875,x:2.5},"S",{x:1,fa:[0,0,0,1]},"F\n\n\nreverse",{x:8.5},"J\n\n\nreverse",{x:1},"L"],
-[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
-[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"A\n\n\nreverse",{x:14.5},":\n;\n\nreverse",{c:"#c6c600",t:"#007d00",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"],
-[{y:-0.625,x:6.5,c:"#ff8500",t:"#000000",h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"],
-[{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"],
-[{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."],
-[{y:-0.875,x:5.5},"B",{x:6.5},"N"],
-[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Z",{x:14.5},"?\n/",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#dddd77",t:"#000000"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"],
-[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"],
-[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ff8500"},"Home","End"],
-[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"],
-[{x:2},"Page\n\n\n\n\n\nDown"],
-[{r:-30,rx:13,y:-1,x:-3},"Left","Right"],
-[{x:-3},"Up",{h:2},"Enter",{h:2},"Space"],
-[{x:-3},"Down"]
-
diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt
deleted file mode 100644 (file)
index 67b7840..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"],
-[{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"],
-[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"],
-[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"],
-[{y:-0.375,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
-[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#1e8fff"},"Home",{x:1},"Page\n\n\n\n\n\nUp"],
-[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#1e8fff",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#9977ee"},"Print\n\n\n\n\n\nScreen"],
-[{y:-0.875,c:"#000000",t:"#3f68ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#3f68ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
-[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"],
-[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nDown",{x:6.5},"Num\n\n\n\n\n\nLock"],
-[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#c6c600",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"],
-[{y:-0.625,x:6.5,c:"#1e8fff",t:"#000000",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
-[{y:-0.75,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
-[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#1e8fff"},"End",{x:1},"Page\n\n\n\n\n\nDown"],
-[{y:-0.875,x:5.5,c:"#9977ee"},"Mute",{x:6.5,c:"#737373",a:7},""],
-[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#1e8fff"},"Delete"],
-[{y:-0.875,x:2.5,c:"#0066cc"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#1e8fff"},"Insert",{x:1,c:"#737373",a:7},""],
-[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#6633ee",a:4,fa:[0,0,0,1]},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"],
-[{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"],
-[{x:2},"Home\n\n\nBrowser"],
-[{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"],
-[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#6633ee",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"],
-[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nDown"]
-
diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt
deleted file mode 100644 (file)
index 97f40f9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[{x:3.5,a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"_\n\n\n\n\n\n-"],
-[{y:-0.875,x:5.5,a:7},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
-[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#ff8500"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"{\n["],
-[{y:-0.875,x:5.5,a:7},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
-[{y:-0.875,c:"#c6c600",t:"#002299",a:4,w:1.5},"Media\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,a:4},"\n\n}\n]",{c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nLock"],
-[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{x:6.5},""],
-[{y:-0.875,c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock"],
-[{y:-0.625,x:6.5,c:"#cccccc",t:"#000000",a:7,h:1.5},"",{x:4.5,h:1.5},""],
-[{y:-0.75,x:3.5},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{x:6.5},""],
-[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock"],
-[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
-[{h:2},"",{h:2},"",""],
-[{x:2},""],
-[{r:-30,rx:13,y:-1,x:-3},"",""],
-[{x:-3},"",{h:2},"",{h:2},""],
-[{x:-3},""]
-
diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt
deleted file mode 100644 (file)
index 65eca9d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"],
-[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
-[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"F6"],
-[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"],
-[{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"],
-[{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"],
-[{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
-[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"!",{x:14.5,c:"#89b087"},"/",{c:"#c6c600",t:"#002299",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#bbddbb",t:"#000000"},"(",{x:10.5,c:"#89b087"},"5"],
-[{y:-0.875,x:2.5,c:"#bbddbb"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"],
-[{y:-0.875,x:5.5,c:"#bbddbb"},"`",{x:6.5},"/"],
-[{y:-0.875,c:"#000000",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"],
-[{y:-0.625,x:6.5,c:"#bbddbb",t:"#000000",a:6,h:1.5},"'",{x:4.5,h:1.5},"\""],
-[{y:-0.75,x:3.5,a:4},"[",{x:10.5,c:"#89b087"},"2"],
-[{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"],
-[{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"],
-[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"%",{x:14.5,c:"#89b087"},"-",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#bbddbb",t:"#000000"},"<",{x:10.5,c:"#89b087"},"."],
-[{y:-0.875,x:2.5,c:"#bbddbb"},"*",{x:1},">",{x:8.5,c:"#89b087"},"0",{x:1},"="],
-[{y:-0.75,x:0.5,c:"#bbddbb"},";","&",{x:14.5,c:"#89b087"},"+","Enter"],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bbddbb"},"<=",">="],
-[{a:7,h:2},"+",{h:2},"=",{c:"#737373"},""],
-[{x:2,c:"#bbddbb",a:4},"!="],
-[{r:-30,rx:13,y:-1,x:-3,c:"#737373",a:7},"",""],
-[{x:-3},"",{c:"#bbddbb",h:2},"_",{h:2},"-"],
-[{x:-3,a:4},"->"]
-
diff --git a/keyboards/ergodox/keymaps/ordinary/readme.md b/keyboards/ergodox/keymaps/ordinary/readme.md
deleted file mode 100644 (file)
index 2e8d869..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-# The Ordinary Layout, a familiar and powerful layout #
-
-The Ordinary Layout is intended to be unremarkably mundane and remarkably useful. This layout maintains most key positions from common QWERTY keyboards, and it features enhanced Symbol and Media layers compared to the default Ergodox EZ layout.
-
-The Ordinary Layout is supposed to look mostly like a normal keyboard, except in the ways that the Ergodox key arrangement is unique. The thumbs are responsible for space, enter, plus both forward and backward delete; with only a couple exceptions, all other keys are in the same place they are found on traditional keyboards.
-
-Nicholas Keene
-ordinarylayout@nicholaskeene.com
-no rights reserved, use for any purposes, credit me if you are a nice person
-
-## The Base Layout ##
-
-* *White Keys* are all the normal characters and symbols in all the normal locations (except for the brackets, and who touch-types brackets?).
-* *Modifier Keys* are light yellow and in the traditional locationn at the bottom of the keyboard: Control, Option, Command, plus Hyper and Meh. Modifier keys are only found on the base layout.
-* *Shift Keys* are dark yellow, found on the outsides of the keyboard. Capitals Shift (traditional Shift) is found in the usual place and above that are Symbol Shift, Media Shift, and Special Shift (Shift Lock).
-* Several of the shift keys double for entry of characters which would typically be in those locations.
-* *Thumb Keys* shown in orange are for text navigation and manipulation.
-* The keys under pinky fingers and index fingers will *reverse* the keyboard layout.
-* *Escape* is red and it is always found in that location (*except* when the layout is reversed).
-
-![Ordinary base layout](https://i.imgur.com/CA5t9dF.png)
-
-The four big orange keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another.
-
-The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code.
-
-#### Reversing The Base Layout ####
-
-The Ordinary Layout can be used to perform one-handed chorded text input. If you hold down the key under either index finger or either pinky finger (A, F, J and Semicolon), the whole base layout reverses order. Most keys are _mirrored_ but the delete keys, home/end, and left/right arrow keys are merely *translated* to preserve directionality. Pro-tip: This feature is particularly handly for bringing the Enter key to the left hand when the right hand is using the mouse.
-
-## The Symbols Layer ##
-
-* *Symbols* shown in light green. All kinds of brackets are available on this layer. Ampersand and Pipe juxtapose each other. Pipe, slash, and backslash are arranged in a column.
-* *F-Keys* are bright green and overlay the row of numerals. This layer has F1-F10, higher *F-Keys* are on the Symbols layer.
-* *Number pad* in dark green under the right hand includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads so that NumLock is not needed.
-* The dark gray keys do nothing in case you bump them by accident.
-
-![Ordinary symbol layout](https://i.imgur.com/JnX3lV2.png)
-
-The Symbols Layer is based on the Coder Layer from the default Ergodox EZ layout. I slightly rearranged the symbols, added some symbols, expanded the number pad, and straightened out the F-Keys. It's very handy to have the symbols directly underneath the normal typing keys.
-
-## The Media Layer ##
-
-* *Mouse Cursor Keys* are under the left hand, shown in dark blue. Diagonal keys won't automatically repeat unless combined with other keys. Buttons to left- middle- and right-click the mouse are also featured.
-* *Text Cursor Keys* are under the right hand, shown in dark blue. They overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand.
-* *Scrolling and Paging* keys are shown in light blue and have some useful redundancy across the layout.
-* Higher-order *F-Keys* are shown in bright green overylaying the numerals.
-* *Application Keys* to control web browsers and audio players are dark purple but don't get too excited because these have weak support on operating systems I've looked at. Good luck.
-* The light purple keys are various operating system keys such as NumLock and Mute and a button to navigate to My Computer (usually your home dir).
-* The dark gray keys do nothing in case you bump them by accident.
-
-![Ordinary media layout](https://i.imgur.com/1jJnQrG.png)
-
-This layer is a substantial extension of the Media layer on the Ergodox EZ default layout. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents.
-
-Keys to directly interact with the operating system are also found on this layer, such as volume and shutdown.
-
-## Switching Between Layers ##
-
-In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active.
-
-Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock the shift keys using the Shift Lock button, which is the same as the Special Shift button.
-
-Multiple layers can be turned on at once. The Capitals layer will affect characters on other layers to capitalize. Other layers, however, don't 'mix': Symbols blankets the base layout; Media blankets Symbols.
-
-## Special Sequences ##
-
-![Ordinary special layout](https://i.imgur.com/XHXELD5.png)
-
-The Special Shift layer is mostly used to lock the shift keys but in order to make this layout more _ordinary_ there are a few special sequences which put some keys near their most common traditional locations.
-
-#### Escape ####
-
-The One True Location for an Escape key is separated from the rest of the keys, way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location, however, and the nearest one is home to the tilde (er, *grave*) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, which is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape.
-
-The Ordinary layout offers as a consolation prize, a Special sequence for Escape: **Special Shift + 1**. This is natural so you can tap the top left button, then the button next to it and get Escape. This gesture works in all layers.
-
-#### Backspace ####
-
-At the top right corner of the Ergodox EZ you can do **Special Shift + 0** to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times.
-
-#### Other Characters ####
-
-The Escape and Backspace special sequences are so useful why not have a few more? You can find dash under 9, left bracket under o, and right bracket under p. That's pretty much all the characters from the top right corner of the keyboard which moved to make room for the columnar layout.
-
-## Errata ##
-
-Some of the symbols on the Symbols layer are produced by the keyboard by "capitalizing" another character (such as *!* from *1*) so when you type that key you will notice the Capitals Shift red LED turn on.
-
-****
-
-The Ordinary Layout for the Ergodox EZ keyboard, v5
-
-Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
-
-No rights reserved. This software is in the public domain. Credit me if you are friendly but if you're a jerk don't bother.
-
-Keyboard layout images were created with http://www.keyboard-layout-editor.com/ by Ian Prest my thanks to that free service
-
-Details: readme.md
-         https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary
diff --git a/keyboards/ergodox/keymaps/osx_de/keymap.c b/keyboards/ergodox/keymaps/osx_de/keymap.c
deleted file mode 100644 (file)
index e3b9e11..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_german_osx.h"
-
-#define BASE 0
-#define SYMB 1
-#define MDIA 2
-#define SMLY 3
-#define NUMB 4
-#define EGOS 5
-
-#define M_CTRL_CMDV 0
-#define M_CTRL_CMDC 1
-#define M_MEH_SH_ACUT 2
-#define M_LGUI_SHFT 3
-#define M_CTL_SFT_HASH 4
-#define M_DE_OSX_CIRC_CTRLCMD 5
-#define M_DE_OSX_PLUS_CTRLALT 6
-#define SM_SMILE 7
-#define SM_SMIRK 8
-#define SM_CRY 9
-#define SM_SAD 10
-#define SM_HEART 11
-#define SM_LAUGH 12
-#define SM_KISS 13
-#define SM_FROWN 14
-#define M_TOGGLE_5 15
-
-//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[BASE]=KEYMAP(
-//left half
-    KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH), 
-    KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, 
-    KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, 
-    KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, 
-                  LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN, 
-                                              M(M_MEH_SH_ACUT), TG(MDIA), 
-                                                     KC_HOME, 
-                                       KC_BSPC, KC_DEL, LT(SMLY,KC_END), 
-    //right half
-    M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, 
-    KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, 
-           DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), 
-    KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, 
-                         KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), 
-    TG(NUMB), ALL_T(DE_OSX_ACUT), 
-    KC_PGUP, 
-    KC_PGDN, KC_ENT, KC_SPC),
-[SYMB]=KEYMAP(
-//left half
-    KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, 
-    KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, 
-    KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, 
-    KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_DEL, KC_TRNS, 
-    //right half
-    M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, 
-           DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH, 
-    KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4), 
-                         DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, 
-    KC_F13, KC_F12, 
-    KC_F14, 
-    KC_F15, KC_TRNS, KC_TRNS),
-[MDIA]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 
-    KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-           KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_WBAK),
-[SMLY]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, 
-           M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-[NUMB]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, 
-           KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS, 
-    KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, 
-                         KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-[EGOS]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_F1, KC_F2, 
-                                                     KC_F3, 
-                                       KC_SPC, KC_LCTL, KC_F4, 
-    //right half
-    M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-static uint16_t start;
-switch(id) {
-case M_TOGGLE_5:
-//Macro: M_TOGGLE_5//-----------------------
- if (record->event.pressed){
-           layer_state ^= (1<<5);
-           layer_state &= (1<<5);
-        }
-
-break;
-case M_CTRL_CMDC:
-//Macro: M_CTRL_CMDC//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),END);
-                       } else {
-                               return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
-                       }
-               }
-
-break;
-case M_DE_OSX_PLUS_CTRLALT:
-//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),D(LALT),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LALT),END);
-                       } else {
-                               return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
-                       }
-               }
-
-break;
-case SM_KISS:
-//Macro: SM_KISS//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
-               }
-
-break;
-case SM_FROWN:
-//Macro: SM_FROWN//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
-               }
-
-break;
-case SM_CRY:
-//Macro: SM_CRY//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
-               }
-
-break;
-case SM_SMILE:
-//Macro: SM_SMILE//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
-               }
-
-break;
-case SM_SMIRK:
-//Macro: SM_SMIRK//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
-               }
-
-break;
-case M_LGUI_SHFT:
-//Macro: M_LGUI_SHFT//-----------------------
-if (record->event.pressed){
-                       return MACRO(D(LGUI),D(LSFT),END);
-               }else{
-                       return MACRO(U(LGUI),U(LSFT),END);
-               }
-
-break;
-case SM_HEART:
-//Macro: SM_HEART//-----------------------
-if (record->event.pressed) {
-                       return MACRO(T(GRV),T(3),END);
-               }
-
-break;
-case SM_LAUGH:
-//Macro: SM_LAUGH//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
-               }
-
-break;
-case M_CTL_SFT_HASH:
-//Macro: M_CTL_SFT_HASH//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),D(LSFT),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LSFT),END);
-                       } else {
-                               return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
-                       }
-               }
-
-break;
-case SM_SAD:
-//Macro: SM_SAD//-----------------------
-if (record->event.pressed) {
-                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
-               }
-
-break;
-case M_DE_OSX_CIRC_CTRLCMD:
-//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),D(LGUI),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LGUI),END);
-                       } else {
-                               return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
-                       }
-               }
-
-break;
-case M_CTRL_CMDV:
-//Macro: M_CTRL_CMDV//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),END);
-                       } else {
-                               return MACRO(U(LCTRL),D(LGUI),T(V),U(LGUI),END);
-                       }
-               }
-
-break;
-case M_MEH_SH_ACUT:
-//Macro: M_MEH_SH_ACUT//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
-                       } else {
-                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END);
-                       }
-               }
-
-break;
-}
-return MACRO_NONE;
-};
-
-// 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);
-
-ergodox_board_led_off();
-ergodox_right_led_1_off();
-ergodox_right_led_2_off();
-ergodox_right_led_3_off();
-switch (layer) {
-
-    case SYMB:
-        ergodox_right_led_1_on();
-        
-        
-        break;
-    case MDIA:
-        
-        ergodox_right_led_2_on();
-        
-        break;
-    case SMLY:
-        
-        
-        ergodox_right_led_3_on();
-        break;
-    case NUMB:
-        ergodox_right_led_1_on();
-        
-        ergodox_right_led_3_on();
-        break;
-    case EGOS:
-        ergodox_right_led_1_on();
-        ergodox_right_led_2_on();
-        ergodox_right_led_3_on();
-        break;
-default:
-// none
-break;
-}
-
-};
-
diff --git a/keyboards/ergodox/keymaps/osx_de/osx_de_highres.png.md b/keyboards/ergodox/keymaps/osx_de/osx_de_highres.png.md
deleted file mode 100644 (file)
index ee3dc53..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/kvSzkXK.png
diff --git a/keyboards/ergodox/keymaps/osx_de/readme.md b/keyboards/ergodox/keymaps/osx_de/readme.md
deleted file mode 100644 (file)
index 5011a9d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#Ergodox EZ für OSX 
-
-Dies ist nur ein kleiner Tweak der bestehenden firmware für das ErgoDox-EZ-Keyboard. Leider passte das layout nicht wirklich für OSX, deswegen habe ich einige Anpassungen gemacht. Dabei wurden folgende features umgesetzt:
-
-- Die Umlaute sollten an einigermassen sinnvollen Plätzen liegen
-- der Umstieg sollte dadurch erleichtert werden, dass einige Tasten an ihren "normalen" Platz zurückgewandert sind. Z.B. ESC, Tab,...
-- die Leertaste ist jetzt auf der rechten seite, neben Enter. Dafür hat der linke Daumen nun Backspace und Delete. 
-- die CMD- und Alt-Tasten sind in der Mitte einfach erreichbar.
-- es gibt eine neue Layer die für Spiele genutzt werden kann (egosooter wie Counter Strike). Dort liegen die wichtigsten Tasten auf der linken Seite, im Daumenblock z.B. space und ctrl sowie die F-Tasten 1-4. Diese Layer ist über die Symbollayer erreichbar.
-- Die Symbollayer wurde dahingehend angepasst, dass die klammern, etc nun auf beiden hälften der Tastatur zu finden sind
-- der Zehnerblock wurde in eine eigene Layer umgezogen
-- die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen
-
-# Erstellt Mit Dem ErgodoxLayoutGenerator
-
-Der ErgodoxLayoutGenerator ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
-Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
-
-
-
-------------------------------   
-
-# ErgoDox EZ for OSX
-
-This is  only a little tweak of the existing default layout for the ErgoDox keyboard. Unfortunately the default layout did not work well with german OSX, so I created som adjustments. These were the features added and changed:
-
-- the umlaut-keys should be at their useful place more or less
-- the switching should be made more easy so some other keys (like tab, esc) were moved to their default place
-- the space key can now be used with both hands
-- the CMD- and ALT-Keys moved to the middle, can be reached more easily.
-- there is a new layer for using the cursor-keys, placed like on the default keyboard. This makes them useable for games also
-- the symbollayer now has only symbols
-- the number block was moved to a special layer
-- meh and hyper went down to the thumb block
-
-# Created Using the ErgodoxLayoutGenerator
-
-The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded  [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
-
-The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
-
diff --git a/keyboards/ergodox/keymaps/osx_de_adnw_koy/keymap.c b/keyboards/ergodox/keymaps/osx_de_adnw_koy/keymap.c
deleted file mode 100644 (file)
index 6c4312a..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#include "keymap_neo2.h"
-#include "keymap_uk.h"
-#include "keymap_colemak.h"
-#include "keymap_french_osx.h"
-#include "keymap_nordic.h"
-#include "keymap_dvorak.h"
-#include "keymap_german.h"
-#include "keymap_norwegian.h"
-#include "keymap_fr_ch.h"
-#include "keymap_german_osx.h"
-#include "keymap_spanish.h"
-#include "keymap_bepo.h"
-
-#define BASE 0
-#define SYMB 1
-#define MDIA 2
-#define QWERTZ 3
-#define NUMB 4
-
-#define UNUSED 0
-
-//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[BASE]=KEYMAP(
-//left half
-    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL, 
-    KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI, 
-    TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U, 
-    KC_LSFT, CTL_T(KC_X), KC_Q, DE_AE, DE_UE, DE_OE, KC_LALT, 
-                  LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, 
-                                              TG(MDIA), MEH_T(LSFT(DE_ACUT)), 
-                                                     KC_HOME, 
-                                       KC_BSPC, KC_DEL, KC_END, 
-    //right half
-    KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_OSX_MINS, 
-    KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y, 
-           KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F), 
-    KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, 
-                         KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS), 
-    ALL_T(DE_ACUT), TG(NUMB), 
-    KC_PGUP, 
-    KC_PGDN, KC_ENT, KC_SPC),
-[SYMB]=KEYMAP(
-//left half
-    KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, 
-    KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QST, KC_TRNS, KC_TRNS, 
-    KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT, 
-    KC_TRNS, KC_TRNS, DE_LESS, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_DEL, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, 
-           DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS, 
-    KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, 
-                         KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-[MDIA]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, 
-    KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, 
-                         KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_WBAK),
-[QWERTZ]=KEYMAP(
-//left half
-    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V), 
-    KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI, 
-    KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, 
-    KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, 
-                  LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, 
-                                              KC_TRNS, MEH_T(LSFT(DE_ACUT)), 
-                                                     KC_HOME, 
-                                       KC_BSPC, KC_DEL, KC_END, 
-    //right half
-    LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 
-    KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE, 
-           KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_AE), 
-    KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, 
-                         KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS), 
-    ALL_T(DE_ACUT), KC_TRNS, 
-    KC_PGUP, 
-    KC_PGDN, KC_ENT, KC_SPC),
-[NUMB]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, 
-           KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS, 
-    KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, 
-                         KC_0, KC_DOT, KC_0, KC_EQL, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-switch(id) {
-case UNUSED:
-//Macro: UNUSED//-----------------------
-
-
-
-
-
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        
-
-
-break;
-}
-return MACRO_NONE;
-};
-
-// 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);
-
-ergodox_board_led_off();
-ergodox_right_led_1_off();
-ergodox_right_led_2_off();
-ergodox_right_led_3_off();
-switch (layer) {
-
-default:
-// none
-break;
-}
-
-};
-
diff --git a/keyboards/ergodox/keymaps/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md b/keyboards/ergodox/keymaps/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md
deleted file mode 100644 (file)
index 4d4b777..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/5s9UKyc.png
diff --git a/keyboards/ergodox/keymaps/osx_de_experimental/keymap.c b/keyboards/ergodox/keymaps/osx_de_experimental/keymap.c
deleted file mode 100644 (file)
index 61b6a4f..0000000
+++ /dev/null
@@ -1,597 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_neo2.h"
-#include "keymap_uk.h"
-#include "keymap_colemak.h"
-#include "keymap_nordic.h"
-#include "keymap_dvorak.h"
-#include "keymap_german.h"
-#include "keymap_norwegian.h"
-#include "keymap_fr_ch.h"
-#include "keymap_german_osx.h"
-#include "keymap_spanish.h"
-#include "keymap_bepo.h"
-
-
-/**
-* This layout was generated using the ErgodoxLayoutGenerator (ELG). You can download it from https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases
-* documentation about it can be found here https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/
-* Thanks to the team of Erez Zukerman for building the great Ergodox-EZ!
-*
-* use at own risk!
-**/
-
-#define BASE 0
-#define SYMB 1
-#define MDIA 2
-#define SMLY 3
-#define NUMB 4
-#define EGOS 5
-
-#define SMLY_TOG_QUOT 0
-
-#define M_TOGGLE_5 1
-
-#define TGH_NUM 2
-
-#define M_DE_OSX_PLUS_CTRLALT 3
-
-#define SM_KISS 4
-
-#define SM_FROWN 5
-
-#define SM_CRY 6
-
-#define SM_SMILE 7
-
-#define SM_SMIRK 8
-
-#define M_LGUI_SHFT 9
-
-#define SM_HEART 10
-
-#define TOG_HLD_MDIA 11
-
-#define SM_LAUGH 12
-
-#define SM_SAD 13
-
-#define M_DE_OSX_CIRC_CTRLCMD 14
-
-#define M_MEH_SH_ACUT 15
-
-
-//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/**
-* Layer: BASE
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
-* | ESC                | 1                  | 2                  | 3                  | 4                  | 5                  | Hold or toggle     |                       | Hold or toggle     | 6                  | 7                  | 8                  | 9                  | 0                  | ß                  |                      
-* |                    |                    |                    |                    |                    |                    | Layer NUMB         |                       | Layer MDIA         |                    |                    |                    |                    |                    |                    |                      
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
-* | TAB                | Q                  | W                  | E                  | R                  | T                  | Cmd                |                       | Cmd                | Z                  | U                  | I                  | O                  | P                  | Ü                  |                      
-* |                    |                    |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    |                    |                    |                      
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\                        \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
-* | Alt                | A                  | S                  | D                  | F                  | G                  |                                                                 | H                  | J                  | K                  | L                  | Ö                  | Ä                  |                      
-* |                    |                    |                    |                    |                    |                    |                                                                 |                    |                    |                    |                    |                    | ALT                |                      
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
-* | Shift              | Y                  | X                  | C                  | V                  | B                  | Alt                |                       | Alt                | N                  | M                  | ,                  | .                  | -                  | Shift              |                      
-* |                    | Ctrl               |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    | Ctrl               |                    |                      
-* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                        \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                       
-*                                                                                                                                                                                                                                                                                                                                                      
-*                                                                                                                                                                                                                                                                                                                                                      
-*                                           /-------------------//-------------------//-------------------//-------------------//-------------------/                                                                                       /-------------------//-------------------//-------------------//-------------------//-------------------/  
-*                                           | <                  | LongPress / Type   | LongPress / Type   | Shift+Ctrl         | Type               |                                                                                      | #                  | ACUT               | CMD+Shift          | ALT+Shift          | +                  | 
-*                                           | SYMB               | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt |                    | Toggle SMLY        |                                                                                      | Meh                | Hyper              |                    |                    | SYMB               | 
-*                                           \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/   /-------------------//-------------------/                     \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\  
-*                                                                                                                               | HOME               | END                |  | LEFT               | RIGHT              |                                                                                                                               
-*                                                                                                                               |                    |                    |  |                    |                    |                                                                                                                               
-*                                                                                                                               \-------------------\/-------------------/   /-------------------/\-------------------\                                                                                                                                
-*                                                                                                                                                    | PGUP               |  | UP                 |                                                                                                                                                    
-*                                                                                                                                                    |                    |  |                    |                                                                                                                                                    
-*                                                                                                          /-------------------//-------------------//-------------------/   /-------------------//-------------------//-------------------/                                                                                                           
-*                                                                                                          | BSPC               | DEL                | PGDN               |  | DOWN               | ENT                | SPC                |                                                                                                          
-*                                                                                                          |                    |                    |                    |  |                    |                    |                    |                                                                                                          
-*                                                                                                          \-------------------\\-------------------\\-------------------\   \-------------------\\-------------------\\-------------------\                                                                                                           
-*                                                                                                                                                                                                                                                                                                                                                      
-* 
-**/
-[BASE]=KEYMAP(
-//left half
-    KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM), 
-    KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, 
-    KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, 
-    KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, 
-                  LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT), 
-                                              KC_HOME, KC_END, 
-                                                     KC_PGUP, 
-                                       KC_BSPC, KC_DEL, KC_PGDN, 
-    //right half
-    M(TOG_HLD_MDIA), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, 
-    KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, 
-           DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), 
-    KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, 
-                         MEH_T(DE_OSX_HASH), ALL_T(DE_OSX_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), 
-    KC_LEFT, KC_RIGHT, 
-    KC_UP, 
-    KC_DOWN, KC_ENT, KC_SPC),
-/**
-* Layer: SYMB
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
-* | APPLICATION| F1         | F2         | F3         | F4         | F5         | F5         |               | F6         | F6         | F7         | F8         | F9         | F10        | F11        |              
-* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
-* |            | <          | >          | !          | ?          |            |            |               |            | \          | [          | ]          | <          | >          | !          |              
-* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
-* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\                \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/               
-* |            | #          | $          | \          | /          | .          |                                         | /          | (          | )          | {          | }          | #          |              
-* |            |            |            |            |            |            |                                         |            |            |            |            |            |            |              
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
-* |            |            | <          | %          | |          | ~          |            |               |            | |          | ~          |            |            |            |            |              
-* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
-* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\                \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\               
-*                                                                                                                                                                                                                      
-*                                                                                                                                                                                                                      
-*                           /-----------//-----------//-----------//-----------//-----------/                                                       /-----------//-----------//-----------//-----------//-----------/  
-*                           |            |            |            |            |            |                                                      | '          | DQOT       |            | Toggle 5   |            | 
-*                           |            |            |            |            |            |                                                      |            |            |            |            |            | 
-*                           \-----------\\-----------\\-----------\\-----------\/-----------//-----------/   /-----------//-----------/             \-----------\\-----------\\-----------\\-----------\\-----------\  
-*                                                                               |            |            |  | F13        | F12        |                                                                               
-*                                                                               |            |            |  |            |            |                                                                               
-*                                                                               \-----------\/-----------/   /-----------/\-----------\                                                                                
-*                                                                                            |            |  | F14        |                                                                                            
-*                                                                                            |            |  |            |                                                                                            
-*                                                                  /-----------//-----------//-----------/   /-----------//-----------//-----------/                                                                   
-*                                                                  |            | DEL        |            |  | F15        |            |            |                                                                  
-*                                                                  |            |            |            |  |            |            |            |                                                                  
-*                                                                  \-----------\\-----------\\-----------\   \-----------\\-----------\\-----------\                                                                   
-*                                                                                                                                                                                                                      
-* 
-**/
-[SYMB]=KEYMAP(
-//left half
-    KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5, 
-    KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, 
-    KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, 
-    KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_DEL, KC_TRNS, 
-    //right half
-    KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, DE_OSX_BSLS, DE_OSX_LBRC, DE_OSX_RBRC, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, 
-           DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, DE_OSX_LCBR, DE_OSX_RCBR, DE_OSX_HASH, 
-    KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         DE_OSX_QUOT, DE_OSX_DQOT, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
-    KC_F13, KC_F12, 
-    KC_F14, 
-    KC_F15, KC_TRNS, KC_TRNS),
-/**
-* Layer: MDIA
-* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
-* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
-* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
-* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
-* |      |      | BTN1 | U    | BTN2 | U    |      |         |      |      |      |      |      |      |      |        
-* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
-* /-----//-----//-----//-----//-----//-----/\-----\          \-----\/-----//-----//-----//-----//-----//-----/         
-* |      |      | L    | D    | R    | D    |                       |      |      |      |      |      |      |        
-* |      |      |      |      |      |      |                       |      |      |      |      |      |      |        
-* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
-* |      |      | L    | D    | R    | BTN3 |      |         |      |      |      |      |      | UP   |      |        
-* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
-* \-----\\-----\\-----\\-----\\-----\\-----\\-----\          \-----\\-----\\-----\\-----\\-----\\-----\\-----\         
-*                                                                                                                      
-*                                                                                                                      
-*               /-----//-----//-----//-----//-----/                               /-----//-----//-----//-----//-----/  
-*               |      |      |      |      |      |                              |      |      | LEFT | DOWN | RIGHT| 
-*               |      |      |      |      |      |                              |      |      |      |      |      | 
-*               \-----\\-----\\-----\\-----\/-----//-----/   /-----//-----/       \-----\\-----\\-----\\-----\\-----\  
-*                                           |      |      |  | MPRV | MNXT |                                           
-*                                           |      |      |  |      |      |                                           
-*                                           \-----\/-----/   /-----/\-----\                                            
-*                                                  |      |  | VOLU |                                                  
-*                                                  |      |  |      |                                                  
-*                                    /-----//-----//-----/   /-----//-----//-----/                                     
-*                                    |      |      |      |  | VOLD | MUTE | MPLY |                                    
-*                                    |      |      |      |  |      |      |      |                                    
-*                                    \-----\\-----\\-----\   \-----\\-----\\-----\                                     
-*                                                                                                                      
-* 
-**/
-[MDIA]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 
-    KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 
-    KC_MPRV, KC_MNXT, 
-    KC_VOLU, 
-    KC_VOLD, KC_MUTE, KC_MPLY),
-/**
-* Layer: SMLY
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            | Typing  | Typing  | Typing  |         |         |         |         |           
-* |         |         |         |         |         |         |         |            | SM_SMILE| SM_SMIRK| SM_LAUGH|         |         |         |         |           
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            |         | Typing  | Typing  | Typing  |         |         |         |           
-* |         |         |         |         |         |         |         |            |         | SM_FROWN| SM_SAD  | SM_CRY  |         |         |         |           
-* /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |                                | Typing  | Typing  |         |         |         |         |           
-* |         |         |         |         |         |         |                                | SM_HEART| SM_KISS |         |         |         |         |           
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
-*                                                                                                                                                                      
-*                                                                                                                                                                      
-*                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
-*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
-*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
-*                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
-*                                                             |         |         |  |         |         |                                                             
-*                                                             |         |         |  |         |         |                                                             
-*                                                             \--------\/--------/   /--------/\--------\                                                              
-*                                                                       |         |  |         |                                                                       
-*                                                                       |         |  |         |                                                                       
-*                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
-*                                                   |         |         |         |  |         |         |         |                                                   
-*                                                   |         |         |         |  |         |         |         |                                                   
-*                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
-*                                                                                                                                                                      
-* 
-**/
-[SMLY]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, 
-           M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-/**
-* Layer: NUMB
-* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
-* |     |     |     |     |     |     |     |        |     | F6  | F7  | F8  | F9  | F10 | F11 |       
-* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
-* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
-* |     |     |     | UP  |     |     |     |        |     | /   | 7   | 8   | 9   | *   | F12 |       
-* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
-* /----//----//----//----//----//----/\----\         \----\/----//----//----//----//----//----/        
-* |     |     | LEFT| DOWN| RGHT|     |                    | /   | 4   | 5   | 6   | +   | -   |       
-* |     |     |     |     |     |     |                    |     |     |     |     |     |     |       
-* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
-* |     |     |     |     |     |     |     |        |     | %   | 1   | 2   | 3   |     |     |       
-* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
-* \----\\----\\----\\----\\----\\----\\----\         \----\\----\\----\\----\\----\\----\\----\        
-*                                                                                                      
-*                                                                                                      
-*             /----//----//----//----//----/                           /----//----//----//----//----/  
-*             |     |     |     |     |     |                          | 0   | .   | ,   | =   |     | 
-*             |     |     |     |     |     |                          |     |     |     |     |     | 
-*             \----\\----\\----\\----\/----//----/   /----//----/      \----\\----\\----\\----\\----\  
-*                                     |     |     |  |     |     |                                     
-*                                     |     |     |  |     |     |                                     
-*                                     \----\/----/   /----/\----\                                      
-*                                           |     |  |     |                                           
-*                                           |     |  |     |                                           
-*                               /----//----//----/   /----//----//----/                                
-*                               |     |     |     |  |     |     |     |                               
-*                               |     |     |     |  |     |     |     |                               
-*                               \----\\----\\----\   \----\\----\\----\                                
-*                                                                                                      
-* 
-**/
-[NUMB]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_TRNS, KC_TRNS, 
-                                                     KC_TRNS, 
-                                       KC_TRNS, KC_TRNS, KC_TRNS, 
-    //right half
-    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
-    KC_TRNS, DE_OSX_SLSH, KC_7, KC_8, KC_9, DE_OSX_ASTR, KC_F12, 
-           DE_OSX_SLSH, KC_4, KC_5, KC_6, DE_OSX_PLUS, DE_OSX_MINS, 
-    KC_TRNS, DE_OSX_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, 
-                         KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-/**
-* Layer: EGOS
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
-* | Shift   |         |         |         |         |         |                                |         |         |         |         |         |         |           
-* |         |         |         |         |         |         |                                |         |         |         |         |         |         |           
-* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
-* \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
-*                                                                                                                                                                      
-*                                                                                                                                                                      
-*                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
-*                     | Ctrl    |         |         |         |         |                                          |         |         |         | Toggle 5|         | 
-*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
-*                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
-*                                                             | F1      | F2      |  |         |         |                                                             
-*                                                             |         |         |  |         |         |                                                             
-*                                                             \--------\/--------/   /--------/\--------\                                                              
-*                                                                       | F3      |  |         |                                                                       
-*                                                                       |         |  |         |                                                                       
-*                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
-*                                                   | SPC     | Ctrl    | F4      |  |         |         |         |                                                   
-*                                                   |         |         |         |  |         |         |         |                                                   
-*                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
-*                                                                                                                                                                      
-* 
-**/
-[EGOS]=KEYMAP(
-//left half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                  KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                                              KC_F1, KC_F2, 
-                                                     KC_F3, 
-                                       KC_SPC, KC_LCTL, KC_F4, 
-    //right half
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
-                         KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
-    KC_TRNS, KC_TRNS, 
-    KC_TRNS, 
-    KC_TRNS, KC_TRNS, KC_TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-static uint16_t start;
-switch(id) {
-case SMLY_TOG_QUOT:
-//Macro: SMLY_TOG_QUOT//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-           layer_state ^= (1<<SMLY);
-           layer_state &= (1<<SMLY);
-                       return MACRO_NONE;              } else {
-           layer_state ^= (1<<SMLY);
-           layer_state &= (1<<SMLY);
-                       if (timer_elapsed(start) >150) {
-                               return MACRO_NONE;
-                       } else {
-                               return MACRO(DOWN(KC_LSFT),TYPE(DE_OSX_HASH),UP(KC_LSFT),END);
-                       }
-               }
-
-break;
-case M_TOGGLE_5:
-//Macro: M_TOGGLE_5//-----------------------
- if (record->event.pressed){
-           layer_state ^= (1<<5);
-           layer_state &= (1<<5);
-        }
-
-break;
-case TGH_NUM:
-//Macro: TGH_NUM//-----------------------
-if (record->event.pressed){
-         start = timer_read();
-         layer_state ^=(1<<NUMB);
-         layer_state &=(1<<NUMB);
- } else {
-         if (timer_elapsed(start) > 150) {
-                 layer_state^=(1<<NUMB);
-                 layer_state&=(1<<NUMB);
-         }
- }
-return MACRO_NONE;
-
-break;
-case M_DE_OSX_PLUS_CTRLALT:
-//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LALT),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LALT),END);
-                       } else {
-                               return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(KC_RBRC),END);
-                       }
-               }
-
-break;
-case SM_KISS:
-//Macro: SM_KISS//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_RBRC),UP(KC_LSFT),END);
-               }
-
-break;
-case SM_FROWN:
-//Macro: SM_FROWN//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LALT),TYPE(KC_8),UP(KC_LALT),END);
-               }
-
-break;
-case SM_CRY:
-//Macro: SM_CRY//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
-               }
-
-break;
-case SM_SMILE:
-//Macro: SM_SMILE//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
-               }
-
-break;
-case SM_SMIRK:
-//Macro: SM_SMIRK//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
-               }
-
-break;
-case M_LGUI_SHFT:
-//Macro: M_LGUI_SHFT//-----------------------
-if (record->event.pressed){
-                       return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END);
-               }else{
-                       return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
-               }
-
-break;
-case SM_HEART:
-//Macro: SM_HEART//-----------------------
-if (record->event.pressed) {
-                       return MACRO(TYPE(KC_GRV),TYPE(KC_3),END);
-               }
-
-break;
-case TOG_HLD_MDIA:
-//Macro: TOG_HLD_MDIA//-----------------------
-if (record->event.pressed){
-         start = timer_read();
-         layer_state ^=(1<<MDIA);
-         layer_state &=(1<<MDIA);
- } else {
-         if (timer_elapsed(start) > 150) {
-                 layer_state^=(1<<MDIA);
-                 layer_state&=(1<<MDIA);
-         }
- }
-return MACRO_NONE;
-
-break;
-case SM_LAUGH:
-//Macro: SM_LAUGH//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_D),UP(KC_LSFT),END);
-               }
-
-break;
-case SM_SAD:
-//Macro: SM_SAD//-----------------------
-if (record->event.pressed) {
-                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
-               }
-
-break;
-case M_DE_OSX_CIRC_CTRLCMD:
-//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LGUI),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LGUI),END);
-                       } else {
-                               return MACRO(UP(KC_LCTRL),UP(KC_LGUI),TYPE(KC_NUBS),END);
-                       }
-               }
-
-break;
-case M_MEH_SH_ACUT:
-//Macro: M_MEH_SH_ACUT//-----------------------
-if (record->event.pressed) {
-                       start = timer_read();
-                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LSFT),DOWN(KC_LALT),END);
-               } else {
-                       if (timer_elapsed(start) >150) {
-                               return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
-                       } else {
-                               return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_OSX_ACUT),UP(KC_LSFT),END);
-                       }
-               }
-
-break;
-}
-return MACRO_NONE;
-};
-
-// 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);
-
-ergodox_board_led_off();
-ergodox_right_led_1_off();
-ergodox_right_led_2_off();
-ergodox_right_led_3_off();
-switch (layer) {
-
-    case SYMB:
-        ergodox_right_led_1_on();
-        
-        
-    break;
-    case MDIA:
-        
-        ergodox_right_led_2_on();
-        
-    break;
-    case NUMB:
-        
-        
-        ergodox_right_led_3_on();
-    break;
-    case EGOS:
-        ergodox_right_led_1_on();
-        ergodox_right_led_2_on();
-        ergodox_right_led_3_on();
-    break;
-default:
-// none
-break;
-}
-
-};
-
diff --git a/keyboards/ergodox/keymaps/osx_de_experimental/osx_de_experimental_highres.png.md b/keyboards/ergodox/keymaps/osx_de_experimental/osx_de_experimental_highres.png.md
deleted file mode 100644 (file)
index 1fca8a5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/GIkRdX3.png
diff --git a/keyboards/ergodox/keymaps/osx_de_experimental/readme.md b/keyboards/ergodox/keymaps/osx_de_experimental/readme.md
deleted file mode 100644 (file)
index e6a1018..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-
-# Ergodox und Ergodox-EZ experimentelles Layout
-
-dieses layout ist experimentell und wird im Lufe der Zeit viele Änderungen und Verbesserungen durchlaufen. Falls diese sich als vorteilhaft erweisen, werden sie evtl. auch in das `osx_de` layout übernommen.
-
-
-
-# Erstellt Mit Dem ErgodoxLayoutGenerator
-
-Der ErgodoxLayoutGenerator (ELG) ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
-Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
----------------------------------------------------------------------------------------------------------------------
-
-# Ergodox and Ergodox-EZ experimental layout
-
-This is an experimental layout which will undergo heavy changes over time. If changes prove to be good, they might also move into the `osx_de` layout.
-
-Created Using the ErgodoxLayoutGenerator
-
-The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded  [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
-
-The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/osx_fr/keymap.c b/keyboards/ergodox/keymaps/osx_fr/keymap.c
deleted file mode 100644 (file)
index 7dee284..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-// French AZERTY version of the default_osx file
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_french_osx.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   -    |   &  |   é  |   "  |   '  |   (  | LEFT |           | RIGHT|   §  |   è  |   !  |   ç  |   à  |   )    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   A  |   Z  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   `    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   Q  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   M  |  LGui  |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |W/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   ,  |; / L2|   :  |=/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | ù /L1|  <   |AltShf| Left | Right|                                       |  Up  | Down |   ^  |   $  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        FR_MINS,          FR_AMP,      FR_EACU,       FR_QUOT, FR_APOS, FR_LPRN, KC_LEFT,
-        KC_DELT,          FR_A,        FR_Z,          KC_E,    KC_R,    KC_T,    TG(1),
-        KC_BSPC,          FR_Q,        KC_S,          KC_D,    KC_F,    KC_G,
-        KC_LSFT,          CTL_T(FR_W), KC_X,          KC_C,    KC_V,    KC_B,    ALL_T(KC_NO),
-        LT(SYMB,FR_UGRV), FR_LESS,     LALT(KC_LSFT), KC_LEFT, KC_RGHT,
-            ALT_T(KC_APP), KC_LGUI,
-            KC_HOME,
-            KC_SPC, KC_BSPC, KC_END,
-            
-        // right hand
-        KC_RGHT,      FR_SECT, FR_EGRV, FR_EXLM,           FR_CCED, FR_AGRV,         FR_RPRN,
-        TG(1),        KC_Y,    KC_U,    KC_I,              KC_O,    KC_P,            FR_GRV,
-        KC_H,         KC_J,    KC_K,    KC_L,              FR_M,    KC_LGUI,
-        MEH_T(KC_NO), KC_N,    FR_COMM, LT(MDIA, FR_SCLN), FR_COLN, CTL_T(FR_EQL),   KC_RSFT,
-        KC_UP,        KC_DOWN, KC_LBRC, KC_RBRC,           KC_FN1,
-            KC_LALT, CTL_T(KC_ESC),
-            KC_PGUP,
-            KC_PGDN, KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    , |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,FR_EXLM,FR_AT,  FR_LCBR,FR_RCBR,FR_PIPE,KC_TRNS,
-       KC_TRNS,FR_HASH,FR_DLR, FR_LPRN,FR_RPRN,FR_GRV,
-       KC_TRNS,FR_PERC,FR_CIRC,FR_LBRC,FR_RBRC,FR_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   FR_7,   FR_8,    FR_9,    FR_ASTR, KC_F12,
-                KC_DOWN, FR_4,   FR_5,    FR_6,    FR_PLUS, KC_TRNS,
-       KC_TRNS, FR_AMP,  FR_1,   FR_2,    FR_3,    FR_BSLS, KC_TRNS,
-                         KC_TRNS,FR_COMM, FR_0,    FR_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/osx_kinesis_pnut/keymap.c b/keyboards/ergodox/keymaps/osx_kinesis_pnut/keymap.c
deleted file mode 100644 (file)
index 11281df..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-// Netable differences vs. the default firmware for the ErgoDox EZ:
-// 1. The Cmd key is now on the right side, making Cmd+Space easier.
-// 2. The media keys work on OSX (But not on Windows).
-// Wanted to map default layer of my EZ to my existing Kinesis Mapping.
-// Only default layer was remapped all others layers are standard Ergodox EZ
-// Very personal mapping of-course, but who knows a starting point for others.
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | CapsL  |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | TAB    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | ESC    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '"   |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |AltShf|Grv/L1|  '"  | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | LGui | App  |       | Ctrl/Esc | RGui |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       |   =  |        |      |
- *                                 | Backs|Delete|------|       |------|  Enter |Space |
- *                                 | pace |      | End  |       | TAB  |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_CAPSLOCK,    KC_1,           KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_TAB,         KC_Q,           KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
-        KC_ESC,         KC_A,           KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),    KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LALT(KC_LSFT),  LT(SYMB,KC_GRV),KC_QUOT,KC_LEFT,KC_RGHT,
-                                              KC_LGUI,  ALT_T(KC_APP),
-                                                              KC_HOME,
-                                               KC_BSPC,KC_DELT,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(1),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOTE,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             CTL_T(KC_ESC),        KC_LGUI,
-             KC_EQL,
-             KC_TAB, KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/keymap.c b/keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/keymap.c
deleted file mode 100644 (file)
index 98d2836..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * This is built out of frustration with OSX / Sierra caps lock delay.
- * Fake it till you make it!
- */
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "timer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-#define BLINK_BASE  150U // timer threshold for blinking on MDIA layer
-
-typedef enum onoff_t {OFF, ON} onoff;
-
-#define caps_led_on  ergodox_right_led_2_on
-#define caps_led_off ergodox_right_led_2_off
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc    |   1  |   2  |   3  |   4  |   5  |   6  |           |   `  |   7  |   8  |   9  |   0  |   -  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | CapsL  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   "    |
- * |--------+------+------+------+------+------| ~L1  |           |  ~L1 |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | Ctrl | Opt  | Cmd  | Left | Right|                                       | Down | Up   | Ctrl | Cmd  | Opt  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      | L1   |       | Alt  | Ctrl   ]
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 |Backsp| Del  |------|       |------|  Enter | Spc  |
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-
-    [BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,     KC_1,     KC_2,    KC_3,    KC_4,    KC_5,    KC_6,
-        KC_TAB,     M(KC_Q),  M(KC_W), M(KC_E), M(KC_R), M(KC_T), KC_LBRC,
-        M(KC_CAPS), M(KC_A),  M(KC_S), M(KC_D), M(KC_F), M(KC_G),
-        KC_LSFT,    M(KC_Z),  M(KC_X), M(KC_C), M(KC_V), M(KC_B), KC_FN0,
-        KC_LCTL,    KC_LALT,  KC_LGUI, KC_LEFT, KC_RGHT,
-                                                         KC_TRNS, KC_FN1,
-                                                                  KC_HOME,
-                                                KC_BSPC, KC_DEL,  KC_END,
-        // right hand
-        KC_GRV,     KC_7,     KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,
-        KC_RBRC,    M(KC_Y),  M(KC_U), M(KC_I), M(KC_O), M(KC_P), KC_BSLS,
-                    M(KC_H),  M(KC_J), M(KC_K), M(KC_L), KC_SCLN, KC_QUOT,
-        KC_FN0,     M(KC_N),  M(KC_M), KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
-                              KC_DOWN, KC_UP,   KC_RCTL, KC_RGUI, KC_RALT,
-        KC_RALT,    KC_RCTL,
-        KC_PGUP,
-        KC_PGDN,    KC_ENT,   KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |      |  F7  |  F8  |  F9  |  F10 |  F11 |   F12  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |   L0 |  L2  |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-    [SYMB] = KEYMAP(
-       // left hand
-       KC_GRV ,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                               KC_FN3, KC_FN2,
-                                                       KC_TRNS,
-                                       KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F7,   KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                         KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-    ),
-/* Keymap 2: Media and tenkey
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  BOOTL |      | Mute | Vol- | Vol+ | F14  | F15  |           |      |      | NumLk|   /  |  *   |  -   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |  7   |  8   |  9   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+-----+-------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |  4   |  5   |  6   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |  1   |  2   |  3   | Enter|        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  0   |  0   |  .   | Enter|      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  L1  |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-    // MEDIA AND TENKEY
-    [MDIA] = KEYMAP(
-       KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_F14,  KC_F15,
-       KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
-                                                    KC_FN4,  KC_NO,
-                                                             KC_TRNS,
-                                           KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_NO,   KC_NO,   KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_NO,
-       KC_NO,   KC_NO,   KC_P7,   KC_P8,   KC_P9,   KC_PPLS, KC_NO,
-                KC_NO,   KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_NO,
-       KC_NO,   KC_NO,   KC_P1,   KC_P2,   KC_P3,   KC_PENT, KC_NO,
-                         KC_P0,   KC_P0,   KC_PDOT, KC_PENT, KC_NO,
-       KC_NO,   KC_NO,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-    ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    ACTION_LAYER_MOMENTARY(SYMB),               // FN0 - Momentary Layer 1 (Symbols)
-    ACTION_LAYER_ON(SYMB,ON_RELEASE),           // FN1 - Enable Layer 1 (Symbols)
-    ACTION_LAYER_ON(MDIA,ON_RELEASE),           // FN2 - Enable Layer 2 (Media)
-    ACTION_LAYER_OFF(SYMB,ON_RELEASE),          // FN3 - Disable Layer 1 (Symbols)
-    ACTION_LAYER_OFF(MDIA,ON_RELEASE),          // FN4 - Disable Layer 2 (MMedia)
-    ACTION_LAYER_MOMENTARY(MDIA)                // FN5 - Momentary Layer 2 (Mdia)
-};
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    static onoff caps_state = OFF;
-    switch(id) {
-    case KC_CAPS:
-        if (record->event.pressed) {
-            // Toggle caps state;
-            if (caps_state == OFF) {
-                // Turn it on then!
-                caps_led_on();
-                caps_state = ON;
-            } else {
-                caps_led_off();
-                caps_state = OFF;
-            }
-        }
-        break;
-    default:
-        if (record->event.pressed) {
-            bool shifted = false;
-            if (caps_state == ON && get_mods() == 0) {
-                register_code(KC_LSFT);
-                shifted = true;
-            }
-            register_code(id);
-            if(shifted) {
-                unregister_code(KC_LSFT);
-            }
-        } else {
-            unregister_code(id);
-        }
-        break;
-    }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    static onoff board_led_state = OFF;
-    static uint16_t dt = 0;
-    static uint8_t oldlayer = 0;
-
-    if(oldlayer != layer) {
-        // Layer was just toggled.
-        if(layer == BASE) {
-            ergodox_board_led_off();
-            board_led_state = OFF;
-        } else {
-            ergodox_board_led_on();
-            board_led_state = ON;
-        }
-    } else if (layer >= MDIA) {
-        // We need to do blinking.
-        if(timer_elapsed(dt) > BLINK_BASE) {
-            // toggle
-            dt = timer_read();
-            if(board_led_state == OFF) {
-                ergodox_board_led_on();
-                board_led_state = ON;
-            } else {
-                ergodox_board_led_off();
-                board_led_state = OFF;
-            }
-        }
-    }
-    oldlayer = layer;
-}
diff --git a/keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/readme.md b/keyboards/ergodox/keymaps/osx_whiskey_tango_foxtrot_capslock/readme.md
deleted file mode 100644 (file)
index 42cb195..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# The extra special ergodox build for MacOS Sierra caps lock users
-
-###Do you
-- Hate the OSX / MacOS caps lock delay?
-- Have an ergodox?
-
-###Then this might just be for you!
-
-[This](http://apple.stackexchange.com/questions/81234/how-to-remove-caps-lock-delay-on-apple-macbook-pro-aluminum-keyboard)
-and [this](http://sleepycow.org/2014/07/removing-the-caps-lock-delay-on-a-macbook/)
-are good workarounds for the caps lock delay, however none of these
-work on Sierra.  This abomination of a keymap simulates capslock to the best
-of its abilities.
-This means that it keeps track of caps lock state internally rather than
-sending a caps lock keypress to the OS.  It is smart enough to check for
-modifiers, such as Control being held down, and stop it with the hanky panky
-and just send on the key event unmolested even if FakeCaps is enabled.  And
-since the macro isn't even registered on the non-alphas, it will not affect
-them regardless.  Only in the event that FakeCaps is enabled and an alpha key
-is pressed will it sneak in a shift keydown before the alpha keydown and
-immediately afterward sneaks in a shift keyup.  Generally this works well,
-however there is one known issue:
-
-- Holding down a key will only have the first character in caps.  For instance,
-  with caps lock on, if you hold down the 'a' key, you get:
-
-  ```
-  Aaaaaaaaaaaaaaaaaa
-  ```
-
-I have only tested this on an original Ergodox with a Teensy 2.0.
-
-####Some other small tweaks
- - Layer 0 board light is off
- - Layer 1 board light is on solid
- - Layer 2 board light blinks at speed controlled by BLINK_BASE
-
-![osx whiskey tango foxtrot](https://i.imgur.com/yQl1DFe.png)
diff --git a/keyboards/ergodox/keymaps/phoenix/keymap.c b/keyboards/ergodox/keymaps/phoenix/keymap.c
deleted file mode 100644 (file)
index 624817d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc    |   1  |   2  |   3  |   4  |   5  |  _   |           | Del  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | =      |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       | Down |  UP  |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | Home |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | End  |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Enter |Space |
- *                                 |      |ace   | LGui |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LSFT(KC_MINS),
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_EQL,         KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_HOME,
-                                                              KC_END,
-                                               KC_SPC,KC_BSPC,KC_LGUI,
-        // right hand
-             KC_DELT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_DOWN,KC_UP  ,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  F11 |  F12 |      |      |      |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_F11, KC_F12, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/phoenix/readme.md b/keyboards/ergodox/keymaps/phoenix/readme.md
deleted file mode 100644 (file)
index b1053bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# ErgoDox EZ Phoenix Configuration
-
-I started working using the default layout.  The changes that I made are largely things that I consistely do wrong.
-
-As a programmer I hit tab a lot for autocomplete so that muscle memory is very difficult to re-write.  The stragest change might be all the keys that I cleared in the Code layer.  This is mainly to facilitate quickly typing uuids, as sometimes it is quite tedious to copy/paste them from one window to the other.
-
-## Changelog
-
-* April 25, 2016 (V1.0): 
-  * Initial submission.
diff --git a/keyboards/ergodox/keymaps/plover/keymap.c b/keyboards/ergodox/keymaps/plover/keymap.c
deleted file mode 100644 (file)
index 12b3aa2..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define PLVR 3 // Plover layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LGui |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |Plover|   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Esc    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | Home |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | End  |       | PgUp |        |      |
- *                                 |Backsp|Delete|------|       |------| Enter  |Space |
- *                                 | ace  |      | LAlt |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LGUI,
-        KC_TAB,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
-        KC_ESC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_HOME,
-                                                               KC_END,
-                                               KC_BSPC,KC_DELT,KC_LALT,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(3),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOT,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_WBAK, KC_WFWD
-),
-
-/* Keymap 4: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |  6   |  7   |   8  |   9  |  0   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |   c  |   v  |------|       |------|  n   |  m   |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-
-[PLVR] = KEYMAP(  // layout: layer 4: Steno for Plover
-        // left hand
-        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
-        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
-        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
-        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
-                                      KC_FN4, KC_NO,
-                                           KC_NO,
-                                 KC_C,   KC_V,   KC_NO,
-        // right hand
-             KC_TRNS,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
-             KC_TRNS,   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
-                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
-               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
-                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
-        KC_TRNS, KC_TRNS,
-        KC_TRNS,
-        KC_NO,  KC_N,   KC_M
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/plums/keymap.c b/keyboards/ergodox/keymaps/plums/keymap.c
deleted file mode 100644 (file)
index 2853455..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  |  F5  |           |Hypr+M|   6  |   7  |   8  |   9  |   0  | Mute   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LGui   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| SYMB |           | MDIA |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Ca/Ctl|   {  |   (  |   |  |   :  |                                       |   -  |   =  |   )  |   }  |C`/Ctl|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | LGA  | LAlt |       | RAlt | Play |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Home |       | PgUp |      |      |
- *                                 |Backsp| Esc  |------|       |------|Enter |Space |
- *                                 |ace   |      | End  |       | PgDn |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,           KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_F5,
-        KC_TAB,           KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
-        KC_LGUI,          KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,          KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   TG(SYMB),
-        F(0),             KC_LCBR,      KC_LPRN,KC_PIPE,KC_COLN,
-                                               LGUI(KC_LALT), KC_LALT,
-                                                              KC_HOME,
-                                     KC_BSPC,         KC_ESC,  KC_END,
-        // right hand
-             HYPR(KC_M),     KC_6,   KC_7,    KC_8,     KC_9,      KC_0,      KC_MUTE,
-             KC_RBRC,    KC_Y,   KC_U,    KC_I,     KC_O,      KC_P,      KC_BSLS,
-                         KC_H,   KC_J,    KC_K,     KC_L,      KC_SCLN,   KC_QUOT,
-             TG(MDIA),   KC_N,   KC_M,    KC_COMM,  KC_DOT,    KC_SLSH,   KC_RSFT,
-                                 KC_MINS, KC_EQL,   KC_RPRN,   KC_RCBR,   F(1),
-             KC_RALT, KC_MPLY,
-             KC_PGUP,
-             KC_PGDN, KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |      |      |      |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Left | Down |  Up  | Right|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,    KC_F8,   KC_F9,    KC_F10,  KC_F11,
-       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_F12,
-                KC_LEFT, KC_DOWN,  KC_UP,   KC_RIGHT, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-                         KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |VolUp |VolDn | Prev | Next |      |                                       | LClk | RClk |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [0] = ACTION_MACRO_TAP(0),                // FN0 - Ctrl + a (For screen/tmux)
-  [1] = ACTION_MACRO_TAP(1)                 // FN1 - Ctrl + ` (For quake style console)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
-{
-  switch(id) {
-    case 0:
-      if (record->event.pressed) {
-        if (record->tap.count) {
-          if (record->tap.interrupted) {
-            record->tap.count = 0;
-            // hold press action
-            register_code(KC_LCTL);
-          } else {
-            // tap press action
-            return MACRO( D(LCTL), T(A), U(LCTL), END  );
-          }
-        } else {
-          // hold press action
-          register_code(KC_LCTL);
-        }
-      } else {
-        if (record->tap.count) {
-          // tap release action
-        } else {
-          // hold release action
-          unregister_code(KC_LCTL);
-        }
-        record->tap.count = 0;
-      }
-      break;
-    case 1:
-      if (record->event.pressed) {
-        if (record->tap.count) {
-          if (record->tap.interrupted) {
-            record->tap.count = 0;
-            // hold press action
-            register_code(KC_RCTL);
-          } else {
-            // tap press action
-            return MACRO( DOWN(KC_RCTL), TYPE(KC_GRV), UP(KC_RCTL), END  );
-          }
-        } else {
-          // hold press action
-          register_code(KC_RCTL);
-        }
-      } else {
-        if (record->tap.count) {
-          // tap release action
-        } else {
-          // hold release action
-          unregister_code(KC_RCTL);
-        }
-        record->tap.count = 0;
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
-
-
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/plums/readme.md b/keyboards/ergodox/keymaps/plums/readme.md
deleted file mode 100644 (file)
index 32930e0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# ErgoDox EZ Plums Configuration
-
-## Changelog
-
-* Apr 23, 2016 (v0.1.0): 
-  * Shortcut for iTerm2 quake style dropdown (Ctrl+`)
-  * Shortcut for screen/tmux (Ctrl+a)
-  * Shortcut for shush (Hyper+m)
-  * Combo modifier for LGUI + LALT
-
-![Plums](https://i.imgur.com/0HkgLvb.png)
diff --git a/keyboards/ergodox/keymaps/pvinis/Changelog.md b/keyboards/ergodox/keymaps/pvinis/Changelog.md
deleted file mode 100644 (file)
index e581620..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-## v0.3
-
-*2016-10-11*
-
-### Starting point
-
-* The starting point of this keymap. A beginner layout, and a couple placeholders.
diff --git a/keyboards/ergodox/keymaps/pvinis/Makefile b/keyboards/ergodox/keymaps/pvinis/Makefile
deleted file mode 100644 (file)
index 7ceb51c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONSOLE_ENABLE = no    # for debugging
-
-SLEEP_LED_ENABLE = no  # no led blinking while sleeping
-NKRO_ENABLE = yes      # disable for windows
-TAP_DANCE_ENABLE = yes # tap-tap-tap
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/pvinis/Readme.md b/keyboards/ergodox/keymaps/pvinis/Readme.md
deleted file mode 100644 (file)
index af27210..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-pvinis' keymap
-==============
-
-This is a getting-used-to keymap for the [ErgoDox EZ][ez]. It's very much a work in progress.
-
-[ez]: https://ergodox-ez.com/
-
-## Table of Contents
-
-* [Todo](#todo)
-* [Layouts](#layouts)
-  - [Base layer](#base-layer)
-  - [Beginner layer](#beginner-layer)
-  - [QWERTY layer](#qwerty-layer)
-  - [CARPALX layer](#carpalx-layer)
-  - [System Control layer](#system-control-layer)
-  - [Template layers](#template-layers)
-* [Building](#building)
-
-# Todo
-
-- [ ] Generate images from keymap
-- [ ] Implement algernon's heatmap
-- [ ] Implement `KC_POP`
-
-# Layouts
-
-## Base layer
-
-This is the base layer that contains the common buttons of all keymaps. Right now, it has the top left button as a `flash` button when it's tapped 4 times, and the two thumb islands. The islands contain the `space` and `enter` keys on the right, the `backspace` and `shift` on the left, and all the 1x1 keys are just layer switches.
-Every time I connect the keyboard, I press the `BEGIN` layer switch, and then start typing.
-Recently, I added a few application "shortcuts", that basically call `ctrl`+`alt`+`cmd`+`<key>`, and `<key>` is `S` for Slack, `X` for Xcode, `M` for Messenger. Using [Hammerspoon][hammerspoon], I show/hide the application.
-
-[hammerspoon]: http://www.hammerspoon.org/
-
-## Beginner layer
-
-This is a basic keymap I use right now until I'm comfortable typing on the Ergodox. Currently uses a QWERTY layout, and the `([{}])` on the middle keys. Not a perfect layout, and its going to go away at some point, but for now thats my daily driver.
-
-## QWERTY layer
-
-This is basically the same as the `BEGIN` layer, but it might go away. I'm not using it, but I should have a QWERTY layout on the keyboard, in case someone else wants to try it out, or if I completely forget how keyboards work! At some point, this and the `BEGIN` layer will become one.
-
-## CARPALX layer
-
-This is here as a placeholder. I want to transition to [Carpalx QGMLWY][carpalx] or [White][white] at some point. They both look very interesting and more comfortable to type on, but after I'm confident with typing on the Ergodox.
-
-[carpalx]: http://mkweb.bcgsc.ca/carpalx/?full_optimization
-[white]: https://github.com/mw8/white_keyboard_layout
-
-## System Control layer
-
-This one is a layer that, in time, will have controls like mouse movement, volume up/down, mute, sleep, restart, shutdown, etc.
-
-## Template layers
-
-I have two commented out layers that are just templates, so I can easily create a new layer.
-
-# Building
-
-```
-$ git clone https://github.com/qmk/qmk_firmware.git
-$ cd qmk_firmware/keyboards/ergodox/keymaps/pvinis
-$ make
-```
diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c
deleted file mode 100644 (file)
index 3c49118..0000000
+++ /dev/null
@@ -1,475 +0,0 @@
-// pvinis' ergodox keymap
-
-#include "ergodox.h"
-#include "mousekey.h"
-
-// easier name for left ctrl-alt-gui
-#define ALLM(kc) LCAG(kc)
-
-// layers
-enum {
-  BASE = 0,
-  BEGIN,
-  QWERTY,
-  CARPALX,
-  SYSCTL,
-  MOUSE,
-};
-
-// extra keys
-enum {
-  NONE = 0,
-
-  // tap dance
-  TD_FLSH, // flash keyboard
-  TD_LAYR, // SYSCTL and MOUSE layer switch
-};
-
-// application selection
-// this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
-#define AP_SLCK ALLM(KC_S)
-#define AP_XCOD ALLM(KC_X)
-#define AP_MSGR ALLM(KC_M)
-
-// keymaps
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* BASE
- * the base of the keyboard.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |4x FLASH|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |SYSCTL|      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |BEGIN |QWERTY|       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |CARPAL|       |Slack |        |      |
- *                                 |Backsp|LShift|------|       |------| Enter  |Space |
- *                                 |      |      |SYSCTL|       |Msngr |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[BASE] = KEYMAP(
- TD(TD_FLSH)    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-
-                                                          ,TG(BEGIN)  ,TD(TD_LAYR)
-                                                                      ,TG(MOUSE)
-                                                  ,KC_BSPC  ,KC_LSFT  ,TD(TD_LAYR)
-
-                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                          ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                                  ,MO(SYSCTL)  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-
-   ,TG(SYSCTL)  ,KC_NO
-   ,AP_SLCK
-   ,AP_MSGR     ,KC_ENT  ,KC_SPC
-),
-
-/* BEGIN
- * a beginner's keymap i currently use.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  | opt  |           |   6  |   7  |   8  |   9  |   0  |   -  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Tab   |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
- * |--------+------+------+------+------+------|   (  |           |   )  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |   `  |  Cmd |      | Cmd  |                                       |      |      |      |   '  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[BEGIN] = KEYMAP(
- KC_TRNS          ,KC_1    ,KC_2     ,KC_3     ,KC_4      ,KC_5    ,KC_LALT
-,KC_TAB           ,KC_Q    ,KC_W     ,KC_E     ,KC_R      ,KC_T    ,KC_LBRC
-,CTL_T(KC_ESC)    ,KC_A    ,KC_S     ,KC_D     ,KC_F      ,KC_G
-,KC_LSFT          ,KC_Z    ,KC_X     ,KC_C     ,KC_V      ,KC_B    ,KC_LPRN
-,KC_TRNS          ,KC_GRV  ,KC_LGUI  ,KC_LEFT  ,KC_RIGHT
-
-                                                                   ,KC_TRNS  ,KC_TRNS
-                                                                             ,KC_TRNS
-                                                         ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                ,KC_6       ,KC_7  ,KC_8     ,KC_9     ,KC_0     ,KC_MINS    ,KC_EQL
-                ,KC_RBRC    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_BSLS
-                            ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_ENT
-                ,KC_RPRN    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_RSFT
-                                   ,KC_TRNS  ,KC_DOWN  ,KC_TRNS  ,KC_QUOT    ,KC_TRNS
-
-      ,KC_TRNS  ,KC_TRNS
-      ,KC_TRNS
-      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-),
-
-/* QWERTY
- * the default qwerty keymap. not really used, but i'll keep it here for now.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[QWERTY] = KEYMAP(
- KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
-,KC_TRNS    ,KC_Q     ,KC_W     ,KC_E     ,KC_R     ,KC_T    ,KC_TRNS
-,KC_TRNS    ,KC_A     ,KC_S     ,KC_D     ,KC_F     ,KC_G
-,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_B    ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                                                             ,KC_TRNS  ,KC_TRNS
-                                                                       ,KC_TRNS
-                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
-                ,KC_TRNS    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_TRNS
-                            ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_TRNS
-                ,KC_TRNS    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
-                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-
-      ,KC_TRNS  ,KC_TRNS
-      ,KC_TRNS
-      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-),
-
-/* CARPALX
- * the keymap i would like to transition to.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |   1  |   2  |   3  |   4  |   5  |      |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   Q  |   G  |   M  |   L  |   W  |      |           |  L1  |   Y  |   F  |   U  |   B  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   D  |   S  |   T  |   N  |   R  |------|           |------|   I  |   A  |   E  |   O  |   H  |        |
- * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
- * |        |   Z  |   X  |   C  |   V  |   J  |      |           |      |   K  |   P  |   ,  |   .  |   /  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  Up  |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[CARPALX] = KEYMAP(
- KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
-,KC_TRNS    ,KC_Q     ,KC_G     ,KC_M     ,KC_L     ,KC_W    ,KC_TRNS
-,KC_TRNS    ,KC_D     ,KC_S     ,KC_T     ,KC_N     ,KC_R
-,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_J    ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                                                             ,KC_TRNS  ,KC_TRNS
-                                                                       ,KC_TRNS
-                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
-                ,KC_TRNS    ,KC_Y  ,KC_F     ,KC_U     ,KC_B     ,KC_SCLN    ,KC_TRNS
-                            ,KC_I  ,KC_A     ,KC_E     ,KC_O     ,KC_H       ,KC_TRNS
-                ,KC_TRNS    ,KC_K  ,KC_P     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
-                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-
-      ,KC_TRNS  ,KC_TRNS
-      ,KC_TRNS
-      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-),
-
-/* SYSCTL
- * a keymap to control my system.
- *
- * ,--------------------------------------------------.           ,------------------------------------------------------.
- * |   ^    |      |      |      |      |      |      |           |      |      |      |          |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+----------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      | Mute | Home |    Up    | End  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+----------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|VolUp | Left |   Down   |Right |      | Lock   |
- * |--------+------+------+------+------+------|      |           |      |------+------+----------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |VolDn | Prev |Play/Pause| Next |      | Sleep  |
- * `--------+------+------+------+------+-------------'           `-------------+------+----------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |          |      |      | Power|
- *   `----------------------------------'                                       `--------------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |  ^   |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[SYSCTL] = KEYMAP(
- KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-
-                                                      ,KC_NO  ,KC_NO
-                                                              ,KC_NO
-                                              ,KC_NO  ,KC_NO  ,KC_TRNS
-
- /*,KC_POP ///  */,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
- /* /// ,KC_PTRN*/,KC_NO    ,KC_MUTE  ,KC_HOME  ,KC_UP    ,KC_END   ,KC_NO    ,KC_NO
-                            ,KC_VOLU  ,KC_LEFT  ,KC_DOWN  ,KC_RGHT  ,KC_NO    ,LCTL(LSFT(KC_PWR))
-                  ,KC_NO    ,KC_VOLD  ,KC_MPRV  ,KC_MPLY  ,KC_MNXT  ,KC_NO    ,KC_SLEP
-                                      ,KC_TRNS  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_PWR
-
-          ,KC_NO  ,KC_NO
-          ,KC_NO
-          ,KC_NO  ,KC_NO  ,KC_NO
-),
-
-/* MOUSE
- * a keymap to control my system.
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ^    |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | MsUp |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |MsLeft| MsDn |MsRght|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |MidClk|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Left  |Right |
- *                                 |      |      |------|       |------| Click| Click|
- *                                 |      |      |  ^   |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[MOUSE] = KEYMAP(
- KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-
-                                                      ,KC_NO  ,KC_NO
-                                                              ,KC_NO
-                                              ,KC_NO  ,KC_NO  ,KC_TRNS
-
-                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
-                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_MS_U  ,KC_NO    ,KC_NO    ,KC_NO
-                            ,KC_NO  ,KC_MS_L  ,KC_MS_D  ,KC_MS_R  ,KC_NO    ,KC_NO
-                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
-                                    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
-
-          ,KC_NO  ,KC_NO
-          ,KC_NO
-          ,KC_NO  ,KC_NO  ,KC_NO
-),
-
-/* TEMPLATE
- * keymap template with transparent and non-transparent keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-/*
-[TEMPLATE] = KEYMAP(
- KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                                                                ,KC_TRNS  ,KC_TRNS
-                                                                          ,KC_TRNS
-                                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-
-                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-                            ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
-
-      ,KC_TRNS  ,KC_TRNS
-      ,KC_TRNS
-      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
-),
-[TEMPLATE] = KEYMAP(
- KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
-
-                                                    ,KC_NO  ,KC_NO
-                                                            ,KC_NO
-                                            ,KC_NO  ,KC_NO  ,KC_NO
-
-                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-                                  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
-
-        ,KC_NO  ,KC_NO
-        ,KC_NO
-        ,KC_NO  ,KC_NO  ,KC_NO
-),
-*/
-};
-
-// keyboard initialization
-void matrix_init_user() {
-  ergodox_led_all_on();
-  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
-    ergodox_led_all_set(i);
-    wait_ms(5);
-  }
-  wait_ms(1000);
-  for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
-    ergodox_led_all_set(i);
-    wait_ms(10);
-  }
-  ergodox_led_all_off();
-}
-
-// light up leds based on the layer
-void matrix_scan_user(void) {
-  uint8_t layer = biton32(layer_state);
-
-  switch(layer) {
-  case SYSCTL:
-    ergodox_right_led_3_on();
-    break;
-  case MOUSE:
-    ergodox_right_led_2_on();
-    break;
-  default:
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    break;
-  }
-}
-
-// extra keys
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  switch (id) {
-  }
-  return MACRO_NONE;
-}
-
-// tap dances
-
-// flash keyboard on 4x tap, with leds
-void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
-  switch (state->count) {
-  case 1:
-    ergodox_right_led_3_on();
-    break;
-  case 2:
-    ergodox_right_led_2_on();
-    break;
-  case 3:
-    ergodox_right_led_1_on();
-    break;
-  case 4:
-    ergodox_right_led_3_off();
-    wait_ms(50);
-    ergodox_right_led_2_off();
-    wait_ms(50);
-    ergodox_right_led_1_off();
-    break;
-  }
-}
-
-void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count >= 4) {
-    reset_keyboard();
-    reset_tap_dance(state);
-  }
-}
-
-void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
-  ergodox_right_led_1_off();
-  wait_ms(50);
-  ergodox_right_led_2_off();
-  wait_ms(50);
-  ergodox_right_led_3_off();
-}
-
-// SYSCTL on first tap, MOUSE ON second tap
-void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
-  uint8_t layer = biton32(layer_state);
-
-  switch(state->count) {
-  case 1:
-    switch(layer) {
-    case SYSCTL:
-      layer_off(SYSCTL);
-      break;
-    case MOUSE:
-      layer_off(MOUSE);
-      break;
-    default:
-      layer_on(SYSCTL);
-      break;
-    }
-    break;
-  case 2:
-    layer_on(MOUSE);
-    break;
-  }
-}
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-  [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
-  [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
-};
diff --git a/keyboards/ergodox/keymaps/replicaJunction/config.h b/keyboards/ergodox/keymaps/replicaJunction/config.h
deleted file mode 100644 (file)
index df349a7..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Config file - Ergodox QMK with replicaJunction layout
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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 KEYBOARDS_ERGODOX_CONFIG_H_
-#define KEYBOARDS_ERGODOX_CONFIG_H_
-
-#define MOUSEKEY_DELAY          100
-#define MOUSEKEY_INTERVAL       20
-#define MOUSEKEY_MAX_SPEED      3
-#define MOUSEKEY_TIME_TO_MAX    10
-
-#define TAPPING_TOGGLE  1
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-// MS the button needs to be held before a tap becomes a hold (default: 200)
-#define TAPPING_TERM    200
-
-#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
-
-// I don't have any locking keys, so I don't need these features
-
-
-/* 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
-
-/* Prevent modifiers from sticking when switching layers */
-/* Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers */
-#define PREVENT_STUCK_MODIFIERS
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
-    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
-)
-
-#ifdef SUBPROJECT_ez
-    #include "ez/config.h"
-#endif
-#ifdef SUBPROJECT_infinity
-    #include "infinity/config.h"
-#endif
-#ifdef SUBPROJECT_ergodone
-    #include "ergodone/config.h"
-#endif
-
-
-#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c
deleted file mode 100644 (file)
index c921355..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * Keyboard: Ergodox
- * Keymap:   replicaJunction
- * Version:  1.2
- *
- * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus.
- * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now
- * have both keyboards, so I've designed these layouts in an effort to make switching between the
- * two as easy as possible.
- *
- * I've also tried to make use of the extra keys on the Ergodox in as logical of a manner as possible,
- * adding to the layers in the Atreus config without disturbing what's there already. This allows for
- * things like F11-F20, the Application (Menu) key, and better media key placement.
- *
- * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
- * here: https://colemakmods.github.io/mod-dh/
- */
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define _CO 0 // Colemak
-#define _QW 1 // QWERTY
-#define _ME 2 // media keys
-#define _NU 3 // numpad
-#define _EX 4 // extend
-#define _GA 5 // mouse overlay for gaming
-
-// Some quick aliases, just to make it look pretty
-#define _______ KC_TRNS
-#define KCX_CGR LCTL(KC_GRV)
-#define KX_STAB LSFT(KC_TAB)
-#define KX_COPY LCTL(KC_C)
-#define KX_CUT  LCTL(KC_X)
-#define KX_PAST LCTL(KC_V)
-#define KX_UNDO LCTL(KC_Z)
-
-; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /*
-     * Keymap: Colemak-ModDH
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |  LCtrl |   Q  |   W  |   F  |   P  |   B  | Home |           | BkSp |   J  |   L  |   U  |   Y  |   ;  |   -    |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |  Tab   |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  |   '    |
-     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
-     * | LShft  |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   ,  |   /  | RShft  |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LGui |   [  |   ]  |CtlShf| LAlt |                                       | _EX  |   -  |   '  |   =  |   \  |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        | LCtrl|  ~GA |       | Left | Right|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
-     *                                 | BkSp |  Del |------|       |------| Enter| Space|
-     *                                 |      |      | _NU  |       | Down |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_CO] = KEYMAP(
-        // left hand
-        KC_GRV, KC_1,   KC_2,      KC_3,            KC_4,   KC_5,   KC_ESC,
-        KC_LCTL,KC_Q,   KC_W,      KC_F,            KC_P,   KC_B,   KC_HOME,
-        KC_TAB, KC_A,   KC_R,      KC_S,            KC_T,   KC_G,
-        KC_LSFT,KC_Z,   KC_X,      KC_C,            KC_D,   KC_V,   ALL_T(KC_NO),
-        KC_LGUI,KC_LBRC,KC_RBRC,   LCTL(KC_LSFT),   KC_LALT,
-
-                                                                KC_LCTL,        TG(_GA),
-                                                                                KC_HOME,
-                                                CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
-        // right hand
-             KC_ESC,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
-             KC_BSPC,  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_MINS,
-                       KC_M,   KC_N,   KC_E,   KC_I,   KC_O,   KC_QUOT,
-             KC_BSLS,  KC_K,   KC_H,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
-                               MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
-
-        KC_LEFT, KC_RGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
-    ),
-
-    /*
-     * Keymap: QWERTY layout.
-     *
-     * This is optimized for gaming, not typing, so there aren't as many macros
-     * as the Dvorak layer. Some of the keys have also been moved to "game-
-     * like" locations, such as making the spacebar available to the left thumb,
-     * and repositioning the arrow keys at the bottom right corner.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * | LCtrl  |   Q  |   W  |   E  |   R  |   T  | Home |           | BkSp |   Y  |   U  |   I  |   O  |   P  |   -    |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * | Tab    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
-     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
-     * | LShft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShft  |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LGui |   `  |  \   |CtlShf| _NU  |                                       |  _EX |   -  |  '   |   =  |   \   |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        | LCtrl| ~GA  |       | Left | Right|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
-     *                                 | BkSp |  Del |------|       |------| Enter| Space|
-     *                                 |      |      | _NU  |       | Down |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_QW] = KEYMAP(  // Layer1: QWERTY
-        // left hand
-        KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
-        KC_LCTL,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
-        KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        KC_LGUI,KC_GRV, KC_SLSH,LCTL(KC_LSFT),  MO(_NU),
-
-                                                                KC_LCTL,TG(_GA),
-                                                                        KC_HOME,
-                                        CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
-        // right hand
-        KC_ESC,  KC_6,  KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
-        KC_BSPC, KC_Y,  KC_U,   KC_I,   KC_O,   KC_P,   KC_MINS,
-                 KC_H,  KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
-        KC_BSLS, KC_N,  KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
-                        MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
-
-        KC_LEFT, KC_RGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
-    ),
-
-    /*
-     * Keymap: Numbers and symbols
-     *
-     * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases.
-     * That's why the Num Lock key exists on this layer - just in case.
-     *
-     * This layer also contains the layout switches.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |   !  |   @  |   {  |   }  |   &  |      |           |      |   /  |   7  |   8  |   9  |   *  |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |   #  |   $  |   (  |   )  |   ~  |------|           |------|   |  |   4  |   5  |   6  |   -  |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |   %  |   ^  |   [  |   ]  |   `  |      |           |      |   \  |   1  |   2  |   3  |   +  |        |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   |      |QWERTY|Colemk|      |      |                                       |   0  |   .  |   =  |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |NumLck| RESET|       |      |      |
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 |      |      |------|       |------|      |      |
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_NU] = KEYMAP(
-        // left hand
-        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______,
-        _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_AMPR, _______,
-        _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_TILD,
-        _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV,  _______,
-        _______, DF(_QW), DF(_CO), _______, _______,
-
-                                                KC_NLCK,RESET,
-                                                        _______,
-                                        _______,_______,_______,
-        // right hand
-        _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
-        _______, KC_SLSH, KC_P7,   KC_P8,   KC_P9,   KC_PAST, _______,
-                 KC_PIPE, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, _______,
-        _______, KC_BSLS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, _______,
-                          KC_P0,   KC_PDOT, KC_EQL,  _______, _______,
-
-       _______, _______,
-       _______,
-       _______, _______, _______
-    ),
-
-    /*
-     * Keymap: Extend
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |  F11 |  F12 |  F13 |  F14 |  F15 | Mute |           |      |  F16 |  F17 |  F18 |  F19 |  F20 |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |      |      |      |      | Ctrl`|  Vol |           |      | PgUp | Home |  Up  |  End |  Del |        |
-     * |--------+------+------+------+------+------|  Up  |           |      |------+------+------+------+------+--------|
-     * |        |      |  Gui |  Alt | Ctrl |      |------|           |------| PgDn | Left | Down | Right| BkSp |  Menu  |
-     * |--------+------+------+------+------+------|  Vol |           |      |------+------+------+------+------+--------|
-     * |        | Undo |  Cut | Copy |      | Paste| Down |           |      |      | ^Tab |  Tab |      |Insert| PrntScr|
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   |      |      |      |      |      |                                       |      |      |      |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |      |      |       |      |      |
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 |      |      |------|       |------|      |      |
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     *
-     * Ctrl+` is a keyboard shortcut for the program ConEmu, which provides a Quake-style drop-down command prompt.
-     *
-     */
-[_EX] = KEYMAP(
-        // left hand
-        _______, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_MUTE,
-        _______, _______, _______, _______, _______, KCX_CGR, KC_VOLU,
-        _______, _______, KC_LGUI, KC_LALT, KC_LCTL, _______,
-        _______, KX_UNDO, KX_CUT,  KX_COPY, _______, KX_PAST, KC_VOLD,
-        _______, _______, _______, _______, _______,
-
-                                                _______,_______,
-                                                        _______,
-                                        _______,_______,_______,
-        // right hand
-        _______,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  _______,
-        _______,  KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,  _______,
-                  KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU,
-        _______,  _______, KX_STAB, KC_TAB,  _______, KC_INS,  KC_PSCR,
-                           _______, _______, _______, _______, _______,
-        _______, _______,
-        _______,
-        _______, _______, _______
-    ),
-
-    /*
-     * Keymap: Gaming
-     *
-     * Provides a mouse overlay for the right hand, and also moves some "gamer friendly" keys to the left, such as space.
-     * This layer also removes a lot of dual-role keys, as when gaming, it's nicer not to need to keep track of those.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |      |           |      |      |WhlUp | MsUp |WhlDn |      |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LCtrl|      |      |      |      |                                       |      |      |      |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |      | ~_GA |       |      |MClick|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 | Space|      |------|       |------|RClick|LClick|
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_GA] = KEYMAP(
-        // left hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        KC_LCTL, _______, _______, _______, _______,
-
-                                        _______,_______,
-                                                _______,
-                                        KC_SPC, _______,_______,
-
-        // right hand
-        _______,  _______, _______, _______, _______, _______, _______,
-        _______,  _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
-                  _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
-        _______,  _______, _______, _______, _______, _______, _______,
-                           _______, _______, _______, _______, _______,
-        _______, KC_BTN3,
-        _______,
-        _______, KC_BTN2, KC_BTN1
-    ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(_NU)                // FN1 - Momentary Layer 1 (Numbers and symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-    // uint8_t default_layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-
-    switch (layer) {
-        case _CO:
-            ergodox_right_led_1_on();
-            break;
-        case _QW:
-            ergodox_right_led_2_on();
-            break;
-        case _NU:
-            ergodox_right_led_3_on();
-            break;
-        case _GA:
-            ergodox_right_led_1_on();
-            ergodox_right_led_2_on();
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/replicaJunction/readme.md b/keyboards/ergodox/keymaps/replicaJunction/readme.md
deleted file mode 100644 (file)
index 8c4c033..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# replicaJunction - Ergodox (EZ) Layout
-
-I designed this layout, along with my complimentary Atreus layout, to address the challenge of having an Ergodox as my primary home keyboard and an Atreus as my primary work board. I wanted a layout that provided symbols in comfortable locations on both keyboards - but didn't require me to learn two separate sets of symbols for the two keyboards.
-
-I had originally used several keys as dual-role keys, where a tap would send a keypress and a long press and hold would trigger a different layer. However, after several months of experimenting with those ideas, I've begun moving away from that design due to performance. It's very hard to strike a balance between the time it takes to press a key normally while typing and the "delay" in the typing motion needed to trigger the alternate layer. I was frequently getting strange characters and artifacts because I pressed the function key + the symbol key too quickly, and the layer never shifted.
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/reset_eeprom/keymap.c b/keyboards/ergodox/keymaps/reset_eeprom/keymap.c
deleted file mode 100644 (file)
index 8d68976..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-  RGB_SLD
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        EPRM,         EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
-        EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
-        EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM,
-        EPRM,        EPRM,  EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
-        EPRM,        EPRM,      EPRM,  EPRM,EPRM,
-                                              EPRM,  EPRM,
-                                                              EPRM,
-                                               EPRM,EPRM,EPRM,
-        // right hand
-             EPRM,     EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM,
-             EPRM,    EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM,
-                          EPRM,   EPRM,  EPRM,   EPRM,   EPRM,EPRM,
-             EPRM,EPRM,   EPRM,  EPRM,EPRM, EPRM,   EPRM,
-                                  EPRM, EPRM,EPRM,EPRM,          EPRM,
-             EPRM,        EPRM,
-             EPRM,
-             EPRM,EPRM, EPRM
-    )
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-    case RGB_SLD:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_mode(1);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  eeconfig_init();
-};
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/robot_test_layout/keymap.c b/keyboards/ergodox/keymaps/robot_test_layout/keymap.c
deleted file mode 100644 (file)
index e9e2597..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  RGB_FF0000,
-  RGB_00FF00,
-  RGB_0000FF,
-  RGB_FFFFFF,
-  RGB_TOGGLE,
-  LED1,
-  LED2,
-  LED3
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[0] = KEYMAP(
-        RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN,
-        KC_GRAVE,   KC_A,       KC_B,       KC_C,       KC_D,       KC_E, KC_EXLM,
-        KC_HASH,    KC_J,       KC_K,       KC_L,       KC_M,       KC_N,
-        KC_AMPR,    KC_T,       KC_U,       KC_V,       KC_W,       KC_X, KC_DLR,
-        KC_PIPE,    KC_R,       KC_PLUS,    KC_LCBR,    KC_RCBR,
-
-                                            KC_F, KC_G,
-                                                  KC_H,
-                                     KC_P,  KC_O, KC_I,
-
-
-
-                                               // RIGHT HAND
-                                               KC_RPRN,       KC_6, KC_7, KC_8,    KC_9,   KC_0,    KC_MINS,
-                                               KC_AT,         KC_F, KC_G, KC_H,    KC_I,   KC_COLN, KC_BSLS,
-                                                              KC_O, KC_P, KC_Q,    KC_R,   KC_S,    KC_QUOT,
-                                               LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR,
-                                                              KC_A, KC_B, KC_C,    KC_D,   KC_PIPE,
-
-                                               LED1, KC_E,
-                                               LED2,
-                                               LED3, KC_J, KC_K
-    )
-};
-
-
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_TAP_TOGGLE(1)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool status_led1_on = false, status_led2_on = false, status_led3_on = false;
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case RGB_FF0000:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          EZ_RGB(0xff0000UL);
-          register_code(KC_1); unregister_code(KC_1);
-        #endif
-      }
-      return false;
-      break;
-    case RGB_00FF00:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          EZ_RGB(0x00ff00UL);
-          register_code(KC_2); unregister_code(KC_2);
-        #endif
-      }
-      return false;
-      break;
-    case RGB_0000FF:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          EZ_RGB(0x0000ffUL);
-          register_code(KC_3); unregister_code(KC_3);
-        #endif
-      }
-      return false;
-      break;
-    case RGB_FFFFFF:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          EZ_RGB(0xffffffUL);
-          register_code(KC_4); unregister_code(KC_4);
-        #endif
-      }
-      return false;
-      break;
-    case RGB_TOGGLE:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_toggle();
-          register_code(KC_EQL); unregister_code(KC_EQL);
-        #endif
-      }
-      return false;
-      break;
-    case LED1:
-      if (record->event.pressed) {
-        if(status_led1_on) {
-        ergodox_right_led_1_off();
-        status_led1_on = false;
-        } else {
-        ergodox_right_led_1_on();
-        status_led1_on = true;
-        }
-      }
-      return false;
-      break;
-    case LED2:
-      if (record->event.pressed) {
-        if(status_led2_on) {
-        ergodox_right_led_2_off();
-        status_led2_on = false;
-        } else {
-        ergodox_right_led_2_on();
-        status_led2_on = true;
-        }
-      }
-      return false;
-      break;
-    case LED3:
-      if (record->event.pressed) {
-        if(status_led3_on) {
-        ergodox_right_led_3_off();
-        status_led3_on = false;
-        } else {
-        ergodox_right_led_3_on();
-        status_led3_on = true;
-        }
-      }
-      return false;
-      break;
-  }
-  return true;
-}
diff --git a/keyboards/ergodox/keymaps/robot_test_layout/readme.md b/keyboards/ergodox/keymaps/robot_test_layout/readme.md
deleted file mode 100644 (file)
index 45dc2aa..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Robot test layout
-
-Use this layout if you like to pretend you're [Norman](https://www.youtube.com/watch?v=-sbxFBay-tg), the ErgoDox EZ manufacturing robot.
-
-It's really meant just for internal use, but we're posting it on GitHub anyway, because hurray to open source. :)
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c
deleted file mode 100644 (file)
index 2c64304..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = KEYMAP(
-    KC_GRV,   KC_1,    KC_2,  KC_3,    KC_4,    KC_5,    KC_F5,
-    KC_TAB,   KC_Q,    KC_W,  KC_D,    KC_F,    KC_K,    KC_BSLS,
-    KC_LCTRL, KC_A,    KC_S,  KC_E,    KC_T,    KC_G,
-    KC_LSFT,  KC_Z,    KC_X,  KC_C,    KC_V,    KC_B,    KC_LBRC,
-    KC_F1,    KC_F2,   KC_F3, KC_F4,   KC_LGUI,
-    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    KC_VOLD, KC_MUTE,
-    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    /*-*/    KC_VOLU,
-    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_LALT,
-    //
-    /*-*/     KC_F6,   KC_6,  KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
-    /*-*/     KC_NO,   KC_J,  KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
-    /*-*/     /*-*/    KC_Y,  KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
-    /*-*/     KC_RBRC, KC_P,  KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
-    /*-*/     /*-*/    /*-*/  KC_RGUI, KC_LEFT, KC_DOWN, KC_UP,         KC_RGHT,
-    KC_MPLY,  KC_MNXT,
-    KC_MPRV,
-    KC_RALT,  KC_QUOT, KC_SPC
-    )
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  ergodox_board_led_off();
-  ergodox_right_led_1_off();
-  ergodox_right_led_2_off();
-  ergodox_right_led_3_off();
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-};
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md
deleted file mode 100644 (file)
index 637f9cb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Roman's Layout
-
-There is only one layer, and it is  based on [Norman
-layout](https://normanlayout.info/).
-
-Looking for multiple-layer layouts?
-
-- [Symbols, arrows, plover, HJKL
-  arrows](../romanzolotarev-norman-plover-osx-hjkl/)
-- [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/)
-
-[![keyboard-layout](https://i.imgur.com/U14664K.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195)
-
-## How to use Vim key
-
-It is `CTL_T(KC_ESC)` and it works this way:
-
-- Tap `CTRL/ESC` to send `ESC`.
-- Hold `CTRL/ESC` to use as `CTRL`.
-
-## How to activate N-rollover
-
-- Hold left `SHIFT` and right `SHIFT` and then tap `N`.
-
-## How to make and flash on OS X
-
-First you need to install few brew packages.
-
-```bash
-brew tap osx-cross/avr
-brew install dfu-programmer avr-libc teensy_loader_cli
-```
-
-Then you can clone this repository, make and flash your ErgoDox.
-
-```bash
-git clone https://github.com/romanzolotarev/qmk_firmware
-cd qmk_firmware/keyboards/ergodox
-# Optionally tweak ./keymaps/romanzolotarev-norman-osx/keymap.c
-SLEEP_LED_ENABLED=no KEYMAP=romanzolotarev-norman-osx make teensy
-```
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c
deleted file mode 100644 (file)
index 9f41e51..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0
-#define SYMB 1
-#define PLVR 2
-#define ARRW 3
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = KEYMAP(
-    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
-    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
-    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
-    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
-    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
-    //
-    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
-    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
-    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
-    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
-    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
-    KC_MPLY,       KC_MNXT,
-    KC_MPRV,
-    KC_FN3,        KC_QUOT, KC_SPC
-  ),
-  [SYMB] = KEYMAP(
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
-    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
-    //
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
-    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS
-  ),
-  [PLVR] = KEYMAP(
-    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
-    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
-    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
-    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
-    //
-    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
-    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
-    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
-    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
-    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_NO,         KC_N,    KC_M
-  ),
-  [ARRW] = KEYMAP(
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
-    //
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS
-  ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
-  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
-  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-  switch(id) {
-    case 0:
-      if (record->event.pressed) {
-        register_code(KC_RSFT);
-      } else {
-        unregister_code(KC_RSFT);
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
-
-// 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);
-  ergodox_board_led_off();
-  ergodox_right_led_1_off();
-  ergodox_right_led_2_off();
-  ergodox_right_led_3_off();
-  switch (layer) {
-    case SYMB:
-      ergodox_right_led_1_on();
-      break;
-    case PLVR:
-      ergodox_right_led_2_on();
-      break;
-    case ARRW:
-      ergodox_right_led_3_on();
-      break;
-    default:
-      break;
-  }
-};
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md
deleted file mode 100644 (file)
index 577d574..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# Roman's Layout
-
-There are four layers:
-
-- **BASE** is [Norman layout](https://normanlayout.info/).
-- **SYMB** for numbers and symbols.
-- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
-- **ARRW** for navigation (same fingers for arrows as HJKL on QWERTY).
-
-Looking for IJKL arrows? [Here we
-go](../romanzolotarev-norman-plover-osx/).
-
-[![keyboard-layout](https://i.imgur.com/uvMxLuJ.png)](http://www.keyboard-layout-editor.com/#/gists/56ffedceb0668dda47c993e7271563e0)
-
-## Switching
-
-- Tap `SYMB` to toggle **SYMB**.
-- Tap `ARRW` to toggle **ARRW**.
-- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
-- Tap `PLVR` to toggle **PLVR**.
-
-## LEDs
-
-- Red: SYMB is on.
-- Green: PLVR is on.
-- Blue: ARRW is on.
-
-## Functional Keys
-
-- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
-- Tap `F2` to copy screenshot to the clipboard.
-- Hold `SHIFT` and tap `F2` to save screenshot as a file.
-- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
-- Tap `F14`, `F15` to adjust display brightness.
-
-**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
-`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
-you ErgoDox. Enjoy!
-
-## CTRL/ESC
-
-Both of those keys are frequently used in Vim.
-
-- Tap `CTRL/ESC` to send `ESC`.
-- Hold `CTRL/ESC` to use as `CTRL`.
-
-## Activate N-rollover
-
-- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
-- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/keymap.c
deleted file mode 100644 (file)
index 563e248..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0
-#define SYMB 1
-#define PLVR 2
-#define ARRW 3
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = KEYMAP(
-    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
-    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
-    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
-    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
-    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
-    //
-    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
-    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
-    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
-    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
-    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
-    KC_MPLY,       KC_MNXT,
-    KC_MPRV,
-    KC_FN3,        KC_QUOT, KC_SPC
-  ),
-  [SYMB] = KEYMAP(
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
-    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
-    //
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
-    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS
-  ),
-  [PLVR] = KEYMAP(
-    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
-    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
-    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
-    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
-    //
-    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
-    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
-    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
-    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
-    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_NO,         KC_N,    KC_M
-  ),
-  [ARRW] = KEYMAP(
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
-    //
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,       KC_TRNS,
-    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
-    /*-*/          /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS,       KC_TRNS,
-    KC_TRNS,
-    KC_TRNS,       KC_TRNS, KC_TRNS
-  ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
-  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
-  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-  switch(id) {
-    case 0:
-      if (record->event.pressed) {
-        register_code(KC_RSFT);
-      } else {
-        unregister_code(KC_RSFT);
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
-
-// 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);
-  ergodox_board_led_off();
-  ergodox_right_led_1_off();
-  ergodox_right_led_2_off();
-  ergodox_right_led_3_off();
-  switch (layer) {
-    case SYMB:
-      ergodox_right_led_1_on();
-      break;
-    case PLVR:
-      ergodox_right_led_2_on();
-      break;
-    case ARRW:
-      ergodox_right_led_3_on();
-      break;
-    default:
-      break;
-  }
-};
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-plover-osx/readme.md
deleted file mode 100644 (file)
index 6703bb8..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# Roman's Layout
-
-There are four layers:
-
-- **BASE** is [Norman layout](https://normanlayout.info/).
-- **SYMB** for numbers and symbols.
-- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
-- **ARRW** for navigation (same fingers for arrows as IJKL on QWERTY).
-
-Looking for HJKL arrows? [Here we
-go](../romanzolotarev-norman-plover-osx-hjkl/).
-
-[![keyboard-layout](https://i.imgur.com/kseXR4Z.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
-
-## Switching
-
-- Tap `SYMB` to toggle **SYMB**.
-- Tap `ARRW` to toggle **ARRW**.
-- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
-- Tap `PLVR` to toggle **PLVR**.
-
-## LEDs
-
-- Red: SYMB is on.
-- Green: PLVR is on.
-- Blue: ARRW is on.
-
-## Functional Keys
-
-- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
-- Tap `F2` to copy screenshot to the clipboard.
-- Hold `SHIFT` and tap `F2` to save screenshot as a file.
-- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
-- Tap `F14`, `F15` to adjust display brightness.
-
-**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
-`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
-you ErgoDox. Enjoy!
-
-## CTRL/ESC
-
-Both of those keys are frequently used in Vim.
-
-- Tap `CTRL/ESC` to send `ESC`.
-- Hold `CTRL/ESC` to use as `CTRL`.
-
-## Activate N-rollover
-
-- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
-- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c
deleted file mode 100644 (file)
index 5569f5c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0
-#define QWRT 1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = KEYMAP(
-    KC_GRV,  KC_1,     KC_2,  KC_3,    KC_4,    KC_5,    KC_F5,
-    KC_TAB,  KC_Q,     KC_W,  KC_D,    KC_F,    KC_K,    KC_BSLS,
-    KC_LCTL, KC_A,     KC_S,  KC_E,    KC_T,    KC_G,
-    KC_LSFT, KC_Z,     KC_X,  KC_C,    KC_V,    KC_B,    KC_LBRC,
-    KC_F1,   KC_F2,    KC_F3, KC_F4,   KC_LGUI,
-    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    KC_VOLD, KC_MUTE,
-    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    /*-*/    KC_VOLU,
-    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_LALT,
-    //
-    /*-*/    KC_F6,    KC_6,  KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
-    /*-*/    TG(QWRT), KC_J,  KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
-    /*-*/    /*-*/     KC_Y,  KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
-    /*-*/    KC_RBRC,  KC_P,  KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
-    /*-*/    /*-*/     /*-*/  KC_RGUI, KC_LEFT, KC_DOWN, KC_UP,         KC_RGHT,
-    KC_MPLY, KC_MNXT,
-    KC_MPRV,
-    KC_RALT, KC_QUOT,  KC_SPC
-  ),
-  [QWRT] = KEYMAP(
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_E,    KC_R,    KC_T,    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_D,    KC_F,    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
-    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
-    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
-    //
-    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/    KC_TRNS, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_TRNS,
-    /*-*/    /*-*/    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_TRNS,
-    /*-*/    KC_TRNS, KC_N,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS,
-    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  return MACRO_NONE;
-};
-
-// 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);
-  ergodox_board_led_off();
-  ergodox_right_led_1_off();
-  ergodox_right_led_2_off();
-  ergodox_right_led_3_off();
-  switch (layer) {
-    case QWRT:
-      ergodox_right_led_1_on();
-      break;
-    default:
-      break;
-  }
-};
diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-qwerty-osx/readme.md
deleted file mode 100644 (file)
index 41859f1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Roman's Layout
-
-There are two layers:
-
-- **BASE** is [Norman layout](https://normanlayout.info/).
-- **QWRT** is QWERTY.
-
-[![keyboard-layout](https://i.imgur.com/jfKBznw.png)](http://www.keyboard-layout-editor.com/#/gists/3b236f450da474dc506a5a80390c3cc7)
-
-## Switching
-
-- Tap `QWRT` to toggle **QWRT**.
-
-## LEDs
-
-- Red: QWRT is on.
-
-## Functional Keys
-
-- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
-- Tap `F2` to copy screenshot to the clipboard.
-- Hold `SHIFT` and tap `F2` to save screenshot as a file.
-- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
-
-## CTRL/ESC
-
-Both CTRL and ESC are frequently used in Vim.
-
-- Tap `CTRL/ESC` to send `ESC`.
-- Hold `CTRL/ESC` to use as `CTRL`.
-
-## Activate N-rollover
-
-- Hold left `SHIFT` and right `SHIRT` and then tap `N`.
diff --git a/keyboards/ergodox/keymaps/sethbc/Makefile b/keyboards/ergodox/keymaps/sethbc/Makefile
deleted file mode 100644 (file)
index 457a3d0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/sethbc/keymap.c b/keyboards/ergodox/keymaps/sethbc/keymap.c
deleted file mode 100644 (file)
index 8816ad6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#include "ergodox.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define FN1 1 // symbols
-#define FN2 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
-        KC_BSLS, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    MO(FN2),
-        KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
-        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(FN1),
-        KC_LGUI, KC_GRV,  KC_BSLS, KC_LEFT, KC_RGHT,
-                                                     KC_LCTL, KC_LALT,
-                                                              KC_HOME,
-                                            KC_BSPC,  KC_DEL, KC_END,
-        // right hand
-        MO(FN2), KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
-        KC_LBRC, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_RBRC,
-                 KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
-        MO(FN1), KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
-                          KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_RGUI,
-        KC_RALT, KC_RCTL,
-        KC_PGUP,
-        KC_PGDN, KC_ENT, KC_SPC
-    ),
-// FN1
-[FN1] = KEYMAP(
-       // left hand
-       KC_TRNS,   KC_F1,  KC_F2,  KC_F3,   KC_F4,   KC_F5,   KC_F11,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                    KC_TRNS, KC_TRNS,
-                                                             KC_TRNS,
-                                           KC_TRNS, KC_TRNS, KC_TRNS,
-       // right hand
-       KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
-[FN2] = KEYMAP(
-       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,
-    // right hand
-       KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAST, KC_PMNS, KC_BSPC,
-       KC_TRNS, KC_NO,   KC_P7,   KC_P8,   KC_P9,   KC_PMNS, KC_BSPC,
-                KC_NO,   KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_PENT,
-       KC_TRNS, KC_NO,   KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PENT,
-                         KC_P0,   KC_PDOT, KC_SLSH, KC_PENT, KC_PENT,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/sethbc/readme.md b/keyboards/ergodox/keymaps/sethbc/readme.md
deleted file mode 100644 (file)
index 57b5d0e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# sethbc's Ergodox EZ keymap
-
-Largely based on the Ergodox Infinity default keymap, but layer locking has been
-removed in favor of momentary layer activation
diff --git a/keyboards/ergodox/keymaps/siroken3/default.png.md b/keyboards/ergodox/keymaps/siroken3/default.png.md
deleted file mode 100644 (file)
index 440b424..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/9xDhYOd.png
diff --git a/keyboards/ergodox/keymaps/siroken3/default_highres.png.md b/keyboards/ergodox/keymaps/siroken3/default_highres.png.md
deleted file mode 100644 (file)
index 2245330..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/E5oJXz5.jpg
diff --git a/keyboards/ergodox/keymaps/siroken3/keymap.c b/keyboards/ergodox/keymaps/siroken3/keymap.c
deleted file mode 100644 (file)
index 258f122..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-// Netable differences vs. the default firmware for the ErgoDox EZ:
-// 1. The Cmd key is now on the right side, making Cmd+Space easier.
-// 2. The media keys work on OSX (But not on Windows).
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | LCtl   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
- * |--------+------+------+------+------+------| BkSp |           | Meh  |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | BkSp | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|LANG1 |------|       |------|LANG2   |Enter |
- *                                 | /LGui|      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_LCTRL,       KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_BSPC,
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                                    KC_BSPC,  KC_LGUI,
-                                                              KC_HOME,
-                                 MT(MOD_LGUI, KC_SPC),KC_LANG1,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(SYMB),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_LGUI,
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_LANG2, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/siroken3/readme.md b/keyboards/ergodox/keymaps/siroken3/readme.md
deleted file mode 100644 (file)
index ed085eb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# ErgoDox EZ Default Configuration
-
-## Changelog
-
-* Dec 2016:
-  * Added LED keys
-  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
-* Sep 22, 2016:
-  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
-* Feb 2, 2016 (V1.1): 
-  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
-
-This is what we ship with out of the factory. :) The image says it all:
-
-![Default](https://i.imgur.com/h8k5P0l.png)
diff --git a/keyboards/ergodox/keymaps/sneako/keymap.c b/keyboards/ergodox/keymaps/sneako/keymap.c
deleted file mode 100644 (file)
index 08cadd6..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-// Based on `default_osx`
-// Replace left Bksp with Ctrl/Esc
-// Remove the Ctrl from Z and /
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
-        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(1),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_LALT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/sneako/readme.md b/keyboards/ergodox/keymaps/sneako/readme.md
deleted file mode 100644 (file)
index 8dd110e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# ergodox_keymap
-
-Based on the default Ergodox EZ firmware
-
-Replaced the left side Bksp with a Crtl/Esc, this really helps in vim.
-Removed the Ctrls from the Z and / keys.
diff --git a/keyboards/ergodox/keymaps/software_neo2/keymap.c b/keyboards/ergodox/keymaps/software_neo2/keymap.c
deleted file mode 100644 (file)
index 571ca06..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "led.h"
-#include "action_layer.h"
-#include "keymap_extras/keymap_neo2.h"
-
-// Layer names
-#define BASE 0 // default layer
-#define MDIA 1 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Del   |   1  |   2  |   3  |   4  |   5  | Play |           | Next |   6  |   7  |   8  |   9  |   0  |   ß    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  Tab   |   X  |   V  |   L  |   C  |   W  | Esc  |           | Esc  |   K  |   H  |   G  |   F  |   Q  |   Y    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | NeoL1  |   U  |   I  |   A  |   E  |   O  |------|           |------|   S  |   N  |   R  |   T  |   D  | NeoR1  |
- * |--------+------+------+------+------+------| L1   |           | L1   |------+------+------+------+------+--------|
- * | LShift |Ü/Ctrl| Ö/Win| Ä/Alt|   P  |   Z  |      |           |      |   B  |   M  |   ,  |   .  |   J  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |NeoL2 | Home | PgDn | PgUp | End  |                                       | Right| Down |  Up  | Left | NeoR2|
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------+------+------|       |------+--------+------.
- *                                 |      |      | Enter|       |Delete|        |      |
- *                                 | Space|Backsp|------|       |------|  Enter |Space |
- *                                 |      |ace   | Tab  |       | Esc  |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_DELT,         NEO_1,         NEO_2,         NEO_3,         NEO_4,   NEO_5,   KC_MPLY,
-        KC_TAB,          NEO_X,         NEO_V,         NEO_L,         NEO_C,   NEO_W,   KC_ESC,
-        NEO_L1_L,        NEO_U,         NEO_I,         NEO_A,         NEO_E,   NEO_O,
-        KC_LSFT,         CTL_T(NEO_UE), GUI_T(NEO_OE), ALT_T(NEO_AE), NEO_P,   NEO_Z,   TG(1),
-        NEO_L2_L,        KC_HOME,       KC_PGDN,       KC_PGUP,       KC_END,
-                                                C_S_T(KC_ESC),KC_LGUI,
-                                                              KC_ENT,
-                                               KC_SPC,KC_BSPC,KC_TAB,
-        // right hand
-        KC_MNXT,     NEO_6,   NEO_7,   NEO_8,   NEO_9,   NEO_0,   NEO_SS,
-        KC_ESC,      NEO_K,   NEO_H,   NEO_G,   NEO_F,   NEO_Q,   NEO_Y,
-                     NEO_S,   NEO_N,   NEO_R,   NEO_T,   NEO_D,   NEO_L1_R,
-        TG(1),       NEO_B,   NEO_M,   NEO_COMM, NEO_DOT, NEO_J,   KC_RSFT,
-                              KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, NEO_L2_R,
-        KC_LALT,KC_RGUI,
-        KC_DELT,
-        KC_ESC,KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |Brwser|Brwser|
- *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
-       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
-       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
-                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
-       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
-                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_WBAK, KC_WFWD
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    /* [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols) */
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    ergodox_board_led_off();
-
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
-        ergodox_right_led_3_on();
-    }
-
-    switch (layer) {
-        case MDIA:
-            ergodox_right_led_2_on();
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/supercoder/config.h b/keyboards/ergodox/keymaps/supercoder/config.h
deleted file mode 100644 (file)
index 2de3599..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H 1
-
-#include "../../config.h"
-
-#undef LOCKING_SUPPORT_ENABLE
-#undef LOCKING_RESYNC_ENABLE
-
-#endif
diff --git a/keyboards/ergodox/keymaps/supercoder/keymap.c b/keyboards/ergodox/keymaps/supercoder/keymap.c
deleted file mode 100644 (file)
index 775acf2..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * SuperCoder 2000 layout
- */
-
-#include "ergodox.h"
-
-/* Layers */
-
-#define SC2K    0 // default layer
-
-/* The Keymap */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-  /* Keymap 0: Base Layer
-   *
-   * ,-----------------------------------------------------.           ,-----------------------------------------------------.
-   * |         0 |   0  |   0  |   0  |   0  |   0  |   0  |           |  1   |   1  |   1  |   1  |   1  |  1   | 1         |
-   * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
-   * |         0 |   0  |   0  |   0  |   0  |   0  |   0  |           |  1   |   1  |   1  |   1  |   1  |  1   | 1         |
-   * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
-   * |         0 |   0  |   0  |   0  |   0  |   0  |------|           |------|   1  |   1  |   1  |   1  |  1   | 1         |
-   * |-----------+------+------+------+------+------|   0  |           |  1   |------+------+------+------+------+-----------|
-   * |         0 |   0  |   0  |   0  |   0  |   0  |      |           |      |   1  |   1  |   1  |   1  |  1   | 1         |
-   * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
-   *     |     0 |   0  |   0  |   0  |   0  |                                       |   1  |   1  |   1  |  1   | 1     |
-   *     `-----------------------------------'                                       `-----------------------------------'
-   *                                         ,-------------.           ,-------------.
-   *                                         | DONE | DONE |           | DONE | DONE |
-   *                                  ,------|------|------|           |------+------+------.
-   *                                  |      |      | DONE |           | DONE |      |      |
-   *                                  | DONE | DONE |------|           |------| DONE | DONE |
-   *                                  |      |      | DONE |           | DONE |      |      |
-   *                                  `--------------------'           `--------------------'
-   */
-[SC2K] = KEYMAP(
- // left hand
- KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
-,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
-,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
-,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
-,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
-
-                                             ,KC_ENT  ,KC_ENT
-                                                      ,KC_ENT
-                                    ,KC_ENT  ,KC_ENT  ,KC_ENT
-
-                                                                // right hand
-                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
-                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
-                                                                        ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
-                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
-                                                                                 ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
-
-                                                               ,KC_ENT  ,KC_ENT
-                                                               ,KC_ENT
-                                                               ,KC_ENT  ,KC_ENT   ,KC_ENT
-                  ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  return MACRO_NONE;
-};
-
-// 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) {
-}
diff --git a/keyboards/ergodox/keymaps/supercoder/makefile.mk b/keyboards/ergodox/keymaps/supercoder/makefile.mk
deleted file mode 100644 (file)
index 41a195d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-BOOTMAGIC_ENABLE=no
-COMMAND_ENABLE=no
-SLEEP_LED_ENABLE=no
-UNICODE_ENABLE=no
-MOUSEKEY_ENABLE=no
-EXTRAKEY_ENABLE=no
diff --git a/keyboards/ergodox/keymaps/supercoder/readme.md b/keyboards/ergodox/keymaps/supercoder/readme.md
deleted file mode 100644 (file)
index e1aa0b0..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-SuperCoder 2000 layout for the ErgoDox
-==================================================
-
-![SuperCoder 2000](https://i.imgur.com/6dcU9VY.jpg)
-
-Ever found yourself in need of entering binary codes rapidly? Ever wanted to use
-all ten fingers to do so? Ever felt your SuperCoder 2000 too limiting, by only
-having three buttons? We heard you! With this layout for the ErgoDox EZ, you
-will be able to tap in binary at an unparalleled speed and accuracy! Efficiency
-never seen before!
-
-Behold the Ultimate SuperCoder 2000 layout!
-
-![SuperCoder layout](https://i.imgur.com/Ymzlr9G.png)
-
-### To use it...
-
-To use this piece of top quality engineering, you can either
-[download the hex file][hex] we have prepared for you, or you can compile it on
-your own:
-
- [hex]: https://raw.githubusercontent.com/algernon/ergodox-supercoder/master/supercoder.hex
-
-```
-$ git clone https://github.com/qmk/qmk_firmware.git
-$ cd qmk_firmware/keyboards/ergodox
-$ git clone https://github.com/algernon/ergodox-supercoder.git keymaps/supercoder
-$ make KEYMAP=supercoder
-```
diff --git a/keyboards/ergodox/keymaps/swedish-lindhe/keymap.c b/keyboards/ergodox/keymaps/swedish-lindhe/keymap.c
deleted file mode 100644 (file)
index 9f3e821..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Copyright 2017 Andreas Lindhé
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_swedish.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Print  |   !  |  "   |  #   |  #   |  %   |      |           |Middle|   &  |  /   |  (   |  )   |  =   |  ?     |
- * | Screen |   1  |  2 @ |  3 £ |  4 $ |  5   | F11  |           |Mouse |   6  |  7 { |  8 [ |  9 ] |  0 } |  + \   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    | Q    | W    | E    | R    | T    | ~L1  |           |  L1  | Y    | U    | I    | O    | P    | Å      |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | CapsLk | A    | S    | D    | F    | G    |------|           |------| H    | J    | K    | L    | Ö    | Ä      |
- * |--------+------+------+------+------+------| `    |           | Del  |------+------+------+------+------+--------|
- * | LShft  | Z    | X    | C    | V    | B    |  '   |           |      | N    | M    | ,    | .    | -    | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LCtl |  ^   | *    | LAlt | LGui |                                       | AltGr| Down |  Up  | Left | Right|
- *   | (')  |  " ~ | '  ´ |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,--------------.
- *                                        | LCtl | LAlt |       | Home |   End  |
- *                                 ,------|------|------|       |------+-------+------.
- *                                 |      |      |  ~   |       | PgUp |       |      |
- *                                 | Space|Back- |------|       |------|  Tab  |Enter |
- *                                 |      |space | Esc  |       | PgDn |       | L2   |
- *                                 `--------------------'       `---------------------'
- */
-
-[BASE] = KEYMAP(  // layer 0 : default
-    // left hand
-    KC_PSCR,         KC_1,     KC_2,     KC_3,    KC_4,    KC_5,   KC_F11,
-    KC_TAB,          KC_Q,     KC_W,     KC_E,    KC_R,    KC_T,   MO(SYMB),
-    KC_CAPS,         KC_A,     KC_S,     KC_D,    KC_F,    KC_G,
-    KC_LSFT,         KC_Z,     KC_X,     KC_C,    KC_V,    KC_B,   NO_ACUT,
-    CTL_T(NO_APOS),  NO_CIRC,  NO_ASTR,  KC_LALT, KC_LGUI,
-                                               KC_LCTRL,  KC_LALT,
-                                                          NO_TILD,
-                                         KC_SPC, KC_BSPC, KC_ESC,
-    // right hand
-         KC_MS_BTN3,   KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     NO_PLUS,
-         TG(SYMB),  KC_Y,   KC_U,    KC_I,    KC_O,    KC_P,     NO_AA,
-                    KC_H,   KC_J,    KC_K,    KC_L,    NO_OSLH,  NO_AE,
-         KC_DELT,   KC_N,   KC_M,    KC_COMM, KC_DOT,  NO_MINS,  KC_RSFT,
-                            NO_ALGR, KC_DOWN, KC_UP,   KC_LEFT,  KC_RGHT,
-         KC_HOME,        KC_END,
-         KC_PGUP,
-         KC_PGDN, KC_TAB, LT(MDIA, KC_ENT)
-),
-
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |  /   |   *  |  -   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |  7   |  8   |  9   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F5  |  F6  |  F7  |  F8  |      |------|           |------|      |  4   |  5   |  6   |  +   |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |  1   |  2   |  3   | Enter|        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  0   | ,    | .    | Enter|      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_TRNS,
-       KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_7,    KC_8,    KC_9,    KC_PPLS, KC_TRNS,
-                KC_TRNS, KC_4,    KC_5,    KC_6,    KC_PPLS, KC_TRNS,
-       RESET,   KC_TRNS, KC_1,    KC_2,    KC_3,    KC_PENT, KC_TRNS,
-                         KC_0,    KC_COMM, KC_DOT,  KC_PENT, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Play | Pause| Prev | Next |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      | Lclk | Rclk |      |      |           |      |      |VolDn |VolUp | Mute |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |LeClk |RiClk |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, 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,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_3_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_2_on();
-            ergodox_right_led_3_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
-        // if capslk is on, set led 1 on
-        ergodox_right_led_1_on();
-    } else {
-        ergodox_right_led_1_off();
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/swedish-lindhe/readme.md b/keyboards/ergodox/keymaps/swedish-lindhe/readme.md
deleted file mode 100644 (file)
index ef62d94..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# swedish-lindhe ErgoDox (EZ) keymap
-
-This is a setup that is very useful for me. It may or may not be for
-you. I will use it in conjunction with the A5 overlayed sv_SE layout.
-
-The layout is subject to change (in particular I'm thinking about adding
-a macro recording feature), but it have not changed much the past year
-or two so you can expect it to be stable enough to learn it.
-
-A5: http://aoeu.info/s/dvorak/svorak
-My xkb map: https://github.com/lindhe/dotfiles/blob/master/usr/share/X11/xkb/symbols/se-A5
-
-The most major points:
-======================
-
-I think the layout image can be found on
-[www.keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/#/gists/d84bc5915707cb30a4f9f754e06ecea3)
-
-L0:
----
-
-* Easily accessible F11 key for fullscreening
-* Print screen
-* Middle mouse button for X-paste
-* Improved reachability of meta buttons (LCtrl, LALt, AltGr, LGui etc.)
-* Cluster Page Up/Down + Home/End by the right thumb
-* Vim-like arrow layout in right bottom row
-
-* Set media layer toggle to right thumb (Enter)
-* Set apostrophe on LCtl (putting it next to some other small
-  characters)
-
-L1:
----
-
-* Full function key layout
-* Teensy button
-
-L2:
----
-
-* Improved media buttons layout (close by the jkl; Vim binding)
-* Improved layout of emulated mouse buttons
-
-LED behaviour to binary+CAPS
-============================
-
-The ErgoDox LEDs on this layout is using the two rightmost LEDs as the
-two LSB in a two digit binary number, representing layer 0, 1, 2 and 3.
-The leftmost byte/LED indicates CAPS status.
diff --git a/keyboards/ergodox/keymaps/swedish/keymap.c b/keyboards/ergodox/keymaps/swedish/keymap.c
deleted file mode 100644 (file)
index c110538..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright 2017 Andreas Lindhé
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "keymap_swedish.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-enum custom_keycodes {
-  PLACEHOLDER = SAFE_RANGE, // can always be here
-  EPRM,
-  VRSN,
-  RGB_SLD
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   ½    |   !  |  "   |  #   |  #   |  %   | LEFT |           | RIGHT|   &  |  /   |  (   |  )   |  =   |  ?     |
- * |   §    |   1  |  2 @ |  3 £ |  4 $ |  5   |      |           |      |   6  |  7 { |  8 [ |  9 ] |  0 } |  + \   |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Delete |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   Å    |
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |Ö / L2|Ä / Cmd |
- * | Lock   |      |      |      |      |      | Hyper|           | Meh  |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Left   |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ;  |   :  |_/Ctrl| RShift |
- * | Shift  |      |      |      |      |      |      |           |      |      |      |   ,  |   .  |-     |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | '/L1 |  `   |AltShf| Left | Right|                                       |  Up  | Down |  ^   |  *   | ~L1  |
- *   |      |  '   |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        | App  | LGui |       | AltGr|Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Back- |------|       |------|  Tab   |Enter |
- *                                 |      |space | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-    // left hand
-    NO_HALF,          KC_1,           KC_2,          KC_3,    KC_4,    KC_5,   KC_LEFT,
-    KC_DELT,          KC_Q,           KC_W,          KC_E,    KC_R,    KC_T,   TG(SYMB),
-    KC_BSPC,          KC_A,           KC_S,          KC_D,    KC_F,    KC_G,
-    KC_LSFT,          CTL_T(KC_Z),    KC_X,          KC_C,    KC_V,    KC_B,   ALL_T(KC_NO),
-    LT(SYMB,NO_APOS), NO_ACUT,        LALT(KC_LSFT), KC_LEFT, KC_RGHT,
-                                          ALT_T(KC_APP),  KC_LGUI,
-                                                          KC_HOME,
-                                           KC_SPC,KC_BSPC,KC_END,
-    // right hand
-         KC_RGHT,      KC_6,   KC_7,   KC_8,    KC_9,    KC_0,              NO_PLUS,
-         TG(SYMB),     KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,              NO_AA,
-                       KC_H,   KC_J,   KC_K,    KC_L,    LT(MDIA, NO_OSLH), GUI_T(NO_AE),
-         MEH_T(KC_NO), KC_N,   KC_M,   KC_COMM, KC_DOT,  CTL_T(NO_MINS),    KC_RSFT,
-                               KC_UP,  KC_DOWN, NO_CIRC, NO_ASTR,           KC_FN1,
-         NO_ALGR,        CTL_T(KC_ESC),
-         KC_PGUP,
-         KC_PGDN,KC_TAB, KC_ENT
-),
-
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |Animat|      |       |Toggle|Solid |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
- *                                 |ness- |ness+ |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,NO_AT,  NO_LCBR,NO_RCBR,NO_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV,
-       KC_TRNS,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_TILD,KC_TRNS,
-          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       RGB_MOD,KC_TRNS,
-                                               KC_TRNS,
-                               RGB_VAD,RGB_VAI,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    NO_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    NO_PLUS, KC_TRNS,
-       KC_TRNS, NO_AMPR, KC_1,   KC_2,    KC_3,    NO_MINS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    NO_EQL,  KC_TRNS,
-       RGB_TOG, RGB_SLD,
-       KC_TRNS,
-       KC_TRNS, RGB_HUD, RGB_HUI
-),
-
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-        case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    // dynamically generate these.
-    case EPRM:
-      if (record->event.pressed) {
-        eeconfig_init();
-      }
-      return false;
-      break;
-    case VRSN:
-      if (record->event.pressed) {
-        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-      }
-      return false;
-      break;
-    case RGB_SLD:
-      if (record->event.pressed) {
-        #ifdef RGBLIGHT_ENABLE
-          rgblight_mode(1);
-        #endif
-      }
-      return false;
-      break;
-  }
-  return true;
-}
-
-// Runs 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/swedish/readme.md b/keyboards/ergodox/keymaps/swedish/readme.md
deleted file mode 100644 (file)
index b5b859b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# Swedish (sv_SE) Qwerty layout for ErgoDox EZ, based on the Default configuration
-
-*NOTE:* it might still be desirable to set the software layout to sv_SE in your
-OS.
-
-Remind me and I'll provide a picture of the layout.
-
-I have tried making this as close of a match I could between the [default
-ErgoDox EZ configuration](https://ergodox-ez.com/pages/our-firmware) and a
-standard Swedish Qwerty layout.
-
-## Notable differences from default:
-
-* There are three special character buttons (acute accent, circumflex/tilde and
-  apostrophe/asterisk) that don't have any buttons to map to naturally. I've put
-  these at other places:
-
-    * Acute accent (´) can be found in the lower left corner, conveniently
-      placed to reach for making an é.
-
-    * Apostrophe (') was put in the lower left corner, close to acute accent.
-
-    * Circumflex (^) and asterisk (*) was placed in the lower right corner.
-
-    * Tilde (~) and diaeresis (¨) I couldn't find a good place for, so I left
-      those out. I could only get the buttons to produce a single one of the
-      characters. How can I get it to work properly?
-
-* The Alt button on right thumb was exchanged for AltGr (RAlt).
-
-* I changed the backslash in the numpad (layer 1) for a minus. Thought it was
-  more sensible.
-
-* I didn't find a good place for the "<>|" button, so that one was left out.
-  That is a problem that really needs to be resolved. Pipe can be found on layer
-  one, however.
diff --git a/keyboards/ergodox/keymaps/swissgerman/keyboard-layout.json b/keyboards/ergodox/keymaps/swissgerman/keyboard-layout.json
deleted file mode 100644 (file)
index 6958952..0000000
+++ /dev/null
@@ -1,419 +0,0 @@
-[
-  {
-    "backcolor": "#ffffff",
-    "name": "Ergodox Swiss German Layout - Base Layer",
-    "author": "Andreas Schmidt (https://github.com/remigius42)"
-  },
-  [
-    {
-      "x": 3.5
-    },
-    "#\n3",
-    {
-      "x": 10.5
-    },
-    "*\n8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n2",
-    {
-      "x": 1
-    },
-    "$\n4",
-    {
-      "x": 8.5
-    },
-    "&\n7",
-    {
-      "x": 1
-    },
-    "(\n9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "%\n5",
-    {
-      "a": 7
-    },
-    "<i class='fa fa-arrow-left'></i>",
-    {
-      "x": 4.5
-    },
-    "<i class='fa fa-arrow-right'></i>",
-    {
-      "a": 4
-    },
-    "^\n6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "w": 1.5
-    },
-    "°\n§",
-    "!\n1",
-    {
-      "x": 14.5
-    },
-    ")\n0",
-    {
-      "w": 1.5
-    },
-    "?\n'\n\n'"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5
-    },
-    "E",
-    {
-      "x": 10.5
-    },
-    "I"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "W",
-    {
-      "x": 1
-    },
-    "R",
-    {
-      "x": 8.5
-    },
-    "U",
-    {
-      "x": 1
-    },
-    "O"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "T",
-    {
-      "c": "#b56b6b",
-      "a": 6,
-      "h": 1.5
-    },
-    "Toggle Code Layer",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "Toggle Code Layer",
-    {
-      "c": "#cccccc",
-      "a": 4
-    },
-    "Y"
-  ],
-  [
-    {
-      "y": -0.875,
-      "a": 6,
-      "w": 1.5
-    },
-    "Delete",
-    {
-      "a": 4
-    },
-    "Q",
-    {
-      "x": 14.5
-    },
-    "P",
-    {
-      "w": 1.5
-    },
-    "è\nü\n\n["
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5
-    },
-    "D",
-    {
-      "x": 10.5
-    },
-    "K"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "S",
-    {
-      "x": 1
-    },
-    "F",
-    {
-      "x": 8.5
-    },
-    "J",
-    {
-      "x": 1
-    },
-    "L"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "G",
-    {
-      "x": 6.5
-    },
-    "H"
-  ],
-  [
-    {
-      "y": -0.875,
-      "a": 6,
-      "w": 1.5
-    },
-    "Backspace",
-    {
-      "c": "#79c777",
-      "a": 4
-    },
-    "A\n\nLyr3",
-    {
-      "x": 14.5
-    },
-    "é\nö\nLyr3",
-    {
-      "c": "#748adb",
-      "w": 1.5
-    },
-    "à\nä\nCmd\n{"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "c": "#cccccc",
-      "a": 6,
-      "h": 1.5
-    },
-    "Hyper",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "Meh"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "a": 4
-    },
-    "C",
-    {
-      "x": 10.5
-    },
-    ";\n,"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#748adb"
-    },
-    "X\n\nAlt",
-    {
-      "x": 1,
-      "c": "#cccccc"
-    },
-    "V",
-    {
-      "x": 8.5
-    },
-    "M",
-    {
-      "x": 1,
-      "c": "#748adb"
-    },
-    ":\n.\nAlt"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#cccccc"
-    },
-    "B",
-    {
-      "x": 6.5
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "a": 6,
-      "w": 1.5
-    },
-    "Shift",
-    {
-      "c": "#748adb",
-      "a": 4
-    },
-    "Z\n\nCtrl",
-    {
-      "x": 14.5
-    },
-    "_\n-\nCtrl",
-    {
-      "c": "#cccccc",
-      "a": 6,
-      "w": 1.5
-    },
-    "Shift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "a": 7
-    },
-    "<i class='fa fa-arrow-left'></i>",
-    {
-      "x": 10.5
-    },
-    "<i class='fa fa-arrow-down'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "a": 4
-    },
-    "£\n$\n\n}",
-    {
-      "x": 1,
-      "a": 7
-    },
-    "<i class='fa fa-arrow-right'></i>",
-    {
-      "x": 10.5,
-      "a": 6
-    },
-    "AltGr"
-  ],
-  [
-    {
-      "y": -0.9950000000000001,
-      "x": 14,
-      "a": 7
-    },
-    "<i class='fa fa-arrow-up'></i>"
-  ],
-  [
-    {
-      "y": -0.7549999999999999,
-      "x": 0.5,
-      "c": "#b56b6b",
-      "a": 4
-    },
-    ">\n<\nCode Layer\n\\",
-    {
-      "c": "#cccccc"
-    },
-    "`\n^\n\n~",
-    {
-      "x": 14.5
-    },
-    "!\n¨\n\n]",
-    {
-      "c": "#b56b6b"
-    },
-    "\n\nCode Layer"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "c": "#748adb"
-    },
-    "Apps\nAlt",
-    {
-      "c": "#cccccc",
-      "a": 6
-    },
-    "Win / Cmd"
-  ],
-  [
-    {
-      "h": 2
-    },
-    "Space",
-    {
-      "h": 2
-    },
-    "Back Space",
-    "Home"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "End"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    "Alt",
-    {
-      "c": "#748adb",
-      "a": 4
-    },
-    "Esc\nCtrl"
-  ],
-  [
-    {
-      "x": -3,
-      "c": "#cccccc",
-      "a": 6
-    },
-    "Pg Up",
-    {
-      "h": 2
-    },
-    "Tab",
-    {
-      "h": 2
-    },
-    "Enter"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "Pg Dn"
-  ]
-]
diff --git a/keyboards/ergodox/keymaps/swissgerman/keyboard-layout_1_2.json b/keyboards/ergodox/keymaps/swissgerman/keyboard-layout_1_2.json
deleted file mode 100644 (file)
index 38a7285..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-[
-  {
-    "backcolor": "#ffffff",
-    "name": "Ergodox Swiss German Layout - Symbol & Media Layer",
-    "author": "Andreas Schmidt (https://github.com/remigius42)"
-  },
-  [
-    {
-      "x": 3.5,
-      "t": "#b81c1c"
-    },
-    "F3",
-    {
-      "x": 10.5
-    },
-    "F8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "F2",
-    {
-      "x": 1
-    },
-    "F4",
-    {
-      "x": 8.5
-    },
-    "F7",
-    {
-      "x": 1
-    },
-    "F9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "F5",
-    {
-      "t": "#000000",
-      "a": 7
-    },
-    "",
-    {
-      "x": 4.5
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "F6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#000000\n\n\n#529151",
-      "w": 1.5
-    },
-    "\n\n\nFlash",
-    {
-      "t": "#b81c1c"
-    },
-    "F1",
-    {
-      "x": 14.5
-    },
-    "F10",
-    {
-      "t": "#b81c1c\n\n\n#529151",
-      "w": 1.5
-    },
-    "F11\n\n\nFlash"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5
-    },
-    "{\n\n\n<i class='fa fa-arrow-circle-up'></i>",
-    {
-      "x": 10.5,
-      "t": "#b81c1c"
-    },
-    "8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@",
-    {
-      "x": 1
-    },
-    "}",
-    {
-      "x": 8.5,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    "7\n\n\nHTML ul",
-    {
-      "x": 1
-    },
-    "9\n\n\nHTML ol"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#b81c1c"
-    },
-    "|",
-    {
-      "t": "#000000",
-      "a": 7,
-      "h": 1.5
-    },
-    "",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "<i class='fa fa-arrow-up'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#000000",
-      "a": 7,
-      "w": 1.5
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "!",
-    {
-      "x": 14.5
-    },
-    "*",
-    {
-      "w": 1.5
-    },
-    "F12"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    "(\n\n\n<i class='fa fa-arrow-circle-down'></i>",
-    {
-      "x": 10.5
-    },
-    "5\n\n\nHTML li"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "$\n\n\n<i class='fa fa-arrow-circle-left'></i>",
-    {
-      "x": 1
-    },
-    ")\n\n\n<i class='fa fa-arrow-circle-right'></i>",
-    {
-      "x": 8.5,
-      "t": "#b81c1c"
-    },
-    "4",
-    {
-      "x": 1
-    },
-    "6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "`",
-    {
-      "x": 6.5
-    },
-    "<i class='fa fa-arrow-down'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#000000",
-      "a": 7,
-      "w": 1.5
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "#",
-    {
-      "x": 14.5
-    },
-    "+",
-    {
-      "t": "#000000\n\n\n#529151",
-      "w": 1.5
-    },
-    "\n\n\n<i class='fa fa-play'></i><i class='fa fa-pause'></i>"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "t": "#000000",
-      "a": 7,
-      "h": 1.5
-    },
-    "",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "t": "#b81c1c\n\n\n#529151",
-      "a": 4
-    },
-    "[\n\n\nHTML code",
-    {
-      "x": 10.5
-    },
-    "2\n\n\n<i class='fa fa-fast-backward'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "t": "#b81c1c"
-    },
-    "^",
-    {
-      "x": 1,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    "]\n\n\nHTML br",
-    {
-      "x": 8.5,
-      "t": "#b81c1c"
-    },
-    "1",
-    {
-      "x": 1,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    "3\n\n\n<i class='fa fa-fast-forward'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#b81c1c"
-    },
-    "~",
-    {
-      "x": 6.5
-    },
-    "&"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#000000",
-      "a": 7,
-      "w": 1.5
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "%",
-    {
-      "x": 14.5
-    },
-    "\\",
-    {
-      "t": "#000000",
-      "a": 7,
-      "w": 1.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "t": "#000000\n\n\n#529151",
-      "a": 4
-    },
-    "\n\n\nleft click",
-    {
-      "x": 10.5,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    ".\n\n\n<i class='fa fa-volume-down'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "t": "#000000",
-      "a": 7
-    },
-    "",
-    {
-      "x": 1,
-      "t": "#000000\n\n\n#529151",
-      "a": 4
-    },
-    "\n\n\nright click",
-    {
-      "x": 8.5,
-      "t": "#b81c1c\n\n\n#529151"
-    },
-    "?\n\n\n<i class='fa fa-volume-up'></i>",
-    {
-      "x": 1,
-      "t": "#b81c1c"
-    },
-    "0"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5,
-      "t": "#000000",
-      "a": 7
-    },
-    "",
-    {
-      "t": "#b81c1c",
-      "a": 4
-    },
-    "EPRM RST",
-    {
-      "x": 14.5,
-      "t": "#000000",
-      "a": 7
-    },
-    "",
-    ""
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1
-    },
-    "",
-    ""
-  ],
-  [
-    {
-      "t": "#000000\n\n\n#529151",
-      "a": 4,
-      "h": 2
-    },
-    "\n\n\nEnter",
-    {
-      "t": "#000000",
-      "a": 7,
-      "h": 2
-    },
-    "",
-    ""
-  ],
-  [
-    {
-      "x": 2
-    },
-    ""
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    "",
-    ""
-  ],
-  [
-    {
-      "x": -3
-    },
-    "",
-    {
-      "h": 2
-    },
-    "",
-    {
-      "t": "#000000\n\n\n#529151",
-      "a": 4,
-      "h": 2
-    },
-    "\n\n\nWeb back"
-  ],
-  [
-    {
-      "x": -3,
-      "t": "#000000",
-      "a": 7
-    },
-    ""
-  ]
-]
diff --git a/keyboards/ergodox/keymaps/swissgerman/keymap.c b/keyboards/ergodox/keymaps/swissgerman/keymap.c
deleted file mode 100644 (file)
index 2291fb6..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "string.h"
-
-#ifdef SUBPROJECT_infinity
-#include "visualizer/lcd_backlight.h"
-#endif
-
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-#define EPRM M(1) // Macro 1: Reset EEPROM
-#define HTML_LI M(10)
-#define HTML_UL M(11)
-#define HTML_OL M(12)
-#define HTML_CODE M(13)
-#define HTML_BR M(14)
-
-#define SEND_TAG(TAG) do {\
-    send_key(KC_NONUS_BSLASH); \
-    SEND_STRING(TAG); \
-    send_larger_than(); \
-    send_key(KC_NONUS_BSLASH); \
-    SEND_STRING("&"); \
-    SEND_STRING(TAG); \
-    send_larger_than(); \
-    go_back_based_on_tag(TAG); \
-  } while (0)
-
-#define SEND_SHORT_TAG(TAG) do {\
-    send_key(KC_NONUS_BSLASH); \
-    SEND_STRING(TAG); \
-    SEND_STRING("&"); \
-    send_larger_than();               \
-  } while (0)
-
-void send_key(uint16_t keycode);
-void go_back_based_on_tag(char* tag);
-void send_larger_than(void);
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   §    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   '    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Z  |   U  |   I  |   O  |   P  |   ü    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   | A /L2|   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |ö / L2|ä / Cmd |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
- * | LShift |Y/Ctrl|X/Alt |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |./Alt |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |< / L1|   ^  |   $  | Left | Right|                                       |  Up  | Down |AltGr |   ¨  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        LT(MDIA, KC_A),KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        CTL_T(KC_Z),  ALT_T(KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        LT(SYMB,KC_NONUS_BSLASH), KC_EQL, KC_BSLS,  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-       KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-       TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_LBRC,
-       KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-       MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,ALT_T(KC_DOT), CTL_T(KC_SLSH),   KC_RSFT,
-                             KC_UP,  KC_DOWN,KC_RALT,KC_RBRC, KC_FN1,
-             KC_LALT,CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      | EPRM |      |      |      |                                       |   ?  |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), ACTION_MODS_KEY(MOD_RALT, KC_2),  ACTION_MODS_KEY(MOD_RALT, KC_QUOT), ACTION_MODS_KEY(MOD_RALT, KC_BSLS),ACTION_MODS_KEY(MOD_RALT,KC_7),KC_TRNS,
-       KC_TRNS,ACTION_MODS_KEY(MOD_RALT,KC_3),KC_BSLS, ACTION_MODS_KEY(MOD_LSFT, KC_8), ACTION_MODS_KEY(MOD_RSFT, KC_9),ACTION_MODS_KEY(MOD_LSFT,KC_EQL),
-       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT,KC_5),KC_EQL, ACTION_MODS_KEY(MOD_RALT, KC_LBRC), ACTION_MODS_KEY(MOD_RALT, KC_RBRC),ACTION_MODS_KEY(MOD_RALT,KC_EQL),KC_TRNS,
-          KC_TRNS,EPRM,KC_TRNS,KC_NONUS_BSLASH, ACTION_MODS_KEY(MOD_LSFT, KC_NONUS_BSLASH)/*KC_TRNS,KC_TRNS*/,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    ACTION_MODS_KEY(MOD_RSFT,KC_3), KC_F12,
-       KC_DOWN, KC_4,   KC_5,    KC_6,    ACTION_MODS_KEY(MOD_RSFT,KC_1), KC_TRNS,
-       KC_TRNS, ACTION_MODS_KEY(MOD_RSFT,KC_6), KC_1,   KC_2,    KC_3,  ACTION_MODS_KEY(MOD_RALT,KC_NONUS_BSLASH), KC_TRNS,
-       ACTION_MODS_KEY(MOD_RSFT,KC_MINS),KC_DOT,  KC_0,   KC_EQL, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      | RESET  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |H_UL  |      |H_OL  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |H_LI  |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |H_CODE|      |H_BR  |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |Enter |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, HTML_CODE, KC_TRNS, HTML_BR, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_ENT, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
-       KC_TRNS,  KC_TRNS, HTML_UL, KC_TRNS, HTML_OL, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, HTML_LI, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-      case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      case 1:
-        if (record->event.pressed) { // For resetting EEPROM
-          eeconfig_init();
-        }
-        break;
-      case 10:
-       if (record->event.pressed) {
-         SEND_TAG("li");
-       }
-       break;
-      case 11:
-       if (record->event.pressed) {
-         SEND_TAG("ul");
-       }
-       break;
-      case 12:
-       if (record->event.pressed) {
-         SEND_TAG("ol");
-       }
-       break;
-      case 13:
-       if (record->event.pressed) {
-         SEND_TAG("code");
-       }
-       break;
-      case 14:
-       if (record->event.pressed) {
-         SEND_SHORT_TAG("br");
-       }
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-    case 0:
-      ergodox_board_led_off();
-      ergodox_right_led_1_off();
-      ergodox_right_led_2_off();
-      ergodox_right_led_3_off();
-
-      #ifdef SUBPROJECT_infinity
-      lcd_backlight_hal_color(0, 0, 0);
-      #endif
-      break;
-    case 1:
-      ergodox_right_led_1_on();
-
-      ergodox_board_led_off();
-      ergodox_right_led_2_off();
-      ergodox_right_led_3_off();
-      #ifdef SUBPROJECT_infinity
-      lcd_backlight_hal_color(5000, 0, 0);
-      #endif
-      break;
-    case 2:
-      ergodox_right_led_2_on();
-
-      ergodox_board_led_off();
-      ergodox_right_led_1_off();
-      ergodox_right_led_3_off();
-      #ifdef SUBPROJECT_infinity
-      lcd_backlight_hal_color(0, 5000, 0);
-      #endif
-      break;
-    default:
-            // none
-            break;
-    }
-
-};
-
-void send_key(uint16_t keycode) {
-  register_code(keycode);
-  unregister_code(keycode);
-}
-
-void go_back_based_on_tag(char* tag) {
-  const int BRACKETS_AND_SLASH_LENGTH = 3;
-  
-  for (int i=0; i < strlen(tag) + BRACKETS_AND_SLASH_LENGTH; i++) {
-    send_key(KC_LEFT);
-  }
-}
-
-void send_larger_than() {
-  register_code(KC_LSFT);
-  send_key(KC_NONUS_BSLASH);
-  unregister_code(KC_LSFT);
-}
diff --git a/keyboards/ergodox/keymaps/swissgerman/readme.md b/keyboards/ergodox/keymaps/swissgerman/readme.md
deleted file mode 100644 (file)
index fa7fc16..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# ErgoDox Swiss German Configuration
-
-Swiss German keyboard layout based on the Ergodox EZ default layout.
-
-Keyboard diagrams created with the [keyboard layout editor](http://www.keyboard-layout-editor.com).
-
-Diagram sources: [default layer](keyboard-layout.json), [layer 1 & 2](keyboard-layout_1_2.json)
-
-![Layout Layer 0](https://i.imgur.com/yf4HNXV.png)
-![Layout Layer 1&2](https://i.imgur.com/Q814cKa.png)
-
-## Changelog
-* Jan 21, 2017:
-  * Initial version based on default layout.
-
diff --git a/keyboards/ergodox/keymaps/techtomas/keymap.c b/keyboards/ergodox/keymaps/techtomas/keymap.c
deleted file mode 100644 (file)
index 93d59d4..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define APP 2 // app layer
-#define CNTL 3 // control layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  L2/`  |   1  |   2  |   3  |   4  |   5  |CmdSpc|           | -    |   6  |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | MEH/Tab|   Q  |   W  |   E  |   R  |   T  | [    |           | ]    |  Y   |   U  |   I  |   O  |   P  | MEH/\  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Hyp/Esc |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  | L2/; | Hyp/'  |
- * |--------+------+------+------+------+------| Tab  |           | STab |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | L2// | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |L1/Lft|L3/Rht| LCtl | LAlt | LGui |                                       | Rgui |  Up  |  Dn  |  L3  |  L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.       ,-------------.
- *                                         | LCtl | LGui |       |AltGui|ShfGui|
- *                                 ,-------|------|------|       |------+--------+------.
- *                                 |       |      |L1/Hom|       |L2/PUp|       |       |
- *                                 | Backsp|Delete|------|       |------| Enter | Space |
- *                                 |       |      |L3/End|       |L1/PDn|       |       |
- *                                 `--------------------'       `-----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        LT(APP,KC_GRV),   KC_1,                KC_2,    KC_3,    KC_4,    KC_5,   LGUI(KC_SPC),
-        MEH_T(KC_TAB),    KC_Q,                KC_W,    KC_E,    KC_R,    KC_T,   KC_LBRC,
-        ALL_T(KC_ESC),    KC_A,                KC_S,    KC_D,    KC_F,    KC_G,
-        KC_LSFT,          KC_Z,                KC_X,    KC_C,    KC_V,    KC_B,   KC_TAB,
-        LT(SYMB,KC_LEFT), LT(CNTL,KC_RIGHT),   KC_LCTL, KC_LALT, KC_LGUI,
-                                                                    KC_LCTL,   KC_LGUI,
-                                                                               LT(SYMB,KC_HOME),
-                                                           KC_BSPC, KC_DELETE, LT(CNTL,KC_END),
-        // right hand
-       KC_MINS,          KC_6,    KC_7,    KC_8,     KC_9,      KC_0,             KC_EQL,
-       KC_RBRC,          KC_Y,    KC_U,    KC_I,     KC_O,      KC_P,             MEH_T(KC_BSLS),
-                         KC_H,    KC_J,    KC_K,     KC_L,      LT(APP,KC_SCLN),  ALL_T(KC_QUOT),
-       S(KC_TAB),        KC_N,    KC_M,    KC_COMM,  KC_DOT,    LT(APP,KC_SLSH),  KC_RSFT,
-                                  KC_RGUI, KC_UP,    KC_DOWN,   KC_FN3,           KC_FN1,
-       LALT(KC_LGUI),    S(KC_LGUI),
-       LT(APP,KC_PGUP),
-       LT(SYMB,KC_PGDN), KC_ENT, KC_SPC
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           | Tab  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |  <   |           |  >   |   :  |   7  |   8  |   9  |   /  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------|   ;  |   4  |   5  |   6  |   *  |        |
- * |--------+------+------+------+------+------|  F14 |           | F15  |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   -  |  Entr  |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0   |   . |  =   |   +  |       |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,S(KC_COMM),
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_F14,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TAB,    KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       S(KC_DOT), KC_COLN, KC_7,   KC_8,    KC_9,    KC_BSLS, KC_F12,
-                  KC_SCLN, KC_4,   KC_5,    KC_6,    KC_ASTR, KC_TRNS,
-       KC_F15,    KC_AMPR, KC_1,   KC_2,    KC_3,    KC_MINS, KC_ENT,
-                           KC_0,   KC_DOT,  KC_EQL,  KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: App Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        | CmdQ | CmdW |      |      |      | Stab |           | Play | Prev | Next |      |      |PrtSc |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------| VolDn|VolUp |      |      |      |        |
- * |--------+------+------+------+------+------|      |           | Mute |------+------+------+------+------+--------|
- * |        | CmdZ | CmdX | CmdC | CmdY | CtrlC|      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Control
-[APP] = KEYMAP(
-       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS, LGUI(KC_Q), LGUI(KC_W), KC_TRNS,    KC_TRNS,    KC_TRNS,    S(KC_TAB),
-       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LCTL(KC_C), KC_TRNS,
-       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
-                                              KC_TRNS,  KC_TRNS,
-                                                        KC_TRNS,
-                                      KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_MPLY,  KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS,
-                 KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_MUTE,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 3: Control Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Pwr   |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght| Lclk |------|           |------|  Lft | Down | Up   | Right|      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      | Rclk |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Shift|      |       | Home | End  |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | LAtl |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// Control
-[CNTL] = KEYMAP(
-       KC_PWR,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_LSFT, KC_TRNS,
-                                                    KC_LALT,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_HOME, KC_END,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
-    [2] = ACTION_LAYER_TAP_TOGGLE(APP),
-    [3] = ACTION_LAYER_TAP_TOGGLE(CNTL)             // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-          ergodox_right_led_3_on();
-          break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/techtomas/readme.md b/keyboards/ergodox/keymaps/techtomas/readme.md
deleted file mode 100644 (file)
index 36e0591..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-# Techtomas Configuration
-
-## Base Layer
-
-The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac.
-
-* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
-* The Tab key toggles MEH.
-* The top vertical mods on the left and right are [ and ].
-* The bottom vertical mods on the left and right are tab and shift+tab
-* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy.
-* Layer switching is focused around the thumb clusters plus some additional locations for convience.
-
-## Symbol Layer
-The symbol layer can be tap/toggled with the bottom right key and also toggled on the thumb clusters.
-
-The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac
-
-## App Layer
-The app layer is used to control media playback and also some application shortcuts (OS X Focused).
-It can be toggled on the left board in the top left corner (tilde/grave) or using your pinky on the right side of the board using either ; or /.
-There is one additional toggle on the right thumb cluster for quick access to play and mute key combos.
-
-### Current App shortcuts defined
-* Q = CMD+Q
-* W = CMD+W
-* Z = CMD+Z
-* X = CMD+X
-* C = CMD+C
-* V = CMD+V
-* B = CTRL+C
-* P = Print Screen
-
-## Control Layer
-The control layer is meant to help easily navigate and select text. It can also be stacked ontop of the Symbol layer when needed.
-
-The right arrow key and End key toggle the control layer on the left board. There is also a tap toggle for the layer in the same position on the right side of the board.
-
-On the left board you have mouse control with left & right click in the location of the G and B keys.
-On the right board you have vim-style arrow keys using hjkl
-
-The left thumb cluster moves shift and alt within easy reach while holding the toggle (end). So far I've found this convient to navigate and  skip around text when using the hjkl arrow keys. I found that it was easy to get the alt key stuck on depending on what key you released first so I added the PREVENT_STUCK_MODIFIERS to the config.h to help with that.
-
-## Changelog
-
-* May 4th, 2016 (v1.2):
-  * Moved layer toggles around to match my habbits of typing
-  * Enabled Prevent Stuck Modifers in my config.h (L3 + Alt on cluster would get stuck)
-  * Changed media layer to be more like an app layer with some quick shortcuts (mac centric)
-  * Moved around the base layer arrow keys so mod keys were more accesible
-
-* Apr 29, 2016 (V1.1):
-  * Added F14 and F15 to symbol layer
-  * Added control layer toggle to A key.
-
-* Apr 28, 2016 (V1.0):
-  * Modified config based on the default layout plus inspiration from the ordinary layout
diff --git a/keyboards/ergodox/keymaps/teckinesis/keymap.c b/keyboards/ergodox/keymaps/teckinesis/keymap.c
deleted file mode 100644 (file)
index 2837874..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-#include "ergodox.h"
-#include "led.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "mousekey.h"
-
-#define BASE   0 // default layer
-#define SYMB   1 // symbols layer
-#define MDIA   2 // media layer
-#define SPEC   3 // special layer
-
-#define LCaps 10 // left caps-shift key
-#define LSymb 11 // left symbol-shift key
-#define LMdia 12 // left media-shift key
-#define LSpec 13 // left special-shift key
-#define RCaps 14 // right caps-shift key
-#define RSymb 15 // right symbol-shift key
-#define RMdia 16 // right media-shift key
-#define RSpec 17 // right special-shift key
-
-#define MUL   20 // mouse up left
-#define MUR   21 // mouse up right
-#define MDL   22 // mouse down left
-#define MDR   23 // mouse down right
-
-/*
- * teckinesis layout for ErgoDox (EZ)
- * 
- * Modifications from The Ordinary Layout v4 by Will Wolff-Myren willwm@gmail.com
- * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
- *
- * No rights reserved. This software is in the public domain.
- * Credit me if you are friendly but if you're a jerk don't bother.
- * 
- * Details: readme.md
- *          https://github.com/willwm/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/teckinesis
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/******* Base Layer ********************************************************************************************************
- *
- * ,------------------------------------------------------.           ,------------------------------------------------------.
- * | Special =+ |   1  |   2  |   3  |   4  |   5  | ESC  |           |  `   |   6  |   7  |   8  |   9  |   0  | -_ Special |
- * |------------+------+------+------+------+-------------|           |------+------+------+------+------+------+------------|
- * | Media  Tab |   Q  |   W  |   E  |   R  |   T  |   [  |           |  ]   |   Y  |   U  |   I  |   O  |   P  | \|   Media |
- * |------------+------+------+------+------+------|      |           |      |------+------+------+------+------+------------|
- * | Symbol     |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;   | '"  Symbol |
- * |------------+------+------+------+------+------|Shift |           | Tab  |------+------+------+------+------+------------|
- * | Capitals   |   Z  |   X  |   C  |   V  |   B  | -Tab |           |      |   N  |   M  |   ,  |   .  |  /   |   Capitals |
- * `------------+------+------+------+------+-------------'           `-------------+------+------+------+------+------------'
- *      | LCtrl |Meh/\ |Hypr//| LAlt | LGui |                                       | RGui | RAlt |Hypr/[|Meh/] | RCtrl |
- *      `-----------------------------------'                                       `-----------------------------------'
- *                                          ,-------------.           ,-------------.
- *                                          | Home | End  |           | Left | Right|
- *                                   ,------|------|------|           |------+------+------.
- *                                   |      |      | PgUp |           |  Up  |      |      |
- *                                   |Backsp| Del  |------|           |------| Enter| Space|
- *                                   |      |      | PgDn |           | Down |      |      |
- *                                   `--------------------'           `--------------------'
- */
-[BASE] = KEYMAP(
-// left hand
- F(LSpec),KC_1,KC_2,KC_3   ,KC_4  ,KC_5  ,KC_ESC
-,F(LMdia)  ,KC_Q   ,KC_W   ,KC_E   ,KC_R  ,KC_T  ,KC_LBRC
-,M(LSymb)  ,KC_A   ,KC_S   ,KC_D   ,KC_F  ,KC_G
-,M(LCaps)  ,KC_Z   ,KC_X   ,KC_C   ,KC_V  ,KC_B  ,LSFT(KC_TAB)
-,KC_LCTL,MEH_T(KC_BSLS),ALL_T(KC_SLSH),KC_LALT,KC_LGUI
-                                         ,KC_HOME,KC_END
-                                                 ,KC_PGUP
-                                 ,KC_BSPC,KC_DEL ,KC_PGDN
-                                                                      // right hand
-                                                                     ,KC_GRV  ,KC_6   ,KC_7   ,KC_8   ,KC_9    ,KC_0     ,F(RSpec)
-                                                                     ,KC_RBRC ,KC_Y   ,KC_U   ,KC_I   ,KC_O    ,KC_P     ,F(RMdia)
-                                                                              ,KC_H   ,KC_J   ,KC_K   ,KC_L    ,KC_SCLN  ,F(RSymb)
-                                                                     ,KC_TAB  ,KC_N   ,KC_M   ,KC_COMM,KC_DOT  ,KC_SLSH  ,M(RCaps)
-                                                                                      ,KC_RGUI,KC_RALT,ALL_T(KC_LBRC),MEH_T(KC_RBRC),KC_RCTL
-                                                                     ,KC_LEFT ,KC_RGHT
-                                                                     ,KC_UP
-                                                                     ,KC_DOWN ,KC_ENT ,KC_SPC
-    ),
-
-/******* Symbols Layer *****************************************************************************************************
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |  F1  |  F2  |  F3  |  F4  |  F5  | Esc  |           |  -   |  F6  |  F7  |  F8  |  F9  |  F10 |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |   !  |   @  |   {  |   }  |   &  |  <   |           |  >   |   |  |   7  |   8  |   9  |   /  |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |   #  |   $  |   (  |   )  |   `  |------|           |------|   /  |   4  |   5  |   6  |   *  |           |
- * |-----------+------+------+------+------+------| Tab  |           | Shift|------+------+------+------+------+-----------|
- * |           |   %  |   ^  |   [  |   ]  |   ~  |      |           |  -Tab|   \  |   1  |   2  |   3  |   -  |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     | LCtrl | Meh  |Hyper | LAlt | LGui |                                       |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent|
- *     `-----------------------------------'                                       `-------------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | Left | Right|           | Home | End  |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |  Up  |           | PgUp |      |      |
- *                                  |Space |Enter |------|           |------|BackSp| Del  |
- *                                  |      |      | Down |           | PgDn |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[SYMB] = KEYMAP(
-// left hand
- KC_TRNS ,KC_F1   ,KC_F2   ,KC_F3   ,KC_F4   ,KC_F5   ,KC_ESC
-,KC_TRNS ,KC_EXLM ,KC_AT   ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
-,KC_TRNS ,KC_HASH ,KC_DLR  ,KC_LPRN ,KC_RPRN ,KC_GRV 
-,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
-,KC_LCTL ,KC_MEH  ,KC_HYPR ,KC_LALT ,KC_LGUI
-                                             ,KC_LEFT ,KC_RGHT
-                                                      ,KC_UP
-                                    ,KC_SPC  ,KC_ENT  ,KC_DOWN
-                                                                     // right hand
-                                                                     ,KC_MINS     ,KC_F6   ,KC_F7 ,KC_F8  ,KC_F9 ,KC_F10  ,KC_TRNS
-                                                                     ,LSFT(KC_DOT),KC_PIPE ,KC_7  ,KC_8   ,KC_9  ,KC_SLSH ,KC_TRNS
-                                                                                  ,KC_SLSH ,KC_4  ,KC_5   ,KC_6  ,KC_ASTR ,KC_TRNS
-                                                                     ,LSFT(KC_TAB),KC_BSLS ,KC_1  ,KC_2   ,KC_3  ,KC_MINS ,KC_TRNS
-                                                                                           ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT)
-                                                                     ,KC_HOME     ,KC_END
-                                                                     ,KC_PGUP
-                                                                     ,KC_PGDN     ,KC_BSPC ,KC_DEL
-),
-
-/******* Media Layer *******************************************************************************************************
- *
- * ,---------------------------------------------------------------.           ,---------------------------------------------------------------.
- * |      |   F11   |   F12   |   F13   |   F14   |   F15   | Esc  |           |      |   F16   |   F17   |   F18   |   F19   |   F20   |      |
- * |------+---------+---------+---------+---------+----------------|           |------+---------+---------+---------+---------+---------+------|
- * |      |         |MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll|           |Scroll|PrintScrn|   Home  |    Up   |   PgUp  |         |      |
- * |------+---------+---------+---------+---------+---------|  Up  |           |  Up  |---------+---------+---------+---------+---------+------|
- * |      |         |MouseLeft|MouseDown|MouseRght|Volume Dn|------|           |------| Num Lock|   Left  |   Down  |   Right |         |      |
- * |------+---------+---------+---------+---------+---------|Scroll|           |Scroll|---------+---------+---------+---------+---------+------|
- * |      |         |MouseDnLf|MouseDown|MouseDnRg|  Mute   | Down |           | Down |         |   End   |   Down  |   PgDn  |         |      |
- * `------+---------+---------+---------+---------+----------------'           `----------------+---------+---------+---------+---------+------'
- *  |LCtrl|   Meh   |  MClick | LClick  |  R Click|                                             |Cmd/Insrt|Optn/Del | Hyper   |  Meh    |RCtrl|
- *  `---------------------------------------------'                                             `---------------------------------------------'
- *                                                   ,-------------.           ,-------------.
- *                                                   | Stop |Refrsh|           | Prev | Next |
- *                                            ,------|------|------|           |------+------+------.
- *                                            |Brwser|Brwser|Search|           |VolUp |      |      |
- *                                            |Back  | Fwd  |------|           |------| Stop | Play-|
- *                                            |      |      | Home |           |VolDn |      | Pause|
- *                                            `--------------------'           `--------------------'
- */
-[MDIA] = KEYMAP(
-// left hand
- KC_TRNS ,KC_F11   ,KC_F12  ,KC_F13   ,KC_F14  ,KC_F15  ,KC_ESC
-,KC_TRNS ,KC_NO    ,M(MUL)  ,KC_MS_U  ,M(MUR)  ,KC_VOLU ,KC_WH_U
-,KC_TRNS ,KC_NO    ,KC_MS_L ,KC_MS_D  ,KC_MS_R ,KC_VOLD
-,KC_TRNS ,KC_NO    ,M(MDL)  ,KC_MS_D  ,M(MDR)  ,KC_MUTE ,KC_WH_D
-,KC_LCTL ,KC_MEH   ,KC_BTN3 ,KC_BTN1  ,KC_BTN2
-                                               ,KC_WSTP ,KC_WREF
-                                                        ,KC_WSCH
-                                      ,KC_WBAK ,KC_NO   ,KC_WHOM
-                                                                     // right hand
-                                                                     ,KC_NO    ,KC_F16  ,KC_F17       ,KC_F18       ,KC_F19  ,KC_F20  ,KC_TRNS
-                                                                     ,KC_WH_U  ,KC_PSCR ,KC_HOME      ,KC_UP        ,KC_PGUP ,KC_NO   ,KC_TRNS
-                                                                               ,KC_NLCK ,KC_LEFT      ,KC_DOWN      ,KC_RIGHT,KC_NO   ,KC_TRNS
-                                                                     ,KC_WH_D  ,KC_NO   ,KC_END       ,KC_DOWN      ,KC_PGDN ,KC_NO   ,KC_TRNS
-                                                                                        ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH  ,KC_RCTL
-                                                                     ,KC_MPRV  ,KC_MNXT
-                                                                     ,KC_VOLU
-                                                                     ,KC_VOLD  ,KC_MSTP ,KC_MPLY
-),
-
-/******* Special Layer *****************************************************************************************************
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |  Esc |      |      |      |      |      |           |      |      |      |      |      | Bspc |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      | RShift    |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  |      |      |------|           |------|      |      |
- *                                  |      |      |      |           |      |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[SPEC] = KEYMAP(
-// left hand
- KC_TRNS ,KC_ESC  ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
-                                             ,KC_TRNS ,KC_TRNS
-                                                      ,KC_TRNS
-                                     ,KC_TRNS,KC_TRNS ,KC_TRNS
-                                                                     // right hand
-                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS
-                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                                              ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT
-                                                                                       ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
-                                                                     ,KC_TRNS ,KC_TRNS
-                                                                     ,KC_TRNS
-                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS
-    )
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-     // the faux shift keys are implemented as macro taps
-     [LCaps] = ACTION_MACRO_TAP(LCaps)
-    ,[LSymb] = ACTION_MACRO_TAP(LSymb)
-    ,[LMdia] = ACTION_MACRO_TAP(LMdia)
-    ,[LSpec] = ACTION_MACRO_TAP(LSpec)
-    ,[RCaps] = ACTION_MACRO_TAP(RCaps)
-    ,[RSymb] = ACTION_MACRO_TAP(RSymb)
-    ,[RMdia] = ACTION_MACRO_TAP(RMdia)
-    ,[RSpec] = ACTION_MACRO_TAP(RSpec)
-};
-
-uint16_t caps_shift = 0;
-uint16_t symb_shift = 0;
-uint16_t mdia_shift = 0;
-
-bool symb_lock = false;
-bool mdia_lock = false;
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch(id) {
-        // There are two shift keys for each layer so we increment a layer_shift var when one
-        // is pressed and decrement when one is released. If both are pressed at the same time
-        // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
-        // only because sometimes rapid pressing led to irregular events; this way the states
-        // are self healing during use.
-
-        case LCaps: // both caps-shift keys trigger Left Shift
-        case RCaps: // so they don't interfere with the magic combo
-        if (record->event.pressed && !record->tap.count) {
-            if(++caps_shift > 2) caps_shift = 2;
-            if(caps_shift == 2)  {
-                register_code(KC_CAPS);
-                unregister_code(KC_CAPS);
-            } else if(caps_shift == 1) {
-                register_code(KC_LSFT);
-            }
-        } else {
-            if(--caps_shift < 0) caps_shift = 0;
-            if(caps_shift == 0) unregister_code(KC_LSFT);
-        }
-        break;
-
-        case LSymb:
-        if (record->event.pressed) {
-            if(++symb_shift > 2) symb_shift = 2;
-            if(symb_shift == 2)  {
-                symb_lock = !symb_lock;
-            } else if(symb_shift == 1) {
-                layer_on(SYMB);
-            }
-        } else {
-            if(--symb_shift < 0) symb_shift = 0;
-            if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
-        }
-        break;
-
-        case LMdia:
-        if (record->event.pressed) {
-            if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
-                register_code(KC_TAB);
-            } else {
-                if(++mdia_shift > 2) mdia_shift = 2;
-                if(mdia_shift == 2)  {
-                    mdia_lock = !mdia_lock;
-                } else if(mdia_shift == 1) {
-                    layer_on(MDIA);
-                }
-            }
-        } else {
-            if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
-                unregister_code(KC_TAB);
-            } else {
-                if(--mdia_shift < 0) mdia_shift = 0;
-                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
-            }
-        }
-        break;
-
-        case LSpec:
-        if (record->event.pressed) {
-            if (record->tap.count && !record->tap.interrupted) {
-                register_code(KC_EQL);
-            } else {
-                layer_on(SPEC);
-            }
-        } else {
-            if(record->tap.count && !record->tap.interrupted) {
-                unregister_code(KC_EQL);
-            } else {
-                layer_off(SPEC);
-            }
-        }
-        break;
-
-        case RSymb:
-        if (record->event.pressed) {
-            if (record->tap.count && (!symb_shift) && (!symb_lock)) {
-                register_code(KC_QUOT);
-            } else {
-                if(++symb_shift > 2) symb_shift = 2;
-                if(symb_shift == 2)  {
-                    symb_lock = !symb_lock;
-                } else if(symb_shift == 1) {
-                    layer_on(SYMB);
-                }
-            }
-        } else {
-            if(record->tap.count && symb_shift == 0) {
-                unregister_code(KC_QUOT);
-            } else {
-                if(--symb_shift < 0) symb_shift = 0;
-                if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
-            }
-        }
-        break;
-
-        case RMdia:
-        if (record->event.pressed) {
-            if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
-                register_code(KC_BSLS);
-            } else {
-                if(++mdia_shift > 2) mdia_shift = 2;
-                if(mdia_shift == 2)  {
-                    mdia_lock = !mdia_lock;
-                } else if(mdia_shift == 1) {
-                    layer_on(MDIA);
-                }
-            }
-        } else {
-            if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
-                unregister_code(KC_BSLS);
-            } else {
-                if(--mdia_shift < 0) mdia_shift = 0;
-                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
-            }
-        }
-        break;
-
-        case RSpec:
-        if (record->event.pressed) {
-            if (record->tap.count && !record->tap.interrupted) {
-                register_code(KC_MINS);
-            } else {
-                layer_on(SPEC);
-            }
-        } else {
-            if(record->tap.count && !record->tap.interrupted) {
-                unregister_code(KC_MINS);
-            } else {
-                layer_off(SPEC);
-            }
-        }
-        break;
-
-        // mouse diagonals
-
-        case MUL: // mouse up left
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_UP);
-            mousekey_on(KC_MS_LEFT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_UP);
-            mousekey_off(KC_MS_LEFT);
-            mousekey_send();
-        }
-        break;
-
-        case MUR: // mouse up right
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_UP);
-            mousekey_on(KC_MS_RIGHT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_UP);
-            mousekey_off(KC_MS_RIGHT);
-            mousekey_send();
-        }
-        break;
-
-        case MDL: // mouse down left
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_DOWN);
-            mousekey_on(KC_MS_LEFT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_DOWN);
-            mousekey_off(KC_MS_LEFT);
-            mousekey_send();
-        }
-        break;
-
-        case MDR: // mouse down right
-        if (record->event.pressed) {
-            mousekey_on(KC_MS_DOWN);
-            mousekey_on(KC_MS_RIGHT);
-            mousekey_send();
-        } else {
-            mousekey_off(KC_MS_DOWN);
-            mousekey_off(KC_MS_RIGHT);
-            mousekey_send();
-        }
-        break;
-
-        default:
-            // none
-            break;
-    }
-    
-    return MACRO_NONE;
-};
-
-// 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) {
-    // shift or caps lock turns on red light
-    if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
-        ergodox_right_led_1_on();
-    } else {
-        ergodox_right_led_1_off();
-    }
-
-    // Symbol layer turns on green light
-    if(layer_state & (1UL<<SYMB)) {
-        ergodox_right_led_2_on();
-    } else {
-        ergodox_right_led_2_off();
-    }
-
-    // Media layer turns on blue light
-    if(layer_state & (1UL<<MDIA)) {
-        ergodox_right_led_3_on();
-    } else {
-        ergodox_right_led_3_off();
-    }
-};
-
diff --git a/keyboards/ergodox/keymaps/teckinesis/ordinary-special.png.md b/keyboards/ergodox/keymaps/teckinesis/ordinary-special.png.md
deleted file mode 100644 (file)
index 20b8761..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://i.imgur.com/p3y6E8F.png
diff --git a/keyboards/ergodox/keymaps/teckinesis/ordinary-special.txt b/keyboards/ergodox/keymaps/teckinesis/ordinary-special.txt
deleted file mode 100644 (file)
index a08827c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[{x:3.5,a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
-[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
-[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
-[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
-[{y:-0.375,x:3.5},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{x:6.5},""],
-[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
-[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
-[{y:-0.75,x:3.5},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.875,x:5.5},"",{x:6.5},""],
-[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
-[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
-[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
-[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
-[{h:2},"",{h:2},"",""],
-[{x:2},""],
-[{r:-30,rx:13,y:-1,x:-3},"",""],
-[{x:-3},"",{h:2},"",{h:2},""],
-[{x:-3},""]
-
diff --git a/keyboards/ergodox/keymaps/teckinesis/readme.md b/keyboards/ergodox/keymaps/teckinesis/readme.md
deleted file mode 100644 (file)
index 6804bb0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# teckinesis Layout
-
-*A blend of TECK and Kinesis layouts, based on ["The Ordinary Layout" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*
-
-I love "The Ordinary Layout", but I still use a [TECK](https://www.trulyergonomic.com/store/index.php)
-at the office, and I found the transition back and forth to be a bit more difficult than I expected.
-
-This layout consists of only slight changes to "The Ordinary Layout" based on the layouts of the 
-[(original) TECK Model 209](https://www.trulyergonomic.com/store/layout-designer--configurator--reprogrammable--truly-ergonomic-mechanical-keyboard/#KTo7PD0+P0BBQkNERUw5394rNR4fICEi4yMkJSYnLS4xOBQaCBUXTBwYDBITLzDhBBYHCQorCw0ODzPl4B0bBhkFKhEQNjc05OPiSktOTSwoLFBSUU/mZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX2BhAFZXAAAAAAAAAAAAXF1eVAAAAAAAAAAAAABZWltVAAAAAAAAAAAAYgBjAAAAAAAAAAAAWFcAAAAAAACTAQAMAiMBAAwBigEADAIhAQAMAZQBAAwBkgEADAGDAQAMALYBAAwAzQEADAC1AQAMAOIBAAwA6gEADADpAQAMALhJAEYAAAAAAEitR64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk6Ozw9Pj9AQUJDREVMOd/eKzUeHyAhIuMjJCUmJy0uMTgUGggVF0wcGAwSEy8w4QQWBwkKKwsNDg8z5eMdGwYZBSoREDY3NOfg4kpLTk0sKCxQUlFP5uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9gYQBWVwAAAAAAAAAAAFxdXlQAAAAAAAAAAAAAWVpbVQAAAAAAAAAAAGIAYwAAAAAAAAAAAFhXAAAAAAAAkwEADAIjAQAMAYoBAAwCIQEADAGUAQAMAZIBAAwBgwEADAC2AQAMAM0BAAwAtQEADADiAQAMAOoBAAwA6QEADAC4SQBGAAAAAABIrUeuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) and 
-the [Kinesis Advantage](http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf)
-
-## The Base Layout ##
-
-[teckinesis (Base Layer)](http://www.keyboard-layout-editor.com/#/gists/befd4c5800d92114aa9e50d4f7c0dfb0)
-![teckinesis base layout](https://i.imgur.com/DeehOSY.png)
-
-### Changes from The Ordinary Layout ###
-
-* Moved KC_MINS from the key left of the 6 to the RSpec key.
-* Moved KC_EQL from RSpec to LSpec.
-* Moved KC_GRV from LSpec to the key left of the 6.
-* Mdded KC_BSLS to the left Meh key.
-* Added KC_SLSH to the left Hyper key.
-* Added KC_LBRC to the right Hyper key.
-* Added KC_RBRC to the right Meh key.
-
-## The Symbols Layer ##
-
-[teckinesis (Symbols Layer)](http://www.keyboard-layout-editor.com/#/gists/e6ddc4e9e0d194b3e52ac0616238ab61)
-![teckinesis symbols layout](https://i.imgur.com/u8faqMq.png)
-
-### Changes from The Ordinary Layout ###
-
-* None.
-
-## The Media Layer ##
-
-[teckinesis (Media Layer)](http://www.keyboard-layout-editor.com/#/gists/41ff65e6a7c490211fd6702fb34d9908)
-![teckinesis media layout](https://i.imgur.com/NgdJkuh.png)
-
-### Changes from The Ordinary Layout ###
-
-* Removed Power, Sleep, Mail, My Computer keys.
-(I kept hitting these while using the mouse/cursor. =P)
-
diff --git a/keyboards/ergodox/keymaps/teckinesis/teckinesis-base.json b/keyboards/ergodox/keymaps/teckinesis/teckinesis-base.json
deleted file mode 100644 (file)
index 69fe28c..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-[
-  {
-    "name": "teckinesis (Base Layer)",
-    "author": "Will Wolff-Myren",
-    "notes": "# teckinesis Layout # \r\n\r\n*A blend of TECK and Kinesis layouts, based on [\"The Ordinary Layout\" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*\r\n\r\n## The Base Layout ##\r\n\r\n![teckinesis base layout](teckinesis-base.png)\r\n\r\n## The Symbols Layer ##\r\n\r\n![teckinesis symbols layout](teckinesis-symbol.png)\r\n\r\n## The Media Layer ##\r\n\r\n(placeholder)\r\n",
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Tea"
-  },
-  [
-    {
-      "x": 3.5
-    },
-    "#\n3",
-    {
-      "x": 10.5
-    },
-    "*\n8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n2",
-    {
-      "x": 1
-    },
-    "$\n4",
-    {
-      "x": 8.5
-    },
-    "&\n7",
-    {
-      "x": 1
-    },
-    "(\n9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "%\n5",
-    {
-      "c": "#ff4444"
-    },
-    "Esc",
-    {
-      "x": 4.5,
-      "c": "#cccccc"
-    },
-    "~\n`",
-    "^\n6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Special\n\n+\n\n\n\nShift\n=",
-    {
-      "c": "#cccccc"
-    },
-    "!\n1",
-    {
-      "x": 14.5
-    },
-    ")\n0",
-    {
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "_\n\nSpecial\n\n\n\n-\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#cccccc"
-    },
-    "E",
-    {
-      "x": 10.5
-    },
-    "I"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "W",
-    {
-      "x": 1
-    },
-    "R",
-    {
-      "x": 8.5
-    },
-    "U",
-    {
-      "x": 1
-    },
-    "O"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "T",
-    {
-      "h": 1.5
-    },
-    "{\n\n\n\n\n\n[",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "}\n\n\n\n\n\n]",
-    "Y"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "fa": [
-        0,
-        0,
-        4
-      ],
-      "w": 1.5
-    },
-    "Media\n\n<i class='kb kb-Line-Start-End'></i>\n\n\n\nShift",
-    {
-      "c": "#cccccc"
-    },
-    "Q",
-    {
-      "x": 14.5
-    },
-    "P",
-    {
-      "c": "#2277ff",
-      "f": 3,
-      "w": 1.5
-    },
-    "|\n\\\nMedia\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#cccccc"
-    },
-    "D",
-    {
-      "x": 10.5
-    },
-    "K"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "S",
-    {
-      "x": 1
-    },
-    "F",
-    {
-      "x": 8.5
-    },
-    "J",
-    {
-      "x": 1
-    },
-    "L"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "G",
-    {
-      "x": 6.5
-    },
-    "H"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Symbols\n\n\n\n\n\nShift",
-    {
-      "c": "#cccccc"
-    },
-    "A",
-    {
-      "x": 14.5
-    },
-    ":\n;",
-    {
-      "c": "#2277ff",
-      "f": 3,
-      "w": 1.5
-    },
-    "\"\n'\nSymbols\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "c": "#54d6de",
-      "fa": [
-        0,
-        0,
-        4,
-        1
-      ],
-      "h": 1.5
-    },
-    "< Tab\n\n\nShift Tab",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "Tab >\n\n\nTab"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "c": "#cccccc"
-    },
-    "C",
-    {
-      "x": 10.5
-    },
-    "<\n,"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "X",
-    {
-      "x": 1
-    },
-    "V",
-    {
-      "x": 8.5
-    },
-    "M",
-    {
-      "x": 1
-    },
-    ">\n."
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "B",
-    {
-      "x": 6.5
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Capitals\n\n\n\n\n\nShift",
-    {
-      "c": "#cccccc"
-    },
-    "Z",
-    {
-      "x": 14.5
-    },
-    "?\n/",
-    {
-      "c": "#2277ff",
-      "f": 3,
-      "w": 1.5
-    },
-    "\n\nCapitals\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#77aaff",
-      "fa": [
-        5,
-        0,
-        4,
-        1
-      ]
-    },
-    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
-    {
-      "x": 10.5
-    },
-    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nRAlt"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "fa": [
-        5,
-        1
-      ]
-    },
-    "\nHyper\n?\n/",
-    {
-      "x": 1,
-      "fa": [
-        5,
-        1,
-        0,
-        1
-      ]
-    },
-    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
-    {
-      "x": 8.5
-    },
-    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
-    {
-      "x": 1,
-      "fa": [
-        0,
-        0,
-        0,
-        1
-      ]
-    },
-    "{\n[\n\nHyper"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5
-    },
-    "Ctrl\n\n\nLCtrl",
-    {
-      "f2": 1
-    },
-    "\nMeh\n|\n\\",
-    {
-      "x": 14.5,
-      "fa": [
-        0,
-        0,
-        1,
-        1
-      ]
-    },
-    "}\n]\n\nMeh",
-    "Ctrl\n\n\nRCtrl"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "c": "#54d6de"
-    },
-    "Home",
-    "End"
-  ],
-  [
-    {
-      "h": 2
-    },
-    "< Del\n\n\nBackspace",
-    {
-      "h": 2
-    },
-    "Del >\n\n\nDelete",
-    "Page\n\n\n\n\n\nUp"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "Page\n\n\n\n\n\nDown"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    "Left",
-    "Right"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "Up",
-    {
-      "h": 2
-    },
-    "Enter",
-    {
-      "h": 2
-    },
-    "Space"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "Down"
-  ]
-]
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/teckinesis/teckinesis-media.json b/keyboards/ergodox/keymaps/teckinesis/teckinesis-media.json
deleted file mode 100644 (file)
index 65fe394..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-[
-  {
-    "name": "teckinesis (MediaLayer)",
-    "author": "Will Wolff-Myren",
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Tea"
-  },
-  [
-    {
-      "x": 3.5,
-      "c": "#99de2a"
-    },
-    "F13",
-    {
-      "x": 10.5
-    },
-    "F18"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "F12",
-    {
-      "x": 1
-    },
-    "F14",
-    {
-      "x": 8.5
-    },
-    "F17",
-    {
-      "x": 1
-    },
-    "F19"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "F15",
-    {
-      "c": "#ff4444"
-    },
-    "Esc",
-    {
-      "x": 4.5
-    },
-    "Esc",
-    {
-      "c": "#99de2a"
-    },
-    "F16"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 1.5
-    },
-    "F11",
-    {
-      "x": 14.5
-    },
-    "F20"
-  ],
-  [
-    {
-      "y": -0.995,
-      "c": "#000000",
-      "t": "#ff0000",
-      "w": 1.5
-    },
-    "Media\n\n\n\n\n\nShift",
-    {
-      "x": 16.5,
-      "w": 1.5
-    },
-    "\n\nMedia\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.3799999999999999,
-      "x": 3.5,
-      "c": "#ff8500",
-      "t": "#000000"
-    },
-    "Mouse\n\n\n\n\n\nUp",
-    {
-      "x": 10.5
-    },
-    "Cursor\n\n\n\n\n\nUp"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "Mouse\n\n\n\n\n\nUpLeft",
-    {
-      "x": 1
-    },
-    "Mouse\n\n\n\n\n\nUpRgt",
-    {
-      "x": 8.5,
-      "c": "#ffb063"
-    },
-    "Home",
-    {
-      "x": 1
-    },
-    "Page\n\n\n\n\n\nUp"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#e6e067"
-    },
-    "Vol\n\n\n\n\n\nUp",
-    {
-      "c": "#ffb063",
-      "h": 1.5
-    },
-    "Scroll\n\n\n\n\n\nUp",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "Scroll\n\n\n\n\n\nUp",
-    {
-      "c": "#e6e067"
-    },
-    "Print\n\n\n\n\n\nScreen"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 1.5,
-      "c": "#737373",
-      "a": 7
-    },
-    "",
-    {
-      "x": 14.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.9950000000000001,
-      "c": "#2277ff",
-      "a": 4,
-      "w": 1.5
-    },
-    "Symbols\n\n\n\n\n\nShift",
-    {
-      "x": 16.5,
-      "w": 1.5
-    },
-    "\n\nSymbols\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.3799999999999999,
-      "x": 3.5,
-      "c": "#ff8500"
-    },
-    "Mouse\n\n\n\n\n\nDown",
-    {
-      "x": 10.5
-    },
-    "Cursor\n\n\n\n\n\nDown"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "Mouse\n\n\n\n\n\nLeft",
-    {
-      "x": 1
-    },
-    "Mouse\n\n\n\n\n\nRight",
-    {
-      "x": 8.5
-    },
-    "Cursor\n\n\n\n\n\nLeft",
-    {
-      "x": 1
-    },
-    "Cursor\n\n\n\n\n\nRight"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#e6e067"
-    },
-    "Vol\n\n\n\n\n\nDown",
-    {
-      "x": 6.5
-    },
-    "Num\n\n\n\n\n\nLock"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 1.5,
-      "c": "#737373",
-      "a": 7
-    },
-    "",
-    {
-      "x": 14.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.9950000000000001,
-      "c": "#2277ff",
-      "a": 4,
-      "w": 1.5
-    },
-    "Capitals\n\n\n\n\n\nShift",
-    {
-      "x": 16.5,
-      "w": 1.5
-    },
-    "\n\nCapitals\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.6299999999999999,
-      "x": 6.5,
-      "c": "#ffb063",
-      "h": 1.5
-    },
-    "Scroll\n\n\n\n\n\nDown",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "Scroll\n\n\n\n\n\nDown"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "c": "#ff8500"
-    },
-    "Mouse\n\n\n\n\n\nDown",
-    {
-      "x": 10.5
-    },
-    "Cursor\n\n\n\n\n\nDown"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "Mouse\n\n\n\n\n\nDnLeft",
-    {
-      "x": 1
-    },
-    "Mouse\n\n\n\n\n\nDnRgt",
-    {
-      "x": 8.5,
-      "c": "#ffb063"
-    },
-    "End",
-    {
-      "x": 1
-    },
-    "Page\n\n\n\n\n\nDown"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#e6e067"
-    },
-    "Mute",
-    {
-      "x": 6.5,
-      "c": "#737373",
-      "a": 7
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 1.5
-    },
-    "",
-    {
-      "x": 14.5
-    },
-    ""
-  ],
-  [
-    {
-      "y": -0.9950000000000001,
-      "c": "#2277ff",
-      "a": 4,
-      "w": 1.5
-    },
-    "Ctrl",
-    {
-      "x": 16.5,
-      "w": 1.5
-    },
-    "Ctrl"
-  ],
-  [
-    {
-      "y": -0.3799999999999999,
-      "x": 3.5,
-      "c": "#ff8500"
-    },
-    "Middle\n\n\n\n\n\nClick",
-    {
-      "x": 10.5,
-      "c": "#ffb063",
-      "fa": [
-        0,
-        0,
-        0,
-        1
-      ]
-    },
-    "Delete\n\n\nOption"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#ff8500"
-    },
-    "Left\n\n\n\n\n\nClick",
-    {
-      "x": 1
-    },
-    "Right\n\n\n\n\n\nClick",
-    {
-      "x": 8.5,
-      "c": "#ffb063"
-    },
-    "Insert\n\n\nCmd",
-    {
-      "x": 1,
-      "c": "#77aaff"
-    },
-    "Hyper"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5
-    },
-    "Alt\n\n\nLAlt",
-    "Meh",
-    {
-      "x": 14.5
-    },
-    "Meh",
-    "Alt\n\n\nRAlt"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "c": "#ccbb00"
-    },
-    "Stop\n\n\nBrowser",
-    "Reload\n\n\nBrowser"
-  ],
-  [
-    {
-      "h": 2
-    },
-    "< Web\n\n\nBrowser",
-    {
-      "h": 2
-    },
-    "Web >\n\n\nBrowser",
-    "Search\n\n\nBrowser"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "Home\n\n\nBrowser"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    "Prev\n\n\nAudio\n\n\nTrack",
-    "Next\n\n\nAudio\n\n\nTrack"
-  ],
-  [
-    {
-      "x": -3,
-      "c": "#e6e067"
-    },
-    "Vol\n\n\n\n\n\nUp",
-    {
-      "c": "#ccbb00",
-      "h": 2
-    },
-    "Stop\n\n\nAudio",
-    {
-      "h": 2
-    },
-    "Play\n\n\nAudio\n\n\nPause"
-  ],
-  [
-    {
-      "x": -3,
-      "c": "#e6e067"
-    },
-    "Vol\n\n\n\n\n\nDown"
-  ]
-]
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/teckinesis/teckinesis-symbol.json b/keyboards/ergodox/keymaps/teckinesis/teckinesis-symbol.json
deleted file mode 100644 (file)
index 439d012..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-[
-  {
-    "name": "teckinesis (Symbol Layer)",
-    "author": "Will Wolff-Myren",
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Tea"
-  },
-  [
-    {
-      "x": 3.5,
-      "c": "#99de2a"
-    },
-    "F3",
-    {
-      "x": 10.5
-    },
-    "F8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "F2",
-    {
-      "x": 1
-    },
-    "F4",
-    {
-      "x": 8.5
-    },
-    "F7",
-    {
-      "x": 1
-    },
-    "F9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5
-    },
-    "F5",
-    {
-      "c": "#ff4444"
-    },
-    "Esc",
-    {
-      "x": 4.5,
-      "c": "#bbddbb"
-    },
-    "_\n\n\n\n\n\n-",
-    {
-      "c": "#99de2a"
-    },
-    "F6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Special\n\n\n\n\n\nShift",
-    {
-      "c": "#99de2a"
-    },
-    "F1",
-    {
-      "x": 14.5
-    },
-    "F10",
-    {
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "\n\nSpecial\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#bbddbb"
-    },
-    "{",
-    {
-      "x": 10.5,
-      "c": "#89b087"
-    },
-    "8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#bbddbb"
-    },
-    "@",
-    {
-      "x": 1
-    },
-    "}",
-    {
-      "x": 8.5,
-      "c": "#89b087"
-    },
-    "7",
-    {
-      "x": 1
-    },
-    "9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#bbddbb"
-    },
-    "&",
-    {
-      "h": 1.5
-    },
-    "<",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    ">",
-    "|"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Media\n\n\n\n\n\nShift",
-    {
-      "c": "#bbddbb"
-    },
-    "!",
-    {
-      "x": 14.5,
-      "c": "#89b087"
-    },
-    "/",
-    {
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "\n\nMedia\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#bbddbb"
-    },
-    "(",
-    {
-      "x": 10.5,
-      "c": "#89b087"
-    },
-    "5"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#bbddbb"
-    },
-    "$",
-    {
-      "x": 1
-    },
-    ")",
-    {
-      "x": 8.5,
-      "c": "#89b087"
-    },
-    "4",
-    {
-      "x": 1
-    },
-    "6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#bbddbb"
-    },
-    "`",
-    {
-      "x": 6.5
-    },
-    "/"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#000000",
-      "t": "#ff0000",
-      "w": 1.5
-    },
-    "Symbols\n\n\n\n\n\nShift",
-    {
-      "c": "#bbddbb",
-      "t": "#000000"
-    },
-    "#",
-    {
-      "x": 14.5,
-      "c": "#89b087"
-    },
-    "*",
-    {
-      "c": "#000000",
-      "t": "#ff0000",
-      "w": 1.5
-    },
-    "\n\nSymbols\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "c": "#54d6de",
-      "t": "#000000",
-      "fa": [
-        0,
-        0,
-        0,
-        1
-      ],
-      "h": 1.5
-    },
-    "Tab >\n\n\nTab",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "< Tab\n\n\nShift Tab"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5,
-      "c": "#bbddbb"
-    },
-    "[",
-    {
-      "x": 10.5,
-      "c": "#89b087"
-    },
-    "2"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#bbddbb"
-    },
-    "^",
-    {
-      "x": 1
-    },
-    "]",
-    {
-      "x": 8.5,
-      "c": "#89b087"
-    },
-    "1",
-    {
-      "x": 1
-    },
-    "3"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "c": "#bbddbb"
-    },
-    "~",
-    {
-      "x": 6.5
-    },
-    "\\"
-  ],
-  [
-    {
-      "y": -0.875,
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "Capitals\n\n\n\n\n\nShift",
-    {
-      "c": "#bbddbb"
-    },
-    "%",
-    {
-      "x": 14.5,
-      "c": "#89b087"
-    },
-    "-",
-    {
-      "c": "#2277ff",
-      "w": 1.5
-    },
-    "\n\nCapitals\n\n\n\n\nShift"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "c": "#77aaff"
-    },
-    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
-    {
-      "x": 10.5,
-      "c": "#89b087"
-    },
-    ".\n\n\nOption"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "c": "#77aaff"
-    },
-    "Hyper",
-    {
-      "x": 1
-    },
-    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
-    {
-      "x": 8.5,
-      "c": "#89b087"
-    },
-    "0\n\n\nCmd",
-    {
-      "x": 1
-    },
-    "=\n\n\nHyper"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5,
-      "c": "#77aaff"
-    },
-    "Ctrl\n\n\nLCtrl",
-    "Meh",
-    {
-      "x": 14.5,
-      "c": "#89b087"
-    },
-    "+\n\n\nMeh",
-    "Enter\n\n\nCtrl"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "c": "#54d6de"
-    },
-    "Left",
-    "Right"
-  ],
-  [
-    {
-      "h": 2
-    },
-    "Space",
-    {
-      "h": 2
-    },
-    "Enter",
-    "Up"
-  ],
-  [
-    {
-      "x": 2
-    },
-    "Down"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3
-    },
-    "Home",
-    "End"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "Page\n\n\n\n\n\nUp",
-    {
-      "h": 2
-    },
-    "< Del\n\n\nBackspace",
-    {
-      "h": 2
-    },
-    "Del >\n\n\nDelete"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "Page\n\n\n\n\n\nDown"
-  ]
-]
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/tkuichooseyou/README.md b/keyboards/ergodox/keymaps/tkuichooseyou/README.md
deleted file mode 100644 (file)
index ab02fac..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Based on Default OSX
-I'm a vim and OSX user
-
-- Moved Hyper and Meh up, replaced with CMD
-  - Because I'm used to having symmetrical CMD keys on both hands
-- Changed left delete to Tab to match OSX
-- Changed left Backspace to CTRL/ESC for vim
-- Changed top left and top right arrow to `CMD+{` and `CMD+}`
-  - Useful for switching tabs in Safari, Xcode, etc.
-- Remove the Ctrl from Z and /
-- Remove CMD from right quote
-- Changed right Alt to Delete
-
diff --git a/keyboards/ergodox/keymaps/tkuichooseyou/keymap.c b/keyboards/ergodox/keymaps/tkuichooseyou/keymap.c
deleted file mode 100644 (file)
index d1c7791..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  |CMD+{ |           | CMD+}|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  | Hyper|           |  Meh |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
- * |--------+------+------+------+------+------| LGui |           | LGui |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | App  | LGui |       | Del  |Ctrl/Esc|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LGUI(LSFT(KC_LBRC)),
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   ALL_T(KC_NO),
-        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
-        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
-                                              ALT_T(KC_APP),  KC_LGUI,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             LGUI(LSFT(KC_RBRC)),   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             MEH_T(KC_NO),          KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                                    KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOT,
-             KC_LGUI,               KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                            KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
-             KC_DELT,        CTL_T(KC_ESC),
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/tm2030/keymap.c b/keyboards/ergodox/keymaps/tm2030/keymap.c
deleted file mode 100644 (file)
index 1d861ee..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/* TypeMatrix-2030-like keymap  */
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "led.h"
-
-#define BASE 0 // default layer
-#define DVRK 1 // Dvorak layer
-#define NUMR 8 // numeric layer
-#define FNLR 9 // fn layer
-
-#define MDBL0 1
-#define MFNLR 2
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   ]    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |Backsp|           |Backsp|   Y  |   U  |   I  |   O  |   P  |   [    |
- * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
- * | LShift |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '/Shift|
- * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | \/Shift|
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   -  | Home |   =  |End/Ctl|
- *   `-----------------------------------'                                      `-----------------------------------'
- *                                       ,--------------.       ,-------------.
- *                                       |Esc/Alt| num  |       | Left |Right |
- *                                ,------+-------+------|       |------+------+------.
- *                                |      |       | PgUp |       |  Up  |      |      |
- *                                |Space |LShift |------|       |------|RShift|Space |
- *                                |      |       | PgDn |       | Down |      |      |
- *                                `---------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_DELT,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_BSPC,
-        KC_LSFT,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_ENT,
-        KC_LCTL,        M(MFNLR),     KC_LGUI,KC_MPLY,ALT_T(KC_APP),
-
-                                              ALT_T(KC_ESC),  TG(NUMR),
-                                                              KC_PGUP,
-                                            KC_SPC, KC_LSFT,  KC_PGDN,
-
-        // right hand
-             KC_DELT,     KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     KC_RBRC,
-             KC_BSPC,     KC_Y,   KC_U,    KC_I,    KC_O,    KC_P,     KC_LBRC,
-                          KC_H,   KC_J,    KC_K,    KC_L,    KC_SCLN,  SFT_T(KC_QUOT),
-             KC_ENT,      KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH,  SFT_T(KC_BSLS),
-                                  KC_RALT, KC_MINS, KC_HOME, KC_EQL,   CTL_T(KC_END),
-
-             KC_LEFT, KC_RGHT,
-             KC_UP,
-             KC_DOWN, KC_RSFT,  KC_SPC
-    ),
-/* Dvorak layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   '  |   ,  |   .  |   P  |   Y  |Backsp|           |Backsp|   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
- * | LShift |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  | -/Shift|
- * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
- * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | \/Shift|
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   [  | Home |   ]  |End/Ctl|
- *   `-----------------------------------'                                      `-----------------------------------'
- *                                       ,--------------.       ,-------------.
- *                                       |Esc/Alt| num  |       | Left |Right |
- *                                ,------+-------+------|       |------+------+------.
- *                                |      |       | PgUp |       |  Up  |      |      |
- *                                |Space |LShift |------|       |------|RShift|Space |
- *                                |      |       | PgDn |       | Down |      |      |
- *                                `---------------------'       `--------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[DVRK] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,   KC_1,      KC_2,    KC_3,    KC_4,   KC_5,   KC_DELT,
-        KC_TAB,   KC_QUOT,   KC_COMM, KC_DOT,  KC_P,   KC_Y,   KC_BSPC,
-        KC_LSFT,  KC_A,      KC_O,    KC_E,    KC_U,   KC_I,
-        KC_LSFT,  KC_SCLN,   KC_Q,    KC_J,    KC_K,   KC_X,   KC_ENT,
-        KC_LCTL,  M(MFNLR),  KC_LGUI, KC_MPLY, ALT_T(KC_APP),
-
-                                              ALT_T(KC_ESC),  TG(NUMR),
-                                                              KC_PGUP,
-                                            KC_SPC, KC_LSFT,  KC_PGDN,
-
-        // right hand
-             KC_DELT,     KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     KC_EQL,
-             KC_BSPC,     KC_F,   KC_G,    KC_C,    KC_R,    KC_L,     KC_SLSH,
-                          KC_D,   KC_H,    KC_T,    KC_N,    KC_S,     SFT_T(KC_MINS),
-             KC_ENT,      KC_B,   KC_M,    KC_W,    KC_V,    KC_Z,     SFT_T(KC_BSLS),
-                                  KC_RALT, KC_LBRC, KC_HOME, KC_RBRC,  CTL_T(KC_END),
-
-             KC_LEFT, KC_RGHT,
-             KC_UP,
-             KC_DOWN, KC_RSFT,  KC_SPC
-    ),
-/* Numeric Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
- *   `----------------------------------'                                       `-----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |n.lock|c.lock|
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[NUMR] = KEYMAP(
-       // left hand
-       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
-       KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                                               KC_TRNS, KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,   KC_TAB,  KC_PSLS, KC_PAST, KC_PMNS,
-       KC_TRNS, KC_TRNS, KC_HOME, KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
-                KC_UP,   KC_END,  KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-       KC_LEFT, KC_DOWN, KC_RGHT, KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-                         KC_TRNS, KC_P0,   M(MDBL0),KC_PDOT, CTL_T(KC_PENT),
-
-       KC_NLCK, KC_CAPS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* fn layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       | Next |      |      |
- *                                 | Mute |      |------|       |------|      |      |
- *                                 |      |      |      |       | Prev |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[FNLR] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_INS,
-       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_VOLU,
-       KC_TRNS, KC_TRNS, KC_TRNS,      KC_CALC,     KC_MAIL,      KC_WHOM,
-       KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD,
-       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,
-
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_MUTE, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_INS,   KC_EJCT, KC_PWR,  KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
-       KC_TRNS, KC_TRNS,
-       KC_MPRV,
-       KC_MNXT, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-        case MDBL0:
-            if (record->event.pressed) {
-              return MACRO( I(25), T(P0), T(P0), END );
-            }
-        break;
-        case MFNLR:
-            layer_invert(NUMR);
-            layer_invert(FNLR);
-            break;
-    }
-    return MACRO_NONE;
-};
-
-// 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) {
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    // led 1: numeric layer
-    if (layer_state & (1 << NUMR)) {
-        ergodox_right_led_1_on();
-    }
-    // led 2: Dvorak layer
-    if (default_layer_state == 1 << DVRK) {
-        ergodox_right_led_2_on();
-    }
-    // led 3: caps lock
-    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
-      ergodox_right_led_3_on();
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/tm2030/readme.md b/keyboards/ergodox/keymaps/tm2030/readme.md
deleted file mode 100644 (file)
index 6cd7947..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-# TypeMatrix™ 2030 inspired layout
-
-This is a [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) inspired layout for the ErgoDox EZ. The _TypeMatrix_ is a nice small ergonomic keyboard with a matrix layout, and it provides several nice features like `enter`, `backspace` and `delete` at the center, bigger `shift` keys and international `cut`, `copy` and `paste` keys.
-
-The idea in this ErgoDox layout is to make it is as close as possible to the TM2030, such that it would be easy to switch between the TM and the ErgoDox. No _fancy_ features have been implemented, as this is intended to be a base for further customization if desired. Some keys have been duplicated in order to accomodate for most people.
-
-Most of the TM2030 features are supported except
-* automatic window switching (alt-tab key, at the left of the space key)
-* show desktop key (at the right of the space key)
-* 102/106 modes
-
-Dvorak mode is even supported by pressing [`Magic`](/TMK_readme.md#magic-commands)+`1` (`Magic` is by default `LShift`+`RShift`)
-
-Some keys had to be moved around to fit into the ErgoDox, especially the `F1`-`F12` keys and the arrow keys.
-
-## Base Layer
-This is the default layer, close to the TM with the following differences:
-
- - Top row (with the `F`-keys) and rightmost column (with application shortcuts) are removed, the corresponding keys are displaced elsewhere.
- - Bottom-left keys are reorganized on a single row as: `Ctrl`, `fn`, `Gui`, `Play`, `App`/`Alt`.
- - `shuffle` and `desktop` are not supported.
- - `right-shift` is moved on `'`, `\` and on the right thumb (the latter is actually the only _true_ `right-shift`, and must be used in the `Magic` key combination).
- - `right-ctrl` is moved on `End`.
- - `]` is moved in place of the dash (`-`).
- - Dash (`-`) and `=` are moved on bottom right row.
- - Arrows and `PgUp`/`PgDn` are moved on the thumbs.
-
-```
-,--------------------------------------------------.           ,--------------------------------------------------.
-|   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   ]    |
-|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-| Tab    |   Q  |   W  |   E  |   R  |   T  |Backsp|           |Backsp|   Y  |   U  |   I  |   O  |   P  |   [    |
-|--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
-| LShift |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '/Shift|
-|--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
-| LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | \/Shift|
-`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-  |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   -  | Home |   =  |End/Ctl|
-  `-----------------------------------'                                      `-----------------------------------'
-                                      ,--------------.       ,-------------.
-                                      |Esc/Alt| num  |       | Left |Right |
-                               ,------+-------+------|       |------+------+------.
-                               |      |       | PgUp |       |  Up  |      |      |
-                               |Space |LShift |------|       |------|RShift|Space |
-                               |      |       | PgDn |       | Down |      |      |
-                               `---------------------'       `--------------------'
-```
-
-### Layer Switching
-- Use `num` to toggle the Numeric Layer.
-- Hold `fn` to temporarily activate the Numeric & Fn Layers.
-
-As on the original TM 2030, when `num` layer is activated, holding `fn` disables it but enables the other `fn` keys.
-
-## Dvorak Layer
-Same as Layer 0 but with _Dvorak_ layout, to use with QWERTY OS layout.
-
-Enable Dvorak layout with [`Magic`](/TMK_readme.md#magic-commands)+`1` (`LShift`+`RShift`+`1`), disable with `Magic`-`0`.
-
-The middle (green) led indicates when the Dvorak layer is activated.
-
-    ,--------------------------------------------------.           ,--------------------------------------------------.
-    |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   =    |
-    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-    | Tab    |   '  |   ,  |   .  |   P  |   Y  |Backsp|           |Backsp|   F  |   G  |   C  |   R  |   L  |   /    |
-    |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
-    | LShift |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  | -/Shift|
-    |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
-    | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | \/Shift|
-    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-      |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   [  | Home |   ]  |End/Ctl|
-      `-----------------------------------'                                      `-----------------------------------'
-                                          ,--------------.       ,-------------.
-                                          |Esc/Alt| num  |       | Left |Right |
-                                   ,------+-------+------|       |------+------+------.
-                                   |      |       | PgUp |       |  Up  |      |      |
-                                   |Space |LShift |------|       |------|RShift|Space |
-                                   |      |       | PgDn |       | Down |      |      |
-                                   `---------------------'       `--------------------'
-
-## Numeric Layer
-Numeric layer close to the TM when toggling `num`, with the following differences:
-
-- Numpad is displaced by 1 to the top left.
-- Arrows are displaced by 1 to the left.
-- Provides access to `F1`-`F12`, `caps-lock` and `num-lock`.
-
-The numeric layer is indicated with the left (red) led. Caps-lock is indicated with the right (blue) led.
-
-    ,--------------------------------------------------.           ,--------------------------------------------------.
-    |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
-    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-    |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
-    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-    |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
-    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-    |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
-    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-      |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
-      `----------------------------------'                                       `-----------------------------------'
-                                           ,-------------.       ,-------------.
-                                           |      |      |       |n.lock|c.lock|
-                                    ,------|------|------|       |------+------+------.
-                                    |      |      |      |       |      |      |      |
-                                    |      |      |------|       |------|      |      |
-                                    |      |      |      |       |      |      |      |
-                                    `--------------------'       `--------------------'
-
-## Fn Layer
-Activated simultaneously with the Numeric layer when holding the `fn` key. As on the TM, it provides access to the following features:
-- `cut`, `copy` and `paste`
-- `volume up`, `volume down` and `mute` — as opposed to the TM, these are only on left hand
-- `previous track` and `next track`
-- `calculator`, `mail` and `browser home`
-- `insert`, `power`, `sleep`, `wake`, `print screen`, `scroll-lock` and `pause`
-
-Note: the `eject` key does not work due to jackhumbert/qmk_firmware#82
-
-    ,--------------------------------------------------.           ,--------------------------------------------------.
-    |        |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
-    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-    |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
-    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-    |        |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
-    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-    |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
-    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-      |      |      |      |      |      |                                       |      |      |      |      |      |
-      `----------------------------------'                                       `----------------------------------'
-                                           ,-------------.       ,-------------.
-                                           |      |      |       |      |      |
-                                    ,------|------|------|       |------+------+------.
-                                    |      |      |      |       | Next |      |      |
-                                    | Mute |      |------|       |------|      |      |
-                                    |      |      |      |       | Prev |      |      |
-                                    `--------------------'       `--------------------'
diff --git a/keyboards/ergodox/keymaps/tonyabra_osx/keymap.c b/keyboards/ergodox/keymaps/tonyabra_osx/keymap.c
deleted file mode 100644 (file)
index 2a15fcb..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Esc    |   1  |   2  |   3  |   4  |   5  |   =  |           |   -  |   6  |   7  |   8  |   9  |   0  |  Enter |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '"   |
- * |--------+------+------+------+------+------| LGui |           | LGui |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |  L1  |   `  |  {   |   }  |  '"  |                                       | Left |  Up  | Down | Right|  L2  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |  Del | Alt  |       | Alt  | Ctrl |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
- *                                 |      |ace   | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
-        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
-        TG(SYMB),       KC_GRV,       KC_LBRC,        KC_RBRC,KC_QUOT,
-                                                      KC_DELT,KC_LALT,
-                                                              KC_HOME,
-                                               KC_SPC,KC_BSPC,KC_END,
-        // right hand
-             KC_MINS,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_ENT,
-             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
-             KC_LGUI,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
-                                  KC_LEFT,KC_UP,  KC_DOWN,KC_RIGHT,          TG(MDIA),
-             KC_RALT,     KC_RCTL,
-             KC_PGUP,
-             KC_PGDN,KC_TAB, KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/tonyabra_osx/readme.md b/keyboards/ergodox/keymaps/tonyabra_osx/readme.md
deleted file mode 100644 (file)
index f9d76ef..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# ErgoDox EZ OS X Simplified Configuration
-
-This keyboard configuration replaces the hyper and meh keys with the command key. It also removes all of the meta keys that require a "hold" because I found that I hesitate when I type, which can accidentally fire those combinations. On the upper left of the left hand, I mimicked the Mac placement of tab and escape, and on the upper right of the right hand, I placed an additional enter key for convenience when breezing through prompts.
-
-This is my standard working configuration for now, but I can see myself tweaking it as I use it more. I highly recommend you do the same.
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/townk_osx/config.h b/keyboards/ergodox/keymaps/townk_osx/config.h
deleted file mode 100644 (file)
index 72d3e96..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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
-
-#include "../../config.h"
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-//#define DEBUG_MATRIX_SCAN_RATE
-#define ONESHOT_TAP_TOGGLE 2
-#define ONESHOT_TIMEOUT 3000
-
-#endif
diff --git a/keyboards/ergodox/keymaps/townk_osx/keymap.c b/keyboards/ergodox/keymaps/townk_osx/keymap.c
deleted file mode 100644 (file)
index 5043d49..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "led.h"
-#include "keymap.h"
-#include "timer.h"
-
-/*
-
-# Why this Layout
-
-This layout was based on Kinesis layout and other ErgoDox user layouts
-available. It's target to be used on a MacOS but I'm pretty sure it can be
-addapted to Windows and/or Linux easily.
-
-## Function Key
-
-The `fn` key work almost like it would in any other keyboard with the exception
-it has a semi-sticky behavior. What does that mean?
-
-Well, if you press the `fn` and release it, the keyboard will be put on the
-_function layout_ and the next key stroke will be processed as if the `fn` key
-was pressed. Aftwards, the leyout get back to _normal_. If you hold `fn` and
-press any other key, when you release them, the keyboard leyout is back to
-_normal_.
-
-While pressing the `fn` with the left hand and strikeing the other keys on the
-right hand is farly easy, the same cannot being said for the other keys on the
-left side. So, instead of trying to do contorcionism with my left hand, I
-decided to do a semi-sticky version of `fn`. This way, I can press the  `fn`
-key with my pinky, release it and press the `1` key to issue an `F1` to the
-operating system.
-
-## Key-Pad Key
-
-The `key pad` key is a layout switch key. If pressed, it will put the keyboard
-on the _key pad layout_ and stay there until key is pressed again.
-
-This is used to make the keyboard behave mostly like a **num pad keyboard**.
-
-## Notes
-- Regardless in which layout you are, keys from other layouts are not
-  accessible. This means that if you are on the _key pad layout_, the left hand
-  will be pretty much unusable.
-  Of course that like anything else, there are exceptions to this rule.
-  Modifiers should remain accessible throughout the layers.
-- The _shift key_ is, like the _function key_, also configured to have a sticky
-  behavior.
-- All sticky keys have a timeout of 3 seconds.
-
-*/
-#define BASE   0
-#define KEYPAD 1
-#define FN     2
-
-#define MACRO_TMUX_ESC        10
-#define MACRO_TMUX_PASTE      11
-#define MACRO_OSX_COPY        12
-#define MACRO_OSX_PASTE       13
-
-#define M_TESC   M(MACRO_TMUX_ESC)
-#define M_TPASTE M(MACRO_TMUX_PASTE)
-#define M_OSXCPY M(MACRO_OSX_COPY)
-#define M_OSXPST M(MACRO_OSX_PASTE)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Base Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |        `~ |   1  |   2  |   3  |   4  |   5  | ESC  |           | Pwr  |   6  |   7  |   8  |   9  |   0  | - _       |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * | Tab       |   Q  |   W  |   E  |   R  |   T  | F16  |           | F17  |   Y  |   U  |   I  |   O  |   P  | = +       |
- * |-----------+------+------+------+------+------| Meh  |           | Meh  |------+------+------+------+------+-----------|
- * | \ (Ctrl)  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | ' " (Ctrl)|
- * |-----------+------+------+------+------+------| F18  |           | F19  |------+------+------+------+------+-----------|
- * |  LShift   |   Z  |   X  |   C  |   V  |   B  | Hyper|           | Hyper|   N  |   M  |   ,  |   .  |   /  |   RShift  |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     | FN    | KPAD |LCtrl | LAlt | LGui |                                       | RGui | RAlt | RCtrl| KPAD |    FN |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | M(0) | M(1) |           | M(2) | M(3) |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | Home |           | PgUp |      |      |
- *                                  |Backsp| Del  |------|           |------| Enter| Space|
- *                                  |      |      | End  |           | PgDn |      |      |
- *                                  `--------------------'           `--------------------'
- *
- * M(0) = Ctrk+A Esc
- *        (this is used to issue the Esc key to the Tmux application)
- * M(1) = Ctrk+A P
- *        (this is used to issue the Paste key to the Tmux application)
- * M(2) = Cmd+C
- * M(3) = Cmd+V
- */
-[BASE]=KEYMAP(//left half
-              KC_GRV,         KC_1,       KC_2,     KC_3,           KC_4,       KC_5,     KC_ESC,
-              KC_TAB,         KC_Q,       KC_W,     KC_E,           KC_R,       KC_T,     MEH_T(KC_F16),
-              CTL_T(KC_BSLS), KC_A,       KC_S,     KC_D,           KC_F,       KC_G,
-              KC_FN2,         KC_Z,       KC_X,     KC_C,           KC_V,       KC_B,     ALL_T(KC_F18),
-              KC_FN1,         TG(KEYPAD), KC_LCTRL, KC_LALT,        KC_LGUI,
-                                                                                M_TESC,   M_TPASTE,
-                                                                                          KC_HOME,
-                                                                    KC_BSPC,    KC_DELT,  KC_END,
-              //right half
-              KC_POWER,       KC_6,       KC_7,     KC_8,           KC_9,       KC_0,     KC_MINS,
-              MEH_T(KC_F17),  KC_Y,       KC_U,     KC_I,           KC_O,       KC_P,     KC_EQL,
-                              KC_H,       KC_J,     KC_K,           KC_L,       KC_SCLN,  CTL_T(KC_QUOT),
-              ALL_T(KC_F19),  KC_N,       KC_M,     KC_COMM,        KC_DOT,     KC_SLSH,  KC_FN2,
-                              KC_RGUI,    KC_RALT,  CTL_T(KC_LBRC), KC_FN3,     KC_FN1,
-              M_OSXCPY,       M_OSXPST,
-              KC_PGUP,
-              KC_PGDN,        KC_ENT,     KC_SPC),
-
-/* Keymap 1: KeyPad Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |      | LClk | RClk | MClk |      |      |           | BTab | Clear|   /  |   *  |   ^  |   (  |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * | M.Accel 2 |      |ScrlUp|  U   |ScrlDn|      |      |           | Tab  |   7  |   8  |   9  |   +  |   )  |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * | M.Accel 1 |      |   L  |  D   |  R   |      |------|           |------|   4  |   5  |   6  |   -  |      |           |
- * |-----------+------+------+------+------+------|      |           |Return|------+------+------+------+------+-----------|
- * | M.Accel 0 |      |ScrlL |      |ScrlR |      |      |           |      |   1  |   2  |   3  |   =  |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     |       | XXXX |      |      |      |                                       |   0  |   .  |   ,  | XXXX |       |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      | XXXX |      |
- *                                  |      |      |------|           |------| XXXX |      |
- *                                  |      |      |      |           |      | XXXX |      |
- *                                  `--------------------'           `--------------------'
- */
-[KEYPAD]=KEYMAP(//left half
-                KC_NO,        KC_NO,    KC_MS_BTN1,    KC_MS_BTN2,     KC_MS_BTN3,     KC_NO,   KC_NO,
-                KC_MS_ACCEL2, KC_NO,    KC_MS_WH_UP,   KC_MS_U,        KC_MS_WH_DOWN,  KC_NO,   KC_NO,
-                KC_MS_ACCEL1, KC_NO,    KC_MS_L,       KC_MS_D,        KC_MS_R,        KC_NO,
-                KC_MS_ACCEL0, KC_NO,    KC_MS_WH_LEFT, KC_NO,          KC_MS_WH_RIGHT, KC_NO,   KC_NO,
-                KC_NO,        KC_TRNS,  KC_NO,         KC_NO,          KC_NO,
-                                                                                       KC_NO,   KC_NO,
-                                                                                                KC_NO,
-                                                                       KC_NO,          KC_NO,   KC_NO,
-                //right half
-                LSFT(KC_TAB), KC_CLEAR, KC_KP_SLASH,   KC_KP_ASTERISK, KC_CIRCUMFLEX,  KC_LPRN, KC_NO,
-                KC_TAB,       KC_KP_7,  KC_KP_8,       KC_KP_9,        KC_KP_PLUS,     KC_RPRN, KC_NO,
-                              KC_KP_4,  KC_KP_5,       KC_KP_6,        KC_KP_MINUS,    KC_NO,   KC_NO,
-                KC_KP_ENTER,  KC_KP_1,  KC_KP_2,       KC_KP_3,        KC_KP_EQUAL,    KC_NO,   KC_NO,
-                                        KC_KP_0,       KC_KP_DOT,      KC_KP_COMMA,    KC_TRNS, KC_NO,
-                KC_NO,        KC_NO,
-                KC_NO,
-                KC_NO,        KC_TRNS,  KC_NO),
-
-/* Keymap 2: Functions Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |  Vol. Up  |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           | Stop |  Rw  |  Rec |  FF  |      | XXXX |           | XXXX |      |      |      |      |      | Vol. Down |
- * |-----------+------+------+------+------+------| XXXX |           | XXXX |------+------+------+------+------+-----------|
- * |  CapsLock | Eject| Prev | Play | Next |      |------|           |------| Left | Down |  Up  | Right|      |   Mute    |
- * |-----------+------+------+------+------+------| XXXX |           | XXXX |------+------+------+------+------+-----------|
- * |  L Shift  |      |      |      |      |      | XXXX |           | XXXX |      |      |      |      |      |  R Shift  |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     | XXXXX |      | XXXX | XXXX | XXXX |                                       | XXXX | XXXX | XXXX |      | XXXXX |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  |      |      |------|           |------|      |      |
- *                                  |      |      |      |           |      |      |      |
- *                                  `--------------------'           `--------------------'
- *
- * XXX = These keys are transparent keys that, when pressed, they issue the key from the previous layer.
- */
-[FN]=KEYMAP(//left half
-            KC_NO,   KC_F1,          KC_F2,               KC_F3,               KC_F4,                 KC_F5,  KC_F6,
-            KC_NO,   KC_MEDIA_STOP,  KC_MEDIA_REWIND,     KC_MEDIA_SELECT,     KC_MEDIA_FAST_FORWARD, KC_NO,  KC_TRNS,
-            KC_CAPS, KC_MEDIA_EJECT, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,   KC_NO,
-            KC_LSFT, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_TRNS,
-            KC_TRNS, KC_NO,          KC_TRNS,             KC_TRNS,             KC_TRNS,
-                                                                                                      KC_NO,  KC_NO,
-                                                                                                              KC_NO,
-                                                                               KC_NO,                 KC_NO,  KC_NO,
-            //right half
-            KC_F7,   KC_F8,          KC_F9,               KC_F10,              KC_F11,                KC_F12, KC_VOLU,
-            KC_TRNS, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_VOLD,
-                     KC_LEFT,        KC_DOWN,             KC_UP,               KC_RIGHT,              KC_NO,  KC_MUTE,
-            KC_TRNS, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_RSFT,
-                                     KC_TRNS,             KC_TRNS,             KC_TRNS,               KC_NO,  KC_TRNS,
-            KC_NO,   KC_NO,
-            KC_NO,
-            KC_NO,   KC_NO,          KC_NO)};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_ONESHOT(FN),
-  [2] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
-  [3] = ACTION_LAYER_TAP_KEY(KEYPAD, KC_RBRC),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  // MACRODOWN only works in this function
-  switch(id) {
-    case MACRO_TMUX_ESC:
-      if (record->event.pressed) {
-        return MACRO(D(LCTRL), T(A), U(LCTRL), D(ESC), END);
-      }
-      return MACRO(U(ESC), END);
-    case MACRO_TMUX_PASTE:
-      if (record->event.pressed) {
-        return MACRO(D(LCTRL), T(A), U(LCTRL), D(P), END);
-      }
-      return MACRO(U(P), END);
-    case MACRO_OSX_COPY:
-      if (record->event.pressed) {
-        return MACRO(D(LGUI), D(C), END);
-      }
-      return MACRO(U(C), U(LGUI), END);
-    case MACRO_OSX_PASTE:
-      if (record->event.pressed) {
-        return MACRO(D(LGUI), D(V), END);
-      }
-      return MACRO(U(V), U(LGUI), END);
-  }
-  return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-};
-
-uint8_t current_layer = BASE;
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-  uint8_t layer = biton32(layer_state);
-
-  ergodox_led_all_off();
-  ergodox_led_all_set(LED_BRIGHTNESS_LO);
-
-  switch (layer) {
-  case BASE:
-    current_layer = BASE;
-    break;
-  case KEYPAD:
-    current_layer = KEYPAD;
-    break;
-  default:
-    // none
-    break;
-  }
-
-  // layer leds
-  if (current_layer == KEYPAD) {
-    ergodox_right_led_3_on();
-  }
-
-  // capslock
-  if (host_keyboard_leds() & (3<<USB_LED_CAPS_LOCK)) {
-    ergodox_right_led_1_on();
-  }
-
-  // Temporary leds
-
-  // The function layer takes over other layers and we need to reflect that on the leds.
-  // If the current layer is the BASE, we simply turn on the FN led, but if the current
-  // layer is the KEYPAD, than we must turn it off before turning on the FN led.
-  if (layer == FN && !has_oneshot_layer_timed_out()) {
-    ergodox_right_led_3_off();
-    ergodox_right_led_2_on();
-  }
-
-  // if the shifted is pressed I show the case led in a brighter color. This is nice to
-  // differenciate the shift from the capslock.
-  // Notice that I make sure that we're not using the shift on a chord shortcut (pressing
-  // shift togather with other modifiers).
-  if((keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) &&                                 // is shift pressed and there is no other
-      !(keyboard_report->mods & (~MOD_BIT(KC_LSFT) & ~MOD_BIT(KC_RSFT)))) ||                           //    modifier being pressed as well
-     (get_oneshot_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) && !has_oneshot_mods_timed_out())) {  // or the one shot shift didn't timed out
-    ergodox_right_led_1_set(LED_BRIGHTNESS_HI);
-    ergodox_right_led_1_on();
-  }
-};
diff --git a/keyboards/ergodox/keymaps/townk_osx/makefile.mk b/keyboards/ergodox/keymaps/townk_osx/makefile.mk
deleted file mode 100644 (file)
index c06021b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# I don't want my keyboard blinking lights when is suppose to be asleep.
-SLEEP_LED_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/townk_osx/readme.md b/keyboards/ergodox/keymaps/townk_osx/readme.md
deleted file mode 100644 (file)
index a2dcd35..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# Townk's Keymap
-
-Trying to take care of an enjury on my arm I borrow an ergonomic keyboard from
-a frient ([Kinesis Advantage](http://www.kinesis-ergo.com/shop/advantage-pro-for-pc-mac/)).
-
-I really enjoyed my time with it but there were some anoyancies:
-
-* The curvature on the keys bothered me since I'm a Vim user and using the
-  motion keys on my editor was awkard.
-* I had to spend too much time remapping the keyboard to make some symbol keys
-  more accessible to me.
-* The fact that my hands had to stay close to each other was a bit stressfull
-  to my sholders.
-
-After a long research I find out that Ergodox EZ would be perfect for my needs
-and purchase one. Before the keyboard even got in my hands I started to think
-on the layout I would use on it and soon enough I planed couple adjustments
-from the Kinesis I was using so far.
-
-## The layout
-
-Here are the layout mapping in images so you can have a glimpse on it:
-
-![Base Layout](https://i.imgur.com/m1yyQvU.png)
-![fn Layout](https://i.imgur.com/AJIzrjq.png)
-![Keypad & Mouse Layout](https://i.imgur.com/9I6Qr0e.png)
-
-Notice that, differently from the default behavior, my layer keys are not transparent
-by default, which means that if you press any non-labeled white key, nothing will be
-handled to the OS.
-
-### One shot keys
-
-It all started with the access to the function keys (F1, F2, F3...), since
-those keys are located on a different layer I needed a way to press them with
-minimal effort without disrupting my flow.
-
-For me, togglihg a layer to press a button and than toggle it back is a waste
-of time (although I admit it's a single tap from what I have), so I decided to
-do it as a one shot key. I could press it and the next pressed key would be
-handled by the target layer which just after it delivers the key to the OS it
-would get back to the previous layer.
-
-After setting up my layout to do just that I realized that occasionally I
-would stop myseld on the middle of the process and the one shot layer would be
-still triggered until I press any other key. So to prevent me from tapping
-keys I don't want I added a timeout of 3 seconds for the one shot actions.
-
-Ultimately I tested the shift key as a one shot one and really like it, so
-here you have it, all the one shot keys on my layout.
-
-## Glossary
-
-If you're not familiar with the Mac symbols used on some keys, here is a
-reference to them:
-
-| Symbol | Description         |
-| :----: | ------------------- |
-|   ⌘    | Command             |
-|   ⇪    | Caps Lock           |
-|   ⇧    | Shift               |
-|   ⌥    | Option (alt)        |
-|   ⎋    | Esc                 |
-|   ⇥    | Tab forward         |
-|   ⇤    | Tab backward        |
-|   ⌃    | Control             |
-|   ␣    | Space               |
-|   ⌫    | Backspace           |
-|   ⌦    | Delete              |
-|   ⏎    | Enter               |
-|   ⌤    | Return              |
-|   ⌽    | Power on/off button |
-|   ↖    | Home                |
-|   ↘    | End                 |
-|   ⇞    | Page up             |
-|   ⇟    | Page down           |
-|   ⌧    | Clear               |
diff --git a/keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/keymap.c b/keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/keymap.c
deleted file mode 100644 (file)
index c9dc43c..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-
-/* Keymap 0: Basic Dvorak layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * | Hebrew |   1  |   2  |   3  |   4  |   5  |ALT+S |           |B.tick|  6   |   7  |   8  |   9  |   0  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | TAB    |   '  |   ,  |   .  |   P  |   Y  | LCK2 |           |      |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | ESC    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
- * |--------+------+------+------+------+------| LCK1 |           |      |------+------+------+------+------+--------|
- * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RSHIFT |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |FN2   | COPY | CUT  | PASTE| FN1  |                                       |   [  |   ]  |   \  | UNDO | CTRL+A |
- *   `----------------------------------'                                       `------------------------------------'
- *                                        ,-------------.       ,-------------.
-*                                         | DEL  |      |       | END  | HOME   |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | SUPER|       | PgUp |        |      |
- *                                 | BACK | CTRL |------|       |------|  Enter |SPACE |
- *                                 | SPACE|      | ALT  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-[0] = KEYMAP(
-       TG(1),     KC_1,       KC_2,       KC_3,       KC_4,  KC_5, LALT(KC_LSHIFT),
-       KC_TAB,    KC_QUOTE,   KC_COMMA,   KC_DOT,     KC_P,  KC_Y, TG(3),
-       KC_ESCAPE, KC_A,       KC_O,       KC_E,       KC_U,  KC_I,
-       KC_LSHIFT, KC_SCOLON,  KC_Q,       KC_J,       KC_K,  KC_X, TG(2),
-       MO(3),     LCTL(KC_C), LCTL(KC_X), LCTL(KC_V), MO(2),
-                                                 KC_DELETE, KC_TRNS,
-                                                            KC_LGUI,
-                                     KC_BSPACE,CTL_T(KC_NO),KC_LALT,
-       
-       KC_TILD,   KC_6,    KC_7,        KC_8,        KC_9,      KC_0,     KC_EQUAL,
-       KC_TRNS,   KC_F,    KC_G,        KC_C,        KC_R,      KC_L,     KC_SLASH,
-       KC_D,      KC_H,    KC_T,        KC_N,        KC_S,      KC_MINUS,
-       KC_TRNS,   KC_B,    KC_M,        KC_W,        KC_V,      KC_Z,     KC_LSHIFT,
-                           KC_LBRACKET, KC_RBRACKET, KC_BSLASH, KC_UNDO,  LCTL(KC_A),
-       KC_END,    KC_HOME,
-       KC_PGUP,
-       KC_PGDOWN, KC_ENTER, KC_SPACE
-),
-
- /* Keymap 1: Hebrew layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[1] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_W,    KC_QUOTE, KC_SLASH, KC_R,    KC_T,    KC_TRNS,
-       KC_TRNS, KC_A,    KC_S,     KC_D,     KC_F,    KC_G,
-       KC_TRNS, KC_Z,    KC_X,     KC_C,     KC_V,    KC_B,    KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
-                                                      KC_TRNS, KC_TRNS,
-                                                               KC_TRNS,
-                                             KC_TRNS, KC_TRNS, KC_TRNS,
-       
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,
-       KC_TRNS, KC_Y,    KC_U,    KC_E,     KC_O,      KC_P,      KC_TRNS,
-                KC_H,    KC_J,    KC_K,     KC_L,      KC_SCOLON, KC_TRNS,
-       KC_TRNS, KC_N,    KC_M,    KC_COMMA, KC_DOT,    KC_I,      KC_TRNS,
-                    KC_TRNS, KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 2: Arrows ,Mouse Navigation and F Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |  F11 |      |      |  UP  |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | LEFT | DOWN | RIGHT|      |        |
- * |--------+------+------+------+------+------|      |           |  F12 |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       | Lclk | Rclk |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[2] = KEYMAP(
-       KC_TRNS, KC_F1,   KC_F2,      KC_F3,      KC_F4,       KC_F5,   KC_TRNS, 
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_MS_UP,   KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, 
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,
-                                                              KC_TRNS, KC_TRNS,
-                                                                       KC_TRNS,
-                                                     KC_TRNS, KC_TRNS, KC_TRNS,
-
-       KC_TRNS,    KC_F6,      KC_F7,      KC_F8,      KC_F9,   KC_F10,  KC_TRNS,
-       KC_F11,     KC_TRNS,    KC_TRNS,    KC_UP,      KC_TRNS, KC_TRNS, KC_TRNS, 
-       KC_TRNS,    KC_LEFT,    KC_DOWN,    KC_RIGHT,   KC_TRNS, KC_TRNS,
-       KC_F12,     KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,
-                               KC_MS_BTN1, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,    KC_TRNS,
-       KC_TRNS, 
-       KC_TRNS,    KC_TRNS,    KC_TRNS
-),
-
- /* Keymap 3: Numpad Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      | NMLK |  P/  |  P*  |  P-  |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |  7   |   8  |  9   |  P+  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |  4   |   5  |  6   |  P+  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |  1   |   2  |  3   | ENTER|        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  0   |   0  |  .   | ENTER|      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-[3] = KEYMAP(
-       // Left Hand
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, 
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,
-       KC_TRNS,KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,
-       // Right Hand
-       KC_TRNS, KC_TRNS,  KC_LOCKING_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_TRNS, 
-       KC_TRNS, KC_TRNS,  KC_KP_7,        KC_KP_8,     KC_KP_9,        KC_KP_PLUS,  KC_TRNS,
-                KC_TRNS,  KC_KP_4,        KC_KP_5,     KC_KP_6,        KC_KP_PLUS,  KC_TRNS,     
-       KC_TRNS, KC_TRNS,  KC_KP_1,        KC_KP_2,     KC_KP_3,        KC_ENTER,    KC_TRNS,
-                          KC_KP_0,        KC_KP_0,     KC_KP_DOT,      KC_ENTER,    KC_TRNS,
-       KC_TRNS,  KC_TRNS, 
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_TAP_TOGGLE(1)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_3_on();
-        default:
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/readme.md b/keyboards/ergodox/keymaps/twentylives_dvorak_with_hebrew/readme.md
deleted file mode 100644 (file)
index fbd54fd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#Dvorak-Hebrew
-
-* This layout solves the problem of Dvorak Keyboard with OS QWERTY, which when you change to hebrew all the letters scrumble, the second layer is the Hebrew (top left button), which you can use on any computer, Plug and play.
-
-* The Hebrew layout itself solve another problem with the different locations of punctuation on Dvorak/Hebrew with few minor changes, it's based on Yuval Rabinovich's layout which you can find here : http://heboard.wordpress.com for regular QWERTY keyboards and for other operation systems.
-
-* these are only good when using a public computer or one you can't change settings on, because you need to change both keyboard layout and os layout each time you change language. A better solution is to use [hebrew-hw-dvorak](https://github.com/20lives/hebrew-hw-dvorak) as os layout.
-
-![layout image](https://i.imgur.com/wp2ouhf.png)
-![layout image](https://i.imgur.com/Z9XCgPW.png)
diff --git a/keyboards/ergodox/keymaps/twey/keymap.c b/keyboards/ergodox/keymaps/twey/keymap.c
deleted file mode 100644 (file)
index 1ecbce4..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "keymap_plover.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define STEN 2 // steno
-#define MDIA 3 // media keys
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,---------------------------------------------------.           ,---------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4   |   5  | STEN |           | NONE  |   6  |   7  |   8  |   9  |   0  |   \    |
- * |--------+------+------+------+-------+-------------|           |-------+------+------+------+------+------+--------|
- * | Del    |   '  |   ,  |   .  |   P   |   Y  |  Esc |           | Caps  |   F  |   G  |   C  |   R  |   L  |   /    |
- * |--------+------+------+------+-------+------|      |           |       |------+------+------+------+------+--------|
- * | BkSp   |   A  |   O  |   E  |   U   |   I  |------|           |-------|   D  |   H  |   T  |   N  |   S  |   -    |
- * |--------+------+------+------+-------+------|  Tab |           | Enter |------+------+------+------+------+--------|
- * | LShift |   ;  |   Q  |   J  |   K   |   X  |      |           |       |   B  |   M  |   W  |   V  |   Z  | RShift |
- * `--------+------+------+------+-------+-------------'           `--------------+------+------+------+------+--------'
- *   |  L1  | NONE |  Grv | Left | Right |                                        |  Up  | Down |   [  |   ]  |  L1  |
- *   `-----------------------------------'                                        `----------------------------------'
- *                                        ,--------------.         ,---------------.
- *                                        |  PgUp | PgDn |         | Home  |  End  |
- *                                 ,------|-------|------|         |-------+-------+------.
- *                                 |      |       | NONE |         | AltGr |       |      |
- *                                 | Alt  | Enter |------|         |-------| Space | Ctrl |
- *                                 |      |       | Supr |         | ~MDIA |       |      |
- *                                 `---------------------'         `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   M(0),
-        KC_DELT,        KC_QUOT,      KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_ESC,
-        KC_BSPC,        KC_A,         KC_O,   KC_E,   KC_U,   KC_I,
-        KC_LSFT,        KC_SCLN,      KC_Q,   KC_J,   KC_K,   KC_X,   KC_TAB,
-        MO(SYMB),       KC_NO,        KC_GRV, KC_LEFT,KC_RGHT,
-                                                      KC_PGUP,KC_PGDN,
-                                                              KC_NO,
-                                              KC_LALT,KC_ENT ,KC_LGUI,
-        // right hand
-             KC_NO,       KC_6,   KC_7,   KC_8,   KC_9,   KC_0,    KC_BSLS,
-             KC_CAPS,     KC_F,   KC_G,   KC_C,   KC_R,   KC_L,    KC_SLSH,
-                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,    KC_MINS,
-             KC_ENT,      KC_B,   KC_M,   KC_W,   KC_V,   KC_Z   , KC_RSFT,
-                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB),
-             KC_HOME, KC_END,
-             KC_RALT,
-             MO(MDIA),KC_SPC,KC_RCTL
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-[STEN] = KEYMAP(  // layout: layer 2: Steno for Plover
-        // left hand
-        KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,   KC_TRNS,
-        KC_NO,  PV_NUM, PV_NUM, PV_NUM,  PV_NUM, PV_NUM,  PV_STAR,
-        KC_NO,  PV_LS,  PV_LT,  PV_LP,   PV_LH,  PV_STAR,
-        KC_NO,  PV_LS,  PV_LK,  PV_LW,   PV_LR,  PV_STAR, PV_STAR,
-        KC_TRNS,KC_NO,  KC_NO,  KC_TRNS, KC_TRNS,
-                                          KC_NO, KC_NO,
-                                                 KC_NO,
-                                   PV_A,  PV_O,  KC_NO,
-        // right hand
-          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
-        PV_STAR,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,
-                 PV_STAR,   PV_RF,   PV_RP,   PV_RL,   PV_RT,   PV_RD,
-        PV_STAR, PV_STAR,   PV_RR,   PV_RB,   PV_RG,   PV_RS,   PV_RZ,
-                          KC_TRNS, KC_TRNS,   KC_NO,   KC_NO, KC_TRNS,
-        KC_NO,  KC_NO,
-        KC_NO,
-        KC_TRNS,PV_E,    PV_U
-),
-
-/* Keymap 3: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      | Back |      | Frwd |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Prev | Play | Next |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_WBAK, KC_TRNS, KC_WFWD, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(MDIA)                // FN1 - Momentary Layer 3 (Media)
-};
-
-void toggle_steno(int pressed)
-{
-  uint8_t layer = biton32(layer_state);
-  
-  if (pressed) {
-    if (layer != STEN) layer_on(STEN); else layer_off(STEN);
-
-    register_code(PV_LP);
-    register_code(PV_LH);
-    register_code(PV_LR);
-    register_code(PV_O);
-    register_code(PV_RL);
-    register_code(PV_RG);
-  } else {
-    unregister_code(PV_LP);
-    unregister_code(PV_LH);
-    unregister_code(PV_LR);
-    unregister_code(PV_O);
-    unregister_code(PV_RL);
-    unregister_code(PV_RG);
-  }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        toggle_steno(record->event.pressed);
-        break;
-      }
-    return MACRO_NONE;
-};
-
-// 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) {
-    __attribute__ ((unused))
-    uint32_t layer0 = layer_state & (1UL << 0),
-             layer1 = layer_state & (1UL << 1),
-             layer2 = layer_state & (1UL << 2),
-             layer3 = layer_state & (1UL << 3);    
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-
-    if (layer1) ergodox_right_led_1_on();
-    if (layer2) ergodox_right_led_2_on();
-    if (layer3) ergodox_right_led_3_on();
-};
diff --git a/keyboards/ergodox/keymaps/twey/readme.md b/keyboards/ergodox/keymaps/twey/readme.md
deleted file mode 100644 (file)
index 979e426..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Twey's Home Configuration
-## Layers
-- Layer 0: Non-ANSI Dvorak layout, with modified modifiers — all
-  modifiers on thumb keys, as well as return and space.
-- Layer 1: Default symbol layout.
-- Layer 2: Plover-oriented stenography layer.
-- Layer 3: Extended media/mouse layout.
-
-## Unusual features
-The Plover key (top right key on the left half) also sends my Plover
-‘toggle’ chord (SH-FT) when pressed, as well as toggling the steno
-layer, so you can toggle between steno and typing modes with a single
-keypress.
-
-If you want to use this feature, you'll need to add the
-`commands.json` dictionary to your Plover dictionaries, or define the
-toggle stroke (`PHROLG`) yourself.
diff --git a/keyboards/ergodox/keymaps/videck/Makefile b/keyboards/ergodox/keymaps/videck/Makefile
deleted file mode 100644 (file)
index 5c7d21f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-AUDIO_ENABLE:=no
-BACKLIGHT_ENABLE:=no
-BLUETOOTH_ENABLE:=no
-BOOTMAGIC_ENABLE:=no
-COMMAND_ENABLE:=no
-CONSOLE_ENABLE:=no
-EXTRAKEY_ENABLE:=yes
-MIDI_ENABLE:=no
-MOUSEKEY_ENABLE:=yes
-NKRO_ENABLE:=no
-RGBLIGHT_ENABLE:=no
-SLEEP_LED_ENABLE:=no
-TAP_DANCE_ENABLE:=yes
-UNICODEMAP_ENABLE:=no
-UNICODE_ENABLE:=no
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/videck/config.h b/keyboards/ergodox/keymaps/videck/config.h
deleted file mode 100644 (file)
index d89aabe..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#ifndef NO_DEBUG
-  #define NO_DEBUG
-#endif
-#ifndef NO_PRINT
-  #define NO_PRINT
-#endif
-
-#endif
diff --git a/keyboards/ergodox/keymaps/videck/keymap.c b/keyboards/ergodox/keymaps/videck/keymap.c
deleted file mode 100644 (file)
index 7bd6274..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-#include <stdbool.h>
-
-#include "ergodox.h"
-#include "action_layer.h"
-
-enum {
-  BASE = 0,     // Default layer
-  ARROWS = 1,   // Arrows and Fx keys layer
-  MOUSE = 2,    // Mouse movement and buttons layer
-  PARENS = 3,   // Parenthesis easy access layer
-
-  TD_L = 0,     // Tap dance index for left shift
-  TD_R = 1      // Tap dance index for right shift
-};
-
-// See the videck.png image for a visualization of the layout.
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [BASE] = KEYMAP(
-    // left hand
-    KC_GRV,     KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_HOME,
-    KC_EQL,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_END,
-    MO(PARENS), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
-    TD(TD_L),   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_BSPC,
-    KC_LCTL,    KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
-                                                    KC_ESC,  KC_LGUI,
-                                                             TG(MOUSE),
-                                           KC_SPC,  KC_TAB,  TG(ARROWS),
-    // right hand
-    KC_PGUP, KC_6,   KC_7,    KC_8,    KC_9,   KC_0,    KC_MINS,
-    KC_PGDN, KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_BSLS,
-             KC_H,   KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT,
-    KC_DELT, KC_N,   KC_M,    KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
-                     KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
-    KC_APP,  KC_ESC,
-    KC_INS,
-    KC_SLCK, KC_ENT, KC_SPC
-  ),
-  [ARROWS] = KEYMAP(
-    // left hand
-    KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                 KC_TRNS, KC_TRNS,
-                                                          KC_NO,
-                                        KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-    KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
-             KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS,
-    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-  [MOUSE] = KEYMAP(
-    // left hand
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                 KC_BTN3, KC_TRNS,
-                                                          KC_TRNS,
-                                        KC_BTN1, KC_BTN2, KC_NO,
-    // right hand
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-             KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS,
-    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS
-  ),
-  [PARENS] = KEYMAP(
-    // left hand
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                 KC_TRNS, KC_TRNS,
-                                                          KC_NO,
-                                        KC_TRNS, KC_TRNS, KC_NO,
-    // right hand
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
-             KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
-                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS,
-    KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS
-  )
-};
-
-typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
-
-typedef struct
-{
-  uint16_t kc1;
-  uint16_t kc2;
-  videck_tap_dance_trigger_t trigger;
-} videck_tap_dance_tuple_t;
-
-static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
-  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
-
-  if (state->count == 1) {
-    register_code16 (tuple->kc1);
-  } else if (state->count == 2) {
-    register_code16 (tuple->kc2);
-  }
-}
-
-static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
-  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
-
-  if (state->count == 1) {
-    unregister_code16 (tuple->kc1);
-  } else if (state->count == 2) {
-    unregister_code16 (tuple->kc2);
-    tuple->trigger(tuple->kc2);
-  }
-}
-
-static bool caps_lock_is_on;
-
-// Toggles caps lock status.
-static void videck_caps_trigger (const uint16_t kc) {
-  caps_lock_is_on ^= true;
-}
-
-#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
-    .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
-    .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }),  \
-  }
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-  [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
-  [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  ergodox_led_all_set(LED_BRIGHTNESS_LO);
-  caps_lock_is_on = false;
-};
-
-static void indicate_using_led(const uint8_t led, const bool enabled) {
-  if (enabled) {
-    ergodox_right_led_on(led);
-  } else {
-    ergodox_right_led_off(led);
-  }
-}
-
-static inline void indicate_caps_lock_state(const bool enabled) {
-  indicate_using_led(1, enabled);
-}
-
-static inline void indicate_arrows_layer_state(const bool enabled) {
-  indicate_using_led(2, enabled);
-}
-
-static inline void indicate_mouse_layer_state(const bool enabled) {
-  indicate_using_led(3, enabled);
-}
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-  // Check if we have shift locked.
-  indicate_caps_lock_state(caps_lock_is_on);
-  indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
-  indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
-};
diff --git a/keyboards/ergodox/keymaps/videck/readme.md b/keyboards/ergodox/keymaps/videck/readme.md
deleted file mode 100644 (file)
index 35d20b6..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-ViDeck keymap for ErgoDox
-=========================
-
-This is a QWERTY layout based on the US layout, where Vi functionality has been
-especially considered.
-
-# Features
-* Mouse movements using the Vi movement keys.
-* Vi movement keys doubling as arrow keys.
-* Shift lock using double tap.
-* A coder's modifier key for easy input of parenthesis.
-* Acess to the escape key using either thumb.
-* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
-  to a non-US layout once in a while in X).
-
-# Missing keys
-* Caps Lock (shift lock is used instead).
-* Pause/Break.
-* Print Screen.
-
-# LEDs
-* Shift lock is indicated using first LED.
-* Arrow keys layer is indicated using second LED.
-* Mouse keys layer is indicated using third LED.
-
-![videck.png](https://i.imgur.com/kw0CwuB.png)
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/videck/videck.json b/keyboards/ergodox/keymaps/videck/videck.json
deleted file mode 100644 (file)
index 7068cf5..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-[
-  {
-    "backcolor": "#333333",
-    "background": {
-      "name": "PBT Black",
-      "style": "background-image: url('/bg/plastic/pbt-black.png');"
-    },
-    "switchMount": "cherry",
-    "switchBrand": "gateron",
-    "switchType": "KS-3-Red"
-  },
-  [
-    {
-      "x": 3.5,
-      "c": "#323232",
-      "t": "#ffffff\n\n\n#ac97d8"
-    },
-    "#\n3\n\nF3",
-    {
-      "x": 10.5
-    },
-    "*\n8\n\nF8"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "@\n2\n\nF2",
-    {
-      "x": 1
-    },
-    "$\n4\n\nF4",
-    {
-      "x": 8.5
-    },
-    "&\n7\n\nF7",
-    {
-      "x": 1,
-      "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
-    },
-    "(\n9\n\nF9"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#ffffff\n\n\n#ac97d8"
-    },
-    "%\n5\n\nF5",
-    {
-      "t": "#ffffff"
-    },
-    "home",
-    {
-      "x": 4.5
-    },
-    "pgup",
-    {
-      "t": "#ffffff\n\n\n#ac97d8"
-    },
-    "^\n6\n\nF6"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#ffffff",
-      "w": 1.5
-    },
-    "~\n`",
-    {
-      "t": "#ffffff\n\n\n#ac97d8"
-    },
-    "!\n1\n\nF1",
-    {
-      "x": 14.5
-    },
-    ")\n0\n\nF10",
-    {
-      "w": 1.5
-    },
-    "_\n-\n\nF11"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "t": "#ffffff"
-    },
-    "E",
-    {
-      "x": 10.5
-    },
-    "I"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "W",
-    {
-      "x": 1
-    },
-    "R",
-    {
-      "x": 8.5
-    },
-    "U",
-    {
-      "x": 1,
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
-    },
-    "O\n\n\n\n\n\n\n\n\n{"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#ffffff"
-    },
-    "T",
-    {
-      "h": 1.5
-    },
-    "end",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "pgdn",
-    "Y"
-  ],
-  [
-    {
-      "y": -0.875,
-      "w": 1.5
-    },
-    "+\n=",
-    "Q",
-    {
-      "x": 14.5,
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
-    },
-    "P\n\n\n\n\n\n\n\n\n}",
-    {
-      "t": "#ffffff\n\n\n#ac97d8",
-      "w": 1.5
-    },
-    "|\n\\\n\nF12"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "t": "#ffffff"
-    },
-    "D",
-    {
-      "x": 10.5,
-      "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
-    },
-    "K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5,
-      "t": "#ffffff"
-    },
-    "S",
-    {
-      "x": 1,
-      "n": true
-    },
-    "F",
-    {
-      "x": 8.5,
-      "t": "#ffffff\n\n#5eb1e7\n#ac97d8",
-      "n": true
-    },
-    "J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
-    {
-      "x": 1,
-      "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
-    },
-    "L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#ffffff"
-    },
-    "G",
-    {
-      "x": 6.5,
-      "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
-    },
-    "H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#f8d615",
-      "a": 6,
-      "w": 1.5
-    },
-    "( ) [ ] { }",
-    {
-      "t": "#ffffff",
-      "a": 4
-    },
-    "A",
-    {
-      "x": 14.5,
-      "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
-    },
-    ":\n;\n\n\n\n\n\n&Ouml;\n\n)",
-    {
-      "t": "#ffffff\n\n\n\n\n\n\n#60605b",
-      "w": 1.5
-    },
-    "\"\n'\n\n\n\n\n\n&Auml;"
-  ],
-  [
-    {
-      "y": -0.625,
-      "x": 6.5,
-      "t": "#ffffff",
-      "h": 1.5
-    },
-    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
-    {
-      "x": 4.5,
-      "h": 1.5
-    },
-    "<i class='kb kb-Unicode-DeleteRight-Big'></i>"
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 3.5
-    },
-    "C",
-    {
-      "x": 10.5
-    },
-    "<\n,"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "X",
-    {
-      "x": 1
-    },
-    "V",
-    {
-      "x": 8.5
-    },
-    "M",
-    {
-      "x": 1,
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
-    },
-    ">\n.\n\n\n\n\n\n\n\n["
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 5.5,
-      "t": "#ffffff"
-    },
-    "B",
-    {
-      "x": 6.5
-    },
-    "N"
-  ],
-  [
-    {
-      "y": -0.875,
-      "t": "#ffffff\n\n#f67f00",
-      "a": 6,
-      "fa": [
-        5
-      ],
-      "w": 1.5
-    },
-    "&uArr;\n\n2-tap<br/>locks",
-    {
-      "t": "#ffffff",
-      "a": 4,
-      "f": 3
-    },
-    "Z",
-    {
-      "x": 14.5,
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
-      "f": 3
-    },
-    "?\n/\n\n\n\n\n\n\n\n]",
-    {
-      "t": "#ffffff\n\n#f67f00",
-      "a": 6,
-      "f": 3,
-      "w": 1.5
-    },
-    "&uArr;\n\n2-tap<br/>locks"
-  ],
-  [
-    {
-      "y": -0.375,
-      "x": 3.5,
-      "t": "#ffffff",
-      "a": 4
-    },
-    "\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
-    {
-      "x": 10.5,
-      "f": 3
-    },
-    "}\n]"
-  ],
-  [
-    {
-      "y": -0.875,
-      "x": 2.5
-    },
-    "\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
-    {
-      "x": 1
-    },
-    "\n<i class='kb kb-Multimedia-Mute-1'></i>",
-    {
-      "x": 8.5,
-      "t": "#ffffff\n\n\n\n\n\n\n#60605b",
-      "f": 3
-    },
-    "{\n[\n\n\n\n\n\n&Aring;",
-    {
-      "x": 1,
-      "t": "#ffffff",
-      "f": 3
-    },
-    "+\n="
-  ],
-  [
-    {
-      "y": -0.75,
-      "x": 0.5,
-      "f": 3
-    },
-    "ctrl",
-    {
-      "f": 3
-    },
-    "alt",
-    {
-      "x": 14.5,
-      "f": 3
-    },
-    "altgr",
-    {
-      "f": 3
-    },
-    "ctrl"
-  ],
-  [
-    {
-      "r": 30,
-      "rx": 6.5,
-      "ry": 4.25,
-      "y": -1,
-      "x": 1,
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
-      "f": 3
-    },
-    "esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
-    {
-      "t": "#ffffff",
-      "f": 7
-    },
-    "<i class='kb kb-logo-linux-tux'></i>"
-  ],
-  [
-    {
-      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
-      "f": 3,
-      "h": 2
-    },
-    "space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
-    {
-      "h": 2
-    },
-    "<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
-    {
-      "t": "#5eb1e7"
-    },
-    "<i class='fa fa-mouse-pointer'></i>"
-  ],
-  [
-    {
-      "x": 2,
-      "t": "#ac97d8"
-    },
-    "<i class='fa fa-arrows'></i>"
-  ],
-  [
-    {
-      "r": -30,
-      "rx": 13,
-      "y": -1,
-      "x": -3,
-      "t": "#ffffff"
-    },
-    "<i class='kb kb-Hamburger-Menu'></i>",
-    "esc"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "ins",
-    {
-      "h": 2
-    },
-    "<i class='kb kb-Return-2'></i>",
-    {
-      "h": 2
-    },
-    "space"
-  ],
-  [
-    {
-      "x": -3
-    },
-    "scroll<br/>lock"
-  ]
-]
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/win10_writers-block/Makefile b/keyboards/ergodox/keymaps/win10_writers-block/Makefile
deleted file mode 100644 (file)
index fbab4b7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Having a file like this allows you to override Makefile definitions
-# for your own particular keymap
-
-TAP_DANCE_ENABLE=yes
-
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox/keymaps/win10_writers-block/config.h b/keyboards/ergodox/keymaps/win10_writers-block/config.h
deleted file mode 100644 (file)
index c6da3dc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
-#define KEYBOARDS_ERGODOX_CONFIG_H_
-
-#define MOUSEKEY_DELAY          100
-#define MOUSEKEY_INTERVAL       20
-#define MOUSEKEY_MAX_SPEED      3
-#define MOUSEKEY_TIME_TO_MAX    10
-
-#define TAPPING_TOGGLE  1
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-#define TAPPING_TERM    300
-#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
-    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
-)
-
-#ifdef SUBPROJECT_ez
-    #include "ez/config.h"
-#endif
-#ifdef SUBPROJECT_infinity
-    #include "infinity/config.h"
-#endif
-#ifdef SUBPROJECT_ergodone
-    #include "ergodone/config.h"
-#endif
-
-
-#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/keyboards/ergodox/keymaps/win10_writers-block/keymap.c b/keyboards/ergodox/keymaps/win10_writers-block/keymap.c
deleted file mode 100644 (file)
index 3106b33..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "version.h"
-#include "wait.h"
-
-#define BASE 0 // default layer  -  helpful for writing in Office-style word processors. 
-#define SYMB 1 // symbol layer   -  NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key 
-#define RIMW 2 // rimworld layer -  made for the game RimWorld, by Tynan Sylvester | feel free to remap for your favorite game!
-#define MDIA 3 // media layer    -  mouse and music - close to Ergodox EZ default media layer
-
-#define CO_PA M(0)                  // hold copy, tap paste
-
-#define W_CUT    LCTL(KC_X)         // C-x Cut
-#define W_COPY   LCTL(KC_C)         // C-c Copy
-#define W_PASTE  LCTL(KC_V)         // C-v Paste
-#define W_UNDO   LCTL(KC_Z)         // C-z Undo
-#define W_FIND   LCTL(KC_F)         // C-v Find
-#define W_CAD    LCTL(LALT(KC_DEL)) // one-tap ctrl-alt-del
-
-
-
-//Tap Dance Declarations
-enum {
-  CAKEWARP,
-  CTRLALTMDIA,
-};
-
-void cake_count (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 2) {         
-    layer_on (SYMB);        //define double tap here
-    layer_off (MDIA);
-  } 
-  else {    
-    layer_off (SYMB);       //define single tap or hold here
-    layer_off (MDIA);
-  }
-  if (state->count == 3) {         
-     layer_on (RIMW);       //define triple tap here
-     layer_off (MDIA);
-  } 
-  else {    
-       layer_off (RIMW);       //define single tap or hold here
-       layer_off (MDIA);
-    reset_tap_dance (state);
-  }
-}
-
-void dance_cad_mdia_fin (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    register_code (KC_LCTL);
-    register_code (KC_LALT);
-       register_code (KC_DEL);
-  } else {
-    layer_on (MDIA);
-  }
-}
-
-void dance_cad_mdia_reset (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    unregister_code (KC_DEL);
-    unregister_code (KC_LALT);
-       unregister_code (KC_LCTL);
-  } else {
-    ;
-  }
-}
-
-//Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
-  // tap for Layer 0, tap twice to switch to symbol layer, and tap three times to switch to rimworld layer.
-  [CAKEWARP] = ACTION_TAP_DANCE_FN(cake_count)
-  // tap for ctrl-alt-del, tap twice for media layer
-  ,[CTRLALTMDIA] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cad_mdia_fin, dance_cad_mdia_reset)
-  // Other declarations would go here, separated by commas, if you have them
-};
-
-//In Layer declaration, add tap dance item in place of a key code
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer - TD(one_tap, two_taps, three_taps...)
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  | 6    |           |  7   |   7  |   8  |   9  |   0  |   -  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | F12/L1 |   Q  |   W  |   E  |   R  |   T  |  {/[ |           |TD(L0 |   Y  |   U  |   I  |   O  |   P  |   \    | 
- * |--------+------+------+------+------+------|      |           |L1 L2)|------+------+------+------+------+--------|
- * |Caps/Win|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------|  }/] |           TD(ctrl|------+------+------+------+------+--------|
- * |LShift/(|Z/Ctrl|   X  |   C  |   V  |   B  |      |           |altdel|   N  |   M  |   ,  |   .  |  /   |RShift/)|
- * `--------+------+------+------+------+-------------'           |L3)   |------+------+------+------+------+--------'
- * |  Undo  |  Cut |CopyPa| Meh  | LGui |                         '------|      | Enter| Left | Up   | Down | Right  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        | Esc  | VolUp|       | F4   | Mute |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | VolDn|       | F5   |        |      |
- *                                 |Backsp|Delete|------|       |------|  Tab / |Space |
- *                                 |ace   |      | Find |       | Alt  |  CTRL  |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-          KC_GRV,         KC_1,         KC_2,         KC_3,        KC_4,   KC_5,   KC_6,
-LT(SYMB, KC_F12),         KC_Q,         KC_W,         KC_E,        KC_R,   KC_T,   KC_LBRC,
-  GUI_T(KC_CAPS),         KC_A,         KC_S,         KC_D,        KC_F,   KC_G,
-         KC_LSPO,  CTL_T(KC_Z),         KC_X,         KC_C,        KC_V,   KC_B,   KC_RBRC,
-          W_UNDO,        W_CUT,        CO_PA, MEH_T(KC_NO),     KC_LGUI,
-                                                                         KC_ESC, KC_VOLU,
-                                                                                 KC_VOLD,
-                                                             KC_BSPC, KC_DELETE,  W_FIND,
-        // right hand
-                       KC_7,   KC_7,   KC_8,   KC_9,    KC_0,   KC_MINS,          KC_EQL,
-               TD(CAKEWARP),   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,            KC_BSLS,
-                               KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN,         KC_QUOT,
-            TD(CTRLALTMDIA),   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,         KC_RSPC,
-                                       KC_ENT, KC_LEFT, KC_UP,  KC_DOWN,        KC_RIGHT,
-                      KC_F4,        KC_MUTE,
-                      KC_F5,
-                    KC_RALT, CTL_T(KC_TAB), KC_SPC
-    ),
-
-/* Keymap 1: Symbol Layer | No EEPROM Or Version keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |   xx |           | xx   |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |TD(L0 |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |L1 L2)|------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   -    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,  KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_NO,
-       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
-       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
-       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-         KC_NO, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_MINS,
-       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
-                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,    KC_NO,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),     
-       
-/* Keymap 2: RimWorld Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  ESC   |   1  |   2  |   3  |   4  |   5  |  6   |           |   7  |   7  |   8  |   9  |   0  |   -  |   =    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  TAB   |   C  |  ,<  |   W  |   >. |   R  |      |           |TD(L0 |  U   |  B   |   N  |  J   |  M   |   PGUP |
- * |--------+------+------+------+------+------| F10  |           |L1 L2)|------+------+------+------+------+--------|
- * |   I    |   F  |   A  |   S  |   D  |   8  |------|           |------|  X   |  L   |   P  |  Y   |  H   |  ENTER |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   K    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 | F12  |   PGDN |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |  F   |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |SPACE |  C   |------|       |------|  E   |SPACE |
- *                                 |      |      |  Q   |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// RIMWORLD 
-[RIMW] = KEYMAP(
-       // left hand
-        KC_ESC,   KC_1,    KC_2,     KC_3,    KC_4,    KC_5,    KC_6,
-        KC_TAB,   KC_C, KC_COMM,     KC_W,  KC_DOT,    KC_R,  KC_F10,
-          KC_I,   KC_F,    KC_A,     KC_S,    KC_D,    KC_8,
-          KC_K,  KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,
-       KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                                     KC_C,KC_Q,KC_TRNS,
-       // right hand
-          KC_7,    KC_7,    KC_8,        KC_9,    KC_0,    KC_MINS,  KC_EQL,
-       KC_TRNS,    KC_U,    KC_B,        KC_N,    KC_J,       KC_M, KC_PGUP,
-                   KC_X,    KC_L, SFT_T(KC_P),    KC_Y,       KC_H,  KC_ENT,
-         KC_F7,   KC_F8,   KC_F9,      KC_F10,  KC_F11,     KC_F12, KC_PGDN,
-                            KC_F,     KC_LEFT,   KC_UP,    KC_DOWN,KC_RIGHT,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS,    KC_E, KC_TRNS
-),
-/* Keymap 3: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 | Lclk | Rclk |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_BTN1, KC_BTN2, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-};
-
-static uint16_t key_timer;
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case 0: {
-            if (record->event.pressed) {
-                key_timer = timer_read(); // if the key is being pressed, we start the timer.
-            }
-            else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
-                if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
-                    return MACRO( D(LCTL), T(C), U(LCTL), END  );
-                }
-                else {
-                    return MACRO( D(LCTL), T(V), U(LCTL), END  );
-                }
-            }
-            break;
-        }
-      }
-    return MACRO_NONE;
-};
-
-// Anything you want to do once when the keyboard initializes.
-// Tests LED function when the keyboard initializes.
-void matrix_init_user(void) {
-
-  wait_ms(500);
-  ergodox_board_led_on();
-  wait_ms(200);
-  ergodox_right_led_1_on();
-  wait_ms(200);
-  ergodox_right_led_2_on();
-  wait_ms(200);
-  ergodox_right_led_3_on();
-  wait_ms(200);
-  ergodox_board_led_off();
-  wait_ms(200);
-  ergodox_right_led_1_off();
-  wait_ms(200);
-  ergodox_right_led_2_off();
-  wait_ms(200);
-  ergodox_right_led_3_off();
-
-};
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
-    uint8_t layer = biton32(layer_state);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        case 3:
-            ergodox_right_led_3_on();
-            break;                     
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/win10_writers-block/readme.md b/keyboards/ergodox/keymaps/win10_writers-block/readme.md
deleted file mode 100644 (file)
index cb135b4..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-<!-- -*- mode: markdown; fill-column: 8192 -*- -->
-
-Win10 Writer's Block ErgoDox - v1.0
-
-=======================
-
-This is a QWERTY layout for QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10.
-
-Professional writers may find this layout useful -- copywriters, technical writers, novelists, etc.  
-
-I use my ErgoDox with this keymap as a daily driver at my office.
-
-A gaming layer is unobtrusively built into this layout. I use that layer to play RimWorld. 
-
-Feel free to modify the gaming layer to your personal taste.
-
-## Table of Contents
-
-* [Layouts](#layouts)
-    - [Base layer](#base-layer)
-    - [Symbol layer](#symbol-layer)
-    - [Gaming layer](#rimworld-layer)
-    - [Media layer](#media-layer)
-* [Tools](#tools)
-    - [Layer notification](#layer-notification)
-* [Building](#building)
-    - [Using on Windows](#using-on-windows)
-* [License](#license)
-* [Special Thanks](#special-thanks)
-
-# Layouts
-
-* TapDance will teleport you to the layer you want: 
-* One Tap for the Base layer
-* Two Taps for the Symbol layer
-* Three Taps for the Rimworld/Gaming layer
-
-* Where the "Meh" key is located on the Ergodox EZ default layout, I've changed it to another tap dance key:
-* One Tap for CTRL-ALT-DEL
-* Two Taps for the Media/Mouse layer
-
-## Base layer
-
-[![Base layer](https://i.imgur.com/1PTR0SG.png)](http://www.keyboard-layout-editor.com/#/gists/8fd9bbdd3a23bbb5a8779de3624a3be1)
-
-This is a QWERTY layout with some quirks. 
-
-* Enter is located on a key that won't cause as much thumb fatigue.  
-* Copy and Paste work from the same key. Just hold the key to copy and tap the key to paste!
-* Undo, Find and Cut are also one-touch keys. 
-* F12 is where you would normally find TAB on standard layouts. Quickly save in Word, safely.
-* You'll find bracket keys below the "6" key.
-
-* The Meh Key is a single-button CTRL+ALT+SHIFT modifier.
-
-* Space Cadet Shift: Tap L Shift for "(" and R Shift for ")" -- holding either shift works like a normal shift.
-* Tap "Z" or Tab to use either normally. Hold them for CTRL. 
-* Tap Caps Lock to use it normally. Hold it for Win key combinations (Win+D to minimize all programs, etc).
-
-## Symbol layer
-
-[![Symbol layer](https://i.imgur.com/8nEzpcp.png)](http://www.keyboard-layout-editor.com/#/gists/04eb6458b8b17882e472f64d482f12b4)
-
-Your standard Ergodox EZ symbol + numpad layout, minus the Version and EEPROM keys.
-
-* From the base layer, hold the F12 Key to temporarily access this layer (use for quick access to numpad)
-* Release F12 to return to the base layer.
-
-## Rimworld layer
-
-[![Rimworld / Gaming Layer](https://i.imgur.com/Yh3eBjJ.png)](http://www.keyboard-layout-editor.com/#/gists/d53af8391e6e443ed0a98ccfbdb4eace)
-
-This layer was made to play RimWorld, a Sci-Fi Colony Survival Game by Tynan Sylvester and Ludeon Studios, available on Steam. 
-
-* Have fun!
-
-## Media layer
-
-[![Media layer](https://i.imgur.com/r5ysFy1.png)](http://www.keyboard-layout-editor.com/#/gists/3209d09ed4bd997e4f49f28c6ada2ab3)
-
-This is the standard Ergodox EZ media layout with more options for mouseclick buttons. 
-
-* In this layer, your "space" key changes into a back button for your browser.
-
-## LED states
-
-Your LEDs will change to indicate your layer. You'll know you are in the base layer if all LEDs are off.
-
-# Building
-
-To build, you will need the [QMK][qmk] firmware checked out. from there, dive into `keyboards/ergodox/keymaps/win10_writers-block/`
-
-[qmk]: https://github.com/qmk/qmk_firmware
-
-```
-$ make keyboard=ergodox keymap=win10_writers-block
-```
-
-## Using on Windows
-
-This layout is tested in Windows 7 Pro and Windows 10 Home environments. 
-
-# License
-
-GPL 3+
-
-# Special Thanks
-
-* To algernon for his coding help. I'm a novice but I still made this work (and figured out tap dance) with his help.
-
-* To /r/MechanicalKeyboards for being an all-around great community.
-
-* To /u/profet23 for his amazing custom Ergodox boards.
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/workman_osx_mdw/keymap.c b/keyboards/ergodox/keymaps/workman_osx_mdw/keymap.c
deleted file mode 100644 (file)
index c05a101..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-// readme
-// This keyboard layout is based on the [Workman Dead layout](https://github.com/ojbucao/Workman/tree/master/mac#workman-dead-for-programmers), which uses the comma as a dead key to trigger a second layer.
-// Since I have more keys at my disposal on the ErgoDox, I moved the dead key to the bottom right. There are still a lot of
-// blanks so still discovering what I like.
-// If you aren't familiar with a dead key, the idea is that you tap the dead key which switches the layout. the next key you hit
-// triggers the key you pressed AND switches the layout back to the original. For now I do this with a super kludgey macro and I
-// look forward to learning about a more elegant way to do the same thing. Until then, this will have to do.
-
-
-// TODO: Define layer names that make sense for the ErgoDox EZ.
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define DEAD 3 // dead version of the symbols layer
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   D  |   R  |   W  |   B  |  L1  |           |  L1  |   J  |   F  |   U  |   P  |   ;  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | Hyper  |   A  |   S  |   H  |   T  |   G  |------|           |------|   Y  |   N  |   E  |   O  |   I  |   '    |
- * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   M  |   C  |   V  |      |           |      |   K  |   L  |   ,  |   .  |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      | CTRL |  OPT |  CMD |                                       | Left | Down |  Up  | Right|  L3  |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |        |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Home |       | PgUp |        |      |
- *                                 |Bckspc| Space|------|       |------| Space  |Enter |
- *                                 |      |      | End  |       | PgDn |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
-        KC_TAB,         KC_Q,         KC_D,   KC_R,   KC_W,   KC_B,   TG(1),
-        ALL_T(KC_ESC),  KC_A,         KC_S,   KC_H,   KC_T,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_M,   KC_C,   KC_V,   KC_NO,
-        KC_NO,          KC_NO,        KC_LCTL,KC_LALT,KC_LGUI,
-                                              KC_NO,  KC_NO,
-                                                              KC_HOME,
-                                               KC_BSPC,KC_SPC,KC_END,
-        // right hand
-             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             TG(1),       KC_J,   KC_F,   KC_U,   KC_P,   KC_SCLN,          KC_BSLS,
-                          KC_Y,   KC_N,   KC_E,   KC_O,   KC_I,             KC_QUOT,
-             MEH_T(KC_NO),KC_K,   KC_L,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                  KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,          KC_FN4,
-             KC_NO,        KC_NO,
-             KC_PGUP,
-             KC_PGDN,KC_SPC,KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   %  |   &  |   ?  |   +  |   @  |      |           |      |   $  |   _  |   [  |   ]  |   !  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   /  |   (  |   =  |   0  |   {  |------|           |------|   }  |   1  |   *  |   )  |   -  |   "    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   6  |   7  |   8  |   9  |   |  |      |           |      |   \  |   2  |   3  |   4  |   5  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,   KC_F1,    KC_F2,    KC_F3,          KC_F4,        KC_F5,          KC_TRNS,
-       KC_TRNS,   KC_PERC,  KC_AMPR,  LSFT(KC_SLSH),  LSFT(KC_EQL), KC_AT,          KC_TRNS,
-       KC_TRNS,   KC_SLSH,  KC_LPRN,  KC_EQL,         KC_0,     LSFT(KC_LBRC),
-       KC_TRNS,   KC_6,     KC_7,     KC_8,           KC_9,     KC_PIPE,        KC_TRNS,
-       KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,        KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,          KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,
-       KC_TRNS, KC_DLR,         KC_UNDERSCORE,  KC_LBRC,  KC_RBRC,  KC_EXLM,  KC_F12,
-                KC_RCBR,        KC_1,     KC_ASTR,  KC_RPRN,  KC_MINS,  KC_QUOT,
-       KC_TRNS, KC_SLSH,        KC_2,     KC_3,     KC_4,     KC_5,     KC_TRNS,
-                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |Brwser|
- *                                 |      |      |------|       |------|      |Back  |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_TRNS,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
-       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
-                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_WBAK
-),
-/* Keymap 4: Dead Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  %   |   &  |   ?  |   +  |   @  |      |           |      |   $  |   _  |   [  |   ]  |   !  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   /  |   (  |   =  |   0  |   {  |------|           |------|   }  |   1  |   *  |   )  |   -  |   "    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   6  |   7  |   8  |   9  |   |  |      |           |      |   \  |   2  |   3  |   4  |   5  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[DEAD] = KEYMAP(
-       // left hand
-       KC_TRNS,   KC_F1,    KC_F2,    KC_F3,      KC_F4,    KC_F5,          KC_TRNS,
-       KC_TRNS,   M(100),   M(101),   M(102),     M(103),   M(104),         KC_TRNS,
-       KC_TRNS,   M(109),  M(110),  M(111),       M(112),   M(113),
-       KC_TRNS,   M(120),     M(121),     M(122),           M(123),     M(124),        KC_TRNS,
-       KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,        KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,
-       KC_TRNS, M(105),   M(106),   M(107),   M(108),   M(130),   KC_F12,
-                M(114),   M(115),   M(116),   M(117),   M(118),   M(119),
-       KC_TRNS, M(125),   M(126),   M(127),   M(128),   M(129),   KC_TRNS,
-                          KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),                // FN1 - Momentary Layer 1 (Symbols)
-    [2] = ACTION_LAYER_ON(BASE,0),                       // FN2 - Go back to the base layer
-    [3] = ACTION_LAYER_ON(DEAD,0),
-    [4] = ACTION_LAYER_TOGGLE(DEAD),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-          break;
-        case 100:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(5), U(LSFT), T(FN4), END);
-          break;
-        case 101:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(7), U(LSFT), T(FN4), END);
-          break;
-        case 102:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(SLSH), U(LSFT), T(FN4), END);
-          break;
-        case 103:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(EQL), U(LSFT), T(FN4), END);
-          break;
-        case 104:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(2), U(LSFT), T(FN4), END);
-          break;
-        case 105:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(4), U(LSFT), T(FN4), END);
-          break;
-        case 106:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(MINS), U(LSFT), T(FN4), END);
-          break;
-        case 107:
-          layer_clear();
-          return MACRODOWN(T(LBRC), T(FN4), END);
-          break;
-        case 108:
-          layer_clear();
-          return MACRODOWN(T(RBRC), T(FN4), END);
-          break;
-        case 130:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(1), U(LSFT), T(FN4), END);
-          break;
-        case 109:
-          layer_clear();
-          return MACRODOWN(T(SLSH), T(FN4), END);
-          break;
-        case 110:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(9), U(LSFT), T(FN4), END);
-          break;
-        case 111:
-          layer_clear();
-          return MACRODOWN(T(EQL), T(FN4), END);
-          break;
-        case 112:
-          layer_clear();
-          return MACRODOWN(T(0), T(FN4), END);
-          break;
-        case 113:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(LBRC), U(LSFT), T(FN4), END);
-          break;
-        case 114:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(RBRC), U(LSFT), T(FN4), END);
-          break;
-        case 115:
-          layer_clear();
-          return MACRODOWN(T(1), T(FN4), END);
-          break;
-        case 116:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(8), U(LSFT), T(FN4), END);
-          break;
-        case 117:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(0), U(LSFT), T(FN4), END);
-          break;
-        case 118:
-          layer_clear();
-          return MACRODOWN(T(MINS), T(FN4), END);
-          break;
-        case 119:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(QUOT), U(LSFT), T(FN4), END);
-          break;
-        case 120:
-          layer_clear();
-          return MACRODOWN(T(6), T(FN4), END);
-          break;
-        case 121:
-          layer_clear();
-          return MACRODOWN(T(7), T(FN4), END);
-          break;
-        case 122:
-          layer_clear();
-          return MACRODOWN(T(8), T(FN4), END);
-          break;
-        case 123:
-          layer_clear();
-          return MACRODOWN(T(9), T(FN4), END);
-          break;
-        case 124:
-          layer_clear();
-          return MACRODOWN(D(LSFT), T(BSLS), U(LSFT), T(FN4), END);
-          break;
-        case 125:
-          layer_clear();
-          return MACRODOWN(T(BSLS), T(FN4), END);
-          break;
-        case 126:
-          layer_clear();
-          return MACRODOWN(T(2), T(FN4), END);
-          break;
-        case 127:
-          layer_clear();
-          return MACRODOWN(T(3), T(FN4), END);
-          break;
-        case 128:
-          layer_clear();
-          return MACRODOWN(T(4), T(FN4), END);
-          break;
-        case 129:
-          layer_clear();
-          return MACRODOWN(T(5), T(FN4), END);
-          break;
-
-        default:
-        return MACRO_NONE;
-      }
-  return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c
deleted file mode 100644 (file)
index b186c70..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * About this keymap:
- * 
- * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak
- * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner
- * keys. I've decided to continue using this layout with my ErgoDox.
- *
- * The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional
- * keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
- *
- * I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck
- * layouts.
- *
- */
-
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-
-extern keymap_config_t keymap_config;
-
-#define _DV 0 // Dvorak layer
-#define _QW 1 // Qwerty layer
-#define _CM 2 // Colemak layer
-#define _MD 3 // Media Layer
-#define _KP 4 // Keypad Layer
-
-// Macro name shortcuts
-#define DVORAK M(_DV)
-#define QWERTY M(_QW)
-#define COLEMAK M(_CM)
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Layer 0 : Dvorak
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab    |   '  |   ,  |   .  |   P  |   Y  |      | |      |   F  |   G  |   C  |   R  |   L  |   \    |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * | CapsLk |   A  |   O  |   E  |   U  |   I  |------| |------|   D  |   H  |   T  |   N  |   S  |   -    |
- * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
- * | LShift |   ;  |   Q  |   J  |   K  |   X  |      | |      |   B  |   M  |   W  |   V  |   Z  | RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
- *   `----------------------------------'                             `----------------------------------'
- *                                      ,-------------. ,-------------.
- *                                      | LCTL | LALT | | RALT | RCTL |
- *                               ,------|------|------| |------+------+------.
- *                               |      |      | Home | | PgUp |      |      |
- *                               | BkSp | Del  |------| |------| Enter| Space|
- *                               |      |      | End  | | PgDn |      |      |
- *                               `--------------------' `--------------------'
- *
- */
-[_DV] = KEYMAP(
-        // left hand
-        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
-        KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    XXXXXXX,
-        KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,
-        KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    MO(_MD),
-        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
-                                            KC_LCTL, KC_LALT,
-                                                     KC_HOME,
-                                   KC_BSPC, KC_DEL,  KC_END,
-        // right hand
-        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_SLSH,
-        XXXXXXX, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSLS,
-                 KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
-        MO(_KP), KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
-                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
-        KC_RALT, KC_RCTL,
-        KC_PGUP,
-        KC_PGDN, KC_ENT,  KC_SPC
-  ),
-
-
-/* Layer 1: QWERTY
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |      | |      |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * | CapsLk |   A  |   S  |   D  |   F  |   G  |------| |------|   H  |   J  |   K  |   L  |   ;  |   '    |
- * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   N  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
- *   `----------------------------------'                             `----------------------------------'
- *                                      ,-------------. ,-------------.
- *                                      | LCTL | LALT | | RALT | RCTL |
- *                               ,------|------|------| |------+------+------.
- *                               |      |      | Home | | PgUp |      |      |
- *                               | BkSp | Del  |------| |------| Enter| Space|
- *                               |      |      | End  | | PgDn |      |      |
- *                               `--------------------' `--------------------'
- */
-[_QW] = KEYMAP(
-        // left hand
-        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_LEFT,
-        KC_DELT, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    XXXXXXX,
-        KC_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
-        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(_MD),
-        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
-                                            KC_LCTL, KC_LALT,
-                                                     KC_HOME,
-                                   KC_BSPC, KC_DEL,  KC_END,
-        // right hand
-        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
-        XXXXXXX, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS,
-                 KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
-        MO(_KP), KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
-                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
-        KC_LALT, KC_LCTL,
-        KC_PGUP,
-        KC_PGDN, KC_ENT, KC_SPC
-  ),
-
-
-/* Layer 2 : Colemak
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   F  |   P  |   G  |      | |      |   J  |   L  |   U  |   Y  |   ;  |   \    |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * | BkSpc  |   A  |   R  |   S  |   T  |   D  |------| |------|   H  |   N  |   E  |   I  |   O  |   '    |
- * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
- * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   K  |   M  |   ,  |   .  |   /  | RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
- *   `----------------------------------'                             `----------------------------------'
- *                                      ,-------------. ,-------------.
- *                                      | LCTL | LALT | | RALT | RCTL |
- *                               ,------|------|------| |------+------+------.
- *                               |      |      | Home | | PgUp |      |      |
- *                               | BkSp | Del  |------| |------| Enter| Space|
- *                               |      |      | End  | | PgDn |      |      |
- *                               `--------------------' `--------------------'
- */
-[_CM] = KEYMAP( 
-        // left hand
-        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_LEFT,
-        KC_DELT, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    XXXXXXX,
-        KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,
-        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(_MD),
-        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
-                                            KC_LCTL, KC_LALT,
-                                                     KC_HOME,
-                                   KC_BSPC, KC_DEL,  KC_END,
-        // right hand
-        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
-        XXXXXXX, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSLS,
-                 KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT,
-        MO(_KP), KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
-                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
-        KC_LALT, KC_LCTL,
-        KC_PGUP,
-        KC_PGDN, KC_ENT, KC_SPC
-  ),
-
-
-/* Layer 3 : Media layer
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  | |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * |        |      | PrSc | ScLk | Paus |      |      | |      |      | Mute | Vol- | Vol+ |      |        |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------| |------| Stop | Prev | Play | Next | Sel  |        |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * |        |      |Dvorak|Qwerty|Colemk|      |      | |      |      |      |      |      |      |        |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                             |      |      |      |      |      |
- *   `----------------------------------'                             `----------------------------------'
- *                                      ,-------------. ,-------------.
- *                                      |      |      | |      |      |
- *                               ,------|------|------| |------+------+------.
- *                               |      |      |      | |      |      |      |
- *                               |      |      |------| |------|      |      |
- *                               |      |      |      | |      |      |      |
- *                               `--------------------' `--------------------'
- */
-[_MD] = KEYMAP(
-        // left hand
-        RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
-        _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
-        _______, _______, _______, _______, _______, _______,
-        _______, _______, DVORAK,  QWERTY,  COLEMAK, _______, _______,
-        _______, _______, _______, _______, _______,
-                                            _______, _______,
-                                                     _______,
-                                   _______, _______, _______,
-        // right hand
-        KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
-        _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
-                 KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-                          _______, _______, _______, _______, _______,
-        _______, _______,
-        _______,
-        _______, _______, _______
-  ),
-
-
-/* Layer 4 : Keypad layer
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | Power  |      |      |      |      |      |      | |      |      | NmLk | KP = | KP / | KP * |        |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Sleep  |      |      |      |      |      |      | |      |      | KP 7 | KP 8 | KP 9 | KP - |        |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * | Wake   |      |      |      |      |      |------| |------|      | KP 4 | KP 5 | KP 6 | KP + |        |
- * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      | |      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                             | KP 0 |      | KP . |KP Ent|      |
- *   `----------------------------------'                             `----------------------------------'
- *                                      ,-------------. ,-------------.
- *                                      |      |      | |      |      |
- *                               ,------|------|------| |------+------+------.
- *                               |      |      |      | |      |      |      |
- *                               |      |      |------| |------|      |      |
- *                               |      |      |      | |      |      |      |
- *                               `--------------------' `--------------------'
- */
-[_KP] = KEYMAP(
-        // left hand
-        KC_PWR,  _______, _______, _______, _______, _______, _______,
-        KC_SLEP, _______, _______, _______, _______, _______, _______,
-        KC_WAKE, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______,
-                                            _______, _______,
-                                                     _______,
-                                   _______, _______, _______,
-        // right hand
-        _______, _______, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, _______,
-        _______, _______, KC_P7,   KC_P8,   KC_P9,   KC_PMNS, _______,
-                 _______, KC_P4,   KC_P5,   KC_P6,   KC_PPLS, _______,
-        _______, _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, _______,
-                          KC_P0,   _______, KC_PDOT, KC_PENT, _______,
-        _______, _______,
-        _______,
-        _______, _______, _______
-  ),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-void persistent_default_layer_set(uint16_t default_layer) {
-  eeconfig_update_default_layer(default_layer);
-  default_layer_set(default_layer);
-}
-
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-        case _DV:
-          if (record->event.pressed) {
-            persistent_default_layer_set(1UL<<_DV);
-          }
-          break;
-        case _QW:
-          if (record->event.pressed) {
-            persistent_default_layer_set(1UL<<_QW);
-          }
-          break;
-        case _CM:
-          if (record->event.pressed) {
-            persistent_default_layer_set(1UL<<_CM);
-          }
-          break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md
deleted file mode 100644 (file)
index 134fb50..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# Xyverz's ErgoDox EZ Keymap
-
-## About this keymap:
-
-The Dvorak layout shown here stems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. ~~Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox.~~ I've decided do give the normal placing of the SLSH, EQL, and xBRC keys a try, after using a different keyboard for a while...
-
-The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
-
-I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts.
-
-## Still to do:
-
- * Need to figure out a better position for the ESC key.
- * Come up with a function for the empty keys shown in the alpha layers below.
- * Fix the CapsLock, NumLock, and ScrLck LEDs.
-
-### Layer 0: Dvorak layer
-
-       ,--------------------------------------------------.,--------------------------------------------------.
-       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
-       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-       | Tab    |   '  |   ,  |   .  |   P  |   Y  |      ||      |   F  |   G  |   C  |   R  |   L  |   \    |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       | CapsLk |   A  |   O  |   E  |   U  |   I  |------||------|   D  |   H  |   T  |   N  |   S  |   -    |
-       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
-       | LShift |   Z  |   X  |   C  |   V  |   X  |      ||      |   B  |   M  |   W  |   V  |   Z  | RShift |
-       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
-         `----------------------------------'                            `----------------------------------'
-                                            ,-------------.,-------------.
-                                            | LCtr | LAlt || Ralt | RCtr |
-                                     ,------|------|------||------+------+------.
-                                     |      |      | Home || PgUp |      |      |
-                                     | BkSp | Del  |------||------| Enter| Space|
-                                     |      |      | End  || PgDn |      |      |
-                                     `--------------------'`--------------------'
-
-### Layer 1: QWERTY layer
-
-       ,--------------------------------------------------.,--------------------------------------------------.
-       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
-       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-       | Tab    |   Q  |   W  |   E  |   R  |   T  |      ||      |   Y  |   U  |   I  |   O  |   P  |   \    |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       | CapsLk |   A  |   S  |   D  |   F  |   G  |------||------|   H  |   J  |   K  |   L  |   ;  |   '    |
-       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
-       | LShift |   Z  |   X  |   C  |   V  |   B  |      ||      |   N  |   M  |   ,  |   .  |   /  | RShift |
-       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
-         `----------------------------------'                            `----------------------------------'
-                                            ,-------------.,-------------.
-                                            | LCtr | LAlt || Ralt | RCtr |
-                                     ,------|------|------||------+------+------.
-                                     |      |      | Home || PgUp |      |      |
-                                     | BkSp | Del  |------||------| Enter| Space|
-                                     |      |      | End  || PgDn |      |      |
-                                     `--------------------'`--------------------'
-        
-### Keymap 2: Colemak layer
-
-       ,--------------------------------------------------.,--------------------------------------------------.
-       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
-       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-       | Tab    |   Q  |   W  |   F  |   P  |   G  |      ||      |   J  |   L  |   U  |   Y  |   ;  |   \    |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       | BkSpc  |   A  |   R  |   S  |   T  |   D  |------||------|   H  |   N  |   E  |   I  |   O  |   '    |
-       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
-       | LShift |   Z  |   X  |   C  |   V  |   B  |      ||      |   K  |   M  |   ,  |   .  |   /  | RShift |
-       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
-         `----------------------------------'                            `----------------------------------'
-                                            ,-------------.,-------------.
-                                            | LCtr | LAlt || Ralt | RCtr |
-                                     ,------|------|------||------+------+------.
-                                     |      |      | Home || PgUp |      |      |
-                                     | BkSp | Del  |------||------| Enter| Space|
-                                     |      |      | End  || PgDn |      |      |
-                                     `--------------------'`--------------------'
-
-### layer 3 : Media layer
-
-       ,--------------------------------------------------.,--------------------------------------------------.
-       | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  ||  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
-       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-       |        |      | PrSc | ScLk | Paus |      |      ||      |      | Mute | Vol- | Vol+ |      |        |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       |        |      |      |      |      |      |------||------| Stop | Prev | Play | Next | Sel  |        |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       |        |      |Dvorak|Qwerty|Colemk|      |      ||      |      |      |      |      |      |        |
-       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-         |      |      |      |      |      |                            |      |      |      |      |      |
-         `----------------------------------'                            `----------------------------------'
-                                            ,-------------.,-------------.
-                                            |      |      ||      |      |
-                                     ,------|------|------||------+------+------.
-                                     |      |      |      ||      |      |      |
-                                     |      |      |------||------|      |      |
-                                     |      |      |      ||      |      |      |
-                                     `--------------------'`--------------------'
-
-
-
-### Keymap 4: Keypad layer
-
-       ,--------------------------------------------------.,--------------------------------------------------.
-       | Power  |      |      |      |      |      |      ||      |      | NmLk | KP = | KP / | KP * |        |
-       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
-       | Sleep  |      |      |      |      |      |      ||      |      | KP 7 | KP 8 | KP 9 | KP - |        |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       | Wake   |      |      |      |      |      |------||------|      | KP 4 | KP 5 | KP 6 | KP + |        |
-       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
-       |        |      |      |      |      |      |      ||      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
-       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
-         |      |      |      |      |      |                            | KP 0 |      | KP . |KP Ent|      |
-         `----------------------------------'                            `----------------------------------'
-                                            ,-------------.,-------------.
-                                            |      |      ||      |      |
-                                     ,------|------|------||------+------+------.
-                                     |      |      |      ||      |      |      |
-                                     |      |      |------||------|      |      |
-                                     |      |      |      ||      |      |      |
-                                     `--------------------'`--------------------'
diff --git a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf
deleted file mode 100644 (file)
index ce4fce3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Section "InputClass"
-       Identifier      "ErgoDox EZ"
-       MatchIsKeyboard "on"
-       MatchProduct    "ErgoDox EZ ErgoDox EZ"
-       Option          "XkbLayout"     "ergodox_yoruian"
-EndSection
diff --git a/keyboards/ergodox/keymaps/yoruian/Makefile b/keyboards/ergodox/keymaps/yoruian/Makefile
deleted file mode 100644 (file)
index b43a24c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
-
-install-xorg-configuration:
-       install -m 0664 90-$(KEYBOARD)-$(KEYMAP).conf \
-           /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
-       install -m 0644 $(KEYBOARD)_$(KEYMAP) \
-           /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)
-
-uninstall-xorg-configuration:
-       -rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
-       -rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)
diff --git a/keyboards/ergodox/keymaps/yoruian/README b/keyboards/ergodox/keymaps/yoruian/README
deleted file mode 100644 (file)
index 99b4143..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-          Snarfangel's YORUIAN for the ErgoDox EZ
-          ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
-DEFAULT
-┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
-┃ ` │ ; │ : │ - │ / │ ( │ < ┃ ┃ > │ ) │ ^ │ * │ ~ │ Γ │ σ ┃
-┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
-┃ ⎋ │ . │ y │ o │ r │ ? │ ✦ ┃ ┃ ✦ │ j │ v │ d │ f │ w │ q ┃
-┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
-┃ ⎈ │ u │ i │ a │ n │ ! ├───┨ ┠───┤ m │ h │ t │ s │ c │ ⎈ ┃
-┠───┼───┼───┼───┼───┼───┤ ❖ ┃ ┃ ❖ ├───┼───┼───┼───┼───┼───┨
-┃ λ │ ' │ " │ , │ _ │ = │   ┃ ┃   │ k │ l │ p │ g │ b │ x ┃
-┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
-┃ ⎀ │ E │   │   │ ◆ ┃                 ┃ ◆ │   │   │ z │ ⎙ ┃
-┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
-                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
-                    ┃ ⌫ │ ⌥ ┃ ┃ ⎄ │ ↹ ┃
-                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┃ e │ ⇧ ├───┨ ┠───┤ ⏎ │ ␣ ┃
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
-SHIFTED
-┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
-┃ 9 │ 7 │ 5 │ 3 │ 1 │ [ │ { ┃ ┃ } │ ] │ 0 │ 2 │ 4 │ 6 │ 8 ┃
-┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
-┃   │ * │ Y │ O │ R │ \ │   ┃ ┃   │ J │ V │ D │ F │ W │ Q ┃
-┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
-┃   │ U │ I │ A │ N │ | ├───┨ ┠───┤ M │ H │ T │ S │ C │   ┃
-┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
-┃   │ # │ $ │ @ │ & │ + │   ┃ ┃   │ K │ L │ P │ G │ B │ X ┃
-┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
-┃   │   │   │   │   ┃                 ┃   │   │   │ Z │   ┃
-┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
-                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
-                    ┃   │   ┃ ┃   │   ┃
-                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┃   │   ├───┨ ┠───┤   │   ┃
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
-λ LAYER
-┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
-┃   │   │   │   │   │   │   ┃ ┃   │   │ ⑤ │ ⑥ │ ⑦ │ ⑧ │ ⑨ ┃
-┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
-┃   │   │   │   │   │   │   ┃ ┃   │   │ ① │ ② │ ③ │ ④ │ ⑩ ┃
-┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
-┃   │   │   │   │   │   ├───┨ ┠───┤ ⎉ │ ← │ ↓ │ ↑ │ → │ ⑪ ┃
-┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
-┃ λ │   │   │   │   │   │   ┃ ┃   │   │ ⇱ │ ⎘ │ ⎗ │ ⇲ │ ⑫ ┃
-┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
-┃   │   │   │   │   ┃                 ┃   │   │   │   │   ┃
-┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
-                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
-                    ┃   │   ┃ ┃   │   ┃
-                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┃   │   ├───┨ ┠───┤   │   ┃
-                ┃   │   │   ┃ ┃   │   │   ┃
-                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
-
-Installation (X only)
-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
-   1. Build and flash firmware as usual
-
-   2. sudo make install-xorg-configuration
-
-   3. Restart X
-
-Features
-‾‾‾‾‾‾‾‾
-   • E on the thumb
-
-   • Emacs-friendly
-
-   • Symmetric control keys for finger wear levelling
-
-   • Greek and subscript dead keys
-
-   • Compose key for arbitrary Unicode input via ~/.XCompose
-
-Don't Cares
-‾‾‾‾‾‾‾‾‾‾‾
-   • Easy migration from QWERTY
-
-   • Compatbility with non-XKB systems
-
-   • Mouse emulation
-
-   • Media keys
-
-Acknowledgements
-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
-Snarfangel, for designing the layout.
-
-The GNU FreeFont project and Steve White, for adding new keyboard
-symbols.
-
-Xah Lee, for http://xahlee.info/comp/unicode_computing_symbols.html
-
-Colophon
-‾‾‾‾‾‾‾‾
-This file is best-viewed with an SVN version of GNU FreeFont Mono.
diff --git a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian
deleted file mode 100644 (file)
index 0d13fbf..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-partial alphanumeric_keys modifier_keys
-xkb_symbols "ergodox_yoruian" {
-    include "us"
-    name[Group1]= "English (yoruian-1.0.0)";
-
-    replace key <KP2>  { [    Multi_key, Multi_key    ] };
-    replace key <KP3>  { [    Hyper_L,   Hyper_L      ] };
-    replace key <AE09> { [        grave, 9            ] };
-    replace key <AE07> { [    semicolon, 7            ] };
-    replace key <AE05> { [        colon, 5            ] };
-    replace key <AE03> { [        minus, 3            ] };
-    replace key <AE01> { [        slash, 1            ] };
-    replace key <AE10> { [  asciicircum, 0            ] };
-    replace key <AE02> { [      percent, 2            ] };
-    replace key <AE04> { [   asciitilde, 4            ] };
-    replace key <AE06> { [   dead_greek, 6            ] };
-    replace key <AE08> { [   dead_caron, 8            ] };
-    replace key <KP1>  { [            E, E            ] };
-    replace key <AD12> { [       period, asterisk     ] };
-    replace key <BKSL> { [     question, backslash    ] };
-    replace key <AC10> { [       exclam, bar          ] };
-    replace key <AC11> { [   apostrophe, numbersign   ] };
-    replace key <AB08> { [     quotedbl, dollar       ] };
-    replace key <AB09> { [        comma, at           ] };
-    replace key <AB10> { [   underscore, ampersand    ] };
-    replace key <KP0>  { [        equal, plus         ] };
-    replace key <TLDE> { [    parenleft, bracketleft  ] };
-    replace key <AE11> { [         less, braceleft    ] };
-    replace key <AE12> { [      greater, braceright   ] };
-    replace key <AD11> { [   parenright, bracketright ] };
-
-    modifier_map none { <HYPR> };
-    modifier_map Mod3 { <KP3>  };
-};
diff --git a/keyboards/ergodox/keymaps/yoruian/keymap.c b/keyboards/ergodox/keymaps/yoruian/keymap.c
deleted file mode 100644 (file)
index 41dfda3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "yoruian.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP_YORUIAN\
-(9,  7,    5,    3,    1,    GRV,  MINS, EQL,  LBRC, 0,    2,    4,    6,    8,
- ES, RBRC, Y,    O,    R,    BSLS, P3,   P3,   J,    V,    D,    F,    W,    Q,
- LC, U,    I,    A,    N,    SCLN,             M,    H,    T,    S,    C,    RC,
- FF, QUOT, COMM, DOT,  SLSH, P0,   LGUI, LGUI, K,    L,    P,    G,    B,    X,
- IN, P1,   NO,   NO,   LALT,                         LALT, NO,   NO,   Z,    PS,
-                             BSPC, RALT, P2,   TAB,
-                                   NO,   NO,
-                       E,    LSFT, NO,   NO,   ENT,  SPC),
-[1] = KEYMAP_YORUIAN\
-(TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   F5,   F6,   F7,   F8,   F9,
- TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   F1,   F2,   F3,   F4,   FT,
- TR, TR,   TR,   TR,   TR,   TR,               PAUS, LEFT, DOWN, UP,   RGHT, FE,
- TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   HOME, PGDN, PGUP, END,  FW,
- TR, TR,   TR,   TR,   TR,                           TR,   TR,   TR,   TR,   TR,
-                             TR,   TR,   TR,   TR,
-                                   TR,   TR,
-                       TR,   TR,   TR,   TR,   TR,   TR),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    return MACRO_NONE;
-};
-
-void matrix_init_user(void) {
-};
-
-void matrix_scan_user(void) {
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-};
-
-/*
- * Local Variables:
- * electric-indent-mode: nil
- * End:
- */
diff --git a/keyboards/ergodox/keymaps/yoruian/yoruian.h b/keyboards/ergodox/keymaps/yoruian/yoruian.h
deleted file mode 100644 (file)
index b5aaf74..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define KEYMAP_YORUIAN(                                                        \
- /* Spacial positions. */                                                      \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D,         \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D,         \
- k20, k21, k22, k23, k24, k25,           k28, k29, k2A, k2B, k2C, k2D,         \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D,         \
- k40, k41, k42, k43, k44,                     k49, k4A, k4B, k4C, k4D,         \
-                          k55, k56, k57, k58,                                  \
-                               k54, k59,                                       \
-                     k53, k52, k51, k5C, k5B, k5A)                             \
-  KEYMAP(KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, \
-         KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, \
-         KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25,           \
-         KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, \
-         KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44,                     \
-                                                           KC_##k55, KC_##k56, \
-                                                                     KC_##k54, \
-                                                 KC_##k53, KC_##k52, KC_##k51, \
-         KC_##k07, KC_##k08, KC_##k09, KC_##k0A, KC_##k0B, KC_##k0C, KC_##k0D, \
-         KC_##k17, KC_##k18, KC_##k19, KC_##k1A, KC_##k1B, KC_##k1C, KC_##k1D, \
-                   KC_##k28, KC_##k29, KC_##k2A, KC_##k2B, KC_##k2C, KC_##k2D, \
-         KC_##k37, KC_##k38, KC_##k39, KC_##k3A, KC_##k3B, KC_##k3C, KC_##k3D, \
-                             KC_##k49, KC_##k4A, KC_##k4B, KC_##k4C, KC_##k4D, \
-         KC_##k57, KC_##k58,                                                   \
-         KC_##k59,                                                             \
-         KC_##k5C, KC_##k5B, KC_##k5A)
-
-#define KC_ES  KC_ESC
-#define KC_LC  KC_LCTL
-#define KC_RC  KC_RCTL
-#define KC_FF  MO(1)
-#define KC_IN  KC_INS
-#define KC_PS  KC_PSCR
-#define KC_TR  KC_TRNS
-#define KC_FT  KC_F10
-#define KC_FE  KC_F11
-#define KC_FW  KC_F12
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/Makefile b/keyboards/ergodox/keymaps/zweihander-osx/Makefile
deleted file mode 100644 (file)
index 6e3d088..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Don’t do a tricolor wave when the computer is shut down in Windows
-SLEEP_LED_ENABLE = no
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/keymap.c b/keyboards/ergodox/keymaps/zweihander-osx/keymap.c
deleted file mode 100644 (file)
index 725a73e..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-#include "ergodox.h"
-#include "debug.h"
-#include "action_layer.h"
-
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-
-#define SGWK 0 // "sagewick", ⌘S ⌘⇥
-#define SGWF 1 // "sagewick freshly", ⌘S ⌘⇥ ⌘R
-#define BBED 2 // BBEdit
-#define TMNL 3 // Terminal
-#define SAFA 4 // Safari
-#define ALFRED_LEAD_TIME 250 // time, in milliseconds, to let Alfred come to the fore and accept keyboard input
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   =    |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   ⌦    |   Q  |   W  |   E  |   R  |   T  | ~L1  |           | ~L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |   ⌫    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2| ' / L⌘ |
- * |--------+------+------+------+------+------|  L⌘  |           |  L⌘  |------+------+------+------+------+--------|
- * |  L⇧    |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | / / ⌃|  R⇧    |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |  L⌃  |  L⌥  |  L⌘  |   ←  |   →  |                                       |   ↑  |   ↓  |   [  |   ]  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,---------------.
- *                                        |  `~  |  '"  |       |   ⎋  |    ⌫   |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | PgUp |       | PgDn |        |      |
- *                                 |      |   ⇥  |------|       |------|    ⇥   |Enter |
- *                                 |      |      |  R⌥  |       |  R⌃  |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[BASE] = KEYMAP(  // layer 0 : default
-        // left hand
-        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
-        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   MO(SYMB),
-        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
-        KC_LCTL,        KC_LALT,      KC_LGUI,KC_LEFT,KC_RGHT,
-                                              KC_GRV, KC_QUOT,
-                                                              KC_PGUP,
-                                               KC_SPC,KC_TAB ,KC_RALT,
-        // right hand
-             TG(SYMB),  KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
-             MO(SYMB),  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
-                        KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
-             KC_LGUI,   KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
-                                KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_SPC ,
-             KC_ESC,            KC_BSPC,
-             KC_PGDN,
-             KC_RCTL,           KC_TAB,      KC_ENT
-    ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   [  |   ]  |   {  |   }  |   "  |      |           |      |   /  |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   <  |   >  |   (  |   )  |   '  |------|           |------|   -  |   4  |   5  |   6  |   +  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |   =  |      |           |      |   :  |   1  |   2  |   3  |   =  |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |   0  |   .  |   ←  |   →  |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
-       // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_DQT ,KC_TRNS,
-       KC_TRNS,KC_LABK,KC_RABK,KC_LPRN,KC_RPRN,KC_QUOT,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_EQL ,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
-                                               KC_TRNS,
-                               KC_TRNS,KC_TRNS,KC_TRNS,
-       // right hand
-       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, KC_SLSH, KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
-                KC_MINS, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
-       KC_TRNS, KC_COLN, KC_1,   KC_2,    KC_3,    KC_EQL,  KC_TRNS,
-                         KC_0,   KC_DOT,  KC_LEFT, KC_RGHT, KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media keys
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F14 |  F15 |PrtScr|SclLck| Pause|      |           |  ⌘Q  |  ⌘W  | ⌘⇧`  |  ⌘`  |      |      |  Power |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | PgUp |⌘S⌘⇥⌘R| Term |      |           |      |  ⌘]  | ⌥⌘↑  |   ↑  | ⌥⌘↓  |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |Safari| PgDn |      |      |------|           |------|  ⌘[  |   ←  |   ↓  |   →  |      |    ⏯  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |BBEdit|      |           |      |      |  ⏯  |  ⏮  |   ⏭ |      |        |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
- *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      | Home |       |  End |      |      |
- *                                 |      |      |------|       |------|  ⌘C  |  ⌘V  |
- *                                 |      |      |      |       |  ⌘X  |      |      |
- *                                 `--------------------'       `--------------------'
- */
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
-       KC_TRNS, KC_F14 , KC_F15 , KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,  /* F14 dims screen, F15 brightens */
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, M(SGWF), M(TMNL), KC_TRNS,
-       KC_TRNS, KC_TRNS, M(SAFA), KC_PGDN, KC_TRNS, KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(BBED), KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                           KC_TRNS, KC_TRNS,
-                                                    KC_HOME,
-                                  KC_TRNS, KC_TRNS, KC_TRNS,
-    // right hand
-       LGUI(KC_Q),  LGUI(KC_W),     LGUI(LSFT(KC_GRV)), LGUI(KC_GRV),   KC_TRNS,                KC_TRNS,        KC_PWR ,
-       KC_TRNS,     LGUI(KC_RBRC),  LGUI(LALT(KC_UP)),  KC_UP  ,        LGUI(LALT(KC_DOWN)),    KC_TRNS,        KC_TRNS,
-                    LGUI(KC_LBRC),  KC_LEFT,            KC_DOWN,        KC_RGHT,                KC_TRNS,        KC_MPLY,
-       KC_TRNS,     KC_TRNS,        KC_MPLY,            KC_MPRV,        KC_MNXT,                KC_TRNS,        KC_TRNS,
-                                    KC_VOLU,            KC_VOLD,        KC_MUTE,                KC_TRNS,        KC_TRNS,
-       KC_TRNS,     KC_TRNS,
-       KC_END ,
-       LGUI(KC_X),  LGUI(KC_C),     LGUI(KC_V)
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-          case SGWK:
-              if (record->event.pressed) {
-                  return MACRO(
-                               I(10),
-                               D(LGUI), T(S),   U(LGUI),
-                               D(LGUI), T(TAB), U(LGUI),
-                               END);
-              }
-              break;
-          case SGWF:
-              if (record->event.pressed) {
-                  return MACRO(
-                               I(10),
-                               D(LGUI), T(S),   U(LGUI),
-                               D(LGUI), T(TAB), U(LGUI),
-                               D(LGUI), T(R),   U(LGUI),
-                               END);
-              }
-              break;
-          case BBED:
-              if (record->event.pressed) {
-                  return MACRO(
-                               I(10),
-                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
-                               T(B), T(B), T(E), T(D), T(I), T(T),
-                               T(ENT),
-                               END);
-              }
-              break;
-          case TMNL:
-              if (record->event.pressed) {
-                  return MACRO(
-                               I(10),
-                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
-                               T(T), T(E), T(R), T(M), T(I), T(N), T(A), T(L),
-                               T(ENT),
-                               END);
-              }
-              break;
-          case SAFA:
-              if (record->event.pressed) {
-                  return MACRO(
-                               I(10),
-                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
-                               T(S), T(A), T(F), T(A), T(R), T(I),
-                               T(ENT),
-                               END);
-              }
-              break;
-      }
-    return MACRO_NONE;
-};
-
-// 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);
-
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-    switch (layer) {
-      // TODO: Make this relevant to the ErgoDox EZ.
-        case 1:
-            ergodox_right_led_1_on();
-            break;
-        case 2:
-            ergodox_right_led_2_on();
-            break;
-        default:
-            // none
-            break;
-    }
-
-};
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown b/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown
deleted file mode 100644 (file)
index 5125a12..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# The Zweihander Layout
-
-NB: the backtick (\`) is special in Markdown. If I write ⌘\` in this readme, I mean “command-backtick”, not “command-backslash-backtick”.
-
-This layout is tuned for people who…
-
-
-## use OS X
-
-While this layout should work fine in Windows, it’s not tuned for it. No sane person who primarily uses Windows would put this many Windows keys on a keyboard layout.
-
-
-## mouse left-handed while doing other things with the right hand
-
-I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder:
-
-- Close Window (⌘W)
-- Back (⌘[)
-- Forward (⌘])
-- Open and Close Parent Folder (⌥⌘↓)
-- Go Up and Close Just-Left Folder (⌥⌘↑)
-- Cycle through open windows in current application (⌘\` and ⌘⇧\`)
-- Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥)
-
-Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word.
-
-
-## use lots of modifier keys in OS X menu-item shortcuts
-
-I wanted to preserve the feel of a number of shortcuts that involve pressing lots of modifier keys at once; this is why the bottom left of the keyboard has shift, control, option, and command in the usual spaces. Further, some common shortcuts I press have a key on the right side of the keyboard. These shortcuts include:
-
-- Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫)
-- Shut Down Without Asking for Confirmation (⇧⌥⌘ power)
-
-⇧⌥⌘⌫, when you press the backspace on the right half of the keyboard, is much more satisfying than if you curl your left hand into a claw to press all the keys on the left. Try both; you’ll agree.
-
-
-## use Emacs-style shortcuts
-
-I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key.
-
-Having trouble remembering which thumb key is alt and which is ctrl? It’s like on the lower right of a normal keyboard — leftmost is alt, rightmost is ctrl.
-
-
-## use spreadsheets
-
-All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer. There’s also a colon there for entering times and maybe IPv6 addresses. Not that I expect people to type IPv6 addresses into a spreadsheet, but, y’know.
diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md
deleted file mode 100644 (file)
index 3a87606..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-ErgoDox
-==
-
-The ErgoDox is a split ergonomic keyboard originally developed by Dominic "Dox" Beauchamp.
-
-* The **ErgoDox EZ** is a Teensy-based split mechanical keyboard, sold assembled and with warranty at [ErgoDox-EZ.com](https://ergodox-ez.com).
-* The **ErgoDox Infinity** is an ARM-based split mechanical keyboard, sold from time to time in kit form at [MassDrop.com](https://www.massdrop.com/buy/infinity-ergodox)
-
-The ErgoDox EZ code is maintained by Erez Zukerman and is officially supported by the EZ -- the keyboard ships running QMK from the factory.
-
-The ErgoDox Infinity code is maintained by Fredizzimo, as a community contribution.
-
-## Standard Build Instructions
-
-To build QMK for the ErgoDox, see the official [build guide](/docs/build_guide.md).
-
-## Additional resources
-
-A graphical configurator for the ErgoDox EZ is available at [configure.ergodox-ez.com](http://configure.ergodox-ez.com). It outputs QMK-compiled binaries, as well as source code for your layout, which you can use as a jumping-off point to further customize in QMK.
-
-# Flashing Firmware
-
-## ErgoDox EZ
-
-The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
-
-Linux users need to modify udev rules as described on the [Teensy
-Linux page].  Some distributions provide a binary, maybe called
-`teensy-loader-cli`.
-
-[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html
-
-To flash the firmware:
-
-  - Build the firmware with `make keymapname`, for example `make default`
-  - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
-    `ergodox_ez_default.hex`
-
-  - Start the teensy loader.
-
-  - Load the .hex file into it.
-
-  - Press the Reset button by inserting a paperclip gently into the reset hole
-    in the top right corder.
-
-  - Click the button in the Teensy app to download the firmware.
-
-To flash with ´teensy-loader-cli´:
-
-  - Build the firmware with `make keymapname`, for example `make default`
-
-  - Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
-
-  - Press the Reset button by inserting a paperclip gently into the reset hole
-    in the top right corder.
-
-## ErgoDox Infinity
-
-The Infinity is two completely independent keyboards, and needs to be flashed
-for the left and right halves seperately.  To flash them:
-
-  - Build the firmware with `make infinity-keymapname`
-
-  - Plug in the left hand keyboard only.
-
-  - Press the program button (back of keyboard, above thumb pad).
-
-  - Install the firmware with `sudo make infinity-keymapname-dfu-util`
-
-  - Build right hand firmware with `make infinity-keymapname MASTER=right`
-
-  - Plug in the right hand keyboard only.
-
-  - Press the program button (back of keyboard, above thumb pad).
-
-  - Install the firmware with `sudo make infinity-keymapname-dfu-util MASTER=right`
-
-More information on the Infinity firmware is available in the [TMK/chibios for
-Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
-
-### Infinity Master/Two Halves
-
-The Infinity is two completely independent keyboards, that can connect together.
-You have a few options in how you flash the firmware:
-
-- Flash the left half, rebuild the firmware with "MASTER=right" and then flash
-  the right half.  This allows you to plug in either half directly to the
-  computer and is what the above instructions do.
-
-- Flash the left half, then flash the same firmware on the right.  This only
-  works when the left half is plugged directly to the computer and the keymap
-  is mirrored.  It saves the small extra step of rebuilding with
-  "MASTER=right".
-
-- The same as the previous one but with "MASTER=right" when you build the
-  firmware, then flash the same firmware to both halves.  You just have to
-  directly connect the right half to the computer.
-
-- For minor changes such as changing only the keymap without having updated
-  any part of the firmware code itself, you can program only the MASTER half.
-  It is safest to program both halves though.
-
-## ErgoDone
-
-The ErgoDone uses its own HID bootloader and needs to be flashed using the [TKG Toolkit](https://github.com/kairyu/tkg-toolkit).
-
-  - Build the firmware with `make ergodone-keymapname`
-
-  - While plugging in the USB cable, hold the two right-most keys on the left half of the ErgoDone to enter FLASH mode.
-
-  - Use the utility from [TKG Toolkit](https://github.com/kairyu/tkg-toolkit) to flash the keyboard: `hid_bootloader_cli -mmcu=atmega32u4 ergodox_ergodone_keymapname.hex`
diff --git a/keyboards/ergodox/rules.mk b/keyboards/ergodox/rules.mk
deleted file mode 100644 (file)
index 5939d63..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean, 
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-# Build Options
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
-CONSOLE_ENABLE   = no  # Console for debug(+400)
-COMMAND_ENABLE   = yes # Commands for debug and configuration
-CUSTOM_MATRIX    = yes # Custom matrix file for the ErgoDox EZ
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE      = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-UNICODE_ENABLE   = yes # Unicode
-ONEHAND_ENABLE   = yes # Allow swapping hands of keyboard
diff --git a/keyboards/ergodox_ez/190hotfix.sh b/keyboards/ergodox_ez/190hotfix.sh
new file mode 100644 (file)
index 0000000..bdc3adc
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#a tool to fix broken keymaps as a result of pull request #190 
+#changing the declaration of matrix_scan_user() and matrix_init_user()
+#
+#This script will save a copy of the specified keymap as keymap.c.bak
+#and then create a new keymap.c with the definion corrected.
+#this script must be run from the ergodox_ez directory
+if [ $# -ne 1 ]; then
+    echo $0: usage: ./190hotfix keymap_name
+    exit 1
+fi
+
+echo Saving backup as ./keymaps/$1/keymap.c.bak ...
+mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak
+
+echo Modifying ./keymaps/$1/keymap.c ...
+cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c
+
+echo Complete!
diff --git a/keyboards/ergodox_ez/Makefile b/keyboards/ergodox_ez/Makefile
new file mode 100644 (file)
index 0000000..e24600d
--- /dev/null
@@ -0,0 +1,8 @@
+SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+RGBLIGHT_ENABLE = yes
+MIDI_ENABLE = no
+
+ifndef MAKEFILE_INCLUDED
+       include ../../Makefile
+endif
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
new file mode 100644 (file)
index 0000000..b258a5b
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 ERGODOX_EZ_CONFIG_H
+#define ERGODOX_EZ_CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x1307
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    ErgoDox EZ
+#define PRODUCT         ErgoDox EZ
+#define DESCRIPTION     QMK keyboard firmware for Ergodox EZ
+
+/* key matrix size */
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 6
+
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_DELAY          0
+#define MOUSEKEY_TIME_TO_MAX    60
+#define MOUSEKEY_MAX_SPEED      7
+#define MOUSEKEY_WHEEL_DELAY 0
+
+#define TAPPING_TOGGLE  1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+#define TAPPING_TERM    200
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+#define LED_BRIGHTNESS_LO       15
+#define LED_BRIGHTNESS_HI       255
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D7
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 15     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 255
+#define RGBLIGHT_VAL_STEP 12
+
+/* fix space cadet rollover issue */
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+// #define RGB_MIDI
+#define RGBW_BB_TWI
+
+#define RGBW 1
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE    15
+
+#define PREVENT_STUCK_MODIFIERS
+
+#define USB_MAX_POWER_CONSUMPTION 500
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+//#define DEBUG_MATRIX_SCAN_RATE
+
+#endif
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
new file mode 100644 (file)
index 0000000..3609f6f
--- /dev/null
@@ -0,0 +1,136 @@
+#include QMK_KEYBOARD_H
+#include "i2cmaster.h"
+
+
+extern inline void ergodox_board_led_on(void);
+extern inline void ergodox_right_led_1_on(void);
+extern inline void ergodox_right_led_2_on(void);
+extern inline void ergodox_right_led_3_on(void);
+extern inline void ergodox_right_led_on(uint8_t led);
+
+extern inline void ergodox_board_led_off(void);
+extern inline void ergodox_right_led_1_off(void);
+extern inline void ergodox_right_led_2_off(void);
+extern inline void ergodox_right_led_3_off(void);
+extern inline void ergodox_right_led_off(uint8_t led);
+
+extern inline void ergodox_led_all_on(void);
+extern inline void ergodox_led_all_off(void);
+
+extern inline void ergodox_right_led_1_set(uint8_t n);
+extern inline void ergodox_right_led_2_set(uint8_t n);
+extern inline void ergodox_right_led_3_set(uint8_t n);
+extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
+
+extern inline void ergodox_led_all_set(uint8_t n);
+
+
+bool i2c_initialized = 0;
+uint8_t mcp23018_status = 0x20;
+
+void matrix_init_kb(void) {
+   // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
+    TCCR1A = 0b10101001;  // set and configure fast PWM
+    TCCR1B = 0b00001001;  // set and configure fast PWM
+
+    // (tied to Vcc for hardware convenience)
+    DDRB  &= ~(1<<4);  // set B(4) as input
+    PORTB &= ~(1<<4);  // set B(4) internal pull-up disabled
+
+    // unused pins - C7, D4, D5, D7, E6
+    // set as input with internal pull-ip enabled
+    DDRC  &= ~(1<<7);
+    DDRD  &= ~(1<<5 | 1<<4);
+    DDRE  &= ~(1<<6);
+    PORTC |=  (1<<7);
+    PORTD |=  (1<<5 | 1<<4);
+    PORTE |=  (1<<6);
+
+    ergodox_blink_all_leds();
+
+    matrix_init_user();
+}
+
+void ergodox_blink_all_leds(void)
+{
+    ergodox_led_all_off();
+    ergodox_led_all_set(LED_BRIGHTNESS_HI);
+    ergodox_right_led_1_on();
+    _delay_ms(50);
+    ergodox_right_led_2_on();
+    _delay_ms(50);
+    ergodox_right_led_3_on();
+    _delay_ms(50);
+    ergodox_right_led_1_off();
+    _delay_ms(50);
+    ergodox_right_led_2_off();
+    _delay_ms(50);
+    ergodox_right_led_3_off();
+    //ergodox_led_all_on();
+    //_delay_ms(333);
+    ergodox_led_all_off();
+}
+
+uint8_t init_mcp23018(void) {
+    mcp23018_status = 0x20;
+
+    // I2C subsystem
+
+    // uint8_t sreg_prev;
+    // sreg_prev=SREG;
+    // cli();
+    if (i2c_initialized == 0) {
+        i2c_init();  // on pins D(1,0)
+        i2c_initialized = true;
+        _delay_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;
+    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;
+
+out:
+    i2c_stop();
+
+    // SREG=sreg_prev;
+
+    return mcp23018_status;
+}
+
+#ifdef ONEHAND_ENABLE
+__attribute__ ((weak))
+// swap-hands action needs a matrix to define the swap
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+    /* Left hand, matrix positions */
+    {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
+    {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
+    {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
+    {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
+    {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
+    {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
+    {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
+    /* Right hand, matrix positions */
+    {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
+    {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
+    {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
+    {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
+    {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
+    {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
+    {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
+};
+#endif
diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h
new file mode 100644 (file)
index 0000000..1f8d597
--- /dev/null
@@ -0,0 +1,165 @@
+#ifndef ERGODOX_EZ_H
+#define ERGODOX_EZ_H
+
+#include "quantum.h"
+#include <stdint.h>
+#include <stdbool.h>
+#include "i2cmaster.h"
+#include <util/delay.h>
+
+#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
+#define CPU_16MHz       0x00
+
+// I2C aliases and register addresses (see "mcp23018.md")
+#define I2C_ADDR        0b0100000
+#define I2C_ADDR_WRITE  ( (I2C_ADDR<<1) | I2C_WRITE )
+#define I2C_ADDR_READ   ( (I2C_ADDR<<1) | I2C_READ  )
+#define IODIRA          0x00            // i/o direction register
+#define IODIRB          0x01
+#define GPPUA           0x0C            // GPIO pull-up resistor register
+#define GPPUB           0x0D
+#define GPIOA           0x12            // general purpose i/o port register (write modifies OLAT)
+#define GPIOB           0x13
+#define OLATA           0x14            // output latch register
+#define OLATB           0x15
+
+extern uint8_t mcp23018_status;
+
+void init_ergodox(void);
+void ergodox_blink_all_leds(void);
+uint8_t init_mcp23018(void);
+uint8_t ergodox_left_leds_update(void);
+
+#define LED_BRIGHTNESS_LO       15
+#define LED_BRIGHTNESS_HI       255
+
+
+inline void ergodox_board_led_on(void)      { DDRD |=  (1<<6); PORTD |=  (1<<6); }
+inline void ergodox_right_led_1_on(void)    { DDRB |=  (1<<5); PORTB |=  (1<<5); }
+inline void ergodox_right_led_2_on(void)    { DDRB |=  (1<<6); PORTB |=  (1<<6); }
+inline void ergodox_right_led_3_on(void)    { DDRB |=  (1<<7); PORTB |=  (1<<7); }
+inline void ergodox_right_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); }
+
+inline void ergodox_board_led_off(void)     { DDRD &= ~(1<<6); PORTD &= ~(1<<6); }
+inline void ergodox_right_led_1_off(void)   { DDRB &= ~(1<<5); PORTB &= ~(1<<5); }
+inline void ergodox_right_led_2_off(void)   { DDRB &= ~(1<<6); PORTB &= ~(1<<6); }
+inline void ergodox_right_led_3_off(void)   { DDRB &= ~(1<<7); PORTB &= ~(1<<7); }
+inline void ergodox_right_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); }
+
+inline void ergodox_led_all_on(void)
+{
+    ergodox_board_led_on();
+    ergodox_right_led_1_on();
+    ergodox_right_led_2_on();
+    ergodox_right_led_3_on();
+}
+
+inline void ergodox_led_all_off(void)
+{
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+}
+
+inline void ergodox_right_led_1_set(uint8_t n)    { OCR1A = n; }
+inline void ergodox_right_led_2_set(uint8_t n)    { OCR1B = n; }
+inline void ergodox_right_led_3_set(uint8_t n)    { OCR1C = n; }
+inline void ergodox_right_led_set(uint8_t led, uint8_t n)  {
+    (led == 1) ? (OCR1A = n) :
+    (led == 2) ? (OCR1B = n) :
+                 (OCR1C = n);
+}
+
+inline void ergodox_led_all_set(uint8_t n)
+{
+    ergodox_right_led_1_set(n);
+    ergodox_right_led_2_set(n);
+    ergodox_right_led_3_set(n);
+}
+
+#define KEYMAP(                                                 \
+                                                                \
+    /* left hand, spatial positions */                          \
+    k00,k01,k02,k03,k04,k05,k06,                                \
+    k10,k11,k12,k13,k14,k15,k16,                                \
+    k20,k21,k22,k23,k24,k25,                                    \
+    k30,k31,k32,k33,k34,k35,k36,                                \
+    k40,k41,k42,k43,k44,                                        \
+                            k55,k56,                            \
+                                k54,                            \
+                        k53,k52,k51,                            \
+                                                                \
+    /* right hand, spatial positions */                         \
+        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
+        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
+            k28,k29,k2A,k2B,k2C,k2D,                            \
+        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
+                k49,k4A,k4B,k4C,k4D,                            \
+    k57,k58,                                                    \
+    k59,                                                        \
+    k5C,k5B,k5A )                                               \
+                                                                \
+   /* matrix positions */                                       \
+   {                                                            \
+    { k00, k10, k20, k30, k40, KC_NO },   \
+    { k01, k11, k21, k31, k41, k51 },   \
+    { k02, k12, k22, k32, k42, k52 },   \
+    { k03, k13, k23, k33, k43, k53 },   \
+    { k04, k14, k24, k34, k44, k54 },   \
+    { k05, k15, k25, k35, KC_NO, k55 },   \
+    { k06, k16, KC_NO, k36, KC_NO, k56 },   \
+                                                                 \
+    { k07, k17, KC_NO, k37,KC_NO, k57 },   \
+    { k08, k18, k28, k38,KC_NO, k58 },   \
+    { k09, k19, k29, k39, k49, k59 },   \
+    { k0A, k1A, k2A, k3A, k4A, k5A },   \
+    { k0B, k1B, k2B, k3B, k4B, k5B },   \
+    { k0C, k1C, k2C, k3C, k4C, k5C },   \
+    { k0D, k1D, k2D, k3D, k4D, KC_NO }    \
+   }
+
+#define KEYMAP_80(                                              \
+                                                                \
+    /* left hand, spatial positions */                          \
+    k00,k01,k02,k03,k04,k05,k06,                                \
+    k10,k11,k12,k13,k14,k15,k16,                                \
+    k20,k21,k22,k23,k24,k25,                                    \
+    k30,k31,k32,k33,k34,k35,k36,                                \
+    k40,k41,k42,k43,k44,                                        \
+                            k55,k56,                            \
+                        k45,k46,k54,                            \
+                        k53,k52,k51,                            \
+                                                                \
+    /* right hand, spatial positions */                         \
+        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
+        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
+            k28,k29,k2A,k2B,k2C,k2D,                            \
+        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
+                k49,k4A,k4B,k4C,k4D,                            \
+    k57,k58,                                                    \
+    k59,k47,k48,                                                \
+    k5C,k5B,k5A )                                               \
+                                                                \
+   /* matrix positions */                                       \
+   {                                                            \
+    { k00, k10, k20, k30, k40, KC_NO },   \
+    { k01, k11, k21, k31, k41, k51 },   \
+    { k02, k12, k22, k32, k42, k52 },   \
+    { k03, k13, k23, k33, k43, k53 },   \
+    { k04, k14, k24, k34, k44, k54 },   \
+    { k05, k15, k25, k35, k45, k55 },   \
+    { k06, k16, KC_NO, k36, k46, k56 },   \
+                                                                 \
+    { k07, k17, KC_NO, k37, k47, k57 },   \
+    { k08, k18, k28, k38, k48, k58 },   \
+    { k09, k19, k29, k39, k49, k59 },   \
+    { k0A, k1A, k2A, k3A, k4A, k5A },   \
+    { k0B, k1B, k2B, k3B, k4B, k5B },   \
+    { k0C, k1C, k2C, k3C, k4C, k5C },   \
+    { k0D, k1D, k2D, k3D, k4D, KC_NO }    \
+   }
+
+#define LAYOUT_ergodox KEYMAP
+
+#endif
diff --git a/keyboards/ergodox_ez/i2cmaster.h b/keyboards/ergodox_ez/i2cmaster.h
new file mode 100644 (file)
index 0000000..3917b9e
--- /dev/null
@@ -0,0 +1,178 @@
+#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/ergodox_ez/keymaps/blakedietz/keymap.c b/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c
new file mode 100644 (file)
index 0000000..a35f86d
--- /dev/null
@@ -0,0 +1,289 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+/**
+ * This section of macros is for tap or hold functionality. Keys will fire off the second symbol in the name if tapped
+ * or fire the first symbol in the name if held. For example
+ * GUI_Z
+ *
+ * - will fire z if tapped
+ * - will fire cmd/super/win if held
+ */
+#define ALT_DOT     ALT_T(KC_DOT)
+#define ALT_X       ALT_T(KC_X)
+#define CTL_SLSH    CTL_T(KC_SLSH)
+#define CTL_Z       CTL_T(KC_Z)
+#define GUI_C       GUI_T(KC_C)
+#define GUI_COMM    GUI_T(KC_COMM)
+#define HPR_ESC     ALL_T(KC_ESC)
+#define HPR_QUO     ALL_T(KC_QUOT)
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define MOUSE 3
+#define DEV 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '"   |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|X/Alt |C/GUI |   V  |   B  |      |           |      |   N  |   M  |,/GUI |./ALT |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,------------.
+ *                                        |MOUSE | Home |       | PgDn | PgUp|
+ *                                 ,------|------|------|       |------+-----+------.
+ *                                 |      |      | ESC  |       | ESC  |     |      |
+ *                                 | Space|Backsp|------|       |------| Tab |Enter |
+ *                                 |      |ace   | LGui |       | LGui |     |      |
+ *                                 `--------------------'       `-------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_EQL,          KC_1,        KC_2,   KC_3,   KC_4,        KC_5,   KC_LEFT,
+        KC_DELT,         KC_Q,        KC_W,   KC_E,   KC_R,        KC_T,   TG(DEV),
+        KC_BSPC,         KC_A,        KC_S,   KC_D,   KC_F,        KC_G,
+        KC_LSFT,         CTL_T(KC_Z), ALT_T(KC_X),    GUI_T(KC_C), KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV), KC_QUOT,     LALT(KC_LSFT),  KC_LEFT,     KC_RGHT,
+
+                                                                                    TG(MOUSE), KC_HOME,
+                                                                                               KC_ESC,
+                                                                            KC_SPC, KC_BSPC,   KC_LGUI,
+
+        // right hand
+        KC_RGHT,      KC_6, KC_7,    KC_8,     KC_9,    KC_0,              KC_MINS,
+        TG(SYMB),     KC_Y, KC_U,    KC_I,     KC_O,    KC_P,              KC_BSLS,
+                      KC_H, KC_J,    KC_K,     KC_L,    LT(MDIA, KC_SCLN), KC_QUOT,
+        MEH_T(KC_NO), KC_N, KC_M,    GUI_COMM, ALT_DOT, CTL_SLSH,          KC_RSFT,
+                            KC_DOWN, KC_UP,    KC_LBRC, KC_RBRC,           KC_FN1,
+
+        KC_PGDN,       KC_PGUP,
+        KC_ESC,
+        KC_LGUI,       KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      | Prev | Next | Mute |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | VolDn| VolUp|      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA
+[MDIA] = KEYMAP(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_MPRV, KC_MNXT, KC_MUTE, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+[MOUSE] = KEYMAP(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+[DEV] = KEYMAP(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_TRNS,
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,
+       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+// MACRODOWN only works in this function
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case SYMB:
+            // Binary 1 represented by the leds
+            // --*
+            ergodox_right_led_3_on();
+            break;
+        case MDIA:
+            // Binary 2 represented by the leds
+            // -*-
+            ergodox_right_led_2_on();
+            break;
+        case MOUSE:
+            // Binary 3 represented by the leds
+            // -**
+            ergodox_right_led_3_on();
+            ergodox_right_led_2_on();
+            break;
+        case DEV:
+            // Binary 4 represented by the leds
+            // *--
+            ergodox_right_led_1_on();
+            break;
+        default:
+            // none
+            break;
+    }
+};
+
+//bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+//  switch (keycode) {
+//    case 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;
+//  }
+//  return true;
+//}
+
diff --git a/keyboards/ergodox_ez/keymaps/default/default.png.md b/keyboards/ergodox_ez/keymaps/default/default.png.md
new file mode 100644 (file)
index 0000000..744e7d1
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/fKX0Zbs.png
diff --git a/keyboards/ergodox_ez/keymaps/default/default_highres.png.md b/keyboards/ergodox_ez/keymaps/default/default_highres.png.md
new file mode 100644 (file)
index 0000000..074e063
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/giAc3M9.jpg
diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..cbc180d
--- /dev/null
@@ -0,0 +1,223 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,  KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,  KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,  KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,  KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP, KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | EPRM  |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Animat|      |       |Toggle|Solid |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
+ *                                 |ness- |ness+ |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       RGB_MOD,KC_TRNS,
+                                               KC_TRNS,
+                               RGB_VAD,RGB_VAI,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       RGB_TOG, RGB_SLD,
+       KC_TRNS,
+       KC_TRNS, RGB_HUD, RGB_HUI
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox_ez/keymaps/default/readme.md b/keyboards/ergodox_ez/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..1150a4f
--- /dev/null
@@ -0,0 +1,15 @@
+# ErgoDox EZ Default Configuration
+
+## Changelog
+
+* Dec 2016:
+  * Added LED keys
+  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
+* Sep 22, 2016:
+  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
+* Feb 2, 2016 (V1.1): 
+  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
+
+This is what we ship with out of the factory. :) The image says it all:
+
+![Default](https://i.imgur.com/Be53jH7.png)
\ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c
new file mode 100644 (file)
index 0000000..947c8a0
--- /dev/null
@@ -0,0 +1,187 @@
+// Netable differences vs. the default firmware for the ErgoDox EZ:
+// 1. The Cmd key is now on the right side, making Cmd+Space easier.
+// 2. The media keys work on OSX (But not on Windows).
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_LGUI,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox_ez/keymaps/default_osx/readme.md b/keyboards/ergodox_ez/keymaps/default_osx/readme.md
new file mode 100644 (file)
index 0000000..28ca033
--- /dev/null
@@ -0,0 +1,8 @@
+# The OSX Friendly Version of the Default Firmware
+
+So, I took the default firmware and just made a couple of tweaks that make it easier to use with OS X:
+
+1. The Cmd key is now on the right side, making Cmd+Space easier.
+2. The media keys work on OSX (But not on Windows).
+
+![default osx](https://i.imgur.com/z0aqFDq.png)
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/Makefile b/keyboards/ergodox_ez/keymaps/drashna-custom/Makefile
new file mode 100644 (file)
index 0000000..21da248
--- /dev/null
@@ -0,0 +1,10 @@
+TAP_DANCE_ENABLE = yes
+LAYER_UNDERGLOW_LIGHTING = yes
+SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+RGBLIGHT_ENABLE = yes
+MIDI_ENABLE = no
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
new file mode 100644 (file)
index 0000000..fe33552
--- /dev/null
@@ -0,0 +1,8 @@
+
+#include "../../config.h"
+
+
+#define TAPPING_TERM 200
+
+
+#define LAYER_UNDERGLOW_LIGHTING
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
new file mode 100644 (file)
index 0000000..ed7aede
--- /dev/null
@@ -0,0 +1,867 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+
+#include "keymap_german.h"
+
+#include "keymap_nordic.h"
+
+// Define layer names 
+#define BASE 0
+#define COLEMAK 1
+#define DVORAK 2
+#define SYMB 3
+#define OVERWATCH 4
+#define DIABLO 5
+#define MOUS 6
+
+//define modifiers
+#define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
+#define MODS_ALT_MASK  (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
+
+//define macro keycodes
+#define M_VERSION M(0)
+#define M_SYMM M(1)
+#define M_SALT M(2)
+#define M_HARD M(3)
+#define M_MAKE M(4)
+#define M_COVECUBE M(5)
+#define M_MORESALT M(6)
+#define M_DOOMFIST M(7)
+
+
+//define layer change stuff for underglow indicator
+bool skip_leds = false;
+bool has_layer_changed = false;
+static uint8_t current_layer;
+
+static uint16_t key_timer;
+//define diablo macro timer variables
+static uint16_t diablo_timer[4];
+static uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30};
+static uint8_t diablo_key_time[4];
+
+bool check_dtimer(uint8_t dtimer) {
+    // has the correct number of seconds elapsed (as defined by diablo_times)
+    return (timer_elapsed(diablo_timer[dtimer]) < ( diablo_key_time[dtimer] * 1000 ) ) ? false : true;
+};
+
+bool checktime(void){
+    return (timer_elapsed(key_timer) < 150) ? true : false;
+};
+
+
+enum custom_keycodes {
+       PLACEHOLDER = SAFE_RANGE, // can always be here
+       EPRM,
+       VRSN,
+       RGB_SLD,
+       RGB_0000FF,
+       RGB_008000,
+       RGB_FF0000,
+       RGB_800080,
+       RGB_00FF90,
+    KC_DIABLO_CLEAR
+};
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+       SFT_CAP = 0,
+       TD_DIABLO_J,
+       TD_CLN,
+       TD_EGG,
+       TD_FLSH,
+       TD_DIABLO_1,
+       TD_DIABLO_2,
+       TD_DIABLO_3,
+       TD_DIABLO_4
+};
+
+
+
+void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) {
+       if (state->count == 1) {
+               register_code (KC_RSFT);
+               register_code (KC_SCLN);
+       } else {
+               register_code (KC_SCLN);
+       }
+}
+
+void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
+       if (state->count == 1) {
+               unregister_code (KC_RSFT);
+               unregister_code (KC_SCLN);
+       } else {
+               unregister_code (KC_SCLN);
+       }
+}
+
+void dance_egg (qk_tap_dance_state_t *state, void *user_data) {
+       if (state->count >= 10) {
+               SEND_STRING ("Safety dance!");
+               reset_tap_dance (state);
+       }
+}
+
+// on each tap, light up one led, from right to left
+// on the forth tap, turn them off from right to left
+void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
+       if (!skip_leds) {
+               ergodox_board_led_off();
+               ergodox_right_led_1_off();
+               ergodox_right_led_2_off();
+               ergodox_right_led_3_off();
+               skip_leds = true;
+       }
+       switch (state->count) {
+               case 1:
+                       ergodox_right_led_3_on();
+            break;
+        case 2:
+                       ergodox_right_led_2_on();
+                       break;
+               case 3:
+                       ergodox_right_led_1_on();
+                       break;
+               case 4:
+                       ergodox_right_led_3_off();
+                       _delay_ms(50);
+                       ergodox_right_led_2_off();
+                       _delay_ms(50);
+                       ergodox_right_led_1_off();
+
+       }
+}
+
+// on the fourth tap, set the keyboard on flash state
+void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
+       if (state->count >= 4) {
+#ifdef LAYER_UNDERGLOW_LIGHTING
+        rgblight_enable();
+        rgblight_mode(1);
+        rgblight_setrgb(0xff,0x00,0x00);
+#endif
+               reset_keyboard();
+               reset_tap_dance(state);
+       }
+}
+
+void diablo_tapdance_master (qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
+    if (state->count >= 7) {
+        diablo_key_time[diablo_key] = diablo_times[0];
+        reset_tap_dance(state);
+    } else {
+        diablo_key_time[diablo_key] = diablo_times[state->count - 1];
+    }
+}
+
+void diablo_tapdance1 (qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master (state, user_data, 0);
+}
+
+void diablo_tapdance2 (qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master (state, user_data, 1);
+}
+
+void diablo_tapdance3 (qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master (state, user_data, 2);
+}
+
+void diablo_tapdance4 (qk_tap_dance_state_t *state, void *user_data) {
+    diablo_tapdance_master (state, user_data, 3);
+}
+
+
+// if the flash state didnt happen, then turn off leds, left to right
+void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
+       _delay_ms(200);
+       ergodox_right_led_1_off();
+       _delay_ms(200);
+       ergodox_right_led_2_off();
+       _delay_ms(200);
+       ergodox_right_led_3_off();
+       _delay_ms(500);
+       skip_leds = false;
+}
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+       //Tap one for Space, and twice for Enter
+       [SFT_CAP]     = ACTION_TAP_DANCE_DOUBLE(KC_LSHIFT, KC_CAPS),
+       // Special Z
+       [TD_DIABLO_J]  = ACTION_TAP_DANCE_DOUBLE(KC_J, S(KC_J)),
+       // Once for colin, twice for semi-colin
+       [TD_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset),
+       // Tap until you get a surprise
+       [TD_EGG] = ACTION_TAP_DANCE_FN (dance_egg),
+       //Once for Blue, Twice for Green, Thrice for Red, and four to flash
+       [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset),
+    
+    [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
+    [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
+    [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
+    [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
+
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ * 
+ * 
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   = +  |  1 ! | 2 @  | 3 #  | 4 $  | 5 %  | TG(4)|           | TG(4)| 6 ^  | 7 &  |  8 * | 9 (  |  0 ) |  - _   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   TAB  |   Q  |   W  |   E  |   R  |   T  | TG(3)|           |TG(3) |   Y  |   U  |   I  |   O  |   P  |  \ |   |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Bksp  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  ' "   |
+ * |--------+------+------+------+------+------| TG(2)|           | TG(2)|------+------+------+------+------+--------|
+ * | Shift  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |  , < |  . > |  UP  | Shift  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | `/SYM|  ' " | LGUI |  [ { | ] }  |                                       | SYMB |  ? / | LEFT | DOWN |RIGHT |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,--------------.       ,--------------.
+ *                                        |Alt/Ap|  Win  |       | Alt  |Ctl/Esc|
+ *                                 ,------|------|-------|       |------+-------+------.
+ *                                 |      |      | Home  |       | PgUp |       |      |
+ *                                 | Space| Bksp |-------|       |------|  DEL  |Enter |
+ *                                 |      |      | End   |       | PgDn |       |      |
+ *                                 `---------------------'       `---------------------'
+ */
+  [BASE] = KEYMAP(
+                               KC_EQUAL,       KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       TG(MOUS),
+                               KC_TAB,         KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       TG(DIABLO),
+                               KC_BSPACE,      KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
+                KC_LSHIFT,      CTL_T(KC_Z),KC_X,       KC_C,       KC_V,       KC_B,       TG(OVERWATCH),
+                               LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI,    KC_LBRACKET,KC_RBRACKET,
+                
+                                                                       ALT_T(KC_APPLICATION),  KC_LGUI,
+                                                            KC_HOME,
+                                                                       KC_SPACE,   KC_BSPACE,  KC_END,
+                                                                       
+                               TG(SYMB),       KC_6,       KC_7,       KC_8,       KC_9,       KC_0,           KC_MINUS,
+                               TG(DVORAK),     KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,           KC_BSLASH,
+                                KC_H,       KC_J,       KC_K,       KC_L,       KC_SCOLON,      GUI_T(KC_QUOTE),
+                               TG(COLEMAK),    KC_N,       KC_M,       KC_COMMA,   KC_DOT,     CTL_T(KC_SLASH),KC_RSHIFT,
+                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
+                               KC_LALT,    CTL_T(KC_ESCAPE),
+                               KC_PGUP,
+                               KC_PGDOWN,  KC_DELETE,  KC_ENTER
+                       ),
+/* Keymap 1: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |O / L2|   '    |
+ * |--------+------+------+------+------+------| OVER |           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[COLEMAK] = KEYMAP(  
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(MOUS),
+        KC_DELT,        KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(DIABLO),
+        KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,   KC_D,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(OVERWATCH),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LBRACKET,KC_RBRACKET,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_TRANSPARENT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             KC_NO,    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
+                          KC_H,   KC_N,   KC_E,   KC_I,   LT(MOUS, KC_O),   KC_QUOTE,
+             KC_TRANSPARENT,KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT,
+                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 2: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |S / L2|   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[DVORAK] = KEYMAP(  
+        // left hand
+        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   TG(MOUS),
+        KC_DELT,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(DIABLO),
+        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(OVERWATCH),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LBRACKET,KC_RBRACKET,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_TRANSPARENT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
+             KC_TRANSPARENT,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MOUS, KC_S),   KC_MINS,
+             KC_NO,KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSHIFT,
+                                            KC_FN1,     KC_LEFT,    KC_UP,      KC_DOWN,       KC_RIGHT,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+
+    /* Keymap 3: Symbol Layer
+*
+* ,--------------------------------------------------.           ,--------------------------------------------------.
+* |   ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  | F10  |   F11  |
+* |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+* | VERSION|   !  |   @  |  {   |   }  |  |   |      |           |      |  +   |   7  |   8  |   9  |  *   |   F12  |
+* |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+* |  MAKE  |   #  |   $  |  (   |   )  |  `   |------|           |------|  -   |   4  |   5  |   6  |  /   | PrtSc  |
+* |--------+------+------+------+------+------| COVE |           |      |------+------+------+------+------+--------|
+* |  RESET |   %  |   ^  |  [   |   ]  |  ~   | CUBE |           |      | NUM  |   1  |   2  |   3  |  =   |  PAUSE |
+* `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+*   |  LT0 |   &  |   *  |  :   |   ;  |                                       |   0  |   0  | NUM. | ENT  |  ENT |
+*   `----------------------------------'                                       `----------------------------------'
+*                                        ,-------------.       ,-------------.
+*                                        | RGBM | RED  |       | OFF  | SOLID|
+*                                 ,------|------|------|       |------+------+------.
+*                                 |      |      | GREEN|       |      |      |      |
+*                                 | RGB  | RGB  |------|       |------| NUM. | NUM0 |
+*                                 | DARK |BRITE | BLUE |       |      |      |      |
+*                                 `--------------------'       `--------------------'
+*/
+  [SYMB] = KEYMAP(
+                               KC_ESCAPE,KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_TRANSPARENT,
+                               M_VERSION,      KC_EXLM,    KC_AT,      KC_LCBR,    KC_RCBR,    KC_PIPE,    KC_TRANSPARENT,
+                               M_MAKE,         KC_HASH,    KC_DLR,     KC_LPRN,    KC_RPRN,    KC_GRAVE,
+                               TD(TD_FLSH),    KC_PERC,    KC_CIRC,    KC_LBRACKET,KC_RBRACKET,KC_TILD,    M_COVECUBE,
+                               KC_NO,          KC_AMPR,    KC_ASTR,    KC_COLN,    KC_SCOLON,
+                                        RGB_MOD,    RGB_0000FF,
+                                                    RGB_008000,
+                                                       RGB_VAD,    RGB_VAI,    RGB_FF0000,
+                               
+                               KC_TRANSPARENT, KC_F6,      KC_F7,      KC_F8,      KC_F9,      KC_F10,         KC_F11,
+                               KC_TRANSPARENT, KC_KP_PLUS, KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_KP_ASTERISK, KC_F12,
+                               KC_KP_MINUS,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_KP_SLASH,KC_PSCREEN,
+                               KC_TRANSPARENT, KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_EQUAL,       KC_PAUSE,
+                                            KC_KP_0,    KC_KP_0,    KC_KP_DOT,  KC_KP_ENTER,    KC_KP_ENTER,
+                               RGB_TOG,    RGB_SLD,
+                               RGB_HUI,
+                               RGB_HUD,    KC_KP_DOT,  KC_KP_0
+                       ),
+
+/* Keymap 4: Customized Overwatch Layout
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ESC  | SALT | SYMM | MORE | DOOM |      |      |           |      |  F9  | F10  | F11  |  F12 |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   F1   |  K   |  Q   |  W   |  E   |  R   |  T   |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   TAB  |  G   |  A   |  S   |  D   |  F   |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  LCTR  | LSHFT|  Z   |  X   |  C   |  M   |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |   J  |  U   |  I   |  Y   |  T   |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  O   |  P   |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | LGUI |       |      |      |      |
+ *                                 |  V   | SPACE|------        |------|      | Enter|
+ *                                 |      |      |  H   |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+  [OVERWATCH] = KEYMAP(
+                               KC_ESCAPE,      M_SALT,     M_SYMM,     M_MORESALT, M_DOOMFIST, KC_NO,      KC_NO,
+                               KC_F1,          KC_K,       KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,
+                               KC_TAB,         KC_G,       KC_A,       KC_S,       KC_D,       KC_F,
+                               KC_LCTL,        KC_LSHIFT,    KC_Z,       KC_X,       KC_C,       KC_M,       KC_TRANSPARENT,
+                               KC_G,           KC_U,       KC_I,       KC_Y,       KC_T,
+                                            KC_O,   KC_P,
+                                                    KC_LGUI,
+                                KC_V,   KC_SPACE,   KC_H,
+                                                                       
+                               KC_NO,          KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_NO,      KC_NO,
+                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                               KC_NO,          KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                               KC_NO, KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                            KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                               KC_NO,  KC_NO,
+                               KC_NO,
+                               KC_NO,  KC_NO,  KC_ENTER
+                       ),
+
+/* Keymap 3:
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ESC  |  V   |  D   | ALT  |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   TAB  |  S   |  I   |  F   |  M   |  T   |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |    Q   |  1   |  2   |  3   |  4   |  G   |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | NUMLOCK| NUM1 | NUM2 | NUM3 | NUM4 |  Z   |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | LCTL | MAC1 | MAC2 | MAC3 | MAC4 |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |   L  |  J   |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |  G   |       |      |      |      |
+ *                                 | SPACE|  Q   |------        |------|      |      |
+ *                                 | SHIFT| ALT  | 0MAC |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+  [DIABLO] = KEYMAP(
+                               KC_ESCAPE,  KC_V,       KC_D,       KC_LALT,    KC_NO,      KC_NO,      KC_NO,
+                               KC_TAB,     KC_S,       KC_I,       KC_F,       KC_M,       KC_T,       KC_TRANSPARENT,
+                               KC_Q,       KC_1,       KC_2,       KC_3,       KC_4,       KC_G,
+                               KC_NUMLOCK, KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_KP_4,    KC_Z,       KC_NO,
+                               KC_LCTL,    TD(TD_DIABLO_1),    TD(TD_DIABLO_2),    TD(TD_DIABLO_3),    TD(TD_DIABLO_4),
+                                                KC_L,   KC_J,
+                                                        KC_F,
+                    SFT_T(KC_SPACE),    ALT_T(KC_Q),    KC_DIABLO_CLEAR,
+                                                                       
+                                                                       
+                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                               KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                               KC_NO,          KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                               KC_NO,  KC_NO,
+                               KC_NO,
+                               KC_NO,  KC_NO,  KC_NO
+                       ),
+
+/* Keymap 4: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | MsUp |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |MsLeft|MsDown|MsRght|      |      |------|           |------|      |      | Acc0 | Acc1 | Acc2 |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      | Play | Stop | Mute |VolDn |VolUp |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | MWUp |       |      |      |      |
+ *                                 | Lclk | Rclk |------|       |------| MBn4 | MBn4 |
+ *                                 |      |      | MWDn |       | Mclk |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+  [MOUS] = KEYMAP(
+                               KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_TRANSPARENT,
+                               KC_NO,      KC_NO,      KC_MS_UP,   KC_NO,      KC_NO,      KC_NO,      KC_TRANSPARENT,
+                               KC_NO,      KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT,KC_NO,      KC_NO,
+                               KC_NO,      KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,   KC_NO,      KC_TRANSPARENT,
+                KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+                                                                       KC_NO,KC_NO,
+                                                                       KC_MS_WH_UP,
+                                                                       KC_MS_BTN1,KC_MS_BTN2,KC_MS_WH_DOWN,
+                               
+                               KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
+                               KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
+                               KC_NO,KC_NO,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,KC_NO,
+                               KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_STOP,KC_AUDIO_MUTE,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_NO,
+                               KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,
+                               KC_NO,KC_NO,
+                               KC_NO,
+                               KC_MS_BTN3,KC_MS_BTN4,KC_MS_BTN5
+                       ),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
+    // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_UP),
+    [3] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_LEFT),
+    [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_DOWN),
+    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RIGHT),  
+};
+
+void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
+{
+   
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch(id) {
+        case 0:
+            if (record->event.pressed) {
+                // Output Keyboard Firmware info
+                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+                return false;
+            }
+        case 1:
+            if (record->event.pressed) {
+                // Symmentra "Left Click to win" salt
+                return MACRO( I(50),  T(ENTER), I(5), D(LSFT), T(L), U(LSFT), T(E), T(F), T(T), T(SPACE), T(C), T(L), T(I), T(C), T(K), T(SPACE), T(T), T(O), T(SPACE), T(W), T(I), T(N), D(LSFT), T(1), U(LSFT), T(ENTER), END );
+            }
+        case 2:
+            if (record->event.pressed) {
+                //salt salt salt
+                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(S), U(LSFT), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(DOT), T(DOT), T(DOT), T(ENTER), END );
+            }
+        case 3:
+            if (record->event.pressed) {
+                // your saltiness makes me hard
+                return MACRO( I(50),  T(ENTER), I(5), D(LSFT), T(Y), U(LSFT), T(O), T(U), T(R), T(SPACE), T(S), T(A), T(L), T(T), T(SPACE), T(O), T(N), T(L), T(Y), T(SPACE), T(M), T(A), T(K), T(E), T(S), T(SPACE), T(M), T(Y), T(SPACE), T(P), T(E), T(N), T(I), T(S), T(SPACE), T(T), T(H), T(A), T(T), T(SPACE), T(M), T(U), T(C), T(H), T(SPACE), T(H), T(A), T(R), T(D), T(E), T(R), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), T(E), T(V), T(E), T(N), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(A), T(G), T(G), T(R), T(E), T(S), T(S), T(I), T(V), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
+            }
+        case 4:
+            if (record->event.pressed) {
+                // make ergodox-ez-drashna-custom-teensy
+                return MACRO( I(5), T(M), T(A), T(K), T(E), T(SPACE), T(E), T(R), T(G), T(O), T(D), T(O), T(X), T(MINUS), T(E), T(Z), T(MINUS), T(D), T(R), T(A), T(S), T(H), T(N), T(A), T(MINUS), T(C), T(U), T(S), T(T), T(O), T(M), T(MINUS), T(T), T(E), T(E), T(N), T(S), T(Y), T(ENTER), END );
+            }
+        case 5:
+            if (record->event.pressed) {
+                //super secret hash
+                SEND_STRING("supersecrethash");
+                return MACRO_NONE;
+            }
+        case 6:
+            if (record->event.pressed) {
+                // Please sir, can I have some more salt
+                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(P), U(LSFT), T(L), T(E), T(A), T(S), T(E), T(SPACE), T(S), T(I), T(R), T(COMMA), T(SPACE), T(C), T(A), T(N), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(H), T(A), T(V), T(E), T(SPACE), T(S), T(O), T(M), T(E), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(S), T(A), T(L), T(T), D(LSFT), T(SLASH), U(LSFT), D(LSFT), T(1), U(LSFT), T(ENTER), END );
+            }
+            break;
+        case 7:
+        if (record->event.pressed) {
+                // DoomFisted
+                // Hey, look at me.  I'm Doomfist, and I'm overpowered!  
+                // All I do is spam punches all day!   I'm DPS, tank and 
+                // defense, rolled into one! All I need is team healing to be complete!
+                return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(H), U(LSFT), T(E), T(Y), T(COMMA), T(SPACE), T(L), T(O), T(O), T(K), T(SPACE), T(A), T(T), T(SPACE), T(M), T(E), T(DOT), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), T(O), T(O), T(M), T(F), T(I), T(S), T(T), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), T(O), T(V), T(E), T(R), T(P), T(O), T(W), T(E), T(R), T(E), T(D), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(D), T(O), T(SPACE), T(I), T(S), T(SPACE), T(S), T(P), T(A), T(M), T(SPACE), T(P), T(U), T(N), T(C), T(H), T(E), T(S), T(SPACE), T(A), T(L), T(L), T(SPACE), T(D), T(A), T(Y), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), D(LSFT), T(P), U(LSFT), D(LSFT), T(S), U(LSFT), T(COMMA), T(SPACE), T(T), T(A), T(N), T(K), T(SPACE), T(A), T(N), T(D), T(SPACE), T(D), T(E), T(F), T(E), T(N), T(S), T(E), T(COMMA), T(SPACE), T(R), T(O), T(L), T(L), T(E), T(D), T(SPACE), T(I), T(N), T(T), T(O), T(SPACE), T(O), T(N), T(E), D(LSFT), T(1), U(LSFT), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(N), T(E), T(E), T(D), T(SPACE), T(I), T(S), T(SPACE), T(T), T(E), T(A), T(M), T(SPACE), T(H), T(E), T(A), T(L), T(I), T(N), T(G), T(SPACE), T(T), T(O), T(SPACE), T(B), T(E), T(SPACE), T(C), T(O), T(M), T(P), T(L), T(E), T(T), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
+            }
+        case 8: //MAC1 - Hold for rshift and } on tap
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                return MACRO(D(LSFT), END );
+            } else {
+                return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
+            }; break;
+        case 9:        //MAC1 - Hold for rshift and } on tap
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                return MACRO(D(RSFT), END );
+            } else {
+                return checktime()  ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
+            }; break;
+        case 10: //MAC2 - Hold for lctrl and [ on tap
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                return MACRO(D(LCTL), END );
+            } else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
+            }; break;
+        case 11: //MAC3 - Hold for rctrl and ] on tap
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                return MACRO(D(RCTL), END );
+            } else {
+                return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
+            }; break;
+    }
+    return MACRO_NONE;
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+       switch (keycode) {
+               // dynamically generate these.
+               case EPRM:
+                       if (record->event.pressed) {
+                eeconfig_init();
+                       }
+                       return false;
+                       break;
+               case VRSN:
+                       if (record->event.pressed) {
+                               SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+                       }
+                       return false;
+                       break;
+               case RGB_SLD:
+                       if (record->event.pressed) {
+                               rgblight_mode(1);
+                       }
+                       return false;
+                       break;
+
+               case RGB_0000FF:
+                       if (record->event.pressed) {
+                               #ifdef RGBLIGHT_ENABLE
+                               rgblight_enable();
+                               rgblight_mode(1);
+                               rgblight_setrgb(0x00,0x00,0xff);
+                               #endif
+                       }
+                       return false;
+                       break;
+
+               case RGB_008000:
+                       if (record->event.pressed) {
+                               #ifdef RGBLIGHT_ENABLE
+                               rgblight_enable();
+                               rgblight_mode(1);
+                               rgblight_setrgb(0x00,0x80,0x00);
+                               #endif
+                       }
+                       return false;
+                       break;
+
+               case RGB_FF0000:
+                       if (record->event.pressed) {
+                               #ifdef RGBLIGHT_ENABLE
+                               rgblight_enable();
+                               rgblight_mode(1);
+                               rgblight_setrgb(0xff,0x00,0x00);
+                               #endif
+                       }
+                       return false;
+                       break;
+
+               case RGB_800080:
+                       if (record->event.pressed) {
+                               #ifdef RGBLIGHT_ENABLE
+                               rgblight_enable();
+                               rgblight_mode(1);
+                               rgblight_setrgb(0x80,0x00,0x80);
+                               #endif
+                       }
+                       return false;
+                       break;
+
+               case RGB_00FF90:
+                       if (record->event.pressed) {
+                               #ifdef RGBLIGHT_ENABLE
+                               rgblight_enable();
+                               rgblight_mode(1);
+                               rgblight_setrgb(0x00,0xff,0x90);
+                               #endif
+                       }
+                       return false;
+                       break;
+        case KC_DIABLO_CLEAR:
+            if (record->event.pressed) {
+                uint8_t dtime;
+                
+                for (dtime = 0; dtime < 4; dtime++) {
+                    diablo_key_time[dtime] = diablo_times[0];
+                }
+            }
+            return false;
+            break;
+            
+       }
+       return true;
+}
+
+void send_diablo_keystroke (uint8_t diablo_key) {
+    if (current_layer == DIABLO) {
+        switch (diablo_key) {
+            case 0:
+                SEND_STRING("1");
+                break;
+            case 1:
+                SEND_STRING("2");
+                break;
+            case 2:
+                SEND_STRING("3");
+                break;
+            case 3:
+                SEND_STRING("4");
+                break;
+        }
+    }
+}
+
+void run_diablo_macro_check(void) {
+    uint8_t dtime;
+    
+    for (dtime = 0; dtime < 4; dtime++) {
+        if (check_dtimer(dtime) && diablo_key_time[dtime]) {
+            diablo_timer[dtime] = timer_read();
+            send_diablo_keystroke(dtime);
+        } 
+    }
+    
+}
+
+void matrix_init_user(void) { // Runs boot tasks for keyboard
+    wait_ms(500);
+    ergodox_board_led_on();
+    wait_ms(200);
+    ergodox_right_led_1_on();
+    wait_ms(200);
+    ergodox_right_led_2_on();
+    wait_ms(200);
+    ergodox_right_led_3_on();
+    wait_ms(200);
+    ergodox_board_led_off();
+    wait_ms(200);
+    ergodox_right_led_1_off();
+    wait_ms(200);
+    ergodox_right_led_2_off();
+    wait_ms(200);
+    ergodox_right_led_3_off();
+
+    
+#ifdef LAYER_UNDERGLOW_LIGHTING
+       rgblight_enable();
+       rgblight_sethsv(195,255,255);
+#endif 
+    has_layer_changed = false;
+    
+    
+    
+};
+
+
+
+void matrix_scan_user(void) {  // runs frequently to update info
+    uint8_t modifiders = get_mods();
+    uint8_t layer = biton32(layer_state);
+       
+       if (!skip_leds) {
+               ergodox_board_led_off();
+               ergodox_right_led_1_off();
+               ergodox_right_led_2_off();
+               ergodox_right_led_3_off();
+        
+        if ( modifiders & MODS_SHIFT_MASK) {
+                ergodox_right_led_1_on();
+        }
+        if ( modifiders & MODS_CTRL_MASK) {
+                ergodox_right_led_2_on();
+        }
+        if ( modifiders & MODS_ALT_MASK) {
+                ergodox_right_led_3_on();
+        }
+        
+    }
+        
+    switch (layer) {
+        case SYMB:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (240,255,255);
+            }
+            #else
+            ergodox_right_led_3_on();
+            #endif
+            break;
+        case OVERWATCH:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (30,255,255);
+            }
+            #else
+            ergodox_right_led_2_on();
+            #endif
+            break;
+        case DIABLO:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (0,255,255);
+            }
+            #else
+            ergodox_right_led_1_on();
+            #endif
+            break;
+        case MOUS:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (60,255,255);
+            }
+            #else
+            ergodox_right_led_3_on();
+            ergodox_right_led_2_on();
+            #endif
+            break;
+        case COLEMAK:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (300,255,255);
+            }
+            #else
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            #endif
+            break;
+        case DVORAK:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (120,255,255);
+            }
+            #else
+            ergodox_right_led_2_on();
+            ergodox_right_led_1_on();
+            #endif
+            break;
+        case 7:
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (255,255,255);
+            }
+            #else
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            #endif
+            break;
+        default:
+            // Do not add anything here, as this will be ran EVERY check, and can cause a significant slowdown
+            #ifdef LAYER_UNDERGLOW_LIGHTING
+            if (has_layer_changed) {
+                rgblight_sethsv (195,255,255);
+            }
+            #endif
+            break;
+    }
+        
+    if (current_layer == layer) {
+        has_layer_changed = false;
+    } else {
+        has_layer_changed = true;
+        current_layer = layer;
+    }
+    run_diablo_macro_check();
+};
+
+
diff --git a/keyboards/ergodox_ez/keymaps/drashna/Makefile b/keyboards/ergodox_ez/keymaps/drashna/Makefile
new file mode 100644 (file)
index 0000000..9dfddf0
--- /dev/null
@@ -0,0 +1,6 @@
+RGBLIGHT_ENABLE = yes
+RGBLIGHT_ANIMATION = no
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/ergodox_ez/keymaps/drashna/config.h b/keyboards/ergodox_ez/keymaps/drashna/config.h
new file mode 100644 (file)
index 0000000..258dc39
--- /dev/null
@@ -0,0 +1,11 @@
+
+#include "../../config.h"
+
+
+
+// make this easy to toggle behavior, so that it can be more easily toggled
+#define LAYER_UNDERGLOW_LIGHTING  
+
+#ifdef LAYER_UNDERGLOW_LIGHTING
+#undef RGBLIGHT_ANIMATIONS
+#endif
\ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/drashna/keymap.c b/keyboards/ergodox_ez/keymaps/drashna/keymap.c
new file mode 100644 (file)
index 0000000..cef0e9c
--- /dev/null
@@ -0,0 +1,195 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+
+#include "keymap_german.h"
+
+#include "keymap_nordic.h"
+
+#define VERSION M(0)
+
+
+// Define layer names 
+#define BASE 0
+#define SYMB 1
+#define MOUS 2
+
+#ifdef LAYER_UNDERGLOW_LIGHTING
+bool has_layer_changed = true;
+
+#define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF)
+#define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00)
+#define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00);
+#define rgblight_set_green rgblight_setrgb(0x00, 0x00, 0xFF);
+#define rgblight_set_yellow rgblight_setrgb(0xFF, 0xFF, 0x00);
+
+
+#define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
+#define MODS_ALT_MASK  (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
+#endif  
+
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+#ifndef LAYER_UNDERGLOW_LIGHTING
+  RGB_SLD,
+#endif  
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [0] = KEYMAP(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,KC_LEFT,KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,KC_LSHIFT,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,ALL_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSHIFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_BSPACE,KC_END,KC_RIGHT,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,LT(2,KC_SCOLON),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),KC_RSHIFT,KC_UP,KC_DOWN,KC_LBRACKET,KC_RBRACKET,MO(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDOWN,KC_TAB,KC_ENTER),
+
+#ifdef LAYER_UNDERGLOW_LIGHTING
+  [1] = KEYMAP(KC_ESCAPE,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,VERSION,KC_EXLM,KC_AT,KC_LCBR,KC_RCBR,KC_PIPE,KC_TRANSPARENT,VRSN,KC_HASH,KC_DLR,KC_LPRN,KC_RPRN,KC_GRAVE,RESET,KC_PERC,KC_CIRC,KC_LBRACKET,KC_RBRACKET,KC_TILD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_VAD,RGB_VAI,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_UP,KC_7,KC_8,KC_9,KC_ASTR,KC_F12,KC_DOWN,KC_4,KC_5,KC_6,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_AMPR,KC_1,KC_2,KC_3,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_DOT,KC_0,KC_EQUAL,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT),
+#else
+  [1] = KEYMAP(KC_ESCAPE,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,VERSION,KC_EXLM,KC_AT,KC_LCBR,KC_RCBR,KC_PIPE,KC_TRANSPARENT,VRSN,KC_HASH,KC_DLR,KC_LPRN,KC_RPRN,KC_GRAVE,RESET,KC_PERC,KC_CIRC,KC_LBRACKET,KC_RBRACKET,KC_TILD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,RGB_MOD,KC_TRANSPARENT,KC_TRANSPARENT,RGB_VAD,RGB_VAI,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_UP,KC_7,KC_8,KC_9,KC_ASTR,KC_F12,KC_DOWN,KC_4,KC_5,KC_6,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_AMPR,KC_1,KC_2,KC_3,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_DOT,KC_0,KC_EQUAL,KC_TRANSPARENT,RGB_TOG,RGB_SLD,KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUD,RGB_HUI),
+#endif
+
+  [2] = KEYMAP(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_WWW_BACK),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_TOGGLE(1)
+};
+
+// leaving this in place for compatibilty with old keymaps cloned and re-compiled.
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+#ifndef LAYER_UNDERGLOW_LIGHTING
+    case RGB_SLD:
+      if (record->event.pressed) {
+        rgblight_mode(1);
+      }
+      return false;
+      break;
+#endif
+     
+  }
+  return true;
+}
+
+
+
+
+void matrix_scan_user(void) {
+
+    uint8_t new_layer = biton32(layer_state);
+    
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    
+#ifdef LAYER_UNDERGLOW_LIGHTING
+    static uint8_t old_layer = 0;
+    uint8_t modifiders = get_mods();
+    
+    if ( modifiders & MODS_SHIFT_MASK) {
+            ergodox_right_led_1_on();
+    }
+    if ( modifiders & MODS_CTRL_MASK) {
+            ergodox_right_led_2_on();
+    }
+    if ( modifiders & MODS_ALT_MASK) {
+            ergodox_right_led_3_on();
+    }
+    
+    if (old_layer != new_layer) {
+        has_layer_changed = true; 
+        old_layer = new_layer;
+    }
+    if (has_layer_changed) {
+        switch (new_layer) {
+            case 1:
+                rgblight_set_red;
+                break;
+            case 2:
+                rgblight_set_blue;
+                break;
+            case 3:
+                rgblight_set_green;
+                break;
+            case 4:
+                rgblight_set_yellow;
+                break;
+            case 5:
+                rgblight_setrgb(0xFF, 0xFF, 0x00);
+                break;
+            case 6:
+                rgblight_setrgb(0xFF, 0xFF, 0x00);
+                break;
+            case 7:
+                rgblight_setrgb(0xFF, 0xFF, 0xFF);
+                break;
+            default:
+                rgblight_set_teal;
+                break;
+        }
+        has_layer_changed = false;
+    }
+    
+#else    
+    switch (new_layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+            break;
+        case 4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case 5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        case 6:
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        case 7:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        default:
+            break;
+     }
+#endif 
+};
diff --git a/keyboards/ergodox_ez/keymaps/drashna/readme.md b/keyboards/ergodox_ez/keymaps/drashna/readme.md
new file mode 100644 (file)
index 0000000..90fe448
--- /dev/null
@@ -0,0 +1,9 @@
+# Drashna's ErgoDox EZ Underglow Mod
+
+This is based on the default Ergodox EZ keymap.
+
+This modifieds the keymay so that it uses the underglow to indicate which layer you're on, rather than the top LEDs.
+
+Default colors are "teal" for base layer, "red" for Symbols, and "green" for mouse/media.  Blue would be the next layer, if you had more.
+
+Additionally, the top LEDs are Shift/Control/Alt indicators instead (in that order). 
\ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/profet_80/keymap.c b/keyboards/ergodox_ez/keymaps/profet_80/keymap.c
new file mode 100644 (file)
index 0000000..06c4f77
--- /dev/null
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |  1   |  2   | Home |       | PgUp |   3    |   4  |
+ *                                 |------|------|------|       |------|--------|------|
+ *                                 | Space| BkSp | End  |       | PgDn |  Tab   |Enter |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP_80(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                               KC_1,  KC_2,   KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,KC_3,   KC_4,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |------|------|------|       |------|------|------|
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP_80(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+----------.
+ *                                 |      |      |      |       |      |      |          |
+ *                                 |------|------|------|       |------|------|----------|
+ *                                 |      |      |      |       |      |      |BrwserBack|
+ *                                 `--------------------'       `------------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP_80(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                                 KC_TRNS, KC_TRNS, KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox_ez/keymaps/profet_80/readme.md b/keyboards/ergodox_ez/keymaps/profet_80/readme.md
new file mode 100644 (file)
index 0000000..7380e34
--- /dev/null
@@ -0,0 +1,10 @@
+# ErgoDox 80 Default Configuration
+
+This is based on the default Ergodox EZ keymap.
+The difference is that this keymap supports 80 key layouts.
+If you own an 80 key Ergodox, use this as an example to get your desired keymap.
+
+**NOTE:** This layout is not physically supported by the Ergodox EZ.
+
+
+![Default80](https://i.imgur.com/P2Lga9x.png)
diff --git a/keyboards/ergodox_ez/keymaps/steno/Makefile b/keyboards/ergodox_ez/keymaps/steno/Makefile
new file mode 100644 (file)
index 0000000..b6fb9b1
--- /dev/null
@@ -0,0 +1,3 @@
+VIRTSER_ENABLE = yes
+# Not enough interupts, so something has to go
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/ergodox_ez/keymaps/steno/keymap.c b/keyboards/ergodox_ez/keymaps/steno/keymap.c
new file mode 100644 (file)
index 0000000..86b16f1
--- /dev/null
@@ -0,0 +1,324 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "sendchar.h"
+#include "virtser.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define TXBOLT 3 // TxBolt Steno Virtual Serial
+#define TXBOLT2 4 // TxBolt Steno Virtual Serial Alternative Layout
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  TX  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           | BOLT |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(TXBOLT),  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+// TxBolt Codes
+#define Sl 0b00000001
+#define Tl 0b00000010
+#define Kl 0b00000100
+#define Pl 0b00001000
+#define Wl 0b00010000
+#define Hl 0b00100000
+#define Rl 0b01000001
+#define Al 0b01000010
+#define Ol 0b01000100
+#define X  0b01001000
+#define Er 0b01010000
+#define Ur 0b01100000
+#define Fr 0b10000001
+#define Rr 0b10000010
+#define Pr 0b10000100
+#define Br 0b10001000
+#define Lr 0b10010000
+#define Gr 0b10100000
+#define Tr 0b11000001
+#define Sr 0b11000010
+#define Dr 0b11000100
+#define Zr 0b11001000
+#define NM 0b11010000
+#define GRPMASK 0b11000000
+#define GRP0 0b00000000
+#define GRP1 0b01000000
+#define GRP2 0b10000000
+#define GRP3 0b11000000
+/* Keymap 3: TxBolt (Serial)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | BKSPC  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   S  |   T  |   P  |   H  |   *  |------|           |------|   *  |   F  |   P  |   L  |   T  |   D    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   S  |   K  |   W  |   R  |   *  |      |           |      |   *  |   R  |   B  |   G  |   S  |   Z    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   A  |   O  |------|       |------|   E  |   U  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// TxBolt over Serial
+[TXBOLT] = KEYMAP(
+       KC_BSPC, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
+       KC_NO,   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),  KC_NO,  
+       KC_NO,   M(Sl),   M(Tl),   M(Pl),   M(Hl),   M(X),
+       KC_NO,   M(Sl),   M(Kl),   M(Wl),   M(Rl),   M(X),   KC_NO,
+       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+                                           KC_NO,   KC_NO,  
+                                                    KC_NO,  
+                                  M(Al),   M(Ol),   KC_NO,  
+    // right hand
+       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
+       KC_TRNS,  M(NM),   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),
+                 M(X),    M(Fr),   M(Pr),   M(Lr),   M(Tr),   M(Dr),
+       KC_NO,    M(X),    M(Rr),   M(Br),   M(Gr),   M(Sr),   M(Zr),
+                          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
+       KC_NO,   KC_NO,  
+       KC_NO,  
+       KC_NO,   M(Er),   M(Ur)
+),
+/* Keymap 4: TxBolt (Serial) Alternative
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   S  |   T  |   P  |   H  |   *  |      |           |      |   *  |   F  |   P  |   L  |   T  |   D    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   S  |   K  |   W  |   R  |   *  |------|           |------|   *  |   R  |   B  |   G  |   S  |   Z    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |   A  |   O  |                                       |   E  |   U  |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// TxBolt over Serial
+[TXBOLT2] = KEYMAP(
+       KC_NO,   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),  KC_NO,  
+       KC_NO,   M(Sl),   M(Tl),   M(Pl),   M(Hl),   M(X),   KC_NO,  
+       KC_NO,   M(Sl),   M(Kl),   M(Wl),   M(Rl),   M(X),
+       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
+       KC_NO,   KC_NO,   KC_NO,   M(Al),   M(Ol),
+                                           KC_NO,   KC_NO,  
+                                                    KC_NO,  
+                                  KC_NO,   KC_NO,   KC_NO,  
+    // right hand
+       KC_NO,    M(NM),   M(NM),   M(NM),   M(NM),   M(NM),   M(NM),
+       KC_TRNS,  M(X),    M(Fr),   M(Pr),   M(Lr),   M(Tr),   M(Dr),
+                 M(X),    M(Rr),   M(Br),   M(Gr),   M(Sr),   M(Zr),
+       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  
+                          M(Er),   M(Ur),   KC_NO,   KC_NO,   KC_NO,  
+       KC_NO,   KC_NO,  
+       KC_NO,  
+       KC_NO,   KC_NO,   KC_NO
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+uint8_t chord[4] = {0,0,0,0};
+uint8_t pressed_count = 0;
+
+void send_chord(void)
+{
+  for(uint8_t i = 0; i < 4; i++)
+  {
+    if(chord[i])
+      virtser_send(chord[i]);
+  }
+  virtser_send(0);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record)
+{
+  // We need to track keypresses in all modes, in case the user
+  // changes mode whilst pressing other keys.
+  if (record->event.pressed)
+    pressed_count++;
+  else
+    pressed_count--;
+  return true;
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+
+  if (record->event.pressed) {
+    uint8_t grp = (id & GRPMASK) >> 6;
+    chord[grp] |= id;
+  }
+  else {
+    if (pressed_count == 0) {
+      send_chord();
+      chord[0] = chord[1] = chord[2] = chord[3] = 0;
+    }
+  }
+  return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox_ez/keymaps/steno/readme.md b/keyboards/ergodox_ez/keymaps/steno/readme.md
new file mode 100644 (file)
index 0000000..d67cde2
--- /dev/null
@@ -0,0 +1,92 @@
+# ErgoDox EZ Steno Configuration
+
+This layout has a layer that uses the TxBolt Stenograph protocol over a Virtual Serial port. It requires something like Plover in order to function.
+
+In Plover, you can select TX Bolt as the Stenotype Machine, and find the COM port that was assigned. In this way, your regular keyboard will still function normally, and you can switch back and forth between the Steno and Keyboard layers.
+
+<pre><code>
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  TX  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           | BOLT |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+/* Keymap 2: Media keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+/* Keymap 3: TxBolt (Serial)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | BKSPC  |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   #  |   #  |   #  |   #  |   #  |      |           |      |   #  |   #  |   #  |   #  |   #  |   #    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   S  |   T  |   P  |   H  |   *  |------|           |------|   *  |   F  |   P  |   L  |   T  |   D    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   S  |   K  |   W  |   R  |   *  |      |           |      |   *  |   R  |   B  |   G  |   S  |   Z    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   A  |   O  |------|       |------|   E  |   U  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+</code></pre>
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
new file mode 100644 (file)
index 0000000..b743cf0
--- /dev/null
@@ -0,0 +1,394 @@
+/*
+
+Note for ErgoDox EZ customizers: Here be dragons!
+This is not a file you want to be messing with.
+All of the interesting stuff for you is under keymaps/ :)
+Love, Erez
+
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ * scan matrix
+ */
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include "wait.h"
+#include "action_layer.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include QMK_KEYBOARD_H
+#include "i2cmaster.h"
+#ifdef DEBUG_MATRIX_SCAN_RATE
+#include  "timer.h"
+#endif
+
+/*
+ * This constant define not debouncing time in msecs, but amount of matrix
+ * scan loops which should be made to get stable debounced results.
+ *
+ * On Ergodox matrix scan rate is relatively low, because of slow I2C.
+ * Now it's only 317 scans/second, or about 3.15 msec/scan.
+ * According to Cherry specs, debouncing time is 5 msec.
+ *
+ * And so, there is no sense to have DEBOUNCE higher than 2.
+ */
+
+#ifndef DEBOUNCE
+#   define DEBOUNCE    5
+#endif
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t 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 uint8_t mcp23018_reset_loop;
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+uint32_t matrix_timer;
+uint32_t matrix_scan_count;
+#endif
+
+
+__attribute__ ((weak))
+void matrix_init_user(void) {}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {}
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+  matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+  matrix_scan_user();
+}
+
+inline
+uint8_t matrix_rows(void)
+{
+    return MATRIX_ROWS;
+}
+
+inline
+uint8_t matrix_cols(void)
+{
+    return MATRIX_COLS;
+}
+
+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;
+        for (uint8_t j=0; j < MATRIX_COLS; ++j) {
+            debounce_matrix[i * MATRIX_COLS + j] = 0;
+        }
+    }
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+    matrix_timer = timer_read32();
+    matrix_scan_count = 0;
+#endif
+
+    matrix_init_quantum();
+
+}
+
+void matrix_power_up(void) {
+    mcp23018_status = init_mcp23018();
+
+    unselect_rows();
+    init_cols();
+
+    // initialize matrix state: all keys off
+    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+        matrix[i] = 0;
+    }
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+    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(uint8_t row) {
+  matrix_row_t result = 0;
+  for (uint8_t j=0; j < MATRIX_COLS; ++j) {
+    if (debounce_matrix[row * MATRIX_COLS + j]) {
+      --debounce_matrix[row * MATRIX_COLS + j];
+    } else {
+      result |= (1 << j);
+    }
+  }
+  return result;
+}
+
+// Report changed keys in the given row.  Resets the debounce countdowns
+// corresponding to each set bit in 'change' to DEBOUNCE.
+void debounce_report(matrix_row_t change, uint8_t row) {
+  for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
+    if (change & (1 << i)) {
+      debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
+    }
+  }
+}
+
+uint8_t matrix_scan(void)
+{
+    if (mcp23018_status) { // if there was an error
+        if (++mcp23018_reset_loop == 0) {
+            // 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");
+                ergodox_blink_all_leds();
+            }
+        }
+    }
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+    matrix_scan_count++;
+
+    uint32_t timer_now = timer_read32();
+    if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
+        print("matrix scan frequency: ");
+        pdec(matrix_scan_count);
+        print("\n");
+
+        matrix_timer = timer_now;
+        matrix_scan_count = 0;
+    }
+#endif
+
+    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+        select_row(i);
+        wait_us(30);  // without this wait read unstable value.
+        matrix_row_t mask = debounce_mask(i);
+        matrix_row_t cols = (read_cols(i) & mask) | (matrix[i] & ~mask);
+        debounce_report(cols ^ matrix[i], i);
+        matrix[i] = cols;
+
+        unselect_rows();
+    }
+
+    matrix_scan_quantum();
+
+    return 1;
+}
+
+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
+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;
+}
+
+/* Column pin configuration
+ *
+ * Teensy
+ * col: 0   1   2   3   4   5
+ * pin: F0  F1  F4  F5  F6  F7
+ *
+ * MCP23018
+ * col: 0   1   2   3   4   5
+ * pin: B5  B4  B3  B2  B1  B0
+ */
+static void  init_cols(void)
+{
+    // init on mcp23018
+    // not needed, already done as part of init_mcp23018()
+
+    // init on teensy
+    // Input with pull-up(DDR:0, PORT:1)
+    DDRF  &= ~(1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
+    PORTF |=  (1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
+}
+
+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);    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;
+        out:
+            i2c_stop();
+            return data;
+        }
+    } else {
+        // read from teensy
+        return
+            (PINF&(1<<0) ? 0 : (1<<0)) |
+            (PINF&(1<<1) ? 0 : (1<<1)) |
+            (PINF&(1<<4) ? 0 : (1<<2)) |
+            (PINF&(1<<5) ? 0 : (1<<3)) |
+            (PINF&(1<<6) ? 0 : (1<<4)) |
+            (PINF&(1<<7) ? 0 : (1<<5)) ;
+    }
+}
+
+/* Row pin configuration
+ *
+ * Teensy
+ * row: 7   8   9   10  11  12  13
+ * pin: B0  B1  B2  B3  D2  D3  C6
+ *
+ * MCP23018
+ * row: 0   1   2   3   4   5   6
+ * pin: A0  A1  A2  A3  A4  A5  A6
+ */
+static void unselect_rows(void)
+{
+    // unselect on mcp23018
+    if (mcp23018_status) { // if there was an error
+        // 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<<7)
+                          );                            if (mcp23018_status) goto out;
+    out:
+        i2c_stop();
+    }
+
+    // unselect on teensy
+    // Hi-Z(DDR:0, PORT:0) to unselect
+    DDRB  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
+    PORTB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
+    DDRD  &= ~(1<<2 | 1<<3);
+    PORTD &= ~(1<<2 | 1<<3);
+    DDRC  &= ~(1<<6);
+    PORTC &= ~(1<<6);
+}
+
+static void select_row(uint8_t row)
+{
+    if (row < 7) {
+        // select on mcp23018
+        if (mcp23018_status) { // if there was an error
+            // do nothing
+        } 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<<7)
+                              );                                if (mcp23018_status) goto out;
+        out:
+            i2c_stop();
+        }
+    } else {
+        // select on teensy
+        // Output low(DDR:1, PORT:0) to select
+        switch (row) {
+            case 7:
+                DDRB  |= (1<<0);
+                PORTB &= ~(1<<0);
+                break;
+            case 8:
+                DDRB  |= (1<<1);
+                PORTB &= ~(1<<1);
+                break;
+            case 9:
+                DDRB  |= (1<<2);
+                PORTB &= ~(1<<2);
+                break;
+            case 10:
+                DDRB  |= (1<<3);
+                PORTB &= ~(1<<3);
+                break;
+            case 11:
+                DDRD  |= (1<<2);
+                PORTD &= ~(1<<3);
+                break;
+            case 12:
+                DDRD  |= (1<<3);
+                PORTD &= ~(1<<3);
+                break;
+            case 13:
+                DDRC  |= (1<<6);
+                PORTC &= ~(1<<6);
+                break;
+        }
+    }
+}
+
diff --git a/keyboards/ergodox_ez/readme.md b/keyboards/ergodox_ez/readme.md
new file mode 100644 (file)
index 0000000..f025c59
--- /dev/null
@@ -0,0 +1,33 @@
+# ErgoDox EZ
+
+The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
+
+Linux users need to modify udev rules as described on the [Teensy
+Linux page].  Some distributions provide a binary, maybe called
+`teensy-loader-cli`.
+
+[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html
+
+To flash the firmware:
+
+  - Build the firmware with `make keymapname`, for example `make default`
+  - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
+    `ergodox_ez_default.hex`
+
+  - Start the teensy loader.
+
+  - Load the .hex file into it.
+
+  - Press the Reset button by inserting a paperclip gently into the reset hole
+    in the top right corder.
+
+  - Click the button in the Teensy app to download the firmware.
+
+To flash with ´teensy-loader-cli´:
+
+  - Build the firmware with `make keymapname`, for example `make default`
+
+  - Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
+
+  - Press the Reset button by inserting a paperclip gently into the reset hole
+    in the top right corder.
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
new file mode 100644 (file)
index 0000000..e011127
--- /dev/null
@@ -0,0 +1,86 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make = Make software.
+#
+# make clean = Clean out built project files.
+#
+# That's pretty much all you need. To compile, always go make clean, 
+# followed by make.
+#
+# For advanced users only:
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+#----------------------------------------------------------------------------
+
+# # project specific files
+SRC = twimaster.c \
+         matrix.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 Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=512
+
+
+# Build Options
+#   comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
+CONSOLE_ENABLE   = no  # Console for debug(+400)
+COMMAND_ENABLE   = yes # Commands for debug and configuration
+CUSTOM_MATRIX    = yes # Custom matrix file for the ErgoDox EZ
+NKRO_ENABLE      = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+UNICODE_ENABLE   = yes # Unicode
+ONEHAND_ENABLE   = yes # Allow swapping hands of keyboard
+SLEEP_LED_ENABLE = no
+API_SYSEX_ENABLE = no
+RGBLIGHT_ENABLE = yes
+
+LAYOUTS = ergodox
\ No newline at end of file
diff --git a/keyboards/ergodox_ez/twimaster.c b/keyboards/ergodox_ez/twimaster.c
new file mode 100644 (file)
index 0000000..f91c08e
--- /dev/null
@@ -0,0 +1,208 @@
+/*************************************************************************
+* 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/ergodox_ez/util/compile_keymap.py b/keyboards/ergodox_ez/util/compile_keymap.py
new file mode 100644 (file)
index 0000000..7076a6e
--- /dev/null
@@ -0,0 +1,710 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Compiler for keymap.c files
+
+This scrip will generate a keymap.c file from a simple
+markdown file with a specific layout.
+
+Usage:
+    python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
+"""
+from __future__ import division
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import os
+import io
+import re
+import sys
+import json
+import unicodedata
+import collections
+import itertools as it
+
+PY2 = sys.version_info.major == 2
+
+if PY2:
+    chr = unichr
+
+
+KEYBOARD_LAYOUTS = {
+    # These map positions in the parsed layout to
+    # positions in the KEYMAP MATRIX
+    'ergodox_ez': [
+        [ 0,  1,  2,  3,  4,  5,  6],  [38, 39, 40, 41, 42, 43, 44],
+        [ 7,  8,  9, 10, 11, 12, 13],  [45, 46, 47, 48, 49, 50, 51],
+        [14, 15, 16, 17, 18, 19    ],  [    52, 53, 54, 55, 56, 57],
+        [20, 21, 22, 23, 24, 25, 26],  [58, 59, 60, 61, 62, 63, 64],
+        [27, 28, 29, 30, 31        ],  [        65, 66, 67, 68, 69],
+        [                    32, 33],  [70, 71                    ],
+        [                        34],  [72                        ],
+        [                35, 36, 37],  [73, 74, 75                ],
+    ]
+}
+
+ROW_INDENTS = {
+    'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
+}
+
+BLANK_LAYOUTS = [
+# Compact Layout
+"""
+.------------------------------------.------------------------------------.
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ |    |    |    |    |    |                     !    |    |    |    |    |
+ '------------------------'                     '------------------------'
+                        .-----------. .-----------.
+                        |     |     | !     |     |
+                  .-----+-----+-----! !-----+-----+-----.
+                  !     !     |     | !     |     !     !
+                  !     !     !-----! !-----!     !     !
+                  |     |     |     | !     |     |     |
+                  '-----------------' '-----------------'
+""",
+
+# Wide Layout
+"""
+.---------------------------------------------. .---------------------------------------------.
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |-------! !-------!     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
+ |      |     |     |     |     |                             !     |     |     |     |      |
+ '------------------------------'                             '------------------------------'
+                              .---------------. .---------------.
+                              |       |       | !       |       |
+                      .-------+-------+-------! !-------+-------+-------.
+                      !       !       |       | !       |       !       !
+                      !       !       !-------! !-------!       !       !
+                      |       |       |       | !       |       |       |
+                      '-----------------------' '-----------------------'
+""",
+]
+
+
+DEFAULT_CONFIG = {
+    "keymaps_includes": [
+        "keymap_common.h",
+    ],
+    'filler': "-+.'!:x",
+    'separator': "|",
+    'default_key_prefix': ["KC_"],
+}
+
+
+SECTIONS = [
+    'layout_config',
+    'layers',
+]
+
+
+#       Markdown Parsing
+
+ONELINE_COMMENT_RE = re.compile(r"""
+    ^                       # comment must be at the start of the line
+    \s*                     # arbitrary whitespace
+    //                      # start of the comment
+    (.*)                    # the comment
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE
+)
+
+INLINE_COMMENT_RE = re.compile(r"""
+    ([\,\"\[\]\{\}\d])      # anythig that might end a expression
+    \s+                     # comment must be preceded by whitespace
+    //                      # start of the comment
+    \s                      # and succeded by whitespace
+    (?:[^\"\]\}\{\[]*)      # the comment (except things which might be json)
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE)
+
+TRAILING_COMMA_RE = re.compile(r"""
+    ,                       # the comma
+    (?:\s*)                 # arbitrary whitespace
+    $                       # only works if the trailing comma is followed by newline
+    (\s*)                   # arbitrary whitespace
+    ([\]\}])                # end of an array or object
+""", re.MULTILINE | re.VERBOSE)
+
+
+def loads(raw_data):
+    if isinstance(raw_data, bytes):
+        raw_data = raw_data.decode('utf-8')
+
+    raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
+    raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
+    raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
+    return json.loads(raw_data)
+
+
+def parse_config(path):
+    def reset_section():
+        section.update({
+            'name': section.get('name', ""),
+            'sub_name': "",
+            'start_line': -1,
+            'end_line': -1,
+            'code_lines': [],
+        })
+
+    def start_section(line_index, line):
+        end_section()
+        if line.startswith("# "):
+            name = line[2:]
+        elif line.startswith("## "):
+            name = line[3:]
+        else:
+            name = ""
+
+        name = name.strip().replace(" ", "_").lower()
+        if name in SECTIONS:
+            section['name'] = name
+        else:
+            section['sub_name'] = name
+        section['start_line'] = line_index
+
+    def end_section():
+        if section['start_line'] >= 0:
+            if section['name'] == 'layout_config':
+                config.update(loads("\n".join(
+                    section['code_lines']
+                )))
+            elif section['sub_name'].startswith('layer'):
+                layer_name = section['sub_name']
+                config['layer_lines'][layer_name] = section['code_lines']
+
+        reset_section()
+
+    def amend_section(line_index, line):
+        section['end_line'] = line_index
+        section['code_lines'].append(line)
+
+    config = DEFAULT_CONFIG.copy()
+    config.update({
+        'layer_lines': collections.OrderedDict(),
+        'macro_ids': {'UM'},
+        'unicode_macros': {},
+    })
+
+    section = {}
+    reset_section()
+
+    with io.open(path, encoding="utf-8") as fh:
+        for i, line in enumerate(fh):
+            if line.startswith("#"):
+                start_section(i, line)
+            elif line.startswith("    "):
+                amend_section(i, line[4:])
+            else:
+                # TODO: maybe parse description
+                pass
+
+    end_section()
+    assert 'layout' in config
+    return config
+
+#       header file parsing
+
+IF0_RE = re.compile(r"""
+    ^
+    #if 0
+    $.*?
+    #endif
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+COMMENT_RE = re.compile(r"""
+    /\*
+    .*?
+    \*/"
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def read_header_file(path):
+    with io.open(path, encoding="utf-8") as fh:
+        data = fh.read()
+    data, _ = COMMENT_RE.subn("", data)
+    data, _ = IF0_RE.subn("", data)
+    return data
+
+
+def regex_partial(re_str_fmt, flags):
+    def partial(*args, **kwargs):
+        re_str = re_str_fmt.format(*args, **kwargs)
+        return re.compile(re_str, flags)
+    return partial
+
+
+KEYDEF_REP = regex_partial(r"""
+    #define
+    \s
+    (
+        (?:{})          # the prefixes
+        (?:\w+)         # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_RE = re.compile(r"""
+    (
+        enum
+        \s\w+\s
+        \{
+        .*?             # the enum content
+        \}
+        ;
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_KEY_REP = regex_partial(r"""
+    (
+        {}              # the prefixes
+        \w+             # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def parse_keydefs(config, data):
+    prefix_options = "|".join(config['key_prefixes'])
+    keydef_re = KEYDEF_REP(prefix_options)
+    enum_key_re = ENUM_KEY_REP(prefix_options)
+    for match in keydef_re.finditer(data):
+        yield match.groups()[0]
+
+    for enum_match in ENUM_RE.finditer(data):
+        enum = enum_match.groups()[0]
+        for key_match in enum_key_re.finditer(enum):
+            yield key_match.groups()[0]
+
+
+def parse_valid_keys(config, out_path):
+    basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
+    dirpaths = []
+    subpaths = []
+    while len(subpaths) < 6:
+        path = os.path.join(basepath, *subpaths)
+        dirpaths.append(path)
+        dirpaths.append(os.path.join(path, "tmk_core", "common"))
+        dirpaths.append(os.path.join(path, "quantum"))
+        subpaths.append('..')
+
+    includes = set(config['keymaps_includes'])
+    includes.add("keycode.h")
+
+    valid_keycodes = set()
+    for dirpath, include in it.product(dirpaths, includes):
+        include_path = os.path.join(dirpath, include)
+        if os.path.exists(include_path):
+            header_data = read_header_file(include_path)
+            valid_keycodes.update(
+                parse_keydefs(config, header_data)
+            )
+    return valid_keycodes
+
+
+#       Keymap Parsing
+
+def iter_raw_codes(layer_lines, filler, separator):
+    filler_re = re.compile("[" + filler + " ]")
+    for line in layer_lines:
+        line, _ = filler_re.subn("", line.strip())
+        if not line:
+            continue
+        codes = line.split(separator)
+        for code in codes[1:-1]:
+            yield code
+
+
+def iter_indexed_codes(raw_codes, key_indexes):
+    key_rows = {}
+    key_indexes_flat = []
+
+    for row_index, key_indexes in enumerate(key_indexes):
+        for key_index in key_indexes:
+            key_rows[key_index] = row_index
+        key_indexes_flat.extend(key_indexes)
+    assert len(raw_codes) == len(key_indexes_flat)
+    for raw_code, key_index in zip(raw_codes, key_indexes_flat):
+        # we keep track of the row mostly for layout purposes
+        yield raw_code, key_index, key_rows[key_index]
+
+
+LAYER_CHANGE_RE = re.compile(r"""
+    (DF|TG|MO)\(\d+\)
+""", re.VERBOSE)
+
+
+MACRO_RE = re.compile(r"""
+    M\(\w+\)
+""", re.VERBOSE)
+
+
+UNICODE_RE = re.compile(r"""
+    U[0-9A-F]{4}
+""", re.VERBOSE)
+
+
+NON_CODE = re.compile(r"""
+    ^[^A-Z0-9_]$
+""", re.VERBOSE)
+
+
+def parse_uni_code(raw_code):
+    macro_id = "UC_" + (
+        unicodedata.name(raw_code)
+        .replace(" ", "_")
+        .replace("-", "_")
+    )
+    code = "M({})".format(macro_id)
+    uc_hex = "{:04X}".format(ord(raw_code))
+    return code, macro_id, uc_hex
+
+
+def parse_key_code(raw_code, key_prefixes, valid_keycodes):
+    if raw_code in valid_keycodes:
+        return raw_code
+
+    for prefix in key_prefixes:
+        code = prefix + raw_code
+        if code in valid_keycodes:
+            return code
+
+
+def parse_code(raw_code, key_prefixes, valid_keycodes):
+    if not raw_code:
+        return 'KC_TRNS', None, None
+
+    if LAYER_CHANGE_RE.match(raw_code):
+        return raw_code, None, None
+
+    if MACRO_RE.match(raw_code):
+        macro_id = raw_code[2:-1]
+        return raw_code, macro_id, None
+
+    if UNICODE_RE.match(raw_code):
+        hex_code = raw_code[1:]
+        return parse_uni_code(chr(int(hex_code, 16)))
+
+    if NON_CODE.match(raw_code):
+        return parse_uni_code(raw_code)
+
+    code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
+    return code, None, None
+
+
+def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
+    keymap = {}
+    raw_codes = list(iter_raw_codes(
+        layer_lines, config['filler'], config['separator']
+    ))
+    indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
+    key_prefixes = config['key_prefixes']
+    for raw_code, key_index, row_index in indexed_codes:
+        code, macro_id, uc_hex = parse_code(
+            raw_code, key_prefixes, valid_keycodes
+        )
+        # TODO: line numbers for invalid codes
+        err_msg = "Could not parse key '{}' on row {}".format(
+            raw_code, row_index
+        )
+        assert code is not None, err_msg
+        # print(repr(raw_code), repr(code), macro_id, uc_hex)
+        if macro_id:
+            config['macro_ids'].add(macro_id)
+        if uc_hex:
+            config['unicode_macros'][macro_id] = uc_hex
+        keymap[key_index] = (code, row_index)
+    return keymap
+
+
+def parse_keymaps(config, valid_keycodes):
+    keymaps = collections.OrderedDict()
+    key_indexes = config.get(
+        'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
+    )
+    # TODO: maybe validate key_indexes
+
+    for layer_name, layer_lines, in config['layer_lines'].items():
+        keymaps[layer_name] = parse_keymap(
+            config, key_indexes, layer_lines, valid_keycodes
+        )
+    return keymaps
+
+#       keymap.c output
+
+USERCODE = """
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
+"""
+
+MACROCODE = """
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {{
+    if (hex == 0x0) {{
+        return KC_P0;
+    }}
+    if (hex < 0xA) {{
+        return KC_P1 + (hex - 0x1);
+    }}
+    return KC_A + (hex - 0xA);
+}}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {{
+    switch (unicode_mode) {{
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }}
+}}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
+    if (!record->event.pressed) {{
+        return MACRO_NONE;
+    }}
+    // MACRODOWN only works in this function
+    switch(id) {{
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+{macro_cases}
+{unicode_macro_cases}
+        default:
+            break;
+    }}
+    return MACRO_NONE;
+}};
+"""
+
+
+UNICODE_MACRO_TEMPLATE = """
+case {macro_id}:
+    unicode_action_function(0x{hi:02x}, 0x{lo:02x});
+    break;
+""".strip()
+
+
+def unicode_macro_cases(config):
+    for macro_id, uc_hex in config['unicode_macros'].items():
+        hi = int(uc_hex, 16) >> 8
+        lo = int(uc_hex, 16) & 0xFF
+        unimacro_keys = ", ".join(
+            "T({})".format(
+                "KP_" + digit if digit.isdigit() else digit
+            ) for digit in uc_hex
+        )
+        yield UNICODE_MACRO_TEMPLATE.format(
+            macro_id=macro_id, hi=hi, lo=lo
+        )
+
+
+def iter_keymap_lines(keymap, row_indents=None):
+    col_widths = {}
+    col = 0
+    # first pass, figure out the column widths
+    prev_row_index = None
+    for code, row_index in keymap.values():
+        if row_index != prev_row_index:
+            col = 0
+            if row_indents:
+                col = row_indents[row_index]
+        col_widths[col] = max(len(code), col_widths.get(col, 0))
+        prev_row_index = row_index
+        col += 1
+
+    # second pass, yield the cell values
+    col = 0
+    prev_row_index = None
+    for key_index in sorted(keymap):
+        code, row_index = keymap[key_index]
+        if row_index != prev_row_index:
+            col = 0
+            yield "\n"
+            if row_indents:
+                for indent_col in range(row_indents[row_index]):
+                    pad = " " * (col_widths[indent_col] - 4)
+                    yield (" /*-*/" + pad)
+                col = row_indents[row_index]
+        else:
+            yield pad
+        yield " {}".format(code)
+        if key_index < len(keymap) - 1:
+            yield ","
+            # This will be yielded on the next iteration when
+            # we know that we're not at the end of a line.
+            pad = " " * (col_widths[col] - len(code))
+        prev_row_index = row_index
+        col += 1
+
+
+def iter_keymap_parts(config, keymaps):
+    # includes
+    for include_path in config['keymaps_includes']:
+        yield '#include "{}"\n'.format(include_path)
+
+    yield "\n"
+
+    # definitions
+    for i, macro_id in enumerate(sorted(config['macro_ids'])):
+        yield "#define {} {}\n".format(macro_id, i)
+
+    yield "\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        yield '#define L{0:<3} {0:<5}  // {1}\n'.format(i, layer_name)
+
+    yield "\n"
+
+    # keymaps
+    yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        # comment
+        layer_lines = config['layer_lines'][layer_name]
+        prefixed_lines = " * " + " * ".join(layer_lines)
+        yield "/*\n{} */\n".format(prefixed_lines)
+
+        # keymap codes
+        keymap = keymaps[layer_name]
+        row_indents = ROW_INDENTS.get(config['layout'])
+        keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
+        yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines)
+
+    yield "};\n\n"
+
+    # no idea what this is for
+    yield "const uint16_t PROGMEM fn_actions[] = {};\n"
+
+    # macros
+    yield MACROCODE.format(
+        macro_cases="",
+        unicode_macro_cases="\n".join(unicode_macro_cases(config)),
+    )
+
+    # TODO: dynamically create blinking lights
+    yield USERCODE
+
+
+def main(argv=sys.argv[1:]):
+    if not argv or '-h' in argv or '--help' in argv:
+        print(__doc__)
+        return 0
+
+    in_path = os.path.abspath(argv[0])
+    if not os.path.exists(in_path):
+        print("No such file '{}'".format(in_path))
+        return 1
+
+    if len(argv) > 1:
+        out_path = os.path.abspath(argv[1])
+    else:
+        dirname = os.path.dirname(in_path)
+        out_path = os.path.join(dirname, "keymap.c")
+
+    config = parse_config(in_path)
+    valid_keys = parse_valid_keys(config, out_path)
+    keymaps = parse_keymaps(config, valid_keys)
+
+    with io.open(out_path, mode="w", encoding="utf-8") as fh:
+        for part in iter_keymap_parts(config, keymaps):
+            fh.write(part)
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/keyboards/ergodox_ez/util/readme.md b/keyboards/ergodox_ez/util/readme.md
new file mode 100644 (file)
index 0000000..26c5e5d
--- /dev/null
@@ -0,0 +1,3 @@
+# ErgoDox EZ Utilities
+
+The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option.
diff --git a/keyboards/ergodox_infinity/MEMO.txt b/keyboards/ergodox_infinity/MEMO.txt
new file mode 100644 (file)
index 0000000..e2886aa
--- /dev/null
@@ -0,0 +1,385 @@
+flabbergast's TMK/ChibiOS port
+==============================
+2015/10/16
+
+
+Build
+-----
+$ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git
+
+$ cd tmk_keyboard
+$ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
+or
+$ cd tmk_keyboard/tmk_core/tool/chibios
+$ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios
+
+$ cd tmk_keyboard/keyboard/infinity_chibios
+$ make
+
+
+
+
+Chibios Configuration
+---------------------
+halconf.h: for HAL configuration
+    placed in project directory
+    read in chibios/os/hal/hal.mk
+    included in chibios/os/hal/include/hal.h
+mcuconf.h: for MCU configuration
+    placed in project directory
+    included in halconf.h
+
+
+Chibios Term
+------------
+PAL = Port Abstraction Layer
+    palWritePad
+    palReadPad
+    palSetPad
+    chibios/os/hal/include/pal.h
+
+LLD = Low Level Driver
+
+
+Makefile
+--------
+    #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+    MCU_FAMILY = KINETIS
+    MCU_SERIES = KL2x
+
+    # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+    #   or <this_dir>/ld/
+    MCU_LDSCRIPT = MKL26Z64
+
+    #  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
+    MCU_STARTUP = kl2x
+
+    # Board: it should exist either in <chibios>/os/hal/boards/
+    #  or <this_dir>/boards
+    BOARD = PJRC_TEENSY_LC
+
+    MCU  = cortex-m0
+
+    # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+    ARMV = 6
+
+
+halconf.h
+---------
+
+
+mcuconf.h
+---------
+
+
+chconf.h
+--------
+
+
+ld script
+---------
+--- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld     2015-10-15 09:08:58.732904304 +0900
++++ ld/MKL26Z64.ld      2015-10-15 08:48:06.430215496 +0900
+@@ -27,7 +27,8 @@
+ {
+   flash0   :  org = 0x00000000,  len = 0xc0
+   flashcfg :  org = 0x00000400,  len = 0x10
+-  flash    :  org = 0x00000410,  len = 64k - 0x410
++  flash    :  org = 0x00000410,  len = 62k - 0x410
++  eeprom_emu : org = 0x0000F800, len = 2k
+   ram      :  org = 0x1FFFF800,  len = 8k
+ }
+
+@@ -35,6 +36,10 @@
+ __ram_size__            = LENGTH(ram);
+ __ram_end__             = __ram_start__ + __ram_size__;
+
++__eeprom_workarea_start__ = ORIGIN(eeprom_emu);
++__eeprom_workarea_size__  = LENGTH(eeprom_emu);
++__eeprom_workarea_end__   = __eeprom_workarea_start__ + __eeprom_workarea_size__;
++
+ SECTIONS
+ {
+   . = 0;
+
+
+
+Configuration/Startup for Infinity 60%
+--------------------------------------
+Configuration:
+
+
+Clock:
+Inifinity   
+    FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz
+    Clock dividor:
+    SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock
+    SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock
+    SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock
+    Internal reference clock:
+    MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL
+    MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable
+    FLL multipilication:
+    MCG_C4[DMX32] = 1
+    MCG_C4[DRST_DRS] = 01   FLL factor 1464 * 32.768kHz = 48MHz
+
+chibios/os/hal/ports/KINETIS/K20x/hal_lld.c
+    k20x_clock_init(): called in __early_init() defined in board.c
+        disable watchdog and configure clock
+
+        configurable macros:
+        KINETIS_NO_INIT: whether init or not
+        KINETIS_MCG_MODE: clock mode   
+            KINETIS_MCG_MODE_FEI
+            KINETIS_MCG_MODE_PEE
+                hal/ports/KINETIS/K20x/hal_lld.h
+            
+
+chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h
+    PALConfig pal_default_config
+    boardInit()
+    __early_init()
+    macro definitions for board infos, freq and mcu type
+
+chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c
+
+USB
+
+
+Startup
+-------
+    common/ports/ARMCMx/GCC/crt0_v[67]m.s
+        Reset_Handler: startup code
+    common/ports/ARMCMx/GCC/crt1.c
+        __core_init(): weak
+        __early_init(): weak
+        __late_init(): weak
+        __default_exit(): weak
+            called from Reset_Handler of crt0
+    common/ports/ARMCMx/GCC/vector.c
+    common/ports/ARMCMx/GCC/ld/*.ld
+
+chibios/os/common/ports/ARMCMx/compilers/GCC/
+├── crt0_v6m.s
+├── crt0_v7m.s
+├── crt1.c
+├── ld
+│   ├── MK20DX128BLDR3.ld
+│   ├── MK20DX128BLDR4.ld
+│   ├── MK20DX128.ld
+│   ├── MK20DX256.ld
+│   ├── MKL25Z128.ld
+│   ├── MKL26Z128.ld
+│   ├── MKL26Z64.ld
+│   └── STM32L476xG.ld
+├── mk
+│   ├── startup_k20x5.mk
+│   ├── startup_k20x7.mk
+│   ├── startup_k20x.mk
+│   ├── startup_kl2x.mk
+│   └── startup_stm32l4xx.mk
+├── rules.ld
+├── rules.mk
+└── vectors.c
+
+chibios/os/hal/
+├── boards
+│   ├── FREESCALE_FREEDOM_K20D50M
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── MCHCK_K20
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── PJRC_TEENSY_3
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── PJRC_TEENSY_3_1
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── PJRC_TEENSY_LC
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── readme.txt
+│   ├── simulator
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   └── board.mk
+│   ├── ST_NUCLEO_F030R8
+│   │   ├── board.c
+│   │   ├── board.h
+│   │   ├── board.mk
+│   │   └── cfg
+│   │       └── board.chcfg
+├── hal.mk
+├── include
+│   ├── adc.h
+│   ├── can.h
+│   ├── dac.h
+│   ├── ext.h
+│   ├── gpt.h
+│   ├── hal_channels.h
+│   ├── hal_files.h
+│   ├── hal.h
+│   ├── hal_ioblock.h
+│   ├── hal_mmcsd.h
+│   ├── hal_queues.h
+│   ├── hal_streams.h
+│   ├── i2c.h
+│   ├── i2s.h
+│   ├── icu.h
+│   ├── mac.h
+│   ├── mii.h
+│   ├── mmc_spi.h
+│   ├── pal.h
+│   ├── pwm.h
+│   ├── rtc.h
+│   ├── sdc.h
+│   ├── serial.h
+│   ├── serial_usb.h
+│   ├── spi.h
+│   ├── st.h
+│   ├── uart.h
+│   └── usb.h
+├── lib
+│   └── streams
+│       ├── chprintf.c
+│       ├── chprintf.h
+│       ├── memstreams.c
+│       ├── memstreams.h
+│       ├── nullstreams.c
+│       └── nullstreams.h
+├── osal
+│   ├── nil
+│   │   ├── osal.c
+│   │   ├── osal.h
+│   │   └── osal.mk
+│   ├── os-less
+│   │   └── ARMCMx
+│   │       ├── osal.c
+│   │       ├── osal.h
+│   │       └── osal.mk
+│   └── rt
+│       ├── osal.c
+│       ├── osal.h
+│       └── osal.mk
+├── ports
+│   ├── AVR
+│   ├── common
+│   │   └── ARMCMx
+│   │       ├── mpu.h
+│   │       ├── nvic.c
+│   │       └── nvic.h
+│   ├── KINETIS
+│   │   ├── K20x
+│   │   │   ├── hal_lld.c
+│   │   │   ├── hal_lld.h
+│   │   │   ├── kinetis_registry.h
+│   │   │   ├── platform.dox
+│   │   │   ├── platform.mk
+│   │   │   ├── pwm_lld.c
+│   │   │   ├── pwm_lld.h
+│   │   │   ├── spi_lld.c
+│   │   │   └── spi_lld.h
+│   │   ├── KL2x
+│   │   │   ├── hal_lld.c
+│   │   │   ├── hal_lld.h
+│   │   │   ├── kinetis_registry.h
+│   │   │   ├── platform.mk
+│   │   │   ├── pwm_lld.c
+│   │   │   └── pwm_lld.h
+│   │   ├── LLD
+│   │   │   ├── adc_lld.c
+│   │   │   ├── adc_lld.h
+│   │   │   ├── ext_lld.c
+│   │   │   ├── ext_lld.h
+│   │   │   ├── gpt_lld.c
+│   │   │   ├── gpt_lld.h
+│   │   │   ├── i2c_lld.c
+│   │   │   ├── i2c_lld.h
+│   │   │   ├── pal_lld.c
+│   │   │   ├── pal_lld.h
+│   │   │   ├── serial_lld.c
+│   │   │   ├── serial_lld.h
+│   │   │   ├── st_lld.c
+│   │   │   ├── st_lld.h
+│   │   │   ├── usb_lld.c
+│   │   │   └── usb_lld.h
+│   │   └── README.md
+│   ├── LPC
+│   ├── simulator
+│   └── STM32
+├── src
+│   ├── adc.c
+│   ├── can.c
+│   ├── dac.c
+│   ├── ext.c
+│   ├── gpt.c
+│   ├── hal.c
+│   ├── hal_mmcsd.c
+│   ├── hal_queues.c
+│   ├── i2c.c
+│   ├── i2s.c
+│   ├── icu.c
+│   ├── mac.c
+│   ├── mmc_spi.c
+│   ├── pal.c
+│   ├── pwm.c
+│   ├── rtc.c
+│   ├── sdc.c
+│   ├── serial.c
+│   ├── serial_usb.c
+│   ├── spi.c
+│   ├── st.c
+│   ├── uart.c
+│   └── usb.c
+└── templates
+    ├── adc_lld.c
+    ├── adc_lld.h
+    ├── can_lld.c
+    ├── can_lld.h
+    ├── dac_lld.c
+    ├── dac_lld.h
+    ├── ext_lld.c
+    ├── ext_lld.h
+    ├── gpt_lld.c
+    ├── gpt_lld.h
+    ├── halconf.h
+    ├── hal_lld.c
+    ├── hal_lld.h
+    ├── i2c_lld.c
+    ├── i2c_lld.h
+    ├── i2s_lld.c
+    ├── i2s_lld.h
+    ├── icu_lld.c
+    ├── icu_lld.h
+    ├── mac_lld.c
+    ├── mac_lld.h
+    ├── mcuconf.h
+    ├── osal
+    │   ├── osal.c
+    │   ├── osal.h
+    │   └── osal.mk
+    ├── pal_lld.c
+    ├── pal_lld.h
+    ├── platform.mk
+    ├── pwm_lld.c
+    ├── pwm_lld.h
+    ├── rtc_lld.c
+    ├── rtc_lld.h
+    ├── sdc_lld.c
+    ├── sdc_lld.h
+    ├── serial_lld.c
+    ├── serial_lld.h
+    ├── spi_lld.c
+    ├── spi_lld.h
+    ├── st_lld.c
+    ├── st_lld.h
+    ├── uart_lld.c
+    ├── uart_lld.h
+    ├── usb_lld.c
+    └── usb_lld.h
diff --git a/keyboards/ergodox_infinity/Makefile b/keyboards/ergodox_infinity/Makefile
new file mode 100644 (file)
index 0000000..bd09e58
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+       include ../../../Makefile
+endif
diff --git a/keyboards/ergodox_infinity/board_is31fl3731c.h b/keyboards/ergodox_infinity/board_is31fl3731c.h
new file mode 100644 (file)
index 0000000..f248cc2
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 _GDISP_LLD_BOARD_H
+#define _GDISP_LLD_BOARD_H
+
+static const I2CConfig i2ccfg = {
+  400000 // clock speed (Hz); 400kHz max for IS31
+};
+
+static const uint8_t led_mask[] = {
+       0xFF, 0x00, /* C1-1 -> C1-16 */
+       0xFF, 0x00, /* C2-1 -> C2-16 */
+       0xFF, 0x00, /* C3-1 -> C3-16 */
+       0xFF, 0x00, /* C4-1 -> C4-16 */
+       0x3F, 0x00, /* C5-1 -> C5-16 */
+       0x00, 0x00, /* C6-1 -> C6-16 */
+       0x00, 0x00, /* C7-1 -> C7-16 */
+       0x00, 0x00, /* C8-1 -> C8-16 */
+       0x00, 0x00, /* C9-1 -> C9-16 */
+};
+
+// The address of the LED
+#define LA(c, r) (c + r * 16 )
+// Need to be an address that is not mapped, but inside the range of the controller matrix
+#define NA LA(8, 8)
+
+// The numbers in the comments are the led numbers DXX on the PCB
+// The mapping is taken from the schematic of left hand side
+static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
+//   45        44        43        42        41        40        39
+   { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
+//   52        51        50        49        48        47        46
+   { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) },
+//   58        57        56        55        54        53        N/A
+   { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA },
+//   67        66        65        64        63        62        61
+   { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) },
+//   76        75        74        73        72        60        59
+   { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) },
+//   N/A       N/A       N/A       N/A       N/A       N/A       68
+   { NA,       NA,       NA,       NA,       NA,       NA,       LA(5, 4) },
+//   N/A       N/A       N/A       N/A       71        70        69
+   { NA,       NA,       NA,       NA,       LA(6, 2), LA(6, 1), LA(6, 0) },
+};
+
+
+#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
+#define IS31_TIMEOUT 5000
+
+static GFXINLINE void init_board(GDisplay *g) {
+    (void) g;
+    /* I2C pins */
+    palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
+    palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
+    palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
+    palClearPad(GPIOB, 16);
+    /* start I2C */
+    i2cStart(&I2CD1, &i2ccfg);
+    // try high drive (from kiibohd)
+    I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
+    // try glitch fixing (from kiibohd)
+    I2CD1.i2c->FLT = 4;
+}
+
+static GFXINLINE void post_init_board(GDisplay *g) {
+       (void) g;
+}
+
+static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
+    (void) g;
+    return led_mask;
+}
+
+static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y)
+{
+    (void) g;
+    return led_mapping[y][x];
+}
+
+static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
+    (void) g;
+    if(!shutdown) {
+        palSetPad(GPIOB, 16);
+    }
+    else {
+        palClearPad(GPIOB, 16);
+    }
+}
+
+static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
+       (void) g;
+       i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT));
+}
+
+#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/board_st7565.h b/keyboards/ergodox_infinity/board_st7565.h
new file mode 100644 (file)
index 0000000..9ab636c
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ *              http://ugfx.org/license.html
+ */
+
+#ifndef _GDISP_LLD_BOARD_H
+#define _GDISP_LLD_BOARD_H
+
+#define ST7565_LCD_BIAS         ST7565_LCD_BIAS_9 // actually 6
+#define ST7565_ADC              ST7565_ADC_NORMAL
+#define ST7565_COM_SCAN         ST7565_COM_SCAN_DEC
+#define ST7565_PAGE_ORDER       0,1,2,3
+/*
+ * Custom page order for several LCD boards, e.g. HEM12864-99
+ * #define ST7565_PAGE_ORDER       4,5,6,7,0,1,2,3
+ */
+
+#define ST7565_GPIOPORT GPIOC
+#define ST7565_PORT PORTC
+#define ST7565_A0_PIN 7
+#define ST7565_RST_PIN 8
+#define ST7565_MOSI_PIN 6
+#define ST7565_SLCK_PIN 5
+#define ST7565_SS_PIN 4
+
+#define palSetPadModeRaw(portname, bits) \
+    ST7565_PORT->PCR[ST7565_##portname##_PIN] = bits
+
+#define palSetPadModeNamed(portname, portmode) \
+    palSetPadMode(ST7565_GPIOPORT, ST7565_##portname##_PIN, portmode)
+
+#define ST7565_SPI_MODE PORTx_PCRn_DSE | PORTx_PCRn_MUX(2)
+// DSPI Clock and Transfer Attributes
+// Frame Size: 8 bits
+// MSB First
+// CLK Low by default
+static const SPIConfig spi1config = {
+   // Operation complete callback or @p NULL.
+  .end_cb = NULL,
+   //The chip select line port - when not using pcs.
+  .ssport = ST7565_GPIOPORT,
+   // brief The chip select line pad number - when not using pcs.
+  .sspad=ST7565_SS_PIN,
+   // SPI initialization data.
+  .tar0 =
+    SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
+    | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
+    | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
+    | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
+    | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
+    | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
+};
+
+static GFXINLINE void acquire_bus(GDisplay *g) {
+    (void) g;
+    // Only the LCD is using the SPI bus, so no need to acquire
+    // spiAcquireBus(&SPID1);
+    spiSelect(&SPID1);
+}
+
+static GFXINLINE void release_bus(GDisplay *g) {
+    (void) g;
+    // Only the LCD is using the SPI bus, so no need to release
+    //spiReleaseBus(&SPID1);
+    spiUnselect(&SPID1);
+}
+
+static GFXINLINE void init_board(GDisplay *g) {
+    (void) g;
+    palSetPadModeNamed(A0, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+    palSetPadModeNamed(RST, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    palSetPadModeRaw(MOSI, ST7565_SPI_MODE);
+    palSetPadModeRaw(SLCK, ST7565_SPI_MODE);
+    palSetPadModeNamed(SS, PAL_MODE_OUTPUT_PUSHPULL);
+
+    spiInit();
+    spiStart(&SPID1, &spi1config);
+    release_bus(g);
+}
+
+static GFXINLINE void post_init_board(GDisplay *g) {
+    (void) g;
+}
+
+static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
+    (void) g;
+    if (state) {
+        palClearPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    }
+    else {
+        palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN);
+    }
+}
+
+static GFXINLINE void enter_data_mode(GDisplay *g) {
+    palSetPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+}
+
+static GFXINLINE void enter_cmd_mode(GDisplay *g) {
+    palClearPad(ST7565_GPIOPORT, ST7565_A0_PIN);
+}
+
+
+static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
+    (void) g;
+    spiSend(&SPID1, length, data);
+}
+
+#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/bootloader_defs.h b/keyboards/ergodox_infinity/bootloader_defs.h
new file mode 100644 (file)
index 0000000..c67153b
--- /dev/null
@@ -0,0 +1 @@
+#define KIIBOHD_BOOTLOADER
diff --git a/keyboards/ergodox_infinity/chconf.h b/keyboards/ergodox_infinity/chconf.h
new file mode 100644 (file)
index 0000000..d59c35e
--- /dev/null
@@ -0,0 +1,524 @@
+/*
+    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.
+*/
+
+/**
+ * @file    templates/chconf.h
+ * @brief   Configuration file template.
+ * @details A copy of this file must be placed in each project directory, it
+ *          contains the application specific kernel settings.
+ *
+ * @addtogroup config
+ * @details Kernel related settings and hooks.
+ * @{
+ */
+
+#ifndef _CHCONF_H_
+#define _CHCONF_H_
+
+#define _CHIBIOS_RT_CONF_
+
+/*===========================================================================*/
+/**
+ * @name System timers settings
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   System time counter resolution.
+ * @note    Allowed values are 16 or 32 bits.
+ */
+#define CH_CFG_ST_RESOLUTION                32
+
+/**
+ * @brief   System tick frequency.
+ * @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
+
+/**
+ * @brief   Time delta constant for the tick-less mode.
+ * @note    If this value is zero then the system uses the classic
+ *          periodic tick. This value represents the minimum number
+ *          of ticks that is safe to specify in a timeout directive.
+ *          The value one is not valid, timeouts are rounded up to
+ *          this value.
+ */
+#define CH_CFG_ST_TIMEDELTA                 0
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Kernel parameters and options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   Round robin interval.
+ * @details This constant is the number of system ticks allowed for the
+ *          threads before preemption occurs. Setting this value to zero
+ *          disables the preemption for threads with equal priority and the
+ *          round robin becomes cooperative. Note that higher priority
+ *          threads can still preempt, the kernel is always preemptive.
+ * @note    Disabling the round robin preemption makes the kernel more compact
+ *          and generally faster.
+ * @note    The round robin preemption is not supported in tickless mode and
+ *          must be set to zero in that case.
+ */
+#define CH_CFG_TIME_QUANTUM                 20
+
+/**
+ * @brief   Managed RAM size.
+ * @details Size of the RAM area to be managed by the OS. If set to zero
+ *          then the whole available RAM is used. The core memory is made
+ *          available to the heap allocator and/or can be used directly through
+ *          the simplified core memory allocator.
+ *
+ * @note    In order to let the OS manage the whole RAM the linker script must
+ *          provide the @p __heap_base__ and @p __heap_end__ symbols.
+ * @note    Requires @p CH_CFG_USE_MEMCORE.
+ */
+#define CH_CFG_MEMCORE_SIZE                 0
+
+/**
+ * @brief   Idle thread automatic spawn suppression.
+ * @details When this option is activated the function @p chSysInit()
+ *          does not spawn the idle thread. The application @p main()
+ *          function becomes the idle thread and must implement an
+ *          infinite loop.
+ */
+#define CH_CFG_NO_IDLE_THREAD               FALSE
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Performance options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   OS optimization.
+ * @details If enabled then time efficient rather than space efficient code
+ *          is used when two possible implementations exist.
+ *
+ * @note    This is not related to the compiler optimization options.
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_OPTIMIZE_SPEED               TRUE
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Subsystem options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   Time Measurement APIs.
+ * @details If enabled then the time measurement APIs are included in
+ *          the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_TM                       FALSE
+
+/**
+ * @brief   Threads registry APIs.
+ * @details If enabled then the registry APIs are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_REGISTRY                 TRUE
+
+/**
+ * @brief   Threads synchronization APIs.
+ * @details If enabled then the @p chThdWait() function is included in
+ *          the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_WAITEXIT                 TRUE
+
+/**
+ * @brief   Semaphores APIs.
+ * @details If enabled then the Semaphores APIs are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_SEMAPHORES               TRUE
+
+/**
+ * @brief   Semaphores queuing mode.
+ * @details If enabled then the threads are enqueued on semaphores by
+ *          priority rather than in FIFO order.
+ *
+ * @note    The default is @p FALSE. Enable this if you have special
+ *          requirements.
+ * @note    Requires @p CH_CFG_USE_SEMAPHORES.
+ */
+#define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
+
+/**
+ * @brief   Mutexes APIs.
+ * @details If enabled then the mutexes APIs are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_MUTEXES                  TRUE
+
+/**
+ * @brief   Enables recursive behavior on mutexes.
+ * @note    Recursive mutexes are heavier and have an increased
+ *          memory footprint.
+ *
+ * @note    The default is @p FALSE.
+ * @note    Requires @p CH_CFG_USE_MUTEXES.
+ */
+#define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
+
+/**
+ * @brief   Conditional Variables APIs.
+ * @details If enabled then the conditional variables APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @note    Requires @p CH_CFG_USE_MUTEXES.
+ */
+#define CH_CFG_USE_CONDVARS                 TRUE
+
+/**
+ * @brief   Conditional Variables APIs with timeout.
+ * @details If enabled then the conditional variables APIs with timeout
+ *          specification are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @note    Requires @p CH_CFG_USE_CONDVARS.
+ */
+#define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
+
+/**
+ * @brief   Events Flags APIs.
+ * @details If enabled then the event flags APIs are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_EVENTS                   TRUE
+
+/**
+ * @brief   Events Flags APIs with timeout.
+ * @details If enabled then the events APIs with timeout specification
+ *          are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @note    Requires @p CH_CFG_USE_EVENTS.
+ */
+#define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
+
+/**
+ * @brief   Synchronous Messages APIs.
+ * @details If enabled then the synchronous messages APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_MESSAGES                 TRUE
+
+/**
+ * @brief   Synchronous Messages queuing mode.
+ * @details If enabled then messages are served by priority rather than in
+ *          FIFO order.
+ *
+ * @note    The default is @p FALSE. Enable this if you have special
+ *          requirements.
+ * @note    Requires @p CH_CFG_USE_MESSAGES.
+ */
+#define CH_CFG_USE_MESSAGES_PRIORITY        FALSE
+
+/**
+ * @brief   Mailboxes APIs.
+ * @details If enabled then the asynchronous messages (mailboxes) APIs are
+ *          included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @note    Requires @p CH_CFG_USE_SEMAPHORES.
+ */
+#define CH_CFG_USE_MAILBOXES                TRUE
+
+/**
+ * @brief   I/O Queues APIs.
+ * @details If enabled then the I/O queues APIs are included in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_QUEUES                   TRUE
+
+/**
+ * @brief   Core Memory Manager APIs.
+ * @details If enabled then the core memory manager APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_MEMCORE                  TRUE
+
+/**
+ * @brief   Heap Allocator APIs.
+ * @details If enabled then the memory heap allocator APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
+ *          @p CH_CFG_USE_SEMAPHORES.
+ * @note    Mutexes are recommended.
+ */
+#define CH_CFG_USE_HEAP                     TRUE
+
+/**
+ * @brief   Memory Pools Allocator APIs.
+ * @details If enabled then the memory pools allocator APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ */
+#define CH_CFG_USE_MEMPOOLS                 TRUE
+
+/**
+ * @brief   Dynamic Threads APIs.
+ * @details If enabled then the dynamic threads creation APIs are included
+ *          in the kernel.
+ *
+ * @note    The default is @p TRUE.
+ * @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
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Debug options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   Debug option, kernel statistics.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_STATISTICS                   FALSE
+
+/**
+ * @brief   Debug option, system state check.
+ * @details If enabled the correct call protocol for system APIs is checked
+ *          at runtime.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_SYSTEM_STATE_CHECK           FALSE
+
+/**
+ * @brief   Debug option, parameters checks.
+ * @details If enabled then the checks on the API functions input
+ *          parameters are activated.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_ENABLE_CHECKS                FALSE
+
+/**
+ * @brief   Debug option, consistency checks.
+ * @details If enabled then all the assertions in the kernel code are
+ *          activated. This includes consistency checks inside the kernel,
+ *          runtime anomalies and port-defined checks.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_ENABLE_ASSERTS               FALSE
+
+/**
+ * @brief   Debug option, trace buffer.
+ * @details If enabled then the context switch circular trace buffer is
+ *          activated.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_ENABLE_TRACE                 FALSE
+
+/**
+ * @brief   Debug option, stack checks.
+ * @details If enabled then a runtime stack check is performed.
+ *
+ * @note    The default is @p FALSE.
+ * @note    The stack check is performed in a architecture/port dependent way.
+ *          It may not be implemented or some ports.
+ * @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           FALSE
+
+/**
+ * @brief   Debug option, stacks initialization.
+ * @details If enabled then the threads working area is filled with a byte
+ *          value when a thread is created. This can be useful for the
+ *          runtime measurement of the used stack.
+ *
+ * @note    The default is @p FALSE.
+ */
+#define CH_DBG_FILL_THREADS                 FALSE
+
+/**
+ * @brief   Debug option, threads profiling.
+ * @details If enabled then a field is added to the @p thread_t structure that
+ *          counts the system ticks occurred while executing the thread.
+ *
+ * @note    The default is @p FALSE.
+ * @note    This debug option is not currently compatible with the
+ *          tickless mode.
+ */
+#define CH_DBG_THREADS_PROFILING            FALSE
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Kernel hooks
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief   Threads descriptor structure extension.
+ * @details User fields added to the end of the @p thread_t structure.
+ */
+#define CH_CFG_THREAD_EXTRA_FIELDS                                          \
+  /* Add threads custom fields here.*/
+
+/**
+ * @brief   Threads initialization hook.
+ * @details User initialization code added to the @p chThdInit() API.
+ *
+ * @note    It is invoked from within @p chThdInit() and implicitly from all
+ *          the threads creation APIs.
+ */
+#define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
+  /* Add threads initialization code here.*/                                \
+}
+
+/**
+ * @brief   Threads finalization hook.
+ * @details User finalization code added to the @p chThdExit() API.
+ *
+ * @note    It is inserted into lock zone.
+ * @note    It is also invoked when the threads simply return in order to
+ *          terminate.
+ */
+#define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
+  /* Add threads finalization code here.*/                                  \
+}
+
+/**
+ * @brief   Context switch hook.
+ * @details This hook is invoked just before switching between threads.
+ */
+#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
+  /* Context switch code here.*/                                            \
+}
+
+/**
+ * @brief   ISR enter hook.
+ */
+#define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \
+  /* IRQ prologue code here.*/                                              \
+}
+
+/**
+ * @brief   ISR exit hook.
+ */
+#define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \
+  /* IRQ epilogue code here.*/                                              \
+}
+
+/**
+ * @brief   Idle thread enter hook.
+ * @note    This hook is invoked within a critical zone, no OS functions
+ *          should be invoked from here.
+ * @note    This macro can be used to activate a power saving mode.
+ */
+#define CH_CFG_IDLE_ENTER_HOOK() {                                          \
+}
+
+/**
+ * @brief   Idle thread leave hook.
+ * @note    This hook is invoked within a critical zone, no OS functions
+ *          should be invoked from here.
+ * @note    This macro can be used to deactivate a power saving mode.
+ */
+#define CH_CFG_IDLE_LEAVE_HOOK() {                                          \
+}
+
+/**
+ * @brief   Idle Loop hook.
+ * @details This hook is continuously invoked by the idle thread loop.
+ */
+#define CH_CFG_IDLE_LOOP_HOOK() {                                           \
+  /* Idle loop code here.*/                                                 \
+}
+
+/**
+ * @brief   System tick event hook.
+ * @details This hook is invoked in the system tick handler immediately
+ *          after processing the virtual timers queue.
+ */
+#define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
+  /* System tick event code here.*/                                         \
+}
+
+/**
+ * @brief   System halt hook.
+ * @details This hook is invoked in case to a system halting error before
+ *          the system is halted.
+ */
+#define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
+  /* System halt code here.*/                                               \
+}
+
+/**
+ * @brief   Trace hook.
+ * @details This hook is invoked each time a new record is written in the
+ *          trace buffer.
+ */
+#define CH_CFG_TRACE_HOOK(tep) {                                            \
+  /* Trace code here.*/                                                     \
+}
+
+/** @} */
+
+/*===========================================================================*/
+/* Port-specific settings (override port settings defaulted in chcore.h).    */
+/*===========================================================================*/
+
+#endif  /* _CHCONF_H_ */
+
+/** @} */
diff --git a/keyboards/ergodox_infinity/config.h b/keyboards/ergodox_infinity/config.h
new file mode 100644 (file)
index 0000000..094761e
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+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/>.
+*/
+
+#ifndef INFINITY_ERGODOX_CONFIG_H
+#define INFINITY_ERGODOX_CONFIG_H
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6464
+#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 "TMK"
+#define USBSTR_MANUFACTURER    'T', '\x00', 'M', '\x00', 'K', '\x00', ' ', '\x00'
+#define PRODUCT "Infinity keyboard/TMK"
+#define USBSTR_PRODUCT         'I', '\x00', 'n', '\x00', 'f', '\x00', 'i', '\x00', 'n', '\x00', 'i', '\x00', 't', '\x00', 'y', '\x00', ' ', '\x00', 'k', '\x00', 'e', '\x00', 'y', '\x00', 'b', '\x00', 'o', '\x00', 'a', '\x00', 'r', '\x00', 'd', '\x00', '/', '\x00', 'T', '\x00', 'M', '\x00', 'K', '\x00'
+
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_DELAY          0
+#define MOUSEKEY_TIME_TO_MAX    60
+#define MOUSEKEY_MAX_SPEED      7
+#define MOUSEKEY_WHEEL_DELAY 0
+
+#define TAPPING_TOGGLE  1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+#define TAPPING_TERM    200
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+/* key matrix size */
+#define MATRIX_ROWS 18
+#define MATRIX_COLS 5
+#define LOCAL_MATRIX_ROWS 9
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+#define LED_BRIGHTNESS_LO       100
+#define LED_BRIGHTNESS_HI       255
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE    5
+
+#define SERIAL_LINK_BAUD 562500
+#define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1)
+
+#define VISUALIZER_USER_DATA_SIZE 16
+
+/*
+ * 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/ergodox_infinity/ergodox_infinity.c b/keyboards/ergodox_infinity/ergodox_infinity.c
new file mode 100644 (file)
index 0000000..05b2d7c
--- /dev/null
@@ -0,0 +1,195 @@
+#include QMK_KEYBOARD_H
+#include "ch.h"
+#include "hal.h"
+#include "serial_link/system/serial_link.h"
+#ifdef VISUALIZER_ENABLE
+#include "lcd_backlight.h"
+#endif
+
+void init_serial_link_hal(void) {
+    PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2);
+    PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2);
+    PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3);
+    PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3);
+}
+
+#define RED_PIN 1
+#define GREEN_PIN 2
+#define BLUE_PIN 3
+#define CHANNEL_RED FTM0->CHANNEL[0]
+#define CHANNEL_GREEN FTM0->CHANNEL[1]
+#define CHANNEL_BLUE FTM0->CHANNEL[2]
+
+#define RGB_PORT PORTC
+#define RGB_PORT_GPIO GPIOC
+
+// Base FTM clock selection (72 MHz system clock)
+// @ 0xFFFF period, 72 MHz / (0xFFFF * 2) = Actual period
+// Higher pre-scalar will use the most power (also look the best)
+// Pre-scalar calculations
+// 0 -      72 MHz -> 549 Hz
+// 1 -      36 MHz -> 275 Hz
+// 2 -      18 MHz -> 137 Hz
+// 3 -       9 MHz ->  69 Hz (Slightly visible flicker)
+// 4 -   4 500 kHz ->  34 Hz (Visible flickering)
+// 5 -   2 250 kHz ->  17 Hz
+// 6 -   1 125 kHz ->   9 Hz
+// 7 - 562 500  Hz ->   4 Hz
+// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced
+// Which will reduce the brightness range
+#define PRESCALAR_DEFINE 0
+void lcd_backlight_hal_init(void) {
+       // Setup Backlight
+    SIM->SCGC6 |= SIM_SCGC6_FTM0;
+    FTM0->CNT = 0; // Reset counter
+
+       // PWM Period
+       // 16-bit maximum
+       FTM0->MOD = 0xFFFF;
+
+       // Set FTM to PWM output - Edge Aligned, Low-true pulses
+#define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0)
+       CHANNEL_RED.CnSC = CNSC_MODE;
+       CHANNEL_GREEN.CnSC = CNSC_MODE;
+       CHANNEL_BLUE.CnSC = CNSC_MODE;
+
+       // System clock, /w prescalar setting
+       FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE);
+
+       CHANNEL_RED.CnV = 0;
+       CHANNEL_GREEN.CnV = 0;
+       CHANNEL_BLUE.CnV = 0;
+
+       RGB_PORT_GPIO->PDDR |= (1 << RED_PIN);
+       RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN);
+       RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN);
+
+#define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4)
+    RGB_PORT->PCR[RED_PIN] = RGB_MODE;
+    RGB_PORT->PCR[GREEN_PIN] = RGB_MODE;
+    RGB_PORT->PCR[BLUE_PIN] = RGB_MODE;
+}
+
+static uint16_t cie_lightness(uint16_t v) {
+    // The CIE 1931 formula for lightness
+    // Y = luminance (output) 0-1
+    // L = lightness input 0 - 100
+
+    // Y = (L* / 902.3)           if L* <= 8
+    // Y = ((L* + 16) / 116)^3    if L* > 8
+
+    float l =  100.0f * (v / 65535.0f);
+    float y = 0.0f;
+    if (l <= 8.0f) {
+       y = l / 902.3;
+    }
+    else {
+        y = ((l + 16.0f) / 116.0f);
+        y = y * y * y;
+        if (y > 1.0f) {
+            y = 1.0f;
+        }
+    }
+    return y * 65535.0f;
+}
+
+void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
+       CHANNEL_RED.CnV = cie_lightness(r);
+       CHANNEL_GREEN.CnV = cie_lightness(g);
+       CHANNEL_BLUE.CnV = cie_lightness(b);
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+
+void matrix_init_kb(void) {
+       // put your keyboard start-up code here
+       // runs once when the firmware starts up
+
+       matrix_init_user();
+       // The backlight always has to be initialized, otherwise it will stay lit
+#ifndef VISUALIZER_ENABLE
+       lcd_backlight_hal_init();
+#endif
+}
+
+void matrix_scan_kb(void) {
+       // put your looping keyboard code here
+       // runs every cycle (a lot)
+
+       matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void ergodox_board_led_on(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_1_on(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_2_on(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_3_on(void){
+}
+
+__attribute__ ((weak))
+void ergodox_board_led_off(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_1_off(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_2_off(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_3_off(void){
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_1_set(uint8_t n) {
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_2_set(uint8_t n) {
+}
+
+__attribute__ ((weak))
+void ergodox_right_led_3_set(uint8_t n) {
+}
+
+#ifdef ONEHAND_ENABLE
+__attribute__ ((weak))
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+    {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}},
+    {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}},
+    {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}},
+    {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}},
+    {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}},
+    {{0, 14}, {1, 14}, {2, 14}, {3, 14}, {4, 14}},
+    {{0, 15}, {1, 15}, {2, 15}, {3, 15}, {4, 15}},
+    {{0, 16}, {1, 16}, {2, 16}, {3, 16}, {4, 16}},
+    {{0, 17}, {1, 17}, {2, 17}, {3, 17}, {4, 17}},
+    {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}},
+    {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}},
+    {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}},
+    {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}},
+    {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}},
+    {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}},
+    {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}},
+    {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}},
+    {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}},
+};
+#endif
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.h b/keyboards/ergodox_infinity/ergodox_infinity.h
new file mode 100644 (file)
index 0000000..25249c7
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
+#define KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
+
+#include "quantum.h"
+
+void ergodox_board_led_on(void);
+void ergodox_right_led_1_on(void);
+void ergodox_right_led_2_on(void);
+void ergodox_right_led_3_on(void);
+
+inline void ergodox_right_led_on(uint8_t led) {
+    switch (led) {
+    case 0:
+        ergodox_right_led_1_on();
+        break;
+    case 1:
+        ergodox_right_led_2_on();
+        break;
+    case 2:
+        ergodox_right_led_3_on();
+        break;
+    }
+}
+
+void ergodox_board_led_off(void);
+void ergodox_right_led_1_off(void);
+void ergodox_right_led_2_off(void);
+void ergodox_right_led_3_off(void);
+inline void ergodox_right_led_off(uint8_t led) {
+    switch (led) {
+    case 0:
+        ergodox_right_led_1_off();
+        break;
+    case 1:
+        ergodox_right_led_2_off();
+        break;
+    case 2:
+        ergodox_right_led_3_off();
+        break;
+    }
+}
+
+inline void ergodox_led_all_on(void)
+{
+    ergodox_board_led_on();
+    ergodox_right_led_1_on();
+    ergodox_right_led_2_on();
+    ergodox_right_led_3_on();
+}
+
+inline void ergodox_led_all_off(void)
+{
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+}
+
+void ergodox_right_led_1_set(uint8_t n);
+void ergodox_right_led_2_set(uint8_t n);
+void ergodox_right_led_3_set(uint8_t n);
+
+inline void ergodox_right_led_set(uint8_t led, uint8_t n){
+    switch (led) {
+    case 0:
+        ergodox_right_led_1_set(n);
+        break;
+    case 1:
+        ergodox_right_led_2_set(n);
+        break;
+    case 2:
+        ergodox_right_led_3_set(n);
+        break;
+    }
+}
+
+inline void ergodox_led_all_set(uint8_t n) {
+    ergodox_right_led_1_set(n);
+    ergodox_right_led_2_set(n);
+    ergodox_right_led_3_set(n);
+}
+
+#define KEYMAP( \
+    A80, A70, A60, A50, A40, A30, A20,  \
+    A81, A71, A61, A51, A41, A31, A21,  \
+    A82, A72, A62, A52, A42, A32,       \
+    A83, A73, A63, A53, A43, A33, A23,  \
+    A84, A74, A64, A54, A44,            \
+                                  A13, A03, \
+                                       A04, \
+                             A34, A24, A14, \
+         B20, B30, B40, B50, B60, B70, B80, \
+         B21, B31, B41, B51, B61, B71, B81, \
+              B32, B42, B52, B62, B72, B82, \
+         B23, B33, B43, B53, B63, B73, B83, \
+                   B44, B54, B64, B74, B84, \
+    B03, B13,     \
+    B04,          \
+    B14, B24, B34 \
+) { \
+    { KC_NO, KC_NO, KC_NO, A03,   A04 }, \
+    { KC_NO, KC_NO, KC_NO, A13,   A14 }, \
+    { A20,   A21,   KC_NO, A23,   A24 }, \
+    { A30,   A31,   A32,   A33,   A34 }, \
+    { A40,   A41,   A42,   A43,   A44 }, \
+    { A50,   A51,   A52,   A53,   A54 }, \
+    { A60,   A61,   A62,   A63,   A64 }, \
+    { A70,   A71,   A72,   A73,   A74 }, \
+    { A80,   A81,   A82,   A83,   A84 }, \
+    { KC_NO, KC_NO, KC_NO, B03,   B04 }, \
+    { KC_NO, KC_NO, KC_NO, B13,   B14 }, \
+    { B20,   B21,   KC_NO, B23,   B24 }, \
+    { B30,   B31,   B32,   B33,   B34 }, \
+    { B40,   B41,   B42,   B43,   B44 }, \
+    { B50,   B51,   B52,   B53,   B54 }, \
+    { B60,   B61,   B62,   B63,   B64 }, \
+    { B70,   B71,   B72,   B73,   B74 }, \
+    { B80,   B81,   B82,   B83,   B84 }  \
+}
+
+#define LAYOUT_ergodox KEYMAP
+
+#endif /* KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_ */
diff --git a/keyboards/ergodox_infinity/gfxconf.h b/keyboards/ergodox_infinity/gfxconf.h
new file mode 100644 (file)
index 0000000..ca33839
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * This file has a different license to the rest of the uGFX system.
+ * You can copy, modify and distribute this file as you see fit.
+ * You do not need to publish your source modifications to this file.
+ * The only thing you are not permitted to do is to relicense it
+ * under a different license.
+ */
+
+/**
+ * Copy this file into your project directory and rename it as gfxconf.h
+ * Edit your copy to turn on the uGFX features you want to use.
+ * The values below are the defaults.
+ *
+ * Only remove the comments from lines where you want to change the
+ * default value. This allows definitions to be included from
+ * driver makefiles when required and provides the best future
+ * compatibility for your project.
+ *
+ * Please use spaces instead of tabs in this file.
+ */
+
+#ifndef _GFXCONF_H
+#define _GFXCONF_H
+
+#include "common_gfxconf.h"
+
+#endif /* _GFXCONF_H */
diff --git a/keyboards/ergodox_infinity/halconf.h b/keyboards/ergodox_infinity/halconf.h
new file mode 100644 (file)
index 0000000..55dd5e8
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+    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.
+*/
+
+/**
+ * @file    templates/halconf.h
+ * @brief   HAL configuration header.
+ * @details HAL configuration file, this file allows to enable or disable the
+ *          various device drivers from your application. You may also use
+ *          this file in order to override the device drivers default settings.
+ *
+ * @addtogroup HAL_CONF
+ * @{
+ */
+
+#ifndef _HALCONF_H_
+#define _HALCONF_H_
+
+#include "mcuconf.h"
+
+/**
+ * @brief   Enables the PAL subsystem.
+ */
+#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
+#define HAL_USE_PAL                 TRUE
+#endif
+
+/**
+ * @brief   Enables the ADC subsystem.
+ */
+#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
+#define HAL_USE_ADC                 FALSE
+#endif
+
+/**
+ * @brief   Enables the CAN subsystem.
+ */
+#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
+#define HAL_USE_CAN                 FALSE
+#endif
+
+/**
+ * @brief   Enables the DAC subsystem.
+ */
+#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
+#define HAL_USE_DAC                 FALSE
+#endif
+
+/**
+ * @brief   Enables the EXT subsystem.
+ */
+#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
+#define HAL_USE_EXT                 FALSE
+#endif
+
+/**
+ * @brief   Enables the GPT subsystem.
+ */
+#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
+#define HAL_USE_GPT                 FALSE
+#endif
+
+/**
+ * @brief   Enables the I2C subsystem.
+ */
+#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
+#define HAL_USE_I2C                 TRUE
+#endif
+
+/**
+ * @brief   Enables the I2S subsystem.
+ */
+#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
+#define HAL_USE_I2S                 FALSE
+#endif
+
+/**
+ * @brief   Enables the ICU subsystem.
+ */
+#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
+#define HAL_USE_ICU                 FALSE
+#endif
+
+/**
+ * @brief   Enables the MAC subsystem.
+ */
+#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
+#define HAL_USE_MAC                 FALSE
+#endif
+
+/**
+ * @brief   Enables the MMC_SPI subsystem.
+ */
+#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
+#define HAL_USE_MMC_SPI             FALSE
+#endif
+
+/**
+ * @brief   Enables the PWM subsystem.
+ */
+#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
+#define HAL_USE_PWM                 FALSE
+#endif
+
+/**
+ * @brief   Enables the RTC subsystem.
+ */
+#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
+#define HAL_USE_RTC                 FALSE
+#endif
+
+/**
+ * @brief   Enables the SDC subsystem.
+ */
+#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
+#define HAL_USE_SDC                 FALSE
+#endif
+
+/**
+ * @brief   Enables the SERIAL subsystem.
+ */
+#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
+#define HAL_USE_SERIAL              TRUE
+#endif
+
+/**
+ * @brief   Enables the SERIAL over USB subsystem.
+ */
+#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
+#define HAL_USE_SERIAL_USB          TRUE
+#endif
+
+/**
+ * @brief   Enables the SPI subsystem.
+ */
+#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
+#define HAL_USE_SPI                 TRUE
+#endif
+
+/**
+ * @brief   Enables the UART subsystem.
+ */
+#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
+#define HAL_USE_UART                FALSE
+#endif
+
+/**
+ * @brief   Enables the USB subsystem.
+ */
+#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
+#define HAL_USE_USB                 TRUE
+#endif
+
+/**
+ * @brief   Enables the WDG subsystem.
+ */
+#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
+#define HAL_USE_WDG                 FALSE
+#endif
+
+/*===========================================================================*/
+/* ADC driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Enables synchronous APIs.
+ * @note    Disabling this option saves both code and data space.
+ */
+#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
+#define ADC_USE_WAIT                TRUE
+#endif
+
+/**
+ * @brief   Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
+ * @note    Disabling this option saves both code and data space.
+ */
+#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define ADC_USE_MUTUAL_EXCLUSION    TRUE
+#endif
+
+/*===========================================================================*/
+/* CAN driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Sleep mode related APIs inclusion switch.
+ */
+#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
+#define CAN_USE_SLEEP_MODE          TRUE
+#endif
+
+/*===========================================================================*/
+/* I2C driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Enables the mutual exclusion APIs on the I2C bus.
+ */
+#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define I2C_USE_MUTUAL_EXCLUSION    TRUE
+#endif
+
+/*===========================================================================*/
+/* MAC driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Enables an event sources for incoming packets.
+ */
+#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
+#define MAC_USE_ZERO_COPY           FALSE
+#endif
+
+/**
+ * @brief   Enables an event sources for incoming packets.
+ */
+#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
+#define MAC_USE_EVENTS              TRUE
+#endif
+
+/*===========================================================================*/
+/* MMC_SPI driver related settings.                                          */
+/*===========================================================================*/
+
+/**
+ * @brief   Delays insertions.
+ * @details If enabled this options inserts delays into the MMC waiting
+ *          routines releasing some extra CPU time for the threads with
+ *          lower priority, this may slow down the driver a bit however.
+ *          This option is recommended also if the SPI driver does not
+ *          use a DMA channel and heavily loads the CPU.
+ */
+#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
+#define MMC_NICE_WAITING            TRUE
+#endif
+
+/*===========================================================================*/
+/* SDC driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Number of initialization attempts before rejecting the card.
+ * @note    Attempts are performed at 10mS intervals.
+ */
+#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
+#define SDC_INIT_RETRY              100
+#endif
+
+/**
+ * @brief   Include support for MMC cards.
+ * @note    MMC support is not yet implemented so this option must be kept
+ *          at @p FALSE.
+ */
+#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
+#define SDC_MMC_SUPPORT             FALSE
+#endif
+
+/**
+ * @brief   Delays insertions.
+ * @details If enabled this options inserts delays into the MMC waiting
+ *          routines releasing some extra CPU time for the threads with
+ *          lower priority, this may slow down the driver a bit however.
+ */
+#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
+#define SDC_NICE_WAITING            TRUE
+#endif
+
+/*===========================================================================*/
+/* SERIAL driver related settings.                                           */
+/*===========================================================================*/
+
+/**
+ * @brief   Default bit rate.
+ * @details Configuration parameter, this is the baud rate selected for the
+ *          default configuration.
+ */
+#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
+#define SERIAL_DEFAULT_BITRATE      38400
+#endif
+
+/**
+ * @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 64 bytes for both the transmission and receive
+ *          buffers.
+ */
+#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
+#define SERIAL_BUFFERS_SIZE         128
+#endif
+
+/*===========================================================================*/
+/* SERIAL_USB driver related setting.                                        */
+/*===========================================================================*/
+
+/**
+ * @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 64 bytes for both the transmission and receive
+ *          buffers.
+ */
+#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
+#define SERIAL_USB_BUFFERS_SIZE     256
+#endif
+
+/*===========================================================================*/
+/* SPI driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Enables synchronous APIs.
+ * @note    Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
+#define SPI_USE_WAIT                TRUE
+#endif
+
+/**
+ * @brief   Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
+ * @note    Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define SPI_USE_MUTUAL_EXCLUSION    TRUE
+#endif
+
+/*===========================================================================*/
+/* USB driver related settings.                                              */
+/*===========================================================================*/
+
+/**
+ * @brief   Enables synchronous APIs.
+ * @note    Disabling this option saves both code and data space.
+ */
+#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
+#define USB_USE_WAIT                TRUE
+#endif
+
+#endif /* _HALCONF_H_ */
+
+/** @} */
diff --git a/keyboards/ergodox_infinity/led.c b/keyboards/ergodox_infinity/led.c
new file mode 100644 (file)
index 0000000..8175c1c
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+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/>.
+*/
+
+#include "hal.h"
+
+#include "led.h"
+
+
+void led_set(uint8_t usb_led) {
+    //TODO: Add led emulation if there's no customized visualization
+    (void)usb_led;
+}
diff --git a/keyboards/ergodox_infinity/matrix.c b/keyboards/ergodox_infinity/matrix.c
new file mode 100644 (file)
index 0000000..3364f8c
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
+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 <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+#include "hal.h"
+#include "timer.h"
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "matrix.h"
+#include "serial_link/system/serial_link.h"
+
+
+/*
+ * Infinity ErgoDox Pinusage:
+ * Column pins are input with internal pull-down. Row pins are output and strobe with high.
+ * Key is high or 1 when it turns on.
+ *
+ *     col: { PTD1, PTD4, PTD5, PTD6, PTD7 }
+ *     row: { PTB2, PTB3, PTB18, PTB19, PTC0, PTC9, PTC10, PTC11, PTD0 }
+ */
+/* matrix state(1:on, 0:off) */
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[LOCAL_MATRIX_ROWS];
+static bool debouncing = false;
+static uint16_t debouncing_time = 0;
+
+
+void matrix_init(void)
+{
+    /* Column(sense) */
+    palSetPadMode(GPIOD, 1,  PAL_MODE_INPUT_PULLDOWN);
+    palSetPadMode(GPIOD, 4,  PAL_MODE_INPUT_PULLDOWN);
+    palSetPadMode(GPIOD, 5,  PAL_MODE_INPUT_PULLDOWN);
+    palSetPadMode(GPIOD, 6,  PAL_MODE_INPUT_PULLDOWN);
+    palSetPadMode(GPIOD, 7,  PAL_MODE_INPUT_PULLDOWN);
+
+    /* Row(strobe) */
+    palSetPadMode(GPIOB, 2,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOB, 3,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOB, 18, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOB, 19, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 0,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 9,  PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOC, 11, PAL_MODE_OUTPUT_PUSHPULL);
+    palSetPadMode(GPIOD, 0,  PAL_MODE_OUTPUT_PUSHPULL);
+
+    memset(matrix, 0, MATRIX_ROWS);
+    memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS);
+
+    matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void)
+{
+    for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
+        matrix_row_t data = 0;
+
+        // strobe row
+        switch (row) {
+            case 0: palSetPad(GPIOB, 2);    break;
+            case 1: palSetPad(GPIOB, 3);    break;
+            case 2: palSetPad(GPIOB, 18);   break;
+            case 3: palSetPad(GPIOB, 19);   break;
+            case 4: palSetPad(GPIOC, 0);    break;
+            case 5: palSetPad(GPIOC, 9);    break;
+            case 6: palSetPad(GPIOC, 10);   break;
+            case 7: palSetPad(GPIOC, 11);   break;
+            case 8: palSetPad(GPIOD, 0);    break;
+        }
+
+        // need wait to settle pin state
+        // if you wait too short, or have a too high update rate
+        // the keyboard might freeze, or there might not be enough
+        // processing power to update the LCD screen properly.
+        // 20us, or two ticks at 100000Hz seems to be OK
+        wait_us(20);
+
+        // read col data: { PTD1, PTD4, PTD5, PTD6, PTD7 }
+        data = ((palReadPort(GPIOD) & 0xF0) >> 3) |
+               ((palReadPort(GPIOD) & 0x02) >> 1);
+
+        // un-strobe row
+        switch (row) {
+            case 0: palClearPad(GPIOB, 2);  break;
+            case 1: palClearPad(GPIOB, 3);  break;
+            case 2: palClearPad(GPIOB, 18); break;
+            case 3: palClearPad(GPIOB, 19); break;
+            case 4: palClearPad(GPIOC, 0);  break;
+            case 5: palClearPad(GPIOC, 9);  break;
+            case 6: palClearPad(GPIOC, 10); break;
+            case 7: palClearPad(GPIOC, 11); break;
+            case 8: palClearPad(GPIOD, 0);  break;
+        }
+
+        if (matrix_debouncing[row] != data) {
+            matrix_debouncing[row] = data;
+            debouncing = true;
+            debouncing_time = timer_read();
+        }
+    }
+
+    uint8_t offset = 0;
+#ifdef MASTER_IS_ON_RIGHT
+    if (is_serial_link_master()) {
+        offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS;
+    }
+#endif
+
+    if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
+        for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
+            matrix[offset + row] = matrix_debouncing[row];
+        }
+        debouncing = false;
+    }
+    matrix_scan_quantum();
+    return 1;
+}
+
+bool matrix_is_on(uint8_t row, uint8_t col)
+{
+    return (matrix[row] & (1<<col));
+}
+
+matrix_row_t matrix_get_row(uint8_t row)
+{
+    return matrix[row];
+}
+
+void matrix_print(void)
+{
+    xprintf("\nr/c 01234567\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        xprintf("%X0: ", row);
+        matrix_row_t data = matrix_get_row(row);
+        for (int col = 0; col < MATRIX_COLS; col++) {
+            if (data & (1<<col))
+                xprintf("1");
+            else
+                xprintf("0");
+        }
+        xprintf("\n");
+    }
+}
+
+void matrix_set_remote(matrix_row_t* rows, uint8_t index) {
+    uint8_t offset = 0;
+#ifdef MASTER_IS_ON_RIGHT
+    offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2);
+#else
+    offset = LOCAL_MATRIX_ROWS * (index + 1);
+#endif
+    for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) {
+        matrix[offset + row] = rows[row];
+    }
+}
diff --git a/keyboards/ergodox_infinity/mcuconf.h b/keyboards/ergodox_infinity/mcuconf.h
new file mode 100644 (file)
index 0000000..f6730b9
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+#ifndef _MCUCONF_H_
+#define _MCUCONF_H_
+
+#define K20x_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+
+#define K20x7
+
+/* Select the MCU clocking mode below by enabling the appropriate block. */
+
+#define KINETIS_NO_INIT             FALSE
+
+/* PEE mode - 48MHz system clock driven by external crystal. */
+#define KINETIS_MCG_MODE            KINETIS_MCG_MODE_PEE
+#define KINETIS_PLLCLK_FREQUENCY    72000000UL
+#define KINETIS_SYSCLK_FREQUENCY    72000000UL
+#define KINETIS_BUSCLK_FREQUENCY    36000000UL
+#define KINETIS_FLASHCLK_FREQUENCY  24000000UL
+
+#if 0
+/* FEI mode - 48 MHz with internal 32.768 kHz crystal */
+#define KINETIS_MCG_MODE            KINETIS_MCG_MODE_FEI
+#define KINETIS_MCG_FLL_DMX32       1           /* Fine-tune for 32.768 kHz */
+#define KINETIS_MCG_FLL_DRS         1           /* 1464x FLL factor */
+#define KINETIS_SYSCLK_FREQUENCY    47972352UL  /* 32.768 kHz * 1464 (~48 MHz) */
+#define KINETIS_CLKDIV1_OUTDIV1     1
+#define KINETIS_CLKDIV1_OUTDIV2     1
+#define KINETIS_CLKDIV1_OUTDIV4     2
+#define KINETIS_BUSCLK_FREQUENCY    KINETIS_SYSCLK_FREQUENCY
+#define KINETIS_FLASHCLK_FREQUENCY  KINETIS_SYSCLK_FREQUENCY/2
+#endif
+
+/*
+ * SERIAL driver system settings.
+ */
+#define KINETIS_SERIAL_USE_UART0            TRUE
+#define KINETIS_SERIAL_USE_UART1            TRUE
+
+/*
+ * USB driver settings
+ */
+#define KINETIS_USB_USE_USB0                TRUE
+/* Need to redefine this, since the default is for K20x */
+/* This is for Teensy LC; you should comment it out (or change to 5)
+ * for Teensy 3.x */
+#define KINETIS_USB_USB0_IRQ_PRIORITY       2
+
+/*
+ * SPI driver system settings.
+ */
+#define KINETIS_SPI_USE_SPI0                TRUE
+
+#define KINETIS_I2C_USE_I2C0                TRUE
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/ergodox_infinity/readme.md b/keyboards/ergodox_infinity/readme.md
new file mode 100644 (file)
index 0000000..2d037d1
--- /dev/null
@@ -0,0 +1,45 @@
+# ErgoDox Infinity
+
+The Infinity is two completely independent keyboards, and needs to be flashed
+for the left and right halves seperately.  To flash them:
+
+  - Build the firmware with `make infinity-keymapname`
+
+  - Plug in the left hand keyboard only.
+
+  - Press the program button (back of keyboard, above thumb pad).
+
+  - Install the firmware with `sudo make infinity-keymapname-dfu-util`
+
+  - Build right hand firmware with `make infinity-keymapname MASTER=right`
+
+  - Plug in the right hand keyboard only.
+
+  - Press the program button (back of keyboard, above thumb pad).
+
+  - Install the firmware with `sudo make infinity-keymapname-dfu-util MASTER=right`
+
+More information on the Infinity firmware is available in the [TMK/chibios for
+Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
+
+## Infinity Master/Two Halves
+
+The Infinity is two completely independent keyboards, that can connect together.
+You have a few options in how you flash the firmware:
+
+- Flash the left half, rebuild the firmware with "MASTER=right" and then flash
+  the right half.  This allows you to plug in either half directly to the
+  computer and is what the above instructions do.
+
+- Flash the left half, then flash the same firmware on the right.  This only
+  works when the left half is plugged directly to the computer and the keymap
+  is mirrored.  It saves the small extra step of rebuilding with
+  "MASTER=right".
+
+- The same as the previous one but with "MASTER=right" when you build the
+  firmware, then flash the same firmware to both halves.  You just have to
+  directly connect the right half to the computer.
+
+- For minor changes such as changing only the keymap without having updated
+  any part of the firmware code itself, you can program only the MASTER half.
+  It is safest to program both halves though.
\ No newline at end of file
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
new file mode 100644 (file)
index 0000000..cb11152
--- /dev/null
@@ -0,0 +1,89 @@
+# project specific files
+SRC =  matrix.c \
+       led.c
+
+## chip/board settings
+# - the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+# - For Teensies, FAMILY = KINETIS and SERIES is either
+#   KL2x (LC) or K20x (3.0,3.1,3.2).
+# - For Infinity KB, SERIES = K20x
+MCU_FAMILY = KINETIS
+MCU_SERIES = K20x
+
+# Linker script to use
+# - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+# - NOTE: a custom ld script is needed for EEPROM on Teensy LC
+# - LDSCRIPT =
+#   - MKL26Z64 for Teensy LC
+#   - MK20DX128 for Teensy 3.0
+#   - MK20DX256 for Teensy 3.1 and 3.2
+#   - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader
+#   - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader
+MCU_LDSCRIPT = MK20DX256BLDR8
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
+# - STARTUP =
+#   - kl2x for Teensy LC
+#   - k20x5 for Teensy 3.0 and Infinity 60%
+#   - k20x7 for Teensy 3.1, 3.2 and Infinity ErgoDox
+MCU_STARTUP = k20x7
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+# - BOARD =
+#   - PJRC_TEENSY_LC for Teensy LC
+#   - PJRC_TEENSY_3 for Teensy 3.0
+#   - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2
+#   - MCHCK_K20 for Infinity KB
+#BOARD = MCHCK_K20
+BOARD = PJRC_TEENSY_3_1
+
+# Cortex version
+# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+# I.e. 6 for Teensy LC; 7 for Teensy 3.x
+ARMV = 7
+
+# 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=0x00002000
+
+# Build Options
+#   comment out to disable the options.
+#
+
+BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
+CONSOLE_ENABLE   = no  # Console for debug(+400)
+COMMAND_ENABLE   = yes # Commands for debug and configuration
+CUSTOM_MATRIX    = yes # Custom matrix file for the ErgoDox EZ
+SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE      = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+UNICODE_ENABLE   = yes # Unicode
+ONEHAND_ENABLE   = yes # Allow swapping hands of keyboard
+
+CUSTOM_MATRIX = yes # Custom matrix file
+SERIAL_LINK_ENABLE = yes
+VISUALIZER_ENABLE = yes
+LCD_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+LCD_BACKLIGHT_ENABLE = yes
+MIDI_ENABLE = no
+RGBLIGHT_ENABLE = no
+
+LCD_DRIVER = st7565
+LCD_WIDTH = 128 
+LCD_HEIGHT = 32
+
+LED_DRIVER = is31fl3731c
+LED_WIDTH = 7 
+LED_HEIGHT = 7
+
+LAYOUTS = ergodox ergodox_80
\ No newline at end of file
diff --git a/keyboards/ergodox_infinity/simple_visualizer.h b/keyboards/ergodox_infinity/simple_visualizer.h
new file mode 100644 (file)
index 0000000..73d0e08
--- /dev/null
@@ -0,0 +1,123 @@
+/* Copyright 2017 Fred Sundvik
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * 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 KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
+#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
+
+// Currently we are assuming that both the backlight and LCD are enabled
+// But it's entirely possible to write a custom visualizer that use only
+// one of them
+#ifndef LCD_BACKLIGHT_ENABLE
+#error This visualizer needs that LCD backlight is enabled
+#endif
+
+#ifndef LCD_ENABLE
+#error This visualizer needs that LCD is enabled
+#endif
+
+#include "visualizer.h"
+#include "visualizer_keyframes.h"
+#include "lcd_keyframes.h"
+#include "lcd_backlight_keyframes.h"
+#include "system/serial_link.h"
+#include "led.h"
+#include "default_animations.h"
+
+static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
+static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
+
+static bool initial_update = true;
+
+// Feel free to modify the animations below, or even add new ones if needed
+
+static keyframe_animation_t lcd_layer_display = {
+    .num_frames = 1,
+    .loop = false,
+    .frame_lengths = {gfxMillisecondsToTicks(0)},
+    .frame_functions = {lcd_keyframe_display_layer_and_led_states}
+};
+
+// The color animation animates the LCD color when you change layers
+static keyframe_animation_t color_animation = {
+    .num_frames = 2,
+    .loop = false,
+    // Note that there's a 200 ms no-operation frame,
+    // this prevents the color from changing when activating the layer
+    // momentarily
+    .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
+    .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
+};
+
+void initialize_user_visualizer(visualizer_state_t* state) {
+    // The brightness will be dynamically adjustable in the future
+    // But for now, change it here.
+    lcd_backlight_brightness(130);
+    state->current_lcd_color = initial_color;
+    state->target_lcd_color = logo_background_color;
+    initial_update = true;
+    start_keyframe_animation(&default_startup_animation);
+}
+
+
+// This function should be implemented by the keymap visualizer
+// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
+// that the simple_visualizer assumes that you are updating
+// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
+// stopped. This can be done by either double buffering it or by using constant strings
+static void get_visualizer_layer_and_color(visualizer_state_t* state);
+
+void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
+    // Add more tests, change the colors and layer texts here
+    // Usually you want to check the high bits (higher layers first)
+    // because that's the order layers are processed for keypresses
+    // You can for check for example:
+    // state->status.layer
+    // state->status.default_layer
+    // state->status.leds (see led.h for available statuses)
+
+    uint32_t prev_color = state->target_lcd_color;
+    const char* prev_layer_text = state->layer_text;
+
+    get_visualizer_layer_and_color(state);
+
+    if (initial_update || prev_color != state->target_lcd_color) {
+        start_keyframe_animation(&color_animation);
+    }
+
+    if (initial_update || prev_layer_text != state->layer_text) {
+        start_keyframe_animation(&lcd_layer_display);
+    }
+    // You can also stop existing animations, and start your custom ones here
+    // remember that you should normally have only one animation for the LCD
+    // and one for the background. But you can also combine them if you want.
+}
+
+void user_visualizer_suspend(visualizer_state_t* state) {
+    state->layer_text = "Suspending...";
+    uint8_t hue = LCD_HUE(state->current_lcd_color);
+    uint8_t sat = LCD_SAT(state->current_lcd_color);
+    state->target_lcd_color = LCD_COLOR(hue, sat, 0);
+    start_keyframe_animation(&default_suspend_animation);
+}
+
+void user_visualizer_resume(visualizer_state_t* state) {
+    state->current_lcd_color = initial_color;
+    state->target_lcd_color = logo_background_color;
+    initial_update = true;
+    start_keyframe_animation(&default_startup_animation);
+}
+
+#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/visualizer.c b/keyboards/ergodox_infinity/visualizer.c
new file mode 100644 (file)
index 0000000..4b16021
--- /dev/null
@@ -0,0 +1,329 @@
+/*
+Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// Currently we are assuming that both the backlight and LCD are enabled
+// But it's entirely possible to write a custom visualizer that use only
+// one of them
+#ifndef LCD_BACKLIGHT_ENABLE
+#error This visualizer needs that LCD backlight is enabled
+#endif
+
+#ifndef LCD_ENABLE
+#error This visualizer needs that LCD is enabled
+#endif
+
+#include "visualizer.h"
+#include "visualizer_keyframes.h"
+#include "lcd_keyframes.h"
+#include "lcd_backlight_keyframes.h"
+#include "system/serial_link.h"
+#include "default_animations.h"
+
+static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
+static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
+
+static const uint32_t led_emulation_colors[4] = {
+    LCD_COLOR(0, 0, 0),
+    LCD_COLOR(255, 255, 255),
+    LCD_COLOR(84, 255, 255),
+    LCD_COLOR(168, 255, 255),
+};
+
+static uint32_t next_led_target_color = 0;
+
+typedef enum {
+    LCD_STATE_INITIAL,
+    LCD_STATE_LAYER_BITMAP,
+    LCD_STATE_BITMAP_AND_LEDS,
+} lcd_state_t;
+
+static lcd_state_t lcd_state = LCD_STATE_INITIAL;
+
+typedef struct {
+    uint8_t led_on;
+    uint8_t led1;
+    uint8_t led2;
+    uint8_t led3;
+} visualizer_user_data_t;
+
+// Don't access from visualization function, use the visualizer state instead
+static visualizer_user_data_t user_data_keyboard = {
+    .led_on = 0,
+    .led1 = LED_BRIGHTNESS_HI,
+    .led2 = LED_BRIGHTNESS_HI,
+    .led3 = LED_BRIGHTNESS_HI,
+};
+
+_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
+    "Please increase the VISUALIZER_USER_DATA_SIZE");
+
+// Feel free to modify the animations below, or even add new ones if needed
+
+
+// The color animation animates the LCD color when you change layers
+static keyframe_animation_t one_led_color = {
+    .num_frames = 1,
+    .loop = false,
+    .frame_lengths = {gfxMillisecondsToTicks(0)},
+    .frame_functions = {lcd_backlight_keyframe_set_color},
+};
+
+bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
+    uint32_t temp = next_led_target_color;
+    next_led_target_color = state->target_lcd_color;
+    state->target_lcd_color = temp;
+    return false;
+}
+
+// The color animation animates the LCD color when you change layers
+static keyframe_animation_t two_led_colors = {
+    .num_frames = 2,
+    .loop = true,
+    .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
+    .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
+};
+
+// The LCD animation alternates between the layer name display and a
+// bitmap that displays all active layers
+static keyframe_animation_t lcd_bitmap_animation = {
+    .num_frames = 1,
+    .loop = false,
+    .frame_lengths = {gfxMillisecondsToTicks(0)},
+    .frame_functions = {lcd_keyframe_display_layer_bitmap},
+};
+
+static keyframe_animation_t lcd_bitmap_leds_animation = {
+    .num_frames = 2,
+    .loop = true,
+    .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
+    .frame_functions = {lcd_keyframe_display_layer_bitmap, lcd_keyframe_display_led_states},
+};
+
+void initialize_user_visualizer(visualizer_state_t* state) {
+    // The brightness will be dynamically adjustable in the future
+    // But for now, change it here.
+    lcd_backlight_brightness(130);
+    state->current_lcd_color = initial_color;
+    state->target_lcd_color = logo_background_color;
+    lcd_state = LCD_STATE_INITIAL;
+    start_keyframe_animation(&default_startup_animation);
+}
+
+static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
+    return user_data->led_on & (1u << num);
+}
+
+static uint8_t get_led_index_master(visualizer_user_data_t* user_data) {
+    for (int i=0; i < 3; i++) {
+        if (is_led_on(user_data, i)) {
+            return i + 1;
+        }
+    }
+    return 0;
+}
+
+static uint8_t get_led_index_slave(visualizer_user_data_t* user_data) {
+    uint8_t master_index = get_led_index_master(user_data);
+    if (master_index!=0) {
+        for (int i=master_index; i < 3; i++) {
+            if (is_led_on(user_data, i)) {
+                return i + 1;
+            }
+        }
+    }
+
+    return 0;
+}
+
+static uint8_t get_secondary_led_index(visualizer_user_data_t* user_data) {
+    if (is_led_on(user_data, 0) &&
+            is_led_on(user_data, 1) &&
+            is_led_on(user_data, 2)) {
+        return 3;
+    }
+    return 0;
+}
+
+static uint8_t get_brightness(visualizer_user_data_t* user_data, uint8_t index) {
+    switch (index) {
+    case 1:
+        return user_data->led1;
+    case 2:
+        return user_data->led2;
+    case 3:
+        return user_data->led3;
+    }
+    return 0;
+}
+
+static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
+    visualizer_user_data_t* user_data_new = (visualizer_user_data_t*)state->status.user_data;
+    visualizer_user_data_t* user_data_old = (visualizer_user_data_t*)prev_status->user_data;
+
+    uint8_t new_index;
+    uint8_t old_index;
+
+    if (is_serial_link_master()) {
+        new_index = get_led_index_master(user_data_new);
+        old_index = get_led_index_master(user_data_old);
+    }
+    else {
+        new_index = get_led_index_slave(user_data_new);
+        old_index = get_led_index_slave(user_data_old);
+    }
+    uint8_t new_secondary_index = get_secondary_led_index(user_data_new);
+    uint8_t old_secondary_index = get_secondary_led_index(user_data_old);
+
+    uint8_t old_brightness = get_brightness(user_data_old, old_index);
+    uint8_t new_brightness = get_brightness(user_data_new, new_index);
+
+    uint8_t old_secondary_brightness = get_brightness(user_data_old, old_secondary_index);
+    uint8_t new_secondary_brightness = get_brightness(user_data_new, new_secondary_index);
+
+    if (lcd_state == LCD_STATE_INITIAL ||
+            new_index != old_index ||
+            new_secondary_index != old_secondary_index ||
+            new_brightness != old_brightness ||
+            new_secondary_brightness != old_secondary_brightness) {
+
+        if (new_secondary_index != 0) {
+            state->target_lcd_color = change_lcd_color_intensity(
+                led_emulation_colors[new_index], new_brightness);
+            next_led_target_color = change_lcd_color_intensity(
+                led_emulation_colors[new_secondary_index], new_secondary_brightness);
+
+            stop_keyframe_animation(&one_led_color);
+            start_keyframe_animation(&two_led_colors);
+        } else {
+            state->target_lcd_color = change_lcd_color_intensity(
+                led_emulation_colors[new_index], new_brightness);
+            stop_keyframe_animation(&two_led_colors);
+            start_keyframe_animation(&one_led_color);
+        }
+    }
+}
+
+static void update_lcd_text(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
+    if (state->status.leds) {
+        if (lcd_state != LCD_STATE_BITMAP_AND_LEDS ||
+                state->status.leds != prev_status->leds ||
+                state->status.layer != prev_status->layer ||
+                state->status.default_layer != prev_status->default_layer) {
+
+            // NOTE: that it doesn't matter if the animation isn't playing, stop will do nothing in that case
+            stop_keyframe_animation(&lcd_bitmap_animation);
+
+            lcd_state = LCD_STATE_BITMAP_AND_LEDS;
+            // For information:
+            // The logic in this function makes sure that this doesn't happen, but if you call start on an
+            // animation that is already playing it will be restarted.
+            start_keyframe_animation(&lcd_bitmap_leds_animation);
+        }
+    } else {
+        if (lcd_state != LCD_STATE_LAYER_BITMAP ||
+                state->status.layer != prev_status->layer ||
+                state->status.default_layer != prev_status->default_layer) {
+
+            stop_keyframe_animation(&lcd_bitmap_leds_animation);
+
+            lcd_state = LCD_STATE_LAYER_BITMAP;
+            start_keyframe_animation(&lcd_bitmap_animation);
+        }
+    }
+}
+
+void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
+    // Check the status here to start and stop animations
+    // You might have to save some state, like the current animation here so that you can start the right
+    // This function is called every time the status changes
+
+    // NOTE that this is called from the visualizer thread, so don't access anything else outside the status
+    // This is also important because the slave won't have access to the active layer for example outside the
+    // status.
+
+    update_emulated_leds(state, prev_status);
+    update_lcd_text(state, prev_status);
+
+}
+
+void user_visualizer_suspend(visualizer_state_t* state) {
+    state->layer_text = "Suspending...";
+    uint8_t hue = LCD_HUE(state->current_lcd_color);
+    uint8_t sat = LCD_SAT(state->current_lcd_color);
+    state->target_lcd_color = LCD_COLOR(hue, sat, 0);
+    start_keyframe_animation(&default_suspend_animation);
+}
+
+void user_visualizer_resume(visualizer_state_t* state) {
+    state->current_lcd_color = initial_color;
+    state->target_lcd_color = logo_background_color;
+    lcd_state = LCD_STATE_INITIAL;
+    start_keyframe_animation(&default_startup_animation);
+}
+
+void ergodox_board_led_on(void){
+    // No board led support
+}
+
+void ergodox_right_led_1_on(void){
+    user_data_keyboard.led_on |= (1u << 0);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_2_on(void){
+    user_data_keyboard.led_on |= (1u << 1);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_3_on(void){
+    user_data_keyboard.led_on |= (1u << 2);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_board_led_off(void){
+    // No board led support
+}
+
+void ergodox_right_led_1_off(void){
+    user_data_keyboard.led_on &= ~(1u << 0);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_2_off(void){
+    user_data_keyboard.led_on &= ~(1u << 1);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_3_off(void){
+    user_data_keyboard.led_on &= ~(1u << 2);
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_1_set(uint8_t n) {
+    user_data_keyboard.led1 = n;
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_2_set(uint8_t n) {
+    user_data_keyboard.led2 = n;
+    visualizer_set_user_data(&user_data_keyboard);
+}
+
+void ergodox_right_led_3_set(uint8_t n) {
+    user_data_keyboard.led3 = n;
+    visualizer_set_user_data(&user_data_keyboard);
+}
index 99ccf175748d19e0307bf0351c7e988cccff54ee..be823676dfefaf935cca98c9dff7c15cd92acf9b 100644 (file)
@@ -72,4 +72,7 @@ inline void gh60_wasd_leds_off(void)          { DDRF &= ~(1<<7); PORTF &= ~(1<<7); }
     { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    KC_NO,    K49, K4A, K4B, K4C, K4D }  \
 }
 
+#define LAYOUT_60_ansi  KEYMAP_ANSI
+#define LAYOUT_60_iso   KEYMAP
+
 #endif
\ No newline at end of file
diff --git a/keyboards/gh60/keymaps/unxmaal/Makefile b/keyboards/gh60/keymaps/unxmaal/Makefile
deleted file mode 100644 (file)
index 2b80ea0..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device.
-#                Please customize your programmer settings(PROGRAM_CMD)
-#
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-# make dfu = Download the hex file to the device, using dfu-programmer (must
-#            have dfu-programmer installed).
-#
-# make flip = Download the hex file to the device, using Atmel FLIP (must
-#             have Atmel FLIP installed).
-#
-# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
-#               (must have dfu-programmer installed).
-#
-# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
-#                (must have Atmel FLIP installed).
-#
-# make debug = Start either simulavr or avarice as specified for debugging, 
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-# 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
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
-# Build Options
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes         # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes          # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes          # Audio control and System control(+450)
-# CONSOLE_ENABLE = yes         # Console for debug(+400)
-# COMMAND_ENABLE = yes         # Commands for debug and configuration
-KEYBOARD_LOCK_ENABLE = yes     # Allow locking of keyboard via magic key
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes       # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes              # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-# 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
-RGBLIGHT_ENABLE = yes          # Enable RGB Underglow
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
-
diff --git a/keyboards/gh60/keymaps/unxmaal/README.md b/keyboards/gh60/keymaps/unxmaal/README.md
deleted file mode 100644 (file)
index 6c08bbb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Unxmaal's GH60 Layout
-=====================
-* Mostly stolen from /u/robotmaxtron
-
-##Quantum MK Firmware
-For the full Quantum feature list, see the parent readme.md.
-
-* Standard Mac ANSI layout
-* Spacebar acts as space when tapped, Fn when held
-* Menu acts as menu when tapped, Fn2 when held
-* Layer1:
-  * Top row = `~, F1-F12, Del
-  * JKIL = arrow cluster
-* Layer2:
-  * Top row = media controls
-  * JKIL = PgDn/Up/Home/Insert
-  * Backspace = Reset
-
-### Additional Credits
-Keymap has been based on various keymaps available from the QMK Repo for the GH60-SATAN and KC60 keyboards.
-
-![wiring](https://i.imgur.com/8b8T1fQ.jpg)
\ No newline at end of file
diff --git a/keyboards/gh60/keymaps/unxmaal/config.h b/keyboards/gh60/keymaps/unxmaal/config.h
deleted file mode 100644 (file)
index bb218d6..0000000
+++ /dev/null
@@ -1,190 +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/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID    0xFEED
-#define PRODUCT_ID   0x6060
-#define DEVICE_VER   0x0001
-#define MANUFACTURER    geekhack
-#define PRODUCT         GH60
-#define DESCRIPTION     t.m.k. keyboard firmware for GH60
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- *         ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
-*/
- #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
-// Rev A
-// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 }
-// Rev B/C
-#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* 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 */
-#define BACKLIGHT_LEVELS 3
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * 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
-
-/*
- * RGB Underglow
- * These settings are for the F4 by default:
- * 
- *
- * #define ws2812_PORTREG  PORTF
- * #define ws2812_DDRREG   DDRF
- * #define ws2812_pin PF4
- * #define RGBLED_NUM 14     // Number of LEDs
- * #define RGBLIGHT_HUE_STEP 10
- * #define RGBLIGHT_SAT_STEP 17
- * #define RGBLIGHT_VAL_STEP 17
- *
- * The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. 
- * To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. 
- * For details, please check this keymap. keyboard/planck/keymaps/yang/keymap.c
-*/
-
-/* Deprecated code below
-#define ws2812_PORTREG  PORTF 
-#define ws2812_DDRREG   DDRF
-#define ws2812_pin PF4
-*/ 
-#define RGB_DI_PIN F4
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 8         // Number of LEDs
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#endif
diff --git a/keyboards/gh60/keymaps/unxmaal/keymap.c b/keyboards/gh60/keymaps/unxmaal/keymap.c
deleted file mode 100644 (file)
index 7c9bd6a..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "gh60.h"
-#include "action_layer.h"
-
-#define _BL 0
-#define _AL 1
-#define _FL 2
-#define _UL 3
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-   /*
-   *  ANSI Base, Mac style
-   * ,-----------------------------------------------------------------------------.
-   * |Esc   |  1|   2|   3|   4|   5|   6|   7|   8|   9|   0|   -|   = |   Backsp |
-   * |-----------------------------------------------------------------------------|
-   * |Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I|   O|  P|  [|  ]|     \|
-   * |-----------------------------------------------------------------------------|
-   * |Caps/Fn      |    A|    S|    D|    F|   G|  H|  J|  K|  L|  ;|  '|   Enter  |
-   * |-----------------------------------------------------------------------------|
-   * |Shift      |    Z|     X|    C|     V|  B|  N|  M|  ,|  .|  /|     Shift     |
-   * |-----------------------------------------------------------------------------|
-   * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt  |Menu(tapped, Fn2(held)|Ctrl|
-   * `-----------------------------------------------------------------------------'
-   */
-       [_BL] = KEYMAP(
-        KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \
-             KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \
-        KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT,  \
-        KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
-        MO(1),KC_LALT,KC_LGUI,        LT(1,KC_SPACE),      KC_NO, KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL),
-
-   /*
-   * Pok3r style arrow cluster
-   * ,-----------------------------------------------------------.
-   * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
-   * |-----------------------------------------------------------|
-   * |     |   |    |   |   |   |   |   |Up|   |   |   |   |     |
-   * |-----------------------------------------------------------|
-   * |       |   |   |   |   |   |   |Left|Down|Right|   |   |   |
-   * |-----------------------------------------------------------|
-   * |        |   |   |   |   |   |   |   |   |   |   |          |
-   * |-----------------------------------------------------------|
-   * |    |    |    |                        |    |    |    |    |
-   * `-----------------------------------------------------------'
-   */
-       [_AL] = KEYMAP(
-        KC_GRV,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_DELETE, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
-        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
-
-
-   /*
-   * Secondary function layer
-   * ,-------------------------------------------------------------.
-   * | | |  |  |  | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
-   * |-------------------------------------------------------------|
-   * |    |   |   |   |  |  |  |   |    |PgUp|    |    |   |       |
-   * |-------------------------------------------------------------|
-   * |      |   |   |   |   |   |  |Home|PgDown|End|  |   |        |
-   * |-------------------------------------------------------------|
-   * |        |   |   |   |   |   |   |    |    |    |   |         |
-   * |-------------------------------------------------------------|
-   * |    |    |    |                          |    |    |    |    |
-   * `-------------------------------------------------------------'
-   */
-       [_FL] = KEYMAP(
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,KC_END,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
-
-   /*
-   * Locking layer for controlling the underglow.
-   * NOTE: currently unused.
-   *
-   * ,-----------------------------------------------------------.
-   * |    |  |   |   |   |   |   |   |   |   |   |   |   |       |
-   * |-----------------------------------------------------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |
-   * |-----------------------------------------------------------|
-   * |       |On|Mode|   |   |   |   |   |   |   |   |   |       |
-   * |-----------------------------------------------------------|
-   * |        |   |Hue+|Hue-|Sat+|Sat-|Val+|Val-|  |  |   |      |
-   * |-----------------------------------------------------------|
-   * |    |    |    |                        |    |    |    |    |
-   * `-----------------------------------------------------------'
-   */
-       [_UL] = KEYMAP(
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
-        KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
-        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
-};
-
-enum function_id {
-    RGBLED_TOGGLE,
-    RGBLED_STEP_MODE,
-    RGBLED_INCREASE_HUE,
-    RGBLED_DECREASE_HUE,
-    RGBLED_INCREASE_SAT,
-    RGBLED_DECREASE_SAT,
-    RGBLED_INCREASE_VAL,
-    RGBLED_DECREASE_VAL,
-    SHIFT_ESC,
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0]  = ACTION_LAYER_MOMENTARY(2),  // Momentary Fn overlay
-    [1]  = ACTION_LAYER_TOGGLE(1),     // Toggle Arrow Layer overlay
-    [2]  = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
-    [3]  = ACTION_LAYER_TOGGLE(3),     // Toggle Underglow Layer overlay
-    [4]  = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
-    [5]  = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
-    [6]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
-    [7]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
-    [8]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
-    [9]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
-    [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
-    [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
-    [12] = ACTION_FUNCTION(SHIFT_ESC),
-    [13] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-void matrix_scan_user(void) {
-
-// Layer LED indicators
-// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
-    uint32_t layer = layer_state;
-    if (layer & (1<<1)) {
-        gh60_wasd_leds_on();
-    } else {
-        gh60_wasd_leds_off();
-    }
-
-    if (layer & (1<<2)) {
-        gh60_esc_led_on();
-    } else {
-        gh60_esc_led_off();
-    }
-};
-
-#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  switch (id) {
-    case RGBLED_TOGGLE:
-      //led operations
-      if (record->event.pressed) {
-        rgblight_toggle();
-        }
-        break;
-    case RGBLED_INCREASE_HUE:
-      if (record->event.pressed) {
-        rgblight_increase_hue();
-        }
-        break;
-    case RGBLED_DECREASE_HUE:
-      if (record->event.pressed) {
-        rgblight_decrease_hue();
-        }
-        break;
-    case RGBLED_INCREASE_SAT:
-      if (record->event.pressed) {
-        rgblight_increase_sat();
-        }
-        break;
-    case RGBLED_DECREASE_SAT:
-      if (record->event.pressed) {
-        rgblight_decrease_sat();
-        }
-        break;
-    case RGBLED_INCREASE_VAL:
-        if (record->event.pressed) {
-          rgblight_increase_val();
-        }
-        break;
-    case RGBLED_DECREASE_VAL:
-        if (record->event.pressed) {
-          rgblight_decrease_val();
-        }
-        break;
-    case RGBLED_STEP_MODE:
-        if (record->event.pressed) {
-          rgblight_step();
-        }
-        break;
-    static uint8_t shift_esc_shift_mask;
-    // Shift + ESC = ~
-    case SHIFT_ESC:
-      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
-      if (record->event.pressed) {
-        if (shift_esc_shift_mask) {
-          add_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          add_key(KC_ESC);
-          send_keyboard_report();
-        }
-      } else {
-        if (shift_esc_shift_mask) {
-          del_key(KC_GRV);
-          send_keyboard_report();
-        } else {
-          del_key(KC_ESC);
-          send_keyboard_report();
-        }
-      }
-      break;
-    }
-};
index 6d1d8ab27461a951f22ccad47fc06291fea9dbfb..19fc37a6d088b11e2682064aa54558bd6fbcb27d 100644 (file)
@@ -1,4 +1,4 @@
-#include "gh60.h"
+#include QMK_KEYBOARD_H
 #include "action_layer.h"
 #include "eeconfig.h"
 
index 00f4b660a040e5251f63bb0aa7f2295374178c1b..2c9d91ecdf91f952013bad65bb58d54013ab8c96 100644 (file)
@@ -64,3 +64,5 @@ NKRO_ENABLE = yes                     # USB Nkey Rollover - if this doesn't work, see here: https:
 # MIDI_ENABLE = YES                    # MIDI controls
 # UNICODE_ENABLE = YES         # Unicode
 # BLUETOOTH_ENABLE = yes       # Enable Bluetooth with the Adafruit EZ-Key HID
+
+LAYOUTS = 60_ansi 60_iso
\ No newline at end of file
index 0f9667a8ae72371e2d989c927b709bf003e3bbd7..a3952a5d338e25814a3079fc878c6d3ce3a3a3f9 100644 (file)
@@ -1,5 +1 @@
-#AUDIO_ENABLE ?= yes           # Audio output on port C6
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+#AUDIO_ENABLE ?= yes           # Audio output on port C6
\ No newline at end of file
index 0f9667a8ae72371e2d989c927b709bf003e3bbd7..a3952a5d338e25814a3079fc878c6d3ce3a3a3f9 100644 (file)
@@ -1,5 +1 @@
-#AUDIO_ENABLE ?= yes           # Audio output on port C6
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+#AUDIO_ENABLE ?= yes           # Audio output on port C6
\ No newline at end of file
index f50987cde95053ba946693bb02fe904f7486440b..d980716eaefdf183ddc50d1481f0be1f5eee7ec4 100644 (file)
@@ -66,8 +66,4 @@ UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
-
 
index 5b89020315608fbd60969a57d6c323eea786be9e..53769f81f40defc4f53077a12829c28a20c2e558 100644 (file)
@@ -44,5 +44,5 @@ USB = /dev/cu.usbmodem14141
 
  
 
-upload: build
-       $(SCULPT_UPLOAD_COMMAND)
+upload: build
+#      $(SCULPT_UPLOAD_COMMAND)
index f50987cde95053ba946693bb02fe904f7486440b..c8dd19ef7b3dd26494b480df58c7def19776fe56 100644 (file)
@@ -66,8 +66,3 @@ UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
-
-
index e8b0c6048d4cbff58a2ed8139995a112966094d2..d980716eaefdf183ddc50d1481f0be1f5eee7ec4 100644 (file)
@@ -66,8 +66,4 @@ UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 
-ifndef QUANTUM_DIR
-       include ../../Makefile
-endif
-
 
index a3fdd3d707f0811af8458af9903310d48d71d33d..91147ab4fb57341b545c0e4a14dfbb8197b711c2 100644 (file)
@@ -65,7 +65,3 @@ 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index 0d21623cedae67b7cfb23f6f5aafc91d56246779..fe01b544c8039c2b01bffe06a88515888c4237ee 100644 (file)
@@ -65,7 +65,3 @@ 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index 0d21623cedae67b7cfb23f6f5aafc91d56246779..361b2e93af1bae7356065a22d746d57f47bdaae3 100644 (file)
@@ -64,8 +64,4 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by d
 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
+AUDIO_ENABLE = no           # Audio output on port C6
\ No newline at end of file
index e5a9533624d5840ebe3ec19e8b11c64bdd9593d5..cfa693a73b909fb3e65ad384a663ad3431491273 100644 (file)
@@ -58,8 +58,4 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
 CONSOLE_ENABLE = yes   # Console for debug(+400)
 COMMAND_ENABLE = yes    # Commands for debug and configuration
 #SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-#NKRO_ENABLE = yes     # USB Nkey Rollover - not yet supported in LUFA
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+#NKRO_ENABLE = yes     # USB Nkey Rollover - not yet supported in LUFA
\ No newline at end of file
index 0d21623cedae67b7cfb23f6f5aafc91d56246779..fe01b544c8039c2b01bffe06a88515888c4237ee 100644 (file)
@@ -65,7 +65,3 @@ 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index b00ee9e0e0c63da11543f95b56404e092fd23438..4929968410316a41235e76308fd33f366581abc7 100755 (executable)
@@ -79,10 +79,6 @@ UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
-
-upload: build
-       $(ATREUS_UPLOAD_COMMAND)
+# upload: build
+#      $(ATREUS_UPLOAD_COMMAND)
 
index aaf630f103a76988a91ee3f84664f3aba207f779..47dace8a22f51c9092c2f6b02e96eee20a719bfa 100644 (file)
@@ -20,6 +20,3 @@ AUDIO_ENABLE = no           # Audio output on port C6
 PS2_MOUSE_ENABLE = yes
 PS2_USE_USART = yes
 
-ifndef QUANTUM_DIR
-       include ../../Makefile
-endif
index d31e755ef90a885f408bafc63332501141c9f752..b8bfd73d2a13a6ccabda2b548c461fed99c2145a 100644 (file)
@@ -72,9 +72,9 @@ CUSTOM_MATRIX = yes    # Custom matrix file for the HHKB
 # UNICODE_ENABLE = yes    # Unicode
 # BLUETOOTH_ENABLE = yes  # Enable Bluetooth with the Adafruit EZ-Key HID
 
-debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
-debug-on: all
+debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
+debug-on: all
 
-debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT
-debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS))
-debug-off: all
+debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT
+debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS))
+debug-off: all
index c3a0165c092cd5d638df2ae0e6d8c80a769bd4f6..0fdd3701a9f7ed00d82e2c533c1cccc293db1ecd 100644 (file)
@@ -35,8 +35,6 @@
   {  K40,  K41,  K42,  KC_NO,  KC_NO,  K45,  KC_NO,  KC_NO,  KC_NO,  K49,  K4A,  K4B,  K4C,  K4D  }   \
 }
 
-#endif
-
 /* Default layout
  * ,-----------------------------------------------------------------------------------------.
  * | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D       |
  * `-----------------------------------------------------------------------------------------'
  */
 
+#define LAYOUT_60_ansi( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+    K10,  K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+    K20,    K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,   K2C, \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,    K3C, \
+    K40, K41, K42,           K45,                     K4A, K4B, K4C, K4D  \
+    ) { \
+  {  K00,  K01,   K02,  K03,    K04,    K05,  K06,    K07,    K08,    K09,   K0A,  K0B,  K0C,  K0D,  },  \
+  {  K10,  K11,   K12,  K13,    K14,    K15,  K16,    K17,    K18,    K19,   K1A,  K1B,  K1C,  K1D  },  \
+  {  K20,  K21,   K22,  K23,    K24,    K25,  K26,    K27,    K28,    K29,   K2A,  K2B,  K2C,  KC_NO  },  \
+  {  K30,  KC_NO, K32,  K33,    K34,    K35,  K36,    K37,    K38,    K39,   K3A,  K3B,  K3C,  KC_NO  },  \
+  {  K40,  K41,   K42,  KC_NO,  KC_NO,  K45,  KC_NO,  KC_NO,  KC_NO,  KC_NO, K4A,  K4B,  K4C,  K4D  }   \
+}
+
 /* Mini Lshift
  * ,-----------------------------------------------------------------------------------------.
  * | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D       |
  * |-----------------------------------------------------------------------------------------+
  * | K40   | K41   | K42   | K45                             | K4A   | K4B   | K4C   | K4D   |
  * `-----------------------------------------------------------------------------------------'
- */
\ No newline at end of file
+ */
+
+#endif
\ No newline at end of file
index d5b94fb83d137d367e4b6186d01e2b151649e39d..e4f590b1b15c715509d1cd424885c015637d8ea3 100644 (file)
@@ -66,3 +66,5 @@ 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
\ No newline at end of file
index fb421a34fc1ff56b17bb629de30fce83f53d7070..76e69d0278501c1b210c758a7e06851e31895f88 100644 (file)
@@ -1,9 +1,5 @@
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
-
 # just silently stop, since we need to upload with teensy uploader
-upload: build
+upload: build
 
 
 
diff --git a/keyboards/lets_split/keymaps/ergodoxish/Makefile b/keyboards/lets_split/keymaps/ergodoxish/Makefile
deleted file mode 100644 (file)
index 457a3d0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/ergodoxish/config.h b/keyboards/lets_split/keymaps/ergodoxish/config.h
deleted file mode 100644 (file)
index 7f33a43..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define _MASTER_RIGHT
-// #define EE_HANDS
-
-#endif
\ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/ergodoxish/keymap.c b/keyboards/lets_split/keymaps/ergodoxish/keymap.c
deleted file mode 100644 (file)
index 42f81a0..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-#include "lets_split.h"
-#include "action_layer.h"
-#include "eeconfig.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 _QWERTY 0
-#define _COLEMAK 1
-#define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
-
-enum custom_keycodes {
-  QWERTY = SAFE_RANGE,
-  COLEMAK,
-  DVORAK,
-  LOWER,
-  RAISE,
-  ADJUST,
-};
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_QWERTY] = KEYMAP( \
-  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
-  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
-  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
-  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
-
-/* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_COLEMAK] = KEYMAP( \
-  KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
-  KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
-  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
-  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
-
-/* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_DVORAK] = KEYMAP( \
-  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
-  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
-  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT , \
-  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
-
-/* Lower
- * ,-----------------------------------------------------------------------------------.
- * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |     |    \  |  |   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
-[_LOWER] = KEYMAP( \
-  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
-  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
-  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-),
-
-/* Raise
- * ,-----------------------------------------------------------------------------------.
- * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
-[_RAISE] = KEYMAP( \
-  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
-  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
-  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-),
-
-/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * |      |      |      |      |      |      |      |      |      |      |      |      |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      |      |      |      |      |             |      |      |      |      |      |
- * `-----------------------------------------------------------------------------------'
- */
-[_ADJUST] =  KEYMAP( \
-  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
-  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
-)
-
-
-};
-
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
-float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
-float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
-#endif
-
-void persistent_default_layer_set(uint16_t default_layer) {
-  eeconfig_update_default_layer(default_layer);
-  default_layer_set(default_layer);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    case QWERTY:
-      if (record->event.pressed) {
-        #ifdef AUDIO_ENABLE
-          PLAY_SONG(tone_qwerty);
-        #endif
-        persistent_default_layer_set(1UL<<_QWERTY);
-      }
-      return false;
-      break;
-    case COLEMAK:
-      if (record->event.pressed) {
-        #ifdef AUDIO_ENABLE
-          PLAY_SONG(tone_colemak);
-        #endif
-        persistent_default_layer_set(1UL<<_COLEMAK);
-      }
-      return false;
-      break;
-    case DVORAK:
-      if (record->event.pressed) {
-        #ifdef AUDIO_ENABLE
-          PLAY_SONG(tone_dvorak);
-        #endif
-        persistent_default_layer_set(1UL<<_DVORAK);
-      }
-      return false;
-      break;
-    case LOWER:
-      if (record->event.pressed) {
-        layer_on(_LOWER);
-        update_tri_layer(_LOWER, _RAISE, _ADJUST);
-      } else {
-        layer_off(_LOWER);
-        update_tri_layer(_LOWER, _RAISE, _ADJUST);
-      }
-      return false;
-      break;
-    case RAISE:
-      if (record->event.pressed) {
-        layer_on(_RAISE);
-        update_tri_layer(_LOWER, _RAISE, _ADJUST);
-      } else {
-        layer_off(_RAISE);
-        update_tri_layer(_LOWER, _RAISE, _ADJUST);
-      }
-      return false;
-      break;
-    case ADJUST:
-      if (record->event.pressed) {
-        layer_on(_ADJUST);
-      } else {
-        layer_off(_ADJUST);
-      }
-      return false;
-      break;
-  }
-  return true;
-}
\ No newline at end of file
index f7dc24a447185a11a4fa3229f5e9f277bde4fa5e..476e7fd2aa02c81bad5277a976cc401b6e40fb4e 100644 (file)
@@ -1,12 +1,9 @@
 #ifndef LETS_SPLIT_H
 #define LETS_SPLIT_H
 
-#ifdef SUBPROJECT_rev1
-    #include "rev1.h"
-#endif
-#ifdef SUBPROJECT_rev2
-    #include "rev2.h"
-#endif
+#include "quantum.h"
+
+#include QMK_SUBPROJECT_H
 
 // Used to create a keymap using only KC_ prefixed keys
 #define KC_KEYMAP( \
@@ -22,6 +19,7 @@
         KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
     )
 
-#include "quantum.h"
+#define LAYOUT_ortho_4x12 KEYMAP
+#define KC_LAYOUT_ortho_4x12 KC_KEYMAP
 
 #endif
\ No newline at end of file
index a0825b4ef64065fedfe5042ccc7f24f4f0ef71bc..f845616741c20fcb5871515df81dc74fd351d20f 100644 (file)
@@ -1,5 +1 @@
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+BACKLIGHT_ENABLE = no
\ No newline at end of file
index 80a942d06f7cc35dc8abf7a43d371a2381a84204..7b30c0beff2a18f58cdad7b8840e72fb14b35d12 100644 (file)
@@ -1,5 +1 @@
 BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index c2b7d556ebd48f36e0dc9862360b82ccffe8a75b..7b7224fd4d47f5fc58b91cd9361fb8a7b31ab07e 100644 (file)
@@ -74,3 +74,5 @@ USE_I2C = yes
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
+
+LAYOUTS = ortho_4x12
\ No newline at end of file
index 6faed09ce077c7b5d300b182d4705c8166e295fe..74bcbb6bf6e205e85008bf5b716f59adf6f8e103 100644 (file)
@@ -12,7 +12,7 @@
 #include <stdbool.h>
 #include "serial.h"
 
-#ifdef USE_SERIAL
+#ifndef USE_I2C
 
 // Serial pulse period in microseconds. Its probably a bad idea to lower this
 // value.
index 04fa552f80a4320b56c3ba139bddb041fec6aa13..903edb10929ec2205c7c3b24768fff9280cafe66 100644 (file)
@@ -77,5 +77,5 @@ UNICODE_ENABLE = YES          # Unicode
 
 USB = /dev/ttyACM0
 
-upload: build
-       $(MITOSIS_UPLOAD_COMMAND)
+upload: build
+#      $(MITOSIS_UPLOAD_COMMAND)
index 55500df79bb2237cf039d3f38ac2fb7b258fbbb4..5e3dc91888794e47568ba23848bfc5b31747dff9 100644 (file)
@@ -20,8 +20,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "config_common.h"
 
-#ifdef SUBPROJECT_rev1
-    #include "rev1/config.h"
-#endif
+#include QMK_SUBPROJECT_CONFIG_H
 
 #endif  // CONFIG_H
index e8cccecf5f6f90af351520a9548b26afc5dc271e..dcc2a4ffd458951a5e18f27c89fa21ccdd884080 100644 (file)
@@ -1,9 +1,9 @@
 #ifndef NYQUIST_H
 #define NYQUIST_H
 
-#ifdef SUBPROJECT_rev1
-    #include "rev1.h"
-#endif
+#include QMK_SUBPROJECT_H
+
+#include "quantum.h"
 
 // Used to create a keymap using only KC_ prefixed keys
 #define KC_KEYMAP( \
@@ -21,6 +21,6 @@
         KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45 \
     )
 
-#include "quantum.h"
+#define LAYOUT_ortho_5x12 KEYMAP
 
 #endif
\ No newline at end of file
index af4f7dbb1c96497fcd976c922b947eae2efc45ba..36157688713869ecd46a7a9b61a4cc76d9546da2 100644 (file)
@@ -18,7 +18,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef REV1_CONFIG_H
 #define REV1_CONFIG_H
 
-#include "../config.h"
+#include QMK_KEYBOARD_CONFIG_H
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xCEEB
index 80780831f3a94781a419c596be8b4fd156603dfb..7b3228fa659277d21e3bbb711bf9f0554a1ef9b6 100644 (file)
@@ -1,4 +1,4 @@
-#include "nyquist.h"
+#include QMK_SUBPROJECT_H
 
 #ifdef AUDIO_ENABLE
     float tone_startup[][2] = SONG(STARTUP_SOUND);
index f2d0ece790b7a3832940860e845b46e62f308dbb..cf9bf8020395fc62cb67ecb12581aef3c8374ccb 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef REV1_H
 #define REV1_H
 
-#include "../nyquist.h"
+#include QMK_KEYBOARD_H
 
 //void promicro_bootloader_jmp(bool program);
 #include "quantum.h"
index 80a942d06f7cc35dc8abf7a43d371a2381a84204..7b30c0beff2a18f58cdad7b8840e72fb14b35d12 100644 (file)
@@ -1,5 +1 @@
 BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index 3f40ff2f827e14980f1e72f34ddad9ba43a94ea8..07cdba4bf6971b74d90dfd042fac17760a531932 100644 (file)
@@ -73,3 +73,5 @@ USE_I2C = yes
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
+
+LAYOUTS = ortho_5x12
\ No newline at end of file
index 6faed09ce077c7b5d300b182d4705c8166e295fe..74bcbb6bf6e205e85008bf5b716f59adf6f8e103 100644 (file)
@@ -12,7 +12,7 @@
 #include <stdbool.h>
 #include "serial.h"
 
-#ifdef USE_SERIAL
+#ifndef USE_I2C
 
 // Serial pulse period in microseconds. Its probably a bad idea to lower this
 // value.
index c86f8491eed7fa0450f64cc90bffb448c72cb7c9..ebaf3fb641a4eff6cd97c15eb64e86f4dc63543a 100644 (file)
@@ -81,11 +81,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-#ifdef SUBPROJECT_rev3
-    #include "rev3/config.h"
-#endif
-#ifdef SUBPROJECT_rev4
-    #include "rev4/config.h"
-#endif
+#include QMK_SUBPROJECT_CONFIG_H
 
 #endif
index 3980b02f503925f8b2bc2102e0f18af553f27ac9..caef2fe5fac73246f0cbda7204ca5eb88c16cb1b 100644 (file)
@@ -1,4 +1,4 @@
-#include "planck.h"
+#include QMK_KEYBOARD_H
 
 #ifdef ONEHAND_ENABLE
 __attribute__ ((weak))
index 10f17b4a4696870a7152a4aa57252a103cd654d1..c055d73cb6999232f1e403a19c975c4b3f4f3cdf 100644 (file)
@@ -1,12 +1,7 @@
 #ifndef PLANCK_H
 #define PLANCK_H
 
-#ifdef SUBPROJECT_rev3
-    #include "rev3.h"
-#endif
-#ifdef SUBPROJECT_rev4
-    #include "rev4.h"
-#endif
+#include QMK_SUBPROJECT_H
 
 #include "quantum.h"
 
@@ -37,5 +32,6 @@
 }
 
 #define KEYMAP PLANCK_GRID
+#define LAYOUT_ortho_4x12 PLANCK_GRID
 
 #endif
index cc37874e83885e2725c0ea79b57a60c2b09bb934..ade11ffe13fba6d681655511fc912f06748f4f20 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef REV3_CONFIG_H
 #define REV3_CONFIG_H
 
-#include "../config.h"
+#include QMK_KEYBOARD_CONFIG_H
 
 #define DEVICE_VER 0x0003
 
index 628951d97dbe103f1d6cd25bbe87a999eb926f50..e5e05236c462d677d22fcd7d75ed0948ea855992 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef REV3_H
 #define REV3_H
 
-#include "../planck.h"
+#include QMK_KEYBOARD_H
 
 #endif
\ No newline at end of file
index 55940968237a90ff98f75851304b6d3586046ee3..11485710070b3b518dba791aeb3e2321e2faef99 100644 (file)
@@ -1,5 +1 @@
-AUDIO_ENABLE = no           # Audio output on port C6
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+AUDIO_ENABLE = no           # Audio output on port C6
\ No newline at end of file
index 98189fba71458ef0ca770debff9d140b18bbb0e1..dcc76c11c9ec29613a9ef0782ba2d4f13cc9e8dc 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef REV4_CONFIG_H
 #define REV4_CONFIG_H
 
-#include "../config.h"
+#include QMK_KEYBOARD_CONFIG_H
 
 #define DEVICE_VER 0x0004
 
index e4cf1800b8b97675004ec4973bbe0222354f8243..2d35df19d870d30769ee51314c7c6293792b9737 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef REV4_H
 #define REV4_H
 
-#include "../planck.h"
+#include QMK_KEYBOARD_H
 
 #endif
\ No newline at end of file
index 01d848e98c611438467026076c08a52c1c52e8e7..3b22e0a01b691928031da07f809452c05ccee349 100644 (file)
@@ -1,5 +1 @@
-AUDIO_ENABLE = yes           # Audio output on port C6
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+AUDIO_ENABLE = yes           # Audio output on port C6
\ No newline at end of file
index 5580bb387b2a8a14b9ffbdf822cf0e9517bd1d77..8f8477c18ab9e4f34ab8c50341d2cf8ada2ec819 100644 (file)
@@ -66,3 +66,5 @@ 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
\ No newline at end of file
index d9c119b8daca8e5546e4bbbebd29c7dce70b9595..cd765fe4afed62230879697c206c2ad870779ada 100644 (file)
@@ -1,4 +1,4 @@
-#include "preonic.h"
+#include QMK_KEYBOARD_H
 
 #ifdef ONEHAND_ENABLE
 __attribute__ ((weak))
index 0e0b101e45a54c3d0b9f518934a92e348ca20317..02845a549cce0cce6014d4447b196467cab2b6bd 100644 (file)
@@ -33,4 +33,6 @@
        { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
 }
 
+#define LAYOUT_ortho_5x12 PREONIC_GRID
+
 #endif
index b46c20193bf28f671772dfbe7ec6dc9e127ac363..51104e68baf7e369c853f351bd3e97aed5487664 100644 (file)
@@ -67,4 +67,6 @@ 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
\ No newline at end of file
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+LAYOUTS = ortho_5x12
\ No newline at end of file
index b10e5740f3f191a11f89c64b0a8417b4daac1353..a82a62e1ed7dbc866ab15b55608527b8641a4dff 100644 (file)
@@ -30,4 +30,6 @@
     { K30,   K31,   K32,   K33 }  \
 }
 
+#define LAYOUT_ortho_4x4 SINGLES_KEYMAP
+
 #endif
index 786c9dc3e70fbb27f3d351a205c8c4c783f39c67..523d1ddf039cae0c52149cf9b8740408482ebaea 100644 (file)
@@ -67,3 +67,5 @@ 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 = ortho_4x4
\ No newline at end of file
index 4a9475a920e2224f5aa16a795af021278c8b00d1..ce4064d1c6a32b51002be2a07e191b7f1642098b 100644 (file)
@@ -3,7 +3,3 @@ 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
index a979632a922e75b852f5a88b471ff1985eaf9f06..42d45c332bda3a36ba70d8164b662ff9413af65e 100644 (file)
@@ -2,8 +2,4 @@ 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
-
-ifndef QUANTUM_DIR
-       include ../../../Makefile
-endif
\ No newline at end of file
+RGBLIGHT_ENABLE = yes      # Enable RGB light
\ No newline at end of file
index 87a4a059542a9a3ac98bdbc044a0966097c684c4..12a0663ae29233e02345694be3680473b4d36818 100644 (file)
@@ -64,3 +64,5 @@ MIDI_ENABLE = no              # MIDI controls
 AUDIO_ENABLE = no
 UNICODE_ENABLE = no            # Unicode
 BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+
+LAYOUTS = 60_ansi 60_iso
\ No newline at end of file
index 42fa5dbe0af2e0ecaf9d01e1411d6275aa644591..3617f5328cc96a97c3da151d096d2433e0afcd3c 100644 (file)
 void matrix_init_user(void);
 void matrix_scan_user(void);
 
+#define LAYOUT_60_ansi KEYMAP_ANSI
+#define LAYOUT_60_iso KEYMAP
+
 #endif
index 6e8941fdfd85005456860c6d22543c0ead719a91..d4e08cfb26be36a6d1ade8d810369019d6e01395 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-
-# QMK Build Options
-#   change to "no" to disable the options, or define them in the Makefile in 
-#   the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = yes       # 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 = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
-AUDIO_ENABLE = no           # Audio output on port C6
-UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-
 ifndef QUANTUM_DIR
        include ../../../../Makefile
 endif
index f52a97bbc8653a337e8c17f4e292273151f5bbec..59de3fa55f656ac1420d893ba4e814094b697f27 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef CONFIG_USER_H
 #define CONFIG_USER_H
 
-#include "../../config.h"
+#include QMK_KEYBOARD_CONFIG_H
 
 // place overrides here
 
index 9b497c190013f5d2ab47b08f687772aa987e983f..884602fde45efec003049844dc7203d9727c3a56 100644 (file)
@@ -1,4 +1,4 @@
-#include "xd75.h"
+#include QMK_KEYBOARD_H
 #include "action_layer.h"
 #include "eeconfig.h"
 
index f6d8978301ea26a3b70656f738fe6ad8020a1100..7aa70212ed458c669be42fb8345f446cbffe8fb8 100644 (file)
@@ -47,22 +47,22 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
 #   USBaspLoader     2048
 OPT_DEFS += -DBOOTLOADER_SIZE=4996
 
-
-# Build Options
-#   change yes to no to disable
+# QMK Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
 #
-BOOTMAGIC_ENABLE ?= yes      # 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
-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
+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 = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+LAYOUTS = ortho_5x15
\ No newline at end of file
index 22bc2ecc0c87dee66b3349e9ed3499e7e9d62c9b..08592b665085d4295ac090a749eee86d94f4f312 100644 (file)
     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E,\
     K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
     K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+    { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }  \
+}
+
+#define KC_KEYMAP( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E,\
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
+    K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
 ) { \
     { 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_##K0C, KC_##K0D, KC_##K0E }, \
     { 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_##K1C, KC_##K1D, KC_##K1E }, \
@@ -36,4 +50,6 @@
     { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \
 }
 
+#define LAYOUT_ortho_5x15 KEYMAP
+
 #endif
diff --git a/layouts/community/60_ansi/layout.json b/layouts/community/60_ansi/layout.json
new file mode 100644 (file)
index 0000000..b7e1d0f
--- /dev/null
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:2.75},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
diff --git a/layouts/community/60_ansi/readme.md b/layouts/community/60_ansi/readme.md
new file mode 100644 (file)
index 0000000..15f51d3
--- /dev/null
@@ -0,0 +1,3 @@
+# 60_ansi
+
+    LAYOUT_60_ansi
\ No newline at end of file
diff --git a/layouts/community/60_iso/layout.json b/layouts/community/60_iso/layout.json
new file mode 100644 (file)
index 0000000..2b8493f
--- /dev/null
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""],
+[{w:1.75},"","","","","","","","","","","","",""],
+[{w:1.25},"","","","","","","","","","","","",{w:2.75},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
diff --git a/layouts/community/60_iso/readme.md b/layouts/community/60_iso/readme.md
new file mode 100644 (file)
index 0000000..42ff805
--- /dev/null
@@ -0,0 +1,3 @@
+# 60_iso
+
+    LAYOUT_60_iso
\ No newline at end of file
diff --git a/layouts/community/60_iso/unxmaal/README.md b/layouts/community/60_iso/unxmaal/README.md
new file mode 100644 (file)
index 0000000..6c08bbb
--- /dev/null
@@ -0,0 +1,22 @@
+Unxmaal's GH60 Layout
+=====================
+* Mostly stolen from /u/robotmaxtron
+
+##Quantum MK Firmware
+For the full Quantum feature list, see the parent readme.md.
+
+* Standard Mac ANSI layout
+* Spacebar acts as space when tapped, Fn when held
+* Menu acts as menu when tapped, Fn2 when held
+* Layer1:
+  * Top row = `~, F1-F12, Del
+  * JKIL = arrow cluster
+* Layer2:
+  * Top row = media controls
+  * JKIL = PgDn/Up/Home/Insert
+  * Backspace = Reset
+
+### Additional Credits
+Keymap has been based on various keymaps available from the QMK Repo for the GH60-SATAN and KC60 keyboards.
+
+![wiring](https://i.imgur.com/8b8T1fQ.jpg)
\ No newline at end of file
diff --git a/layouts/community/60_iso/unxmaal/config.h b/layouts/community/60_iso/unxmaal/config.h
new file mode 100644 (file)
index 0000000..7a500b1
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+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/>.
+*/
+
+#ifndef KEYMAP_CONFIG_H
+#define KEYMAP_CONFIG_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#ifndef RGB_DI_PIN
+    #define RGB_DI_PIN F4
+    #define RGBLIGHT_ANIMATIONS
+    #define RGBLED_NUM 8         // Number of LEDs
+    #define RGBLIGHT_HUE_STEP 8
+    #define RGBLIGHT_SAT_STEP 8
+    #define RGBLIGHT_VAL_STEP 8
+#endif
+
+#endif
diff --git a/layouts/community/60_iso/unxmaal/keymap.c b/layouts/community/60_iso/unxmaal/keymap.c
new file mode 100644 (file)
index 0000000..e9b3878
--- /dev/null
@@ -0,0 +1,230 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+
+#define _BL 0
+#define _AL 1
+#define _FL 2
+#define _UL 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+   /*
+   *  ANSI Base, Mac style
+   * ,-----------------------------------------------------------------------------.
+   * |Esc   |  1|   2|   3|   4|   5|   6|   7|   8|   9|   0|   -|   = |   Backsp |
+   * |-----------------------------------------------------------------------------|
+   * |Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I|   O|  P|  [|  ]|     \|
+   * |-----------------------------------------------------------------------------|
+   * |Caps/Fn      |    A|    S|    D|    F|   G|  H|  J|  K|  L|  ;|  '|   Enter  |
+   * |-----------------------------------------------------------------------------|
+   * |Shift      |    Z|     X|    C|     V|  B|  N|  M|  ,|  .|  /|     Shift     |
+   * |-----------------------------------------------------------------------------|
+   * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt  |Menu(tapped, Fn2(held)|Ctrl|
+   * `-----------------------------------------------------------------------------'
+   */
+       [_BL] = LAYOUT_60_iso(
+        KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \
+             KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_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_NO,KC_ENT,  \
+        KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
+        MO(1),KC_LALT,KC_LGUI,        LT(1,KC_SPACE),      KC_NO, KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL),
+
+   /*
+   * Pok3r style arrow cluster
+   * ,-----------------------------------------------------------.
+   * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
+   * |-----------------------------------------------------------|
+   * |     |   |    |   |   |   |   |   |Up|   |   |   |   |     |
+   * |-----------------------------------------------------------|
+   * |       |   |   |   |   |   |   |Left|Down|Right|   |   |   |
+   * |-----------------------------------------------------------|
+   * |        |   |   |   |   |   |   |   |   |   |   |          |
+   * |-----------------------------------------------------------|
+   * |    |    |    |                        |    |    |    |    |
+   * `-----------------------------------------------------------'
+   */
+       [_AL] = LAYOUT_60_iso(
+        KC_GRV,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_DELETE, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
+        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
+
+
+   /*
+   * Secondary function layer
+   * ,-------------------------------------------------------------.
+   * | | |  |  |  | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
+   * |-------------------------------------------------------------|
+   * |    |   |   |   |  |  |  |   |    |PgUp|    |    |   |       |
+   * |-------------------------------------------------------------|
+   * |      |   |   |   |   |   |  |Home|PgDown|End|  |   |        |
+   * |-------------------------------------------------------------|
+   * |        |   |   |   |   |   |   |    |    |    |   |         |
+   * |-------------------------------------------------------------|
+   * |    |    |    |                          |    |    |    |    |
+   * `-------------------------------------------------------------'
+   */
+       [_FL] = LAYOUT_60_iso(
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,KC_END,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
+
+   /*
+   * Locking layer for controlling the underglow.
+   * NOTE: currently unused.
+   *
+   * ,-----------------------------------------------------------.
+   * |    |  |   |   |   |   |   |   |   |   |   |   |   |       |
+   * |-----------------------------------------------------------|
+   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |
+   * |-----------------------------------------------------------|
+   * |       |On|Mode|   |   |   |   |   |   |   |   |   |       |
+   * |-----------------------------------------------------------|
+   * |        |   |Hue+|Hue-|Sat+|Sat-|Val+|Val-|  |  |   |      |
+   * |-----------------------------------------------------------|
+   * |    |    |    |                        |    |    |    |    |
+   * `-----------------------------------------------------------'
+   */
+       [_UL] = LAYOUT_60_iso(
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+        KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
+        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
+};
+
+enum function_id {
+    RGBLED_TOGGLE,
+    RGBLED_STEP_MODE,
+    RGBLED_INCREASE_HUE,
+    RGBLED_DECREASE_HUE,
+    RGBLED_INCREASE_SAT,
+    RGBLED_DECREASE_SAT,
+    RGBLED_INCREASE_VAL,
+    RGBLED_DECREASE_VAL,
+    SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0]  = ACTION_LAYER_MOMENTARY(2),  // Momentary Fn overlay
+    [1]  = ACTION_LAYER_TOGGLE(1),     // Toggle Arrow Layer overlay
+    [2]  = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
+    [3]  = ACTION_LAYER_TOGGLE(3),     // Toggle Underglow Layer overlay
+    [4]  = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
+    [5]  = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
+    [6]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+    [7]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+    [8]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+    [9]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+    [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+    [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+    [12] = ACTION_FUNCTION(SHIFT_ESC),
+    [13] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void matrix_scan_user(void) {
+
+// Layer LED indicators
+// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
+  #ifdef KEYBOARD_gh60
+    uint32_t layer = layer_state;
+    if (layer & (1<<1)) {
+        gh60_wasd_leds_on();
+    } else {
+        gh60_wasd_leds_off();
+    }
+
+    if (layer & (1<<2)) {
+        gh60_esc_led_on();
+    } else {
+        gh60_esc_led_off();
+    }
+  #endif
+};
+
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch (id) {
+    case RGBLED_TOGGLE:
+      //led operations
+      if (record->event.pressed) {
+        rgblight_toggle();
+        }
+        break;
+    case RGBLED_INCREASE_HUE:
+      if (record->event.pressed) {
+        rgblight_increase_hue();
+        }
+        break;
+    case RGBLED_DECREASE_HUE:
+      if (record->event.pressed) {
+        rgblight_decrease_hue();
+        }
+        break;
+    case RGBLED_INCREASE_SAT:
+      if (record->event.pressed) {
+        rgblight_increase_sat();
+        }
+        break;
+    case RGBLED_DECREASE_SAT:
+      if (record->event.pressed) {
+        rgblight_decrease_sat();
+        }
+        break;
+    case RGBLED_INCREASE_VAL:
+        if (record->event.pressed) {
+          rgblight_increase_val();
+        }
+        break;
+    case RGBLED_DECREASE_VAL:
+        if (record->event.pressed) {
+          rgblight_decrease_val();
+        }
+        break;
+    case RGBLED_STEP_MODE:
+        if (record->event.pressed) {
+          rgblight_step();
+        }
+        break;
+    static uint8_t shift_esc_shift_mask;
+    // Shift + ESC = ~
+    case SHIFT_ESC:
+      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+      if (record->event.pressed) {
+        if (shift_esc_shift_mask) {
+          add_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          add_key(KC_ESC);
+          send_keyboard_report();
+        }
+      } else {
+        if (shift_esc_shift_mask) {
+          del_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          del_key(KC_ESC);
+          send_keyboard_report();
+        }
+      }
+      break;
+    }
+};
diff --git a/layouts/community/60_iso/unxmaal/rules.mk b/layouts/community/60_iso/unxmaal/rules.mk
new file mode 100644 (file)
index 0000000..26fc6dc
--- /dev/null
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes          # Enable RGB Underglow
diff --git a/layouts/community/ergodox/333fred/README.md b/layouts/community/ergodox/333fred/README.md
new file mode 100644 (file)
index 0000000..f7b4ca4
--- /dev/null
@@ -0,0 +1,128 @@
+## Layout
+
+### Keymap 0: Basic layer
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   `    |   1  |   2  |   3  |   4  |   5  |  =   |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| TAB    |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+| Esc    |   A  |   S  |   D  |LT 3,F|   G  |------|           |------|   H  |   J  |   K  |   L  |; / : |   '    |
+|--------+------+------+------+------+------|  L1  |           |TT(3) |------+------+------+------+------+--------|
+| LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |LCTRL |  F4  |  F5  | LGUI | LALT |                                       | Left | Down |  Up  | Right| RGUI |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | Copy | Paste|       | Alt  |Ctrl/Esc|
+                                ,------|------|------|       |------+--------+------.
+                                |      |      | PgUp |       | PgDn |        |      |
+                                | Bcksp|OSL(2)|------|       |------|  Ent   |Space |
+                                |      |      | Del  |       |OSL(2)|        |      |
+                                `--------------------'       `----------------------'
+```
+* Double-click `;` to get a `:`
+* Press-and-hold `f` to go to the movement layer
+
+### Keymap 1: Code Layer
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |      |      |      |      |      |  F10 |           |  F11 |      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+|--------+------+------+------+------+------|  L2  |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      |      |                                       | F12  |GoToIm| FAR  |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,---------------.
+                                       |Format|Build |       | Test | DTest  |
+                                ,------|------|------|       |------+--------+------.
+                                |      |      |Refact|       |Sort U|        |      |
+                                |      |      |------|       |------|        |      |
+                                |      |      |      |       |      |        |      |
+                                `--------------------'       `----------------------'
+```
+* Build  - Visualt Studio Build Solution. Sends `CTRL + SHFT + B`
+* DTest  - Visual Studio Debug Test. Sends `CTRL + R, CTRL + T`
+* FAR    - Visual Studio Find All References. Sends `CTRL + K, R`
+* Format - Visual Studio Format. Sends `CTRL + K, CTRL + D`
+* GoToIm - Visual Studio Go To Implementation. Sends `CTRL + F12`
+* Refact - Visual Studio Refactor. Sends `CTRL + R, R`
+* Sort U - Visual Studio Sort Usings. Sends `CTRL + R, CTRL + G`
+* Test   - Visual Studio Run Test. Sends `CTRL + R, T`
+
+
+### Keymap 2: Symbol Layer
+```
+,---------------------------------------------------.           ,--------------------------------------------------.
+|Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+|---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+|         |   !  |   @  |   (  |   )  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+|---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|         |   #  |   $  |   {  |   }  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+|---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+`---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  | EPRM  |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
+  `-----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      | Caps |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |APscr |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      | PScr |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+* APscr - Take a printscreen of the current app. Sends `Alt + Print Screen`
+
+### Keymap 3: Media and Mouse Keys
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | Back+| Back-|       | Vol+ |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |BL_TOG|       | Vol- |      |      |
+                                |      |      |------|       |------| PL/PS| Next |
+                                |      |      |      |       | Back |      |      |
+                                `--------------------'       `--------------------'
+```
+
+### Keymap 4: Movement
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |KOpen |KType |      |      |      |      |           |      | Copy |      |      |      | Paste|        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |DLeft |DRight| LCTL |      |      |------|           |------| Left | Down |  Up  | Right|      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |SFT_TB| Tab  |      |      |      |      |           |      |      |      |      |      |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      |      |                                       |      |      |      |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       | Home | End  |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |      |
+                                |      | LSFT |------|       |------|      |      |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+* DLeft  - Move to the left Desktop. Sends `Ctrl + Win + Left Arrow`
+* DRight - Move to the right Desktop. Sends `Ctrl + Win + Right Arrow`
+* KOpen  - Opens KeePass. Sends `Ctrl + Alt + k`
+* KType  - Autotypes KeePass password. Sends `Ctrl + Alt + a`
+* SFT_TB - Sends `CTRL + TAB`.
diff --git a/layouts/community/ergodox/333fred/config.h b/layouts/community/ergodox/333fred/config.h
new file mode 100644 (file)
index 0000000..6a03446
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef CONFIG_H_
+#define CONFIG_H_
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#undef TAPPING_TERM
+#define TAPPING_TERM 150
+
+#define PERMISSIVE_HOLD
+
+#endif
diff --git a/layouts/community/ergodox/333fred/keymap.c b/layouts/community/ergodox/333fred/keymap.c
new file mode 100644 (file)
index 0000000..3fac44e
--- /dev/null
@@ -0,0 +1,381 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define CODE 1 // code layer
+#define SYMB 2 // symbols
+#define MDIA 3 // media keys
+#define MOVE 4 // movement layer
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+};
+
+enum custom_macros {
+  VERSION,
+  EEPROM,
+
+  // Windows macros
+  DLEFT,
+  DRIGHT,
+  PSCREEN_APP,
+  LSFT_TAB,
+
+  // VS Macros
+  REFACTOR,
+  TEST,
+  DEBUG_TEST,
+  FORMAT,
+  BUILD,
+  GO_TO_IMPL,
+  FIND_ALL_REF,
+  REMOVE_SORT_USINGS,
+
+  // KeePass macros
+  KEEPASS_OPEN,
+  KEEPASS_TYPE,
+};
+
+// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  |  =   |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | TAB    |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Esc    |   A  |   S  |   D  |LT 3,F|   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  L1  |           |MO(3) |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCTRL |  F4  |  F5  | LGUI | LALT |                                       | Left | Down |  Up  | Right| RGUI |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Copy | Paste|       | Alt  | Lock |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | PgUp |       | PgDn |        |      |
+ *                                 | Bcksp|OSL(2)|------|       |------|  Ent   |Space |
+ *                                 |      |      | Del  |       | RCtrl|        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,        KC_1,         KC_2,   KC_3,   KC_4,          KC_5,   KC_EQL,
+        KC_TAB,        KC_Q,         KC_W,   KC_E,   KC_R,          KC_T,   TG(SYMB),
+        KC_ESC,        KC_A,         KC_S,   KC_D,   LT(MOVE, KC_F),KC_G,
+        OSM(MOD_LSFT), CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,          KC_B,   TG(CODE),
+        OSM(MOD_LCTL), KC_F4,        KC_F5,  KC_LGUI,KC_LALT,
+                                                                             LCTL(KC_C),LCTL(KC_V),
+                                                                                        KC_PGUP,
+                                                                     KC_BSPC,OSL(SYMB), KC_DEL,
+        // right hand
+             TG(CODE), KC_6,   KC_7,   KC_8,   KC_9,   KC_0,           KC_MINS,
+             TG(SYMB), KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,           KC_BSLS,
+                       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,        KC_QUOT,
+             MO(MDIA), KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
+                                  KC_LEFT,KC_DOWN,KC_UP,  KC_RIGHT,       KC_RGUI,
+             KC_RALT, KC_LOCK,
+             KC_PGDN,
+             KC_RCTL, KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Code Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |ACCESS|      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |  F10 |           |  F11 |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|  L2  |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | F12  |GoToIm|  FAR |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        |Format|Build |       | Test | DTest  |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |Refact|       |Sort U|        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[CODE] = LAYOUT_ergodox(  // layer 1 : code
+        // left hand
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(SYMB),
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                                             M(FORMAT),M(BUILD),
+                                                                                       M(REFACTOR),
+                                                                    KC_TRNS, KC_TRNS,  KC_TRNS,
+        // right hand
+
+            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
+            KC_F11,  KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
+                     KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
+            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,        KC_TRNS, KC_TRNS,
+                              KC_F12,  M(GO_TO_IMPL),M(FIND_ALL_REF),KC_TRNS, KC_TRNS,
+             M(TEST), M(DEBUG_TEST),
+             M(REMOVE_SORT_USINGS),
+             KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+/* Keymap 2: Symbol Layer
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         |   !  |   @  |   (  |   )  |   |  |ACCESS|           |ACCESS|   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |   #  |   $  |   {  |   }  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |---------+------+------+------+------+------|ACCESS|           |      |------+------+------+------+------+--------|
+ * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | EPRM  |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      | Caps |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |APScr |       |      |      |      |
+ *                                 |      |ACCESS|------|       |------|      |      |
+ *                                 |      |      | PScr |       |ACCESS|      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LPRN,KC_RPRN,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LCBR,KC_RCBR,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_CAPS,
+                                               M(PSCREEN_APP),
+                               KC_TRNS,KC_TRNS,KC_PSCR,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 3: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |ACCESS|------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Back+| Back-|       | Vol+ |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |BackTg|       | Vol- |      |      |
+ *                                 |      |      |------|       |------| PL/PS| Next |
+ *                                 |      |      |      |       | Back |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           BL_INC,  BL_DEC,
+                                                    BL_TOGG,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_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_VOLD,
+       KC_MPRV, KC_MPLY, KC_MNXT
+),
+/* Keymap 4: Movement
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |KOpen |KType |      |      |      |      |           |      | Copy |      |      |      | Paste|        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |DLeft |DRight|LCTRL |ACCESS|      |------|           |------| Left | Down |  Up  | Right|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |SFT_TB| TAB  |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       | Home | End  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |LSHIFT|------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MOVE] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(KEEPASS_OPEN),M(KEEPASS_TYPE),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(DLEFT),       M(DRIGHT),      KC_LCTL, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(LSFT_TAB),    KC_TAB,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS,
+                                             KC_TRNS, KC_TRNS,
+                                                      KC_TRNS,
+                                    KC_TRNS, KC_LSFT, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
+       KC_TRNS,  LCTL(KC_C),KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_V),KC_TRNS,
+                 KC_LEFT,   KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS,   KC_TRNS,
+       KC_TRNS,  KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
+                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS,
+       KC_HOME,  KC_END,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+
+)
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case VERSION:
+          if (record->event.pressed) {
+            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+          }
+          break;
+        case EEPROM:
+          if (record->event.pressed) { // For resetting EEPROM
+            eeconfig_init();
+          }
+          break;
+        case DLEFT:
+          if (record->event.pressed) { // Windows move desktop left
+            return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
+          }
+          break;
+        case DRIGHT:
+          if (record->event.pressed) { // Windows move desktop right
+            return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
+          }
+          break;
+        case PSCREEN_APP:
+          if (record->event.pressed) {
+            return MACRO(D(LALT), T(PSCR), U(LALT), END);
+          }
+          break;
+        case LSFT_TAB:
+          if (record->event.pressed) {
+            return MACRO(D(LSFT), T(TAB), U(LSFT), END);
+          }
+        case REFACTOR:
+          if (record->event.pressed) { // VS Refactor CTRL+R, R
+            return MACRO(D(LCTL), T(R), U(LCTL), T(R), END);
+          }
+          break;
+        case TEST:
+          if (record->event.pressed) { // VS Run Tests CTRL+R, T
+            return MACRO(D(LCTL), T(R), U(LCTL), T(T), END);
+          }
+          break;
+        case DEBUG_TEST:
+          if (record->event.pressed) { // VS Debug Tests CTRL+R, CTRL+T
+            return MACRO(D(LCTL), T(R), T(T), U(LCTL), END);
+          }
+          break;
+        case FORMAT:
+          if (record->event.pressed) { // VS Format Document, CTRL+K, CTRL+D
+            return MACRO(D(LCTL), T(K), T(D), U(LCTL), END);
+          }
+          break;
+        case BUILD:
+          if (record->event.pressed) { // VS Build. Sends CTRL+SHFT+B
+            return MACRO(D(LCTL), D(LSFT), T(B), U(LSFT), U(LCTL), END);
+          }
+          break;
+        case GO_TO_IMPL:
+          if (record->event.pressed) { // VS Go To Implementation. Sends CTRL+F12
+            return MACRO(D(LCTL), T(F12), U(LCTL), END);
+          }
+          break;
+        case FIND_ALL_REF:
+          if (record->event.pressed) { // VS Find All References. Sends CTRL+K, R
+            return MACRO(D(LCTL), T(K), U(LCTL), T(R), END);
+          }
+          break;
+        case REMOVE_SORT_USINGS:
+          if (record->event.pressed) {
+            return MACRO(D(LCTL), T(R), T(G), U(LCTL), END);
+          }
+          break;
+        case KEEPASS_OPEN:
+          if (record->event.pressed) { // Keepass open application
+            return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
+          }
+          break;
+        case KEEPASS_TYPE:
+          if (record->event.pressed) { // Keepass autotype
+            return MACRO(D(LCTL), D(LALT), T(A), U(LALT), U(LCTL), END);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// 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) {
+    ergodox_board_led_on();
+    ergodox_led_all_on();
+};
+
diff --git a/layouts/community/ergodox/333fred/rules.mk b/layouts/community/ergodox/333fred/rules.mk
new file mode 100644 (file)
index 0000000..d8e081e
--- /dev/null
@@ -0,0 +1,8 @@
+LCD_BACKLIGHT_ENABLE = yes
+LCD_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+NKRO_ENABLE = yes
+KEY_LOCK_ENABLE = yes
+
+
+
diff --git a/layouts/community/ergodox/333fred/visualizer.c b/layouts/community/ergodox/333fred/visualizer.c
new file mode 100644 (file)
index 0000000..2a30562
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
+*/
+
+#include "simple_visualizer.h"
+
+// This function should be implemented by the keymap visualizer
+// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
+// that the simple_visualizer assumes that you are updating
+// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
+// stopped. This can be done by either double buffering it or by using constant strings
+static void get_visualizer_layer_and_color(visualizer_state_t* state) {
+    uint8_t saturation = 60;
+    if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
+        saturation = 255;
+    }
+    if (state->status.layer & 0x10) {
+        state->target_lcd_color = LCD_COLOR(140, 100, 60);
+        state->layer_text = "Movement";
+    } else if (state->status.layer & 0x8) {
+        state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
+        state->layer_text = "Media";
+    } else if (state->status.layer & 0x4) {
+        state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
+        state->layer_text = "Symbol";
+    } else if (state->status.layer & 0x2) {
+        state->target_lcd_color = LCD_COLOR(216, 90, 0xFF);
+        state->layer_text = "Code";
+    } else {
+        state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
+        state->layer_text = "Default";
+    }
+}
diff --git a/layouts/community/ergodox/ab/keyboard-layout.json b/layouts/community/ergodox/ab/keyboard-layout.json
new file mode 100644 (file)
index 0000000..e2badad
--- /dev/null
@@ -0,0 +1,387 @@
+[
+  {
+    "name": "Beginner's Keymap for Ergodox-EZ",
+    "author": "Anand Babu Periasamy"
+  },
+  [
+    {
+      "x": 3.5
+    },
+    "#\n3\n\n\nF3",
+    {
+      "x": 10.5
+    },
+    ")\n0\n\n\nF10"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n2\n\n\nF2",
+    {
+      "x": 1
+    },
+    "$\n4\n\n\nF4",
+    {
+      "x": 8.5
+    },
+    "(\n9\n\n\nF9",
+    {
+      "x": 1
+    },
+    "_\n-\n\n\nF11"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "%\n5\n\n\nF5",
+    "^\n6\n\n\nF6",
+    {
+      "x": 4.5
+    },
+    "&\n7\n\n\nF7",
+    "*\n8\n\n\nF8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "w": 1.5
+    },
+    "~\n`\n\n\nEsc",
+    "!\n1\n\n\nF1",
+    {
+      "x": 14.5
+    },
+    "+\n=\n\n\nF12",
+    {
+      "a": 7,
+      "w": 1.5
+    },
+    "Backspace\n\n\n\nBackspace"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "E\n\n\n\n<i class=\"fa fa-caret-up\" aria-hidden=\"true\"></i>",
+    {
+      "x": 10.5
+    },
+    "I"
+  ],
+  [
+    {
+      "y": -0.8799999999999999,
+      "x": 2.5
+    },
+    "W"
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "x": 4.5,
+      "a": 4
+    },
+    "R",
+    {
+      "x": 8.5,
+      "a": 7
+    },
+    "U",
+    {
+      "x": 1
+    },
+    "O"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "T",
+    {
+      "h": 1.5
+    },
+    "<i class=\"fa fa-chevron-circle-left\" aria-hidden=\"true\"></i>",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "<i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i>",
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Tab",
+    {
+      "a": 7
+    },
+    "Q",
+    {
+      "x": 14.5
+    },
+    "P",
+    {
+      "a": 4,
+      "w": 1.5
+    },
+    "|\n\\"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 7
+    },
+    "D\n\n\n\n<i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>",
+    {
+      "x": 10.5
+    },
+    "K"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "S\n\n\n\n<i class=\"fa fa-caret-left\" aria-hidden=\"true\"></i>",
+    {
+      "x": 1,
+      "c": "#c4bcbc"
+    },
+    "F\n\n\n\n<i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i>",
+    {
+      "x": 8.5
+    },
+    "J",
+    {
+      "x": 1,
+      "c": "#cccccc"
+    },
+    "L"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "G",
+    {
+      "x": 6.5
+    },
+    "H"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        0,
+        2
+      ],
+      "w": 1.5
+    },
+    "\n\n\nCtrl\n\n\nCaps",
+    {
+      "a": 7
+    },
+    "A",
+    {
+      "x": 14.5,
+      "a": 4
+    },
+    ":\n;",
+    {
+      "a": 7,
+      "w": 1.5
+    },
+    "Enter"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "h": 1.5
+    },
+    "PgDn",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "PgUp"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5
+    },
+    "C\n\n\n\n<i class=\"fa fa-hand-o-up\" aria-hidden=\"true\"></i>",
+    {
+      "x": 10.5,
+      "a": 4
+    },
+    "<\n,"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 7
+    },
+    "X\n\n\n\n<i class=\"fa fa-hand-o-left\" aria-hidden=\"true\"></i>",
+    {
+      "x": 1
+    },
+    "V\n\n\n\n<i class=\"fa fa-hand-o-right\" aria-hidden=\"true\"></i>",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1,
+      "a": 4
+    },
+    ">\n."
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "a": 7
+    },
+    "B",
+    {
+      "x": 6.5
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "w": 1.5
+    },
+    "Shift",
+    "Z",
+    {
+      "x": 14.5,
+      "a": 4
+    },
+    "?\n/",
+    {
+      "w": 1.5
+    },
+    "\"\n'"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 7
+    },
+    "Alt\n\n\n\n<i class=\"fa fa-search-minus\" aria-hidden=\"true\"></i>",
+    {
+      "x": 10.5
+    },
+    "<i class=\"fa fa-long-arrow-down\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "<i class='fa fa-linux'></i>\n\n\n\n<i class=\"fa fa-search\" aria-hidden=\"true\"></i>",
+    {
+      "x": 1
+    },
+    "Alt\n\n\n\n<i class=\"fa fa-search-plus\" aria-hidden=\"true\"></i>",
+    {
+      "x": 8.5
+    },
+    "<i class=\"fa fa-long-arrow-left\" aria-hidden=\"true\"></i>\n\n\n\n<i class=\"fa fa-undo\" aria-hidden=\"true\"></i>",
+    {
+      "x": 1
+    },
+    "<i class=\"fa fa-long-arrow-up\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-up'></i>"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5
+    },
+    "Ctrl\n\n\n\n<i class='fa fa-download'></i>",
+    "Esc",
+    {
+      "x": 14.5
+    },
+    "<i class=\"fa fa-long-arrow-right\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-off'></i>",
+    "Fn"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1
+    },
+    "<i class=\"fa fa-clone\" aria-hidden=\"true\"></i>",
+    "("
+  ],
+  [
+    {
+      "h": 2
+    },
+    "Space",
+    {
+      "h": 2
+    },
+    "Del",
+    "["
+  ],
+  [
+    {
+      "x": 2
+    },
+    "{"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    ")",
+    "<i class=\"fa fa-paste\" aria-hidden=\"true\"></i>"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "]",
+    {
+      "h": 2
+    },
+    "Enter",
+    {
+      "h": 2
+    },
+    "<i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i>"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "}"
+  ]
+]
\ No newline at end of file
diff --git a/layouts/community/ergodox/ab/keymap.c b/layouts/community/ergodox/ab/keymap.c
new file mode 100644 (file)
index 0000000..7bda0cd
--- /dev/null
@@ -0,0 +1,155 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define FN1  1 // media layer
+
+#define CAPS_CTL CTL_T(KC_CAPS)  // Caps on tap, Ctrl on hold.
+#define COPY     LCTL(KC_V)      // C-c Copy
+#define PASTE    LCTL(KC_V)      // C-v Paste
+#define ZM_NRM   LCTL(KC_0)      // C-0 Zoom Normal
+#define ZM_OUT   LCTL(KC_MINS)   // C-- Zoom Out
+#define ZM_IN    LCTL(KC_PLUS)   // C-+ Zoom In
+#define EM_UNDO  LCTL(KC_UNDS)   // C-_ Emacs Undo
+
+#define _MOB  1 // Mobile#
+#define _CUS1 2 // Custom macro 1
+#define _CUS2 3 // Custom macro 2
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  |  6   |           |   7  |   8  |   9  |   0  |   -  |   =  | BSpace |
+ * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  | Fwd  |           | Back |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Caps/Ctl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
+ * |--------+------+------+------+------+------| PgDn |           | PgUp |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |   '    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Ctrl |  Esc | LGui | Alt  | Alt  |                                       | Left |  Dn  |  Up  | Right|  Fn  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Copy |  (   |       |   )  | Paste|
+ *                                 ,------|------+------|       |------+------+------.
+ *                                 |      |      |  [   |       |   ]  |      |      |
+ *                                 |Space | Del  |------|       |------| Enter|BSpace|
+ *                                 |      |      |  {   |       |   }  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+    [BASE] = LAYOUT_ergodox(  // layer 0 : default
+       // Left hand
+       KC_GRV,   KC_1,    KC_2,    KC_3,     KC_4,     KC_5,    KC_6,
+       KC_TAB,   KC_Q,    KC_W,    KC_E,     KC_R,     KC_T,    KC_WBAK,
+       CAPS_CTL, KC_A,    KC_S,    KC_D,     KC_F,     KC_G,
+       KC_LSFT,  KC_Z,    KC_X,    KC_C,     KC_V,     KC_B,    KC_PGDN,
+       KC_LCTL,  KC_ESC,  KC_LGUI, KC_LALT,  KC_LALT,
+       COPY,     KC_LCBR,
+       KC_LPRN,
+       KC_SPC,   KC_DEL,  KC_LBRC,
+       // Right hand
+       KC_7,     KC_8,    KC_9,    KC_0,     KC_MINS,  KC_EQL,  KC_BSPC,
+       KC_WFWD,  KC_Y,    KC_U,    KC_I,     KC_O,     KC_P,    KC_BSLS,
+       KC_H,     KC_J,    KC_K,    KC_L,     KC_SCLN,  KC_ENT,
+       KC_PGUP,  KC_N,    KC_M,    KC_COMM,  KC_DOT,   KC_SLSH, KC_QUOT,
+       KC_LEFT,  KC_DOWN, KC_UP,   KC_RIGHT, TG(FN1),
+       KC_RCBR,  PASTE,
+       KC_RPRN,
+       KC_RBRC,  KC_ENT,  KC_BSPC),
+/* Keymap 1: Fn Keys, media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Esc   |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | BSpace |
+ * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      | LClk | MClk | RClk |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Teensy|      | ZmNrm| ZmOut| ZmIn |                                       | Undo |VolDn |VolUp | Mute |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------+------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// FN1 Layer
+    [FN1] = LAYOUT_ergodox(
+       // Left hand
+       KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, ZM_NRM,  ZM_OUT,  ZM_IN,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       RESET,   KC_TRNS, KC_TRNS,
+       // Right hand
+       KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS, M(_MOB), KC_TRNS, M(_CUS1),M(_CUS2),KC_TRNS, KC_TRNS,
+       EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+       ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+    switch(id) {
+    case _MOB: // Your mobile# here.
+       return MACRODOWN(T(1), T(2), T(3), T(MINS),
+                        T(1), T(2), T(3), T(MINS),
+                        T(1), T(2), T(3), T(4),
+                        END);
+    case _CUS1: // Your custom macro 1
+       return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
+    case _CUS2: // Your custom macro 2
+       return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
+    };
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+       // TODO: Make this relevant to the ErgoDox EZ.
+    case 1:
+       ergodox_right_led_1_on();
+       break;
+    case 2:
+       ergodox_right_led_2_on();
+       break;
+    default:
+       // none
+       break;
+    }
+
+};
diff --git a/layouts/community/ergodox/ab/readme.md b/layouts/community/ergodox/ab/readme.md
new file mode 100644 (file)
index 0000000..fde1c17
--- /dev/null
@@ -0,0 +1,21 @@
+# Beginner's keymap for Ergodox-EZ
+Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps. 
+
+![Beginner's Keymap](https://i.imgur.com/dAIocc8.png)
+
+#### Pros
+* Easier to switch between regular keyboards and Ergodox-EZ.
+* Easy on beginners. It has everything you need for your day to day usage.
+
+#### Cons
+* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox/keymaps/default/readme.md)
+* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.
+
+#### Notes
+* Ideally number key [6] should have started from the right-hand side of the keyboard. Doing so breaks the familiar QWERTY layout.
+* Quote key ['] should have been placed between [:] and [Enter]. Due to lack of key space, it is placed below [Enter].
+* Double [Alt] keys are placed adjacent to each other for convenience.
+* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users.
+* Additional bracket keys are placed in the center of the keyboard for programmer's convenience.
+
+
diff --git a/layouts/community/ergodox/ab/rules.mk b/layouts/community/ergodox/ab/rules.mk
new file mode 100644 (file)
index 0000000..839dd82
--- /dev/null
@@ -0,0 +1,7 @@
+# Having a file like this allows you to override Makefile definitions
+# for your own particular keymap
+
+SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+
+
diff --git a/layouts/community/ergodox/absenth/keymap.c b/layouts/community/ergodox/absenth/keymap.c
new file mode 100644 (file)
index 0000000..b9dddfb
--- /dev/null
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   | A/L2 |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LS/PO  |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RS/PC  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        LT(MDIA, KC_A),         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSPO,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSPC,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------| left | down |  up  | down |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 | Lclk | Rclk |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/absenth/readme.md b/layouts/community/ergodox/absenth/readme.md
new file mode 100644 (file)
index 0000000..744c67a
--- /dev/null
@@ -0,0 +1,11 @@
+# ErgoDox EZ Absenth Configuration
+
+## Changelog
+
+
+* Sept. 14, 2016 (V0.2):
+  * Added Space Cadet to Left and Right Shift.  Pressing Left shift with no other key adds an "(" and pressing Right shift with no other key adds an ")"
+* Sept. 8, 2016 (V0.1): 
+  * Made A key double as MEDIA Layer change when you hold it.  Added mouse buttons to the large thumb buttons on the left side on the Media Layer.  Added vi/vim style arrow keys on HJKL on media layer.
+
+![Absenth](https://i.imgur.com/D1enl2x.jpg)
diff --git a/layouts/community/ergodox/adam/config.h b/layouts/community/ergodox/adam/config.h
new file mode 100644 (file)
index 0000000..21af8c6
--- /dev/null
@@ -0,0 +1,6 @@
+#include QMK_KEYBOARD_CONFIG_H
+
+#undef TAPPING_TERM
+#define TAPPING_TERM 300 //At 500 some bad logic takes hold
+#define PREVENT_STUCK_MODIFIERS
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/layouts/community/ergodox/adam/keymap.c b/layouts/community/ergodox/adam/keymap.c
new file mode 100644 (file)
index 0000000..e99e5d4
--- /dev/null
@@ -0,0 +1,174 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+
+#define BASE 0 // default layer
+#define FLOCK 1 // symbols arrows and F keys on F held down
+#define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
+#define CAPLOCK 3 //caps on until space / enter / esc
+#define SFLOCK 11 // symbols arrows and F keys on F held down
+#define SJLOCK 12 // same as Flock but with fall thru J and mapped to J held down
+
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Sends macro when key is tapped, presses mod when key is held
+#define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \
+     ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
+     ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) )
+
+#define tap_mod_shift(record, mod, macro) ( ((record)->event.pressed) ? \
+          ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
+          ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (MACRO( D(LSFT), T(LBRC), U(LSFT), END)) : MACRO(U(mod), END) ) )
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Layout
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |;     |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  Z   |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |       |     |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |        |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+        [BASE] = LAYOUT_ergodox(
+                // left hand
+                GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS,
+                _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB,
+                _______, SFT_T(KC_A), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
+                _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
+                _______, _______,  _______,  _______ ,_______,
+                _______,  _______,
+                _______,
+                KC_SPC, _______, _______ ,
+
+                // right hand
+                KC_EQL,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             _______,
+                KC_TAB,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             _______,
+                GUI_T(KC_H),   F(JLOCK),   CTL_T(KC_K),   ALT_T(KC_L),   SFT_T(KC_SCLN),           _______,
+                KC_DELETE,  KC_N,   KC_M,   KC_COMM,KC_DOT, KC_QUOT,           _______,
+                _______,  _______,_______,_______,          _______,
+                _______,        _______,
+                _______,
+                _______,_______, KC_ENT
+        ),
+        [FLOCK] = LAYOUT_ergodox(
+                // left hand
+                XXXXXXX,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
+                XXXXXXX,KC_LBRC,XXXXXXX,  XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+                XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,_______,XXXXXXX,
+                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
+                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+                XXXXXXX,XXXXXXX,
+                XXXXXXX,
+                KC_ESC,XXXXXXX,XXXXXXX,
+                // right hand
+                KC_F12, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  XXXXXXX,
+                XXXXXXX, XXXXXXX, KC_HOME,   KC_PGUP,    XXXXXXX,    KC_RBRC, XXXXXXX,
+                KC_LEFT, KC_DOWN,   KC_UP,    KC_RIGHT,    S(KC_RBRC), XXXXXXX,
+                XXXXXXX, XXXXXXX, KC_END,   KC_PGDOWN,    KC_QUES,    KC_SLSH, XXXXXXX,
+                XXXXXXX, XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,
+                XXXXXXX, XXXXXXX,
+                XXXXXXX,
+                XXXXXXX, XXXXXXX, XXXXXXX
+        ),
+        [JLOCK] = LAYOUT_ergodox(
+                // left hand
+                XXXXXXX,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
+                XXXXXXX,KC_LBRC,KC_GRV,  KC_TILD,XXXXXXX,XXXXXXX,XXXXXXX,
+                XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,
+                XXXXXXX,KC_BSLS,KC_PIPE,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
+                XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+                XXXXXXX,XXXXXXX,
+                XXXXXXX,
+                KC_ESC,XXXXXXX,XXXXXXX,
+                // right hand
+                KC_F12, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  XXXXXXX,
+                  XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,    XXXXXXX,    KC_RBRC, XXXXXXX,
+                XXXXXXX, _______,   XXXXXXX,  XXXXXXX,    S(KC_RBRC), XXXXXXX,
+                XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,    XXXXXXX,    XXXXXXX, XXXXXXX,
+                XXXXXXX,XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,
+                XXXXXXX, XXXXXXX,
+                XXXXXXX,
+                XXXXXXX, XXXXXXX, XXXXXXX
+        ),
+        [CAPLOCK] = LAYOUT_ergodox(
+                // left hand
+                TO(BASE), _______, _______, _______, _______, _______, _______,
+                _______, S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), _______,
+                // _______, SFT_T(S(KC_A)), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
+                _______, S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G),
+                _______, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), _______,
+                _______, _______,  _______,  _______ ,_______,
+                _______,  _______,
+                _______,
+                TO(BASE), _______, _______ ,
+
+                // right hand
+                _______,     _______,   _______,   _______,   _______,   _______,             _______,
+                _______,     S(KC_Y),   S(KC_U),   S(KC_I),   S(KC_O),   S(KC_P),             _______,
+                         S(KC_H),   S(KC_J),   S(KC_K),   S(KC_L),   S(KC_SCLN),           _______,
+                _______,  S(KC_N),   S(KC_M),   S(KC_COMM),S(KC_DOT), S(KC_QUOT),           _______,
+                _______,  _______,_______,_______,          _______,
+                _______,        _______,
+                _______,
+                _______,_______, TO(BASE)
+        )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+        [1] = ACTION_LAYER_TAP_KEY(FLOCK,KC_F),
+        [2] = ACTION_LAYER_TAP_KEY(JLOCK,KC_J),
+        [11] = ACTION_LAYER_TAP_KEY(FLOCK,LSFT(KC_F)),
+        [12] = ACTION_LAYER_TAP_KEY(JLOCK,LSFT(KC_J))
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+        // MACRODOWN only works in this function
+        switch(id) {
+        case 0:
+                if (record->event.pressed) {
+                        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+                }
+                break;
+        }
+
+        return MACRO_NONE;
+};
+
+// 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);
+
+  switch (layer) {
+    // TODO: Make this relevant to the ErgoDox EZ.
+      case 1:
+          break;
+      case 2:
+          break;
+      default:
+          // none
+          break;
+  }
+};
diff --git a/layouts/community/ergodox/adam/readme.md b/layouts/community/ergodox/adam/readme.md
new file mode 100644 (file)
index 0000000..9d03df5
--- /dev/null
@@ -0,0 +1,3 @@
+# Adam's ErgoDox
+
+Currently only really uses keys available on Let's Split, for ease of switching
diff --git a/layouts/community/ergodox/adnw_k_o_y/keymap.c b/layouts/community/ergodox/adnw_k_o_y/keymap.c
new file mode 100644 (file)
index 0000000..4ff4495
--- /dev/null
@@ -0,0 +1,185 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   K  |   .  |   O  |   ,  |   Y  |  L1  |           |  L1  |   V  |   G  |   C  |   L  |   ß  |   Z    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   H  |   A  |   E  |   I  |   U  |------|           |------|   D  |   T  |   R  |   N  |   S  |   F    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |X/Ctrl|   Q  |   Ä  |   Ü  |   Ö  |      |           |      |   B  |   P  |   W  |   M  |   J  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Enter |------|       |------|  Tab   |RShift|
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        DE_K,         DE_DOT, DE_O,   DE_COMM,DE_Y,   TG(SYMB),
+        KC_BSPC,        DE_H,         DE_A,   DE_E,   DE_I,   DE_U,
+        KC_LSFT,        CTL_T(DE_X),  DE_Q,   DE_AE,  DE_UE,  DE_OE,  ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_ENT ,KC_END,
+        // right hand
+        KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+        TG(SYMB),    DE_V,   DE_G,   DE_C,   DE_L,   DE_SS,            DE_Z,
+                     DE_D,   DE_T,   DE_R,   DE_N,   LT(MDIA, DE_S),   GUI_T(KC_F),
+        MEH_T(KC_NO),KC_B,   KC_P,   KC_W,   KC_M,   CTL_T(KC_J),      KC_RSFT,
+                          KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+        KC_LALT,        CTL_T(KC_ESC),
+        KC_PGUP,
+        KC_PGDN,KC_TAB, KC_RSFT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/adnw_k_o_y/readme.md b/layouts/community/ergodox/adnw_k_o_y/readme.md
new file mode 100644 (file)
index 0000000..f0dd381
--- /dev/null
@@ -0,0 +1,7 @@
+# Basic implementation for k.o,y variant of the adnw layout
+
+adnw is a layout optimised for usage with german and english language
+k.o,y is a variant of this layout
+http://www.adnw.de/index.php?n=Main.SeitlicheNachbaranschl%C3%A4ge
+
+The os must use the de_DE layout
diff --git a/layouts/community/ergodox/albert/config.h b/layouts/community/ergodox/albert/config.h
new file mode 100644 (file)
index 0000000..0c6231f
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+/* using UK layout for space-cadet-shift */
+#define LSPO_KEY KC_9
+#define RSPC_KEY KC_0
+
+#define LEADER_TIMEOUT 800 // leader key sequence timeout in millis
+
+#endif
diff --git a/layouts/community/ergodox/albert/keymap.c b/layouts/community/ergodox/albert/keymap.c
new file mode 100644 (file)
index 0000000..c1b4731
--- /dev/null
@@ -0,0 +1,661 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#include <stdarg.h>
+
+/* use UK keymap */
+
+#define UK_HASH KC_NONUS_HASH
+#define UK_BSLS KC_NONUS_BSLASH
+#define UK_PIPE LSFT(UK_BSLS)
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define NUMB 2 // numbers and hex
+#define CRSR 3 // cursor keys
+#define MOUS 4 // mouse keys
+#define KEYW 5 // keyword macros
+#define EMAC 6 // emacs
+
+// my macros
+#define UM_ECET   M(0)  // { }
+#define UM_0x     M(1)
+#define UM_PUB    M(2)
+#define UM_PRO    M(3)
+#define UM_PRV    M(4)
+#define UM_CLS    M(5)
+#define UM_STR    M(6)
+#define UM_RET    M(7)
+#define UM_INC    M(8)
+#define UM_OBJ    M(9)
+#define UM_GITLOG M(10)
+#define UM_GOODM  M(11)
+#define UM_NAMESP M(12)
+#define UM_EMTR   M(14) // emacs toggle read-only
+#define UM_EMWR   M(15) // emacs write buffer (save)
+#define UM_EMUN   M(16) // emacs undo
+#define UM_EMRE   M(17) // emacs redo
+#define UM_EMPB   M(18) // emacs previous buffer
+#define UM_EMNB   M(19) // emacs next buffer
+#define UM_GOODN  M(20)
+#define UM_ECETS  M(22)  // { };
+#define UM_TMPL   M(23)
+#define UM_TYPN   M(24)
+#define UM_CONT   M(25)
+#define UM_BREAK  M(26)
+#define UM_CONST  M(27)
+#define UM_SMILY  M(28)
+#define UM_SADF   M(29)
+#define UM_SCARF  M(30)
+#define UM_DECAF  M(31)
+#define UM_OPER   M(32)
+#define UM_NULP   M(33)
+#define UM_EXTR   M(34)
+#define UM_VIRT   M(35)
+#define UM_EMFB   M(36) // emacs font bigger
+#define UM_EMFS   M(37) // emacs font smaller
+#define UM_VOLAT  M(38)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | ESC    |   1  |   2  |   3  |   4  |   5  | SfLt |           | SfRt |   6  |   7  |   8  |   9  |   0  | BkSp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  | Del    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps/L2|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |Enter/L2|
+ * |--------+------+------+------+------+------|  L6  |           |  L6  |------+------+------+------+------+--------|
+ * | LSft/( |   Z  |   X  |   C  | V/L3 | B/L4 |      |           |      | N/L4 | M/L3 |   ,  |   .  |   /  | RSft/) |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Ctrl/[| Alt/]|   #  | Left |Right |                                       |  Up  | Down |   -  | Alt/[|Ctrl/]|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  L2  | lead |       | lead |  Ins |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 | Space| BkSp | Home |       | PgUp | Enter|Space |
+ *                                 |  /   |  /   |------|       |------|   /  |  /   |
+ *                                 | Ctrl | Alt  |End/L5|       |PDn/L5|  Alt | Ctrl |
+ *                                 `--------------------'       `--------------------'
+ */
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,            KC_1,            KC_2,       KC_3,      KC_4,           KC_5,           LSFT(KC_LEFT),
+        KC_TAB,            KC_Q,            KC_W,       KC_E,      KC_R,           KC_T,           MO(SYMB),
+        LT(NUMB, KC_CAPS), KC_A,            KC_S,       KC_D,      KC_F,           KC_G,
+        KC_LSPO,           KC_Z,            KC_X,       KC_C,      LT(CRSR, KC_V), LT(MOUS, KC_B), MO(EMAC),
+        CTL_T(KC_LBRC),    ALT_T(KC_RBRC),  UK_HASH,    KC_LEFT,   KC_RGHT,
+                                                                                     TG(NUMB),        KC_LEAD,
+                                                                                                      KC_HOME,
+                                                                     CTL_T(KC_SPC),  ALT_T(KC_BSPC),  LT(KEYW, KC_END),
+        // right hand
+             LSFT(KC_RGHT),   KC_6,            KC_7,            KC_8,      KC_9,       KC_0,             KC_BSPC,
+             MO(SYMB),        KC_Y,            KC_U,            KC_I,      KC_O,       KC_P,             KC_DELT,
+                              KC_H,            KC_J,            KC_K,      KC_L,       KC_SCLN,          LT(NUMB, KC_ENT),
+             MO(EMAC),        LT(MOUS, KC_N),  LT(CRSR, KC_M),  KC_COMM,   KC_DOT,     KC_SLSH,          KC_RSPC,
+                                               KC_UP,           KC_DOWN,   KC_MINS,    ALT_T(KC_LBRC),   CTL_T(KC_RBRC),
+           KC_LEAD,            KC_INS,
+           KC_PGUP,
+           LT(KEYW, KC_PGDN),  ALT_T(KC_ENT),   CTL_T(KC_SPC)
+    ),
+/* Keymap 1: Symbol Layer with F keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ##   |  F1  |  F2  |  F3  |  F4  |  F5  |  ##  |           |  ##  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |   ##   |   !  |   "  |   £  |   $  |   %  |  ##  |           |  ##  |   -  |   +  |   =  |   @  |   ~  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   ##   |   ^  |   &  |   *  |   _  |   #  |------|           |------|   {  |   }  |   ;  |   '  |   #  |   ##   |
+ * |--------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
+ * |   ##   |   \  |   |  |   `  |   -  |   /  |      |           |      |   [  |   ]  |   <  |   >  |   ?  |   ##   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  ##  |  ##  |  ##  |  ##  |  ##  |                                       |  ##  |  ##  |  ##  |  ##  |  ##  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  ##  |  ##  |       |  ##  |  ##  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |  ##  |       |  ##  |      |      |
+ *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
+ *                                 |      |      |  ##  |       |  ##  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[SYMB] = LAYOUT_ergodox(
+        // left hand
+        KC_TRNS,   KC_F1,       KC_F2,       KC_F3,       KC_F4,          KC_F5,       KC_TRNS,
+        KC_TRNS,   KC_EXLM,     LSFT(KC_2),  LSFT(KC_3),  LSFT(KC_4),     LSFT(KC_5),  KC_TRNS,
+        KC_TRNS,   LSFT(KC_6),  LSFT(KC_7),  LSFT(KC_8),  LSFT(KC_MINS),  UK_HASH,
+        KC_TRNS,   UK_BSLS,     UK_PIPE,     KC_GRV,      KC_MINS,        KC_SLSH,     KC_TRNS,
+        KC_TRNS,   KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,
+                                                                            KC_TRNS,   KC_TRNS,
+                                                                                       KC_TRNS,
+                                                                 KC_TRNS,   KC_TRNS,   KC_TRNS,
+        // right hand
+             KC_TRNS,   KC_F6,       KC_F7,       KC_F8,          KC_F9,          KC_F10,         KC_F11,
+             KC_TRNS,   KC_MINS,     KC_PLUS,     KC_EQL,         LSFT(KC_QUOT),  LSFT(UK_HASH),  KC_F12,
+                        KC_LCBR,     KC_RCBR,     KC_SCLN,        KC_QUOT,        UK_HASH,        KC_TRNS,
+             KC_TRNS,   KC_LBRC,     KC_RBRC,     LSFT(KC_COMM),  LSFT(KC_DOT),   LSFT(KC_SLSH),  KC_TRNS,
+                                     KC_TRNS,     KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,
+           KC_TRNS,   KC_TRNS,
+           KC_TRNS,
+           KC_TRNS,   KC_TRNS,  KC_TRNS
+    ),
+/* Keymap 2: Numerics and hex
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |   ##    |  A   |  B   |  C   |  D   |  E   |  F   |           |  A   |  B   |  C   |  D   |   E  |   F  |   ##   |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |   ##    |  *   |  7   |  8   |  9   |  *   |  0x  |           |  0x  |  *   |   7  |   8  |   9  |   *  |   ##   |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   ##    |  /   |  4   |  5   |  6   |  /   |------|           |------|  /   |   4  |   5  |   6  |   /  |   ##   |
+ * |---------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
+ * |   ##    |  -   |  1   |  2   |  3   |  -   |      |           |      |  -   |   1  |   2  |   3  |   -  |   ##   |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |   =   |  +   |  0   |  ,   |  .   |                                       |   0  |   ,  |   .  |   +  |  =   |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  ##  |  ##  |       |  ##  |  ##  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |  ##  |       |  ##  |      |      |
+ *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
+ *                                 |      |      |  ##  |       |  ##  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMB] = LAYOUT_ergodox(
+        // left hand
+        KC_TRNS,   KC_A,        KC_B,        KC_C,        KC_D,           KC_E,        KC_F,
+        KC_TRNS,   KC_ASTR,     KC_7,        KC_8,        KC_9,           KC_ASTR,     UM_0x,
+        KC_TRNS,   KC_SLSH,     KC_4,        KC_5,        KC_6,           KC_SLSH,
+        KC_TRNS,   KC_MINS,     KC_1,        KC_2,        KC_3,           KC_MINS,     KC_TRNS,
+        KC_EQL,    KC_PLUS,     KC_0,        KC_COMM,     KC_DOT,
+                                                                            KC_TRNS,   KC_TRNS,
+                                                                                       KC_TRNS,
+                                                                 KC_TRNS,   KC_TRNS,   KC_TRNS,
+        // right hand
+             KC_A,      KC_B,        KC_C,        KC_D,           KC_E,           KC_F,           KC_TRNS,
+             UM_0x,     KC_ASTR,     KC_7,        KC_8,           KC_9,           KC_ASTR,        KC_TRNS,
+                        KC_SLSH,     KC_4,        KC_5,           KC_6,           KC_SLSH,        KC_TRNS,
+             KC_TRNS,   KC_MINS,     KC_1,        KC_2,           KC_3,           KC_MINS,        KC_TRNS,
+                                     KC_0,        KC_COMM,        KC_DOT,         KC_PLUS,        KC_EQL,
+           KC_TRNS,   KC_TRNS,
+           KC_TRNS,
+           KC_TRNS,   KC_TRNS,   KC_TRNS
+    ),
+/* Keymap 3: Cursor movement
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |         |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         | Home |      |  Up  |      | PgUp |      |           |      | PgUp |      |  Up  |      | Home |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         | End  | Left | Down | Right| PgDn |------|           |------| PgDn | Left | Down | Right| End  |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   ##    |  Up  |      | Down |  ##  |      |      |           |      |      |  ##  | Down |      |  Up  |   ##   |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Left  | Down | Right|      |      |                                       |      |      | Left | Down | Right|
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |  ##  |  ##  |------|       |------|  ##  |  ##  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[CRSR] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+        KC_NO,     KC_HOME,   KC_NO,     KC_UP,     KC_NO,     KC_PGUP,   KC_NO,
+        KC_NO,     KC_END,    KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_PGDN,
+        KC_TRNS,   KC_UP,     KC_NO,     KC_DOWN,   KC_TRNS,   KC_NO,     KC_NO,
+        KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_NO,     KC_NO,
+                                                                   KC_NO,     KC_NO,
+                                                                              KC_NO,
+                                                        KC_TRNS,   KC_TRNS,   KC_NO,
+        // right hand
+             KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+             KC_NO,     KC_PGUP,   KC_NO,     KC_UP,     KC_NO,     KC_HOME,   KC_NO,
+                        KC_PGDN,   KC_LEFT,   KC_DOWN,   KC_RGHT,   KC_END,    KC_NO,
+             KC_NO,     KC_NO,     KC_TRNS,   KC_DOWN,   KC_NO,     KC_UP,     KC_TRNS,
+                                   KC_NO,     KC_NO,     KC_LEFT,   KC_DOWN,   KC_RGHT,
+           KC_NO,   KC_NO,
+           KC_NO,
+           KC_NO,   KC_TRNS,   KC_TRNS
+    ),
+/* Keymap 4: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      | Lclk | MsUp | Rclk |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Lclk  | MsUp | Rclk |MsDown|      |  ##  |      |           |      |  ##  |      |MsDown| Lclk | MsUp | Rclk   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |MsLeft|MsDown|MsRight      |      |                                       |      |      |MsLeft|MsDown|MsRght|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[MOUS] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+        KC_NO,     KC_NO,     KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_NO,     KC_NO,
+        KC_NO,     KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,
+        KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_MS_D,   KC_NO,     KC_TRNS,   KC_NO,
+        KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,     KC_NO,
+                                                                   KC_NO,   KC_NO,
+                                                                            KC_NO,
+                                                          KC_NO,   KC_NO,   KC_NO,
+        // right hand
+             KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+             KC_NO,     KC_NO,     KC_BTN1,   KC_MS_U,   KC_BTN2,   KC_NO,     KC_NO,
+                        KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,   KC_NO,     KC_NO,
+             KC_NO,     KC_TRNS,   KC_NO,     KC_MS_D,   KC_BTN1,   KC_MS_U,   KC_BTN2,
+                                   KC_NO,     KC_NO,     KC_MS_L,   KC_MS_D,   KC_MS_R,
+           KC_NO,   KC_NO,
+           KC_NO,
+           KC_NO,   KC_NO,   KC_NO
+    ),
+/* Keymap 5: Keywords
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |         |      |      | scarf| sadf | smily|      |           |      | decaf|      |      |      |      |        |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         | const| volat| oper |  ret | tmpl |      |           |      | typen| cont |  prv |  pro | pub  |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |      |  str |  obj |      | gitl |------|           |------|      |      |      | nulp |      |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |      | extr |  cls | virt | break|      |           |      |namesp| goodm| goodn|      |      |        |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |       |      |  inc |      |      |                                       |      |      |      |      |      |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       | ecet | ecets|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |  ##  |       |  ##  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[KEYW] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,     KC_NO,     KC_NO,     UM_SCARF,  UM_SADF,   UM_SMILY,   KC_NO,
+        KC_NO,     UM_CONST,  UM_VOLAT,  UM_OPER,   UM_RET,    UM_TMPL,    KC_NO,
+        KC_NO,     KC_NO,     UM_STR,    UM_OBJ,    KC_NO,     UM_GITLOG,
+        KC_NO,     KC_NO,     UM_EXTR,   UM_CLS,    UM_VIRT,   UM_BREAK,   KC_NO,
+        KC_NO,     KC_NO,     UM_INC,    KC_NO,     KC_NO,
+                                                                   KC_NO,    KC_NO,
+                                                                             KC_NO,
+                                                          KC_NO,   KC_NO,    KC_TRNS,
+        // right hand
+             KC_NO,     UM_DECAF,  KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+             KC_NO,     UM_TYPN,   UM_CONT,   UM_PRV,    UM_PRO,    UM_PUB,    KC_NO,
+                        KC_NO,     KC_NO,     KC_NO,     UM_NULP,   KC_NO,     KC_NO,
+             KC_NO,     UM_NAMESP, UM_GOODM,  UM_GOODN,  KC_NO,     KC_NO,     KC_NO,
+                                   KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+           UM_ECET,  UM_ECETS,
+           KC_NO,
+           KC_TRNS,  KC_NO,   KC_NO
+    ),
+/* Keymap 6: emacs
+ *
+ * ,---------------------------------------------------.           ,--------------------------------------------------.
+ * |         |      |      |      |      |      | empb |           | emnb | emfs | emfb |      |      |      |        |
+ * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * |         | emtr |      |      |      |      |      |           |      | emun | emre | w-up |      |      |        |
+ * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |         |      | emwr |      |      |      |------|           |------|      |w-left|w-down|w-rght|      |        |
+ * |---------+------+------+------+------+------|  ##  |           |  ##  |------+------+------+------+------+--------|
+ * |         |      |      |      |      |      |      |           |      |      |      |w-down|      |      |        |
+ * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |       |      |      |      |      |                                       |      |      |      |      |      |
+ *   `-----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[EMAC] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     UM_EMPB,
+        KC_NO,     UM_EMTR,   KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+        KC_NO,     KC_NO,     UM_EMWR,   KC_NO,     KC_NO,     KC_NO,
+        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_TRNS,
+        KC_NO,     KC_NO,     KC_NO,     KC_NO,     KC_NO,
+                                                                   KC_NO,   KC_NO,
+                                                                            KC_NO,
+                                                          KC_NO,   KC_NO,   KC_NO,
+        // right hand
+             UM_EMNB,   UM_EMFS,  UM_EMFB,        KC_NO,          KC_NO,          KC_NO,     KC_NO,
+             KC_NO,     UM_EMUN,  UM_EMRE,        LSFT(KC_UP),    KC_NO,          KC_NO,     KC_NO,
+                        KC_NO,    LSFT(KC_LEFT),  LSFT(KC_DOWN),  LSFT(KC_RGHT),  KC_NO,     KC_NO,
+             KC_TRNS,   KC_NO,    KC_NO,          LSFT(KC_DOWN),  KC_NO,          KC_NO,     KC_NO,
+                                  KC_NO,          KC_NO,          KC_NO,          KC_NO,     KC_NO,
+           KC_NO,   KC_NO,
+           KC_NO,
+           KC_NO,   KC_NO,   KC_NO
+    ),
+};
+
+enum next_key_down_up {
+    NK_DOWN_UP,
+    NK_DOWN,
+    NK_UP // a bit of a hack, this works as long as NK_UP < KC_A
+};
+
+void send_keystrokes(uint8_t key, ...)
+{
+    va_list vl;
+    va_start(vl, key);
+    enum next_key_down_up nkdu = NK_DOWN_UP;
+    while (key != KC_NO) {
+        if (key < KC_A) {
+            nkdu = key;
+        } else {
+            switch (nkdu) {
+            case NK_DOWN_UP:
+                register_code(key);
+            case NK_UP:
+                unregister_code(key);
+                break;
+            case NK_DOWN:
+                register_code(key);
+            }
+            nkdu = NK_DOWN_UP;
+        }
+        key = va_arg(vl, int);
+    }
+    va_end(vl);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+    case 0: // { }
+        if (record->event.pressed) {
+            return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
+                         D(LSFT), T(RBRC), U(LSFT), T(UP),
+                         T(TAB), END);
+        }
+        break;
+    case 1:
+        if (record->event.pressed) {
+            return MACRO(T(0), T(X), END);
+        }
+        break;
+    case 2:
+        if (record->event.pressed) {
+            SEND_STRING("public");
+        }
+        break;
+    case 3:
+        if (record->event.pressed) {
+            SEND_STRING("protected");
+        }
+        break;
+    case 4:
+        if (record->event.pressed) {
+            SEND_STRING("private");
+        }
+        break;
+    case 5: // class
+        if (record->event.pressed) {
+            return MACRO(T(C), T(L), T(A), T(S), T(S), T(ENT),
+                         D(LSFT), T(LBRC), U(LSFT), T(ENT),
+                         T(P), T(U), T(B), T(L), T(I), T(C),
+                         D(LSFT), T(SCLN), U(LSFT), T(ENT), T(ENT),
+                         T(P), T(R), T(I), T(V), T(A), T(T), T(E),
+                         D(LSFT), T(SCLN), U(LSFT), T(ENT),
+                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
+                         T(UP), T(UP), T(UP), T(UP), T(UP), T(UP), T(UP),
+                         T(END), T(SPC), END);
+        }
+        break;
+    case 6: // struct
+        if (record->event.pressed) {
+            return MACRO(T(S), T(T), T(R), T(U), T(C), T(T), T(ENT),
+                         D(LSFT), T(LBRC), U(LSFT), T(ENT),
+                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
+                         T(UP), T(UP), T(UP), T(UP),
+                         T(END), T(SPC), END);
+        }
+        break;
+    case 7:
+        if (record->event.pressed) {
+            SEND_STRING("return");
+        }
+        break;
+    case 8: // #include
+        if (record->event.pressed) {
+            return MACRO(T(NONUS_HASH), T(I), T(N), T(C), T(L), T(U), T(D), T(E), END);
+        }
+        break;
+    case 9:
+        if (record->event.pressed) {
+            SEND_STRING("objdump -CT -x -d");
+        }
+        break;
+    case 10:
+        if (record->event.pressed) {
+            SEND_STRING("git log --oneline --graph --decorate=short");
+        }
+        break;
+    case 11:
+        if (record->event.pressed) {
+            SEND_STRING("good morning");
+        }
+        break;
+    case 12:
+        if (record->event.pressed) {
+            SEND_STRING("namespace");
+        }
+        break;
+    case 14: // emacs toggle read-only
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), T(Q), U(LCTL), END);
+        }
+        break;
+    case 15: // emacs write buffer
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), T(S), U(LCTL), END);
+        }
+        break;
+    case 16: // emacs undo
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), D(LSFT), T(MINS), U(LSFT), U(LCTL), END);
+        }
+        break;
+    case 17: // emacs redo
+        if (record->event.pressed) {
+            return MACRO(D(LALT), D(LSFT), T(MINS), U(LSFT), U(LALT), END);
+        }
+        break;
+    case 18: // emacs previous buffer
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), U(LCTL), T(LEFT), END);
+        }
+        break;
+    case 19: // emacs next buffer
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), U(LCTL), T(RGHT), END);
+        }
+        break;
+    case 20:
+        if (record->event.pressed) {
+            SEND_STRING("good night");
+        }
+        break;
+    case 22: // { };
+        if (record->event.pressed) {
+            return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
+                         D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(UP),
+                         T(TAB), END);
+        }
+        break;
+    case 23:
+        if (record->event.pressed) {
+            SEND_STRING("template");
+        }
+        break;
+    case 24:
+        if (record->event.pressed) {
+            SEND_STRING("typename");
+        }
+        break;
+    case 25:
+        if (record->event.pressed) {
+            SEND_STRING("continue");
+            return MACRO(T(SCLN), END);
+        }
+        break;
+    case 26:
+        if (record->event.pressed) {
+            SEND_STRING("break");
+            return MACRO(T(SCLN), END);
+        }
+        break;
+    case 27:
+        if (record->event.pressed) {
+            SEND_STRING("const");
+        }
+        break;
+    case 28:
+        if (record->event.pressed) {
+            SEND_STRING(":-)");
+        }
+        break;
+    case 29:
+        if (record->event.pressed) {
+            SEND_STRING(":-(");
+        }
+        break;
+    case 30: // dazed
+        if (record->event.pressed) {
+            send_keystrokes(NK_DOWN, KC_LSFT, KC_8, KC_MINS, KC_8, NK_UP, KC_LSFT, KC_NO);
+        }
+        break;
+    case 31: // decaf
+        if (record->event.pressed) {
+            send_keystrokes(NK_DOWN, KC_LSFT, KC_C, KC_9, KC_MINS, KC_0, NK_UP, KC_LSFT, KC_NO);
+        }
+        break;
+    case 32:
+        if (record->event.pressed) {
+            SEND_STRING("operator");
+        }
+        break;
+    case 33:
+        if (record->event.pressed) {
+            SEND_STRING("nullptr");
+        }
+        break;
+    case 34:
+        if (record->event.pressed) {
+            SEND_STRING("extern");
+        }
+        break;
+    case 35:
+        if (record->event.pressed) {
+            SEND_STRING("virtual");
+        }
+        break;
+    case 36: // emacs font smaller
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), T(EQL), U(LCTL), END);
+        }
+        break;
+    case 37:  // emacs font bigger
+        if (record->event.pressed) {
+            return MACRO(D(LCTL), T(X), T(MINS), U(LCTL), END);
+        }
+        break;
+    case 38:
+        if (record->event.pressed) {
+            SEND_STRING("volatile");
+        }
+        break;
+    }
+    return MACRO_NONE;
+}
+
+LEADER_EXTERNS();
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    LEADER_DICTIONARY() {
+        leading = false;
+        leader_end();
+
+        SEQ_TWO_KEYS(KC_G, KC_A) {
+            SEND_STRING("git add .");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_D) {
+            SEND_STRING("git diff");
+        }
+        SEQ_THREE_KEYS(KC_G, KC_D, KC_S) {
+            SEND_STRING("git diff --staged");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_L) {
+            SEND_STRING("git log");
+        }
+        SEQ_THREE_KEYS(KC_G, KC_L, KC_O) {
+            SEND_STRING("git log --oneline");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_F) {
+            SEND_STRING("git fetch");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_O) {
+            SEND_STRING("git checkout");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_P) {
+            SEND_STRING("git pull");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_S) {
+            SEND_STRING("git status");
+        }
+        SEQ_TWO_KEYS(KC_G, KC_C) {
+            SEND_STRING("git commit -m ''");
+            send_keystrokes(KC_LEFT, KC_NO);
+        }
+        SEQ_THREE_KEYS(KC_G, KC_C, KC_A) {
+            SEND_STRING("git commit --amend");
+        }
+
+        SEQ_TWO_KEYS(KC_C, KC_C) {
+            SEND_STRING("const_cast<>");
+            send_keystrokes(KC_LEFT, KC_NO);
+        }
+        SEQ_TWO_KEYS(KC_C, KC_D) {
+            SEND_STRING("dynamic_cast<>");
+            send_keystrokes(KC_LEFT, KC_NO);
+        }
+        SEQ_TWO_KEYS(KC_C, KC_R) {
+            SEND_STRING("reinterpret_cast<>");
+            send_keystrokes(KC_LEFT, KC_NO);
+        }
+        SEQ_TWO_KEYS(KC_C, KC_S) {
+            SEND_STRING("static_cast<>");
+            send_keystrokes(KC_LEFT, KC_NO);
+        }
+
+        SEQ_ONE_KEY(KC_SLSH) {
+            send_keystrokes(KC_SLSH, NK_DOWN, KC_LSFT, KC_8, KC_8, NK_UP, KC_LSFT, KC_ENT,
+                            NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_ENT,
+                            NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_SLSH, KC_UP, KC_END, KC_SPC,
+                            KC_NO);
+        }
+    }
+}
diff --git a/layouts/community/ergodox/albert/readme.md b/layouts/community/ergodox/albert/readme.md
new file mode 100644 (file)
index 0000000..e20e047
--- /dev/null
@@ -0,0 +1,188 @@
+# ErgoDox EZ Configuration for typing like a boss.
+
+This layout has 7 layers:
+0. Base layers
+1. Symbols and F-keys
+2. Number pad (with hexadecimal)
+3. Cursor keys
+4. Mouse movement and clicks
+5. Keyword macros
+6. Emacs
+
+There are also some leader keys defined for frequently used commands (git etc).
+
+## The layers
+
+Double hashes (`##`) indicate transparent keys (`KC_TRNS`) and blanks indicate no key (`KC_NO`).
+
+### 0. Base layer
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+| ESC    |   1  |   2  |   3  |   4  |   5  | SfLt |           | SfRt |   6  |   7  |   8  |   9  |   0  | BkSp   |
+|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
+| Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  | Del    |
+|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+| Caps/L2|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |Enter/L2|
+|--------|------|------|------|------|------|  L6  |           |  L6  |------|------|------|------|------|--------|
+| LSft/( |   Z  |   X  |   C  | V/L3 | B/L4 |      |           |      | N/L4 | M/L3 |   ,  |   .  |   /  | RSft/) |
+`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |Ctrl/[| Alt/]|   #  | Left |Right |                                       |  Up  | Down |   -  | Alt/[|Ctrl/]|
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |  L2  | lead |       | lead |  Ins |
+                                ,------|------|------|       |------|------|------.
+                                | Space| BkSp | Home |       | PgUp | Enter|Space |
+                                |  /   |  /   |------|       |------|   /  |  /   |
+                                | Ctrl | Alt  |End/L5|       |PDn/L5|  Alt | Ctrl |
+                                `--------------------'       `--------------------'
+```
+
+Space Cadet shift is enabled. Ctrl and Alt doubles up as normal keys when tapped.  
+SfLt and SfRt sends Shift + left and Shift + Right respectively - for use with emacs with `windmove-default-keybindings`.  
+Caps and Enter may be held down to activate layer 2 (hexadecimal number pad).  
+Please see `matrix_scan_user` function in `keymap.c` for list of commands available via `lead` key.
+
+### 1. Symbols and F-keys
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   ##   |  F1  |  F2  |  F3  |  F4  |  F5  |  ##  |           |  ##  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+|--------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
+|   ##   |   !  |   "  |   £  |   $  |   %  |  ##  |           |  ##  |   -  |   +  |   =  |   @  |   ~  |   F12  |
+|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|   ##   |   ^  |   &  |   *  |   _  |   #  |------|           |------|   {  |   }  |   ;  |   '  |   #  |   ##   |
+|--------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
+|   ##   |   \  |   |  |   `  |   -  |   /  |      |           |      |   [  |   ]  |   <  |   >  |   ?  |   ##   |
+`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |  ##  |  ##  |  ##  |  ##  |  ##  |                                       |  ##  |  ##  |  ##  |  ##  |  ##  |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |  ##  |  ##  |       |  ##  |  ##  |
+                                ,------|------|------|       |------|------|------.
+                                |      |      |  ##  |       |  ##  |      |      |
+                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
+                                |      |      |  ##  |       |  ##  |      |      |
+                                `--------------------'       `--------------------'
+```
+
+### 2. Number pad (with hexadecimal)
+
+```
+,---------------------------------------------------.           ,--------------------------------------------------.
+|   ##    |  A   |  B   |  C   |  D   |  E   |  F   |           |  A   |  B   |  C   |  D   |   E  |   F  |   ##   |
+|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
+|   ##    |  *   |  7   |  8   |  9   |  *   |  0x  |           |  0x  |  *   |   7  |   8  |   9  |   *  |   ##   |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|   ##    |  /   |  4   |  5   |  6   |  /   |------|           |------|  /   |   4  |   5  |   6  |   /  |   ##   |
+|---------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
+|   ##    |  -   |  1   |  2   |  3   |  -   |      |           |      |  -   |   1  |   2  |   3  |   -  |   ##   |
+`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |   =   |  +   |  0   |  ,   |  .   |                                       |   0  |   ,  |   .  |   +  |  =   |
+  `-----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |  ##  |  ##  |       |  ##  |  ##  |
+                                ,------|------|------|       |------|------|------.
+                                |      |      |  ##  |       |  ##  |      |      |
+                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
+                                |      |      |  ##  |       |  ##  |      |      |
+                                `--------------------'       `--------------------'
+```
+
+### 3. Cursor keys
+
+```
+,---------------------------------------------------.           ,--------------------------------------------------.
+|         |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
+|         | Home |      |  Up  |      | PgUp |      |           |      | PgUp |      |  Up  |      | Home |        |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|         | End  | Left | Down | Right| PgDn |------|           |------| PgDn | Left | Down | Right| End  |        |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|   ##    |  Up  |      | Down |  ##  |      |      |           |      |      |  ##  | Down |      |  Up  |   ##   |
+`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  | Left  | Down | Right|      |      |                                       |      |      | Left | Down | Right|
+  `-----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------|------|------.
+                                |      |      |      |       |      |      |      |
+                                |  ##  |  ##  |------|       |------|  ##  |  ##  |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+
+### 4. Mouse movement and clicks
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
+|        |      | Lclk | MsUp | Rclk |      |      |           |      |      | Lclk | MsUp | Rclk |      |        |
+|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
+|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|  Lclk  | MsUp | Rclk |MsDown|      |  ##  |      |           |      |  ##  |      |MsDown| Lclk | MsUp | Rclk   |
+`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |MsLeft|MsDown|MsRight      |      |                                       |      |      |MsLeft|MsDown|MsRght|
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------|------|------.
+                                |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+
+### 5. Keyword macros
+
+```
+,---------------------------------------------------.           ,--------------------------------------------------.
+|         |      |      | scarf| sadf | smily|      |           |      | decaf|      |      |      |      |        |
+|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
+|         | const| volat| oper |  ret | tmpl |      |           |      | typen| cont |  prv |  pro | pub  |        |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|         |      |  str |  obj |      | gitl |------|           |------|      |      |      | nulp |      |        |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|         |      | extr |  cls | virt | break|      |           |      |namesp| goodm| goodn|      |      |        |
+`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |       |      |  inc |      |      |                                       |      |      |      |      |      |
+  `-----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       | ecet | ecets|
+                                ,------|------|------|       |------|------|------.
+                                |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |  ##  |       |  ##  |      |      |
+                                `--------------------'       `--------------------'
+```
+Please see `keymap.c` for the keywords/commands.
+Some are const, volatile, operator, return, template, typename, continue, private,
+protected, public, struct, class, extern, virtual, break, namespace.
+Also a git log command I use a lot (`git log --oneline --graph --decorate=short` (I know git can be configured but that is boring)).
+
+### 6. Emacs
+
+```
+,---------------------------------------------------.           ,--------------------------------------------------.
+|         |      |      |      |      |      | empb |           | emnb | emfs | emfb |      |      |      |        |
+|---------|------|------|------|------|------|------|           |------|------|------|------|------|------|--------|
+|         | emtr |      |      |      |      |      |           |      | emun | emre | w-up |      |      |        |
+|---------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|         |      | emwr |      |      |      |------|           |------|      |w-left|w-down|w-rght|      |        |
+|---------|------|------|------|------|------|  ##  |           |  ##  |------|------|------|------|------|--------|
+|         |      |      |      |      |      |      |           |      |      |      |w-down|      |      |        |
+`---------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |       |      |      |      |      |                                       |      |      |      |      |      |
+  `-----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------|------|------.
+                                |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+Some emacs shortcuts like toggle read/write mode (emtr), write file (emwr), previous-buffer (empb),
+next-buffer (emnb), smaller font(emfs), larger font (emfb), undo (emun), redo (emre) and switching between windows in a frame.
diff --git a/layouts/community/ergodox/albert/rules.mk b/layouts/community/ergodox/albert/rules.mk
new file mode 100644 (file)
index 0000000..fcd019e
--- /dev/null
@@ -0,0 +1,3 @@
+COMMAND_ENABLE = no        # Commands for debug and configuration
+
+
diff --git a/layouts/community/ergodox/alexjj/keymap.c b/layouts/community/ergodox/alexjj/keymap.c
new file mode 100644 (file)
index 0000000..5127b93
--- /dev/null
@@ -0,0 +1,238 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define UNIC 3 // unicode entry layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
+ * |--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
+ * | Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
+ * |--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
+ * | LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *   Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | PgUp |       | Ins  |      |      |
+ *                                 | Enter| BkSp |------|       |------| ~L1  |Space |
+ *                                 |      |      | PgDn |       | Del  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
+        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_HOME,
+        KC_LCTRL,       LCTL(KC_C), LCTL(KC_V),  KC_LEFT,KC_RGHT,
+                                                      KC_FN3,  KC_F5,
+                                                              KC_PGUP,
+                                               KC_ENT,KC_BSPC,KC_PGDN,
+        // right hand
+             KC_7,     KC_8,   KC_9,   KC_0,   KC_MINS,   KC_EQL,        KC_BSPC,
+             KC_RBRC,  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
+             KC_END,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,   KC_RSFT,
+             KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV,   KC_RCTRL,
+             KC_F2, KC_FN2,
+             KC_INS,
+             KC_DELT,KC_FN1, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
+ *   `----------------------------------'                                       `----------------------------------'
+ *              ↑                         ,-------------.       ,-------------.
+ *           THERE!                       |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *    CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       | CAD  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_F7, KC_F8,   KC_F9,  KC_F10,   KC_F11,   KC_F12,  KC_PSCR,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  LALT(KC_F4),
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+/* Keymap 3: Unicode Entry
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *      WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |  Alt |  Alt |------|       |------|  Alt | Alt  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[UNIC] = LAYOUT_ergodox(  // layer 3 : Unicode Entry
+        // left hand
+       KC_LALT,       KC_P1,      KC_P2,      KC_P3,  KC_P4,     KC_P5,   KC_P6,
+      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_E,   KC_TRNS,   KC_TRNS, KC_TRNS,
+      KC_LALT,       KC_A,       KC_TRNS,    KC_D,   KC_F,      KC_TRNS,
+      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_C,   KC_TRNS,   KC_B,    KC_TRNS,
+      KC_LALT,       KC_LALT,    KC_LALT,    KC_TRNS,KC_TRNS,
+                                                     KC_TRNS,   KC_TRNS,
+                                                                KC_TRNS,
+                                             KC_LALT,KC_LALT,   KC_TRNS,
+        // right hand
+           KC_P7,    KC_P8,     KC_P9,   KC_P0,   KC_PPLS,KC_PPLS,      KC_TRNS,
+           KC_TRNS,  KC_TRNS,   KC_P7,   KC_P8,   KC_P9,  KC_PPLS,      KC_TRNS,
+                     KC_TRNS,   KC_P4,   KC_P5,   KC_P6,  KC_PPLS,      KC_TRNS,
+           KC_TRNS,  KC_TRNS,   KC_P1,   KC_P2,   KC_P3,  KC_PPLS,      KC_TRNS,
+                                KC_P0,   KC_P0,   KC_P0,  KC_PPLS,      KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS,KC_LALT, KC_LALT
+                  ),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),                // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_LAYER_TAP_TOGGLE(MDIA),                // FN2 - Momentary Layer 2 (Media)
+    [3] = ACTION_LAYER_TAP_TOGGLE(UNIC)                 // FN3 - Momentary Layer 3 (Unicode entry)
+}; 
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+      case 3: // this would trigger when you hit a key mapped as M(3)
+        if (record->event.pressed) {
+          return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), U(LALT), END  );
+      }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/alexjj/readme.md b/layouts/community/ergodox/alexjj/readme.md
new file mode 100644 (file)
index 0000000..4845cbb
--- /dev/null
@@ -0,0 +1,179 @@
+Englishman in New York
+===========================
+
+:microphone: :tea:
+
+About
+------
+
+After using the massdrop configurator to get the basics, I wanted to add a
+little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
+and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
+layout? Well the computers I use are US keymap'd and I can't always change
+that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
+enough. :sweat_smile:
+
+I started from the default and edited from there as I needed. It's somewhat
+similar to a regular layout, particularly R1 and shift/controls. I ended up
+with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
+quitting things in Windows, is one example, but I felt it was better placed on 
+the 1st layer - in case of fat fingers.
+
+Layout
+-------
+
+![Layout](https://i.imgur.com/4bDwHLS.jpg "Isn't it lovely")
+
+### Base Layer
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
+|--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
+| Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
+|--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
+| LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+  Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
+                                ,------|------|------|       |------+------+------.
+                                |      |      | PgUp |       | Ins  |      |      |
+                                | Enter| BkSp |------|       |------| ~L1  |Space |
+                                |      |      | PgDn |       | Del  |      |      |
+                                `--------------------'       `--------------------'
+``` 
+
+### Symbol Layer
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
+  `----------------------------------'                                       `----------------------------------'
+             ↑                         ,-------------.       ,-------------.
+          THERE!                       |      |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+   CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |      |       | CAD  |      |      |
+                                `--------------------'       `--------------------'
+```
+### Media Layer
+
+Not touched this, not used either.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+| TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |Brwser|
+                                |      |      |------|       |------|      |Back  |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+### Unicode Layer
+
+Used to enter/test unicode input on Windows. All numbers are numpad keys.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+     WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |      |
+                                |  Alt |  Alt |------|       |------|  Alt | Alt  |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+
+
+Usage
+------
+
+~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
+If pressed and released will remain on layer until pressed again.
+
+### Unicode
+
+This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
+
+Changelog
+-----------
+
+### [0.2.1] - 2016-04-05
+
+* Changed £ to alt code in Windows. Windows sucks at unicode.
+
+### [0.2.0] - 2016-03-27
+
+* Added unicode layer
+* Moved Copy/Paste to left hand side
+* Switched Enter and Space (again)
+* Added L3 (unicode layer) toggle
+* Removed Press and Hold for Alt on right hand size (/)
+* Swapped Volume Up/Down to match arrows
+* Tried fixing £ macro
+* Removed * in the matrix function things (upstream change)
+
+### [0.1.1] - 2016-03-23
+
+* Changed £ input to a macro
+
+
+### [0.1.0] - 2016-03-22
+
+After actually using the keyboard, I've made some changes:
+
+* Swapped Enter and Space
+* Moved backspace to thumb keys (top right still remains)
+* Added Ctrl+Alt+Delete
+* Added Teensy Reset on 2nd layer
+* Switched Up and Down
+* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
+* Moved ~L2 to replace +L1 after learning how the function works (notes above)
+* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
+
+### [0.0.1] - 2016-03-21
+
+First version
+
+
+Issues
+-------
+
+Space for feedback and notes for future improvements
+
+----
+<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
diff --git a/layouts/community/ergodox/algernon/COPYING b/layouts/community/ergodox/algernon/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/layouts/community/ergodox/algernon/NEWS.md b/layouts/community/ergodox/algernon/NEWS.md
new file mode 100644 (file)
index 0000000..ee9d606
--- /dev/null
@@ -0,0 +1,189 @@
+<!-- -*- mode: markdown; fill-column: 8192 -*- -->
+
+## v1.10
+
+*2016-12-28*
+
+### Miscellaneous
+
+* `µ` can now be entered with UCIS.
+* `™` can now be entered with UCIS.
+
+### Tools
+
+* `tools/hid-commands` can now find Banshee, and prefers it over Kodi.
+* `tools/hid-commands` can now find Chrome too, not juts Chromium.
+
+## v1.9
+
+*2016-10-16*
+
+### Overall changes
+
+* `F12` was replaced by an `Fx` key, that activate the **Media** layer as a one-shot layer, and also `Alt` as a one-shot modifier.
+
+### Base layer changes
+
+* The `Media Stop` key is now a tap-dance key, and resets the device for programming on the fourth tap.
+
+### Miscellaneous
+
+* `π` can now be entered with UCIS.
+* `🐁` can now be entered with UCIS.
+
+### Tools
+
+* The `tools/layer-notify` tool was removed, it was an example, which I don't use.
+
+#### `tools/hid-commands`
+
+* Now looks at the `DISABLE_APPSEL_START` environment value, and does not display an AppSel notification if it is non-empty.
+* Will attempt to re-program the keyboard when receiving a `reflash` command.
+* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes for any Emacs.
+* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the last choice.
+
+## v1.8
+
+*2016-10-03*
+
+### ADORE
+
+* Major rearrangements were made, to reduce pinky use, and to balance out the hand usage.
+
+### Tools
+
+* The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered.
+* The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned.
+
+### Miscellaneous
+
+* Fixed the **Steno** toggle key.
+
+## v1.7
+
+*2016-09-18*
+
+### Overall changes
+
+* The number row has been completely rearranged on both the **Base** and the **ADORE** layers.
+* The number/function key behavior was changed: function keys are now on the **Media**.
+* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the **Base** and **ADORE** layers.
+* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped.
+* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it.
+
+### ADORE
+
+* `Y` and `X` have been swapped again.
+
+### Media/Navigation layer
+
+* The function keys are now on this layer.
+* Mouse keys have been removed.
+* Media start/stop/prev/next have been removed.
+* `Print screen` has been removed.
+* There is only one screen lock key now.
+
+### Heatmap
+
+* Fixed a few issues in the finger-stats calculation.
+* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool.
+* The heatmap tool will now colorize the stats by default.
+* The periodic stats are now printed in a more compact format.
+
+### Tools
+
+* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes.
+* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator.
+* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side.
+
+## v1.6
+
+*2016-08-24*
+
+### Base layer changes
+
+* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`.
+* The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`.
+* The `Apps` key has been replaced by `F12`.
+* The `-`/`_` is no longer a tap-dance key.
+
+### ADORE layer changes
+
+* Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations.
+
+### Miscellaneous changes
+
+* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one.
+* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off.
+* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now.
+
+### Heatmap
+
+* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off.
+* The heatmap generator received a lot of updates.
+
+## v1.5
+
+*2016-08-12*
+
+* The **1HAND** layer has been removed.
+* A `Delete` key is now available on the right thumb cluster.
+* The **ADORE** layer received a major update, see the layout image above.
+* It is now possible to enable automatic logging for the **ADORE** layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default.
+* The `~` key and the `Media Next/Prev` key have been swapped on the **Base** layer.
+* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
+* There is some experimental support for entering Unicode symbols.
+
+## v1.4
+
+*2016-07-29*
+
+* When toggling the key logging on or off, the LEDs will do a little dance.
+* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
+* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
+* The `-`/`_` key was turned into a tap-dance key too.
+* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
+
+## v1.3
+
+*2016-07-06*
+
+* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a *heatmap* out of the logs.
+* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the **Base** layer for an image that shows where arrows are.
+* The **experimental** layer has been redone, and is now called **ADORE**, and as such, can be enabled by `LEAD a` now.
+* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
+
+## v1.2
+
+*2016-06-22*
+
+* The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with certain operating systems.
+* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted.
+* The `=` and `\` keys were swapped, `=` moved to the home row, on both the **Base** and the **experimental** layers.
+* The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access.
+* The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer.
+* `LEAD v` types the firmware version, and the keymap version.
+* On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped.
+* The **Steno** layer gained a few more `#` and `*` keys, to make it easier on my fingers.
+
+## v1.1
+
+*2016-06-14*
+
+* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
+* A **Steno** layer was added, to be used with Plover.
+* An **experimental** layer was added, something halfway between Dvorak and Capewell-Dvorak. A work in progress.
+* `LEAD y` types `\o/`.
+* Some keys on the **Base** layer have been moved around:
+    - `?` moved to the left pinky, left of `Q`.
+    - `=` shifted one row down, but `F11` stayed where it was.
+    - `-` on the left half was replaced by `Tab`.
+    - `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
+    - `:` now inputs `;` when shifted.
+* `ESC` cancels the **Hungarian** layer too, not just modifiers.
+
+## v1.0
+
+*2016-05-26*
+
+Initial version.
diff --git a/layouts/community/ergodox/algernon/config.h b/layouts/community/ergodox/algernon/config.h
new file mode 100644 (file)
index 0000000..8c115e2
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef CONFIG_ALGERNON_H
+#define CONFIG_ALGERNON_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#undef MOUSEKEY_TIME_TO_MAX
+#undef MOUSEKEY_MAX_SPEED
+
+#define MOUSEKEY_TIME_TO_MAX 1
+#define MOUSEKEY_MAX_SPEED 2
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_DELAY
+#define MOUSEKEY_WHEEL_DELAY 0
+
+#define ONESHOT_TAP_TOGGLE 2
+#define ONESHOT_TIMEOUT 3000
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+#undef LEADER_TIMEOUT
+#define LEADER_TIMEOUT 1000
+
+#endif
diff --git a/layouts/community/ergodox/algernon/keymap.c b/layouts/community/ergodox/algernon/keymap.c
new file mode 100644 (file)
index 0000000..8be5498
--- /dev/null
@@ -0,0 +1,1108 @@
+/*
+ * algernon's ErgoDox EZ layout, please see the readme.md file!
+ */
+
+#include <stdarg.h>
+#include QMK_KEYBOARD_H
+#include "led.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+#include "timer.h"
+#include "keymap_plover.h"
+#include "eeconfig.h"
+#include "wait.h"
+#include "version.h"
+
+/* Layers */
+
+enum {
+  BASE = 0,
+  ADORE,
+  ARRW,
+  APPSEL,
+  HUN,
+  NMDIA,
+  PLVR,
+};
+
+/* Macros */
+
+enum {
+  NONE = 0,
+  // Buttons that do extra stuff
+  A_GUI,
+  A_PLVR,
+  A_MPN,
+
+  // Application select keys
+  APP_SLK, // Slack
+  APP_EMCS, // Emacs
+  APP_TERM, // Terminal
+  APP_CHRM, // Chrome
+  APP_MSIC, // Music
+
+  // Hungarian layer keys
+  HU_AA, // Á
+  HU_OO, // Ó
+  HU_EE, // É
+  HU_UU, // Ú
+  HU_II, // Í
+  HU_OE, // Ö
+  HU_UE, // Ü
+  HU_OEE, // Ő
+  HU_UEE, // Ű
+
+  // number/symbol keys
+  A_1, // 1
+  A_2, // 2
+  A_3, // ...
+  A_4,
+  A_5,
+  A_6,
+  A_7,
+  A_8,
+  A_9,
+  A_0,
+
+  // Fx
+  Fx,
+};
+
+/* Fn keys */
+
+enum {
+  F_BSE = 0,
+  F_HUN,
+  F_GUI,
+  F_SFT,
+  F_ALT,
+  F_CTRL
+};
+
+/* Custom keycodes */
+
+enum {
+  CT_CLN = 0,
+  CT_TA,
+  CT_LBP,
+  CT_RBP,
+  CT_TMUX,
+  CT_TPS,
+  CT_SR,
+};
+
+/* States & timers */
+
+uint16_t gui_timer = 0;
+
+#if KEYLOGGER_ENABLE
+# ifdef AUTOLOG_ENABLE
+bool log_enable = true;
+# else
+bool log_enable = false;
+# endif
+#endif
+
+bool time_travel = false;
+bool skip_leds = false;
+
+static uint8_t is_adore = 0;
+
+/* The Keymap */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Keymap 0: Base Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * | Next/Prev | 9    | 7  @ | 5  * | 3  ^ | 1  $ | F11  |           |  Fx  | 0  % | 2  ! | 4  # | 6  & | 8    |    Plover |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |         ~ |   '  |   ,  |   .  |   P  |   Y  |   (  |           |  )   |   F  |   G  |   C  |   R  |  L   | \         |
+ * |-----------+------+------+------+------+------|   [  |           |  ]   |------+------+------+------+------+-----------|
+ * | Tab/ARROW |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |  S   | = / Arrow |
+ * |-----------+------+------+------+------+------| tmux |           | tmux |------+------+------+------+------+-----------|
+ * | Play/Pause|   /  |   Q  |   J  |   K  |   X  |      |           | Pane |   B  |   M  |   W  |   V  |  Z   | Stop/Reset|
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | LAlt | GUI  |           | MDIA | Del  |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | Ctrl |           | LEAD |      |      |
+ *                                  |Backsp|LShift|------|           |------| Enter| Space|
+ *                                  |      |      | ESC  |           | HUN  |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+// left hand
+ M(A_MPN)           ,M(A_9)      ,M(A_7)      ,M(A_5)  ,M(A_3)  ,M(A_1)  ,KC_F11
+,KC_GRV             ,KC_QUOT     ,KC_COMM     ,KC_DOT  ,KC_P    ,KC_Y    ,TD(CT_LBP)
+,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E    ,KC_U    ,KC_I
+,KC_MPLY            ,KC_SLSH     ,KC_Q        ,KC_J    ,KC_K    ,KC_X    ,TD(CT_TMUX)
+,KC_NO              ,KC_NO       ,KC_NO       ,KC_NO   ,TD(CT_CLN)
+
+                                                            ,F(F_ALT),F(F_GUI)
+                                                                     ,F(F_CTRL)
+                                                    ,KC_BSPC,F(F_SFT),KC_ESC
+
+                                                                // right hand
+                                                               ,M(Fx)     ,M(A_0)  ,M(A_2)    ,M(A_4)  ,M(A_6)  ,M(A_8)   ,M(A_PLVR)
+                                                               ,TD(CT_RBP),KC_F    ,KC_G      ,KC_C    ,KC_R    ,KC_L     ,KC_BSLS
+                                                                          ,KC_D    ,KC_H      ,KC_T    ,KC_N    ,KC_S     ,KC_EQL
+                                                               ,TD(CT_TPS),KC_B    ,KC_M      ,KC_W    ,KC_V    ,KC_Z     ,TD(CT_SR)
+                                                                                   ,KC_MINS   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+
+                                                               ,OSL(NMDIA),KC_DEL
+                                                               ,KC_LEAD
+                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
+    ),
+
+/* Keymap 1: Adore layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * | Play/Pause| 9    | 7  @ | 5  * | 3  ^ | 1  $ | F11  |           |  Fx  | 0  % | 2  ! | 4  # | 6  & | 8    |    Plover |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |         \ |   X  |   W  |   C  |   H  |   F  |   (  |           |  )   |   M  |   G  |   L  |   P  |  /   | `~        |
+ * |-----------+------+------+------+------+------|   [  |           |  ]   |------+------+------+------+------+-----------|
+ * | Tab/Arrow |   A  |   O  |   E  |   I  |   U  |------|           |------|   D  |   R  |   T  |   N  |  S   | =         |
+ * |-----------+------+------+------+------+------| tmux |           | tmux |------+------+------+------+------+-----------|
+ * |           |   Z  |   Q  |   '  |   ,  |   .  |      |           | pane |   B  |   K  |   V  |   Y  |  J   |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | LAlt | GUI  |           | MDIA | Del  |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | Ctrl |           | HUN  |      |      |
+ *                                  |Backsp|LShift|------|           |------| Enter| Space|
+ *                                  |      |      | ESC  |           | LEAD |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[ADORE] = LAYOUT_ergodox(
+// left hand
+ KC_MPLY            ,M(A_9)      ,M(A_7)      ,M(A_5)  ,M(A_3)  ,M(A_1) ,KC_F11
+,KC_BSLS            ,KC_X        ,KC_W        ,KC_C    ,KC_H    ,KC_F   ,TD(CT_LBP)
+,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E    ,KC_I    ,KC_U
+,KC_NO              ,KC_Z        ,KC_Q        ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX)
+,KC_NO              ,KC_NO       ,KC_NO       ,KC_NO   ,TD(CT_CLN)
+
+                                                            ,F(F_ALT),F(F_GUI)
+                                                                     ,F(F_CTRL)
+                                                    ,KC_BSPC,F(F_SFT),KC_ESC
+
+                                                                // right hand
+                                                               ,M(Fx)     ,M(A_0)   ,M(A_2)  ,M(A_4)  ,M(A_6)  ,M(A_8)  ,M(A_PLVR)
+                                                               ,TD(CT_RBP),KC_M     ,KC_G    ,KC_L    ,KC_P    ,KC_SLSH ,KC_GRV
+                                                                          ,KC_D     ,KC_R    ,KC_T    ,KC_N    ,KC_S    ,KC_EQL
+                                                               ,TD(CT_TPS),KC_B     ,KC_K    ,KC_V    ,KC_Y    ,KC_J    ,KC_NO
+                                                                                    ,KC_MINS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+
+                                                               ,OSL(NMDIA),KC_DEL
+                                                               ,F(F_HUN)
+                                                               ,KC_LEAD   ,KC_ENT ,KC_SPC
+    ),
+
+/* Keymap 2: Arrow layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      | Home |  Up  |  End |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |------|           |------|      | Left | Down | Rght |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  | Enter|      |------|           |------| PgUp | PgDn |
+ *                                  |      |      |      |           |      |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+
+[ARRW] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS
+
+                                             ,KC_TRNS ,KC_TRNS
+                                                      ,KC_TRNS
+                                    ,KC_ENT  ,KC_TRNS ,KC_TRNS
+
+                                                                // right hand
+                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                               ,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_UP   ,KC_END  ,KC_TRNS ,KC_TRNS
+                                                                        ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_TRNS ,KC_TRNS
+                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                                                 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+                                                               ,KC_TRNS ,KC_TRNS
+                                                               ,KC_TRNS
+                                                               ,KC_TRNS ,KC_PGUP ,KC_PGDN
+    ),
+
+/* Keymap 3: Application select layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |Music |Slack |Emacs |Term  |Chrome|      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  |      |      |------|           |------|      |      |
+ *                                  |      |      |      |           |      |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+
+[APPSEL] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS    ,KC_TRNS    ,KC_TRNS
+,KC_TRNS ,KC_TRNS    ,KC_TRNS   ,KC_TRNS    ,KC_TRNS
+
+                                             ,KC_TRNS ,KC_TRNS
+                                                      ,KC_TRNS
+                                    ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+                                                                // right hand
+                                                               ,KC_TRNS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_TRNS
+                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                                        ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                               ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                                                 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+                                                               ,KC_TRNS ,KC_TRNS
+                                                               ,KC_TRNS
+                                                               ,KC_TRNS ,KC_TRNS  ,KC_TRNS
+    ),
+
+
+/* Keymap 4: Hungarian Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |  Ő   |      |  Ű   |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |   Á  |  Ó   |  É   |  Ú   |  Í   |------|           |------|      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |  Ö   |      |  Ü   |      |      |           |      |      |      |      |      |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  |      |      |------|           |------|      |      |
+ *                                  |      |      |      |           | BASE |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+
+[HUN] = LAYOUT_ergodox(
+// left hand
+ KC_NO   ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO
+,KC_NO   ,KC_NO   ,M(HU_OEE),KC_NO   ,M(HU_UEE),KC_NO   ,KC_NO
+,KC_NO   ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
+,KC_NO   ,KC_NO   ,M(HU_OE) ,KC_NO   ,M(HU_UE) ,KC_NO   ,KC_NO
+,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO   ,KC_NO
+
+                                             ,KC_NO   ,KC_NO
+                                                      ,KC_NO
+                                    ,KC_NO   ,KC_TRNS ,KC_TRNS
+
+                                                                // right hand
+                                                               ,KC_TRNS ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+                                                               ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+                                                                        ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+                                                               ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+                                                                                 ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+
+                                                               ,KC_NO   ,KC_NO
+                                                               ,KC_NO
+                                                               ,F(F_BSE),KC_TRNS  ,KC_TRNS
+    ),
+
+/* Keymap 5: Navigation & Media layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |  F9  |  F7  |  F5  |  F3  |  F1  |ScrLCK|           |      | F10  |  F2  |  F4  |  F6  |  F8  |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | Mute | VlUp |           | BASE |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | VlDn |           |      |      |      |
+ *                                  |      |      |------|           |------|      |      |
+ *                                  |      |      |      |           |      |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[NMDIA] = LAYOUT_ergodox(
+// left hand
+ KC_NO      ,KC_F9       ,KC_F7      ,KC_F5   ,KC_F3   ,KC_F1   ,LGUI(KC_L)
+,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO
+,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO
+,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO
+                                                        ,KC_MUTE ,KC_VOLU
+                                                                 ,KC_VOLD
+                                                 ,KC_NO ,KC_NO   ,KC_TRNS
+
+                                                                     // right hand
+                                                                     ,KC_TRNS   ,KC_F10  ,KC_F2   ,KC_F4   ,KC_F6   ,KC_F8    ,KC_NO
+                                                                     ,KC_NO     ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+                                                                                ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+                                                                     ,KC_NO     ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+                                                                                         ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+
+                                                                     ,KC_TRNS   ,KC_NO
+                                                                     ,KC_NO
+                                                                     ,KC_NO     ,KC_NO   ,KC_NO
+    ),
+
+/* Keymap 6: Steno for Plover
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |  BASE  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   #  |   #  |   #  |   #  |   #  |   #  |           |  #   |  #   |  #   |   #  |   #  |  #   |   #    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |   T  |   P  |   H  |      |------|           |------|      |  F   |   P  |   L  |  T   |   D    |
+ * |--------+   S  +------+------+------+   *  |   *  |           |  *   |  *   +------+------+------+------+--------|
+ * |        |      |   K  |   W  |   R  |      |      |           |      |      |  R   |   B  |   G  |  S   |   Z    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   A  |   O  |------|       |------|  E   |  U   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+
+[PLVR] = LAYOUT_ergodox(
+// left hand
+KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,   KC_NO,
+KC_NO,  PV_NUM, PV_NUM, PV_NUM,  PV_NUM, PV_NUM,  PV_NUM,
+KC_NO,  PV_LS,  PV_LT,  PV_LP,   PV_LH,  PV_STAR,
+KC_NO,  PV_LS,  PV_LK,  PV_LW,   PV_LR,  PV_STAR, PV_STAR,
+KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,
+                                           KC_NO, KC_NO,
+                                           KC_NO,
+                                           PV_A,  PV_O,  KC_NO,
+
+                                                 // right hand
+                                                 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   M(A_PLVR),
+                                                 PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,
+                                                          PV_STAR, PV_RF,   PV_RP,   PV_RL,   PV_RT,   PV_RD,
+                                                 PV_STAR, PV_STAR, PV_RR,   PV_RB,   PV_RG,   PV_RS,   PV_RZ,
+                                                                   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+                                           KC_NO,      KC_NO,
+                                           KC_NO,
+                                           KC_NO,PV_E, PV_U
+ ),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+   [F_BSE]  = ACTION_LAYER_CLEAR(ON_PRESS)
+  ,[F_HUN]  = ACTION_LAYER_INVERT(HUN, ON_PRESS)
+  ,[F_GUI]  = ACTION_MACRO_TAP(A_GUI)
+  ,[F_SFT]  = ACTION_MODS_ONESHOT (MOD_LSFT)
+  ,[F_ALT]  = ACTION_MODS_ONESHOT (MOD_LALT)
+  ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL)
+};
+
+static void toggle_steno(int pressed)
+{
+  uint8_t layer = biton32(layer_state);
+
+  if (pressed) {
+    if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR);
+
+    register_code(PV_LP);
+    register_code(PV_LH);
+    register_code(PV_LR);
+    register_code(PV_O);
+    register_code(PV_RL);
+    register_code(PV_RG);
+  } else {
+    unregister_code(PV_LP);
+    unregister_code(PV_LH);
+    unregister_code(PV_LR);
+    unregister_code(PV_O);
+    unregister_code(PV_RL);
+    unregister_code(PV_RG);
+  }
+}
+
+static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char)
+{
+  uint8_t need_shift = 0;
+  uint8_t hold_shift = 0;
+
+  if (!record->event.pressed)
+    return MACRO_NONE;
+
+  layer_off (HUN);
+
+  if (keyboard_report->mods & MOD_BIT (KC_LSFT)) {
+    hold_shift = 1;
+    need_shift = 1;
+    unregister_code (KC_LSFT);
+  }
+  if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) {
+    need_shift = 1;
+    hold_shift = 0;
+    unregister_code (KC_LSFT);
+  }
+
+  clear_oneshot_mods ();
+
+  register_code (KC_RALT);
+  unregister_code (KC_RALT);
+  if (accent == (KC_DQT)) {
+    register_code (KC_RSFT);
+  }
+  register_code (accent);
+  unregister_code (accent);
+  if (need_shift && accent != (KC_DQT)) {
+    register_code (KC_RSFT);
+  } else if (accent == (KC_DQT) && !need_shift) {
+    unregister_code (KC_RSFT);
+  }
+  register_code (hun_char);
+  unregister_code (hun_char);
+  if (need_shift || accent == (KC_DQT))
+    unregister_code (KC_RSFT);
+  if (hold_shift)
+    register_code (KC_LSFT);
+
+  return MACRO_NONE;
+}
+
+static void ang_handle_num_row(uint8_t id, keyrecord_t *record) {
+  uint8_t idx = id - A_1;
+  uint8_t kc;
+  static bool shifted[10];
+
+  if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
+      ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
+    if (record->event.pressed)
+      shifted[idx] = true;
+  }
+
+  if (!shifted[idx]) {
+    kc = idx + KC_1;
+  } else {
+    switch (id) {
+    case A_8:
+    case A_9:
+      shifted[idx] = false;
+      return;
+
+    case A_7:
+      kc = KC_2;
+      break;
+    case A_5:
+      kc = KC_8;
+      break;
+    case A_3:
+      kc = KC_6;
+      break;
+    case A_1:
+      kc = KC_4;
+      break;
+
+    case A_0:
+      kc = KC_5;
+      break;
+    case A_2:
+      kc = KC_1;
+      break;
+    case A_4:
+      kc = KC_3;
+      break;
+    case A_6:
+      kc = KC_7;
+      break;
+    }
+  }
+
+  if (record->event.pressed) {
+    register_code (kc);
+  } else {
+    unregister_code (kc);
+    shifted[idx] = false;
+  }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+      case A_MPN:
+        if (record->event.pressed) {
+          if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
+              ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
+            int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
+
+            if (oneshot)
+              clear_oneshot_mods ();
+            unregister_code (KC_LSFT);
+
+            register_code (KC_MPRV);
+            unregister_code (KC_MPRV);
+
+            if (!oneshot)
+              register_code (KC_LSFT);
+          } else {
+            return MACRO (T(MNXT), END);
+          }
+        }
+        break;
+
+        /* Hungarian layer */
+      case HU_AA:
+        return ang_do_hun (record, KC_QUOT, KC_A);
+      case HU_OO:
+        return ang_do_hun (record, KC_QUOT, KC_O);
+      case HU_EE:
+        return ang_do_hun (record, KC_QUOT, KC_E);
+      case HU_UU:
+        return ang_do_hun (record, KC_QUOT, KC_U);
+      case HU_II:
+        return ang_do_hun (record, KC_QUOT, KC_I);
+      case HU_OE:
+        return ang_do_hun (record, KC_DQT, KC_O);
+      case HU_UE:
+        return ang_do_hun (record, KC_DQT, KC_U);
+      case HU_OEE:
+        return ang_do_hun (record, KC_EQL, KC_O);
+      case HU_UEE:
+        return ang_do_hun (record, KC_EQL, KC_U);
+
+        /* Plover base */
+      case A_PLVR:
+        toggle_steno(record->event.pressed);
+        break;
+
+        /* Fx */
+      case Fx:
+        if (record->event.pressed) {
+          set_oneshot_mods (MOD_LALT);
+          layer_on (NMDIA);
+          set_oneshot_layer (NMDIA, ONESHOT_START);
+        } else {
+          clear_oneshot_layer_state (ONESHOT_PRESSED);
+        }
+        break;
+
+        /* GUI & AppSel */
+      case A_GUI:
+        if (record->event.pressed) {
+          register_code (KC_LGUI);
+          if (record->tap.count && !record->tap.interrupted) {
+            if (record->tap.count >= 2) {
+              uprintf("CMD:appsel_start\n");
+              layer_on (APPSEL);
+              set_oneshot_layer (APPSEL, ONESHOT_START);
+            }
+          } else {
+            record->tap.count = 0;
+          }
+          gui_timer = 0;
+        } else {
+          if (record->tap.count >= 2)
+            {
+              clear_oneshot_layer_state (ONESHOT_PRESSED);
+            }
+          gui_timer = timer_read ();
+        }
+        break;
+
+      case APP_SLK:
+        if (record->event.pressed)
+          uprintf("CMD:appsel_slack\n");
+        break;
+
+      case APP_EMCS:
+        if (record->event.pressed)
+          uprintf("CMD:appsel_emacs\n");
+        break;
+
+      case APP_TERM:
+        if (record->event.pressed)
+          uprintf("CMD:appsel_term\n");
+        break;
+
+      case APP_CHRM:
+        if (record->event.pressed)
+          uprintf("CMD:appsel_chrome\n");
+        break;
+
+      case APP_MSIC:
+        if (record->event.pressed)
+          uprintf("CMD:appsel_music\n");
+        break;
+
+        // number row and symbols
+      case A_1 ... A_0:
+        ang_handle_num_row(id, record);
+        break;
+      }
+
+      return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  uint8_t dl;
+
+  set_unicode_input_mode(UC_LNX);
+
+  ergodox_led_all_on();
+  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
+    ergodox_led_all_set (i);
+    wait_ms (5);
+  }
+  wait_ms(1000);
+  for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
+    ergodox_led_all_set (i);
+    wait_ms (10);
+  }
+  ergodox_led_all_off();
+
+  if (!eeconfig_is_enabled())
+    eeconfig_init();
+  dl = eeconfig_read_default_layer ();
+  if (dl == (1UL << ADORE)) {
+    is_adore = 1;
+  }
+};
+
+LEADER_EXTERNS();
+
+static void ang_tap (uint16_t code, ...) {
+  uint16_t kc = code;
+  va_list ap;
+
+  va_start(ap, code);
+
+  do {
+    register_code16(kc);
+    unregister_code16(kc);
+    wait_ms(50);
+    kc = va_arg(ap, int);
+  } while (kc != 0);
+  va_end(ap);
+}
+
+#define TAP_ONCE(code)  \
+  register_code (code); \
+  unregister_code (code)
+
+typedef struct {
+  bool layer_toggle;
+  bool sticky;
+} td_ta_state_t;
+
+static void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) {
+  td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
+
+  if (td_ta->sticky) {
+    td_ta->sticky = false;
+    td_ta->layer_toggle = false;
+    layer_off (ARRW);
+    return;
+  }
+
+  if (state->count == 1 && !state->pressed) {
+    register_code (KC_TAB);
+    td_ta->sticky = false;
+    td_ta->layer_toggle = false;
+  } else {
+    td_ta->layer_toggle = true;
+    layer_on (ARRW);
+    td_ta->sticky = (state->count == 2);
+  }
+}
+
+static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) {
+  td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
+
+  if (!td_ta->layer_toggle)
+    unregister_code (KC_TAB);
+  if (!td_ta->sticky)
+    layer_off (ARRW);
+}
+
+static void ang_tap_dance_tmux_finished (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    register_code(KC_LALT);
+    register_code(KC_SPC);
+    unregister_code(KC_SPC);
+    unregister_code(KC_LALT);
+  } else {
+    register_code(KC_LCTL);
+    register_code(KC_A);
+    unregister_code(KC_A);
+    unregister_code(KC_LCTL);
+  }
+}
+
+static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *user_data) {
+  uint8_t kc = KC_P;
+
+  if (state->count >= 2) {
+    kc = KC_Z;
+  }
+
+  register_code(KC_LALT);
+  register_code(KC_SPC);
+  unregister_code(KC_SPC);
+  unregister_code(KC_LALT);
+
+  register_code(kc);
+  unregister_code(kc);
+}
+
+static void
+_td_sr_each (qk_tap_dance_state_t *state, void *user_data) {
+  skip_leds = true;
+
+  switch (state->count) {
+  case 1:
+    ergodox_right_led_3_on ();
+    break;
+  case 2:
+    ergodox_right_led_2_on ();
+    break;
+  case 3:
+    ergodox_right_led_1_on ();
+    break;
+  case 4:
+    ergodox_right_led_3_off ();
+    wait_ms (50);
+    ergodox_right_led_2_off ();
+    wait_ms (50);
+    ergodox_right_led_1_off ();
+    break;
+  }
+}
+
+static void
+_td_sr_finished (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    register_code (KC_MSTP);
+  }
+  if (state->count >= 4) {
+    uprintf("CMD:reflash\n");
+    wait_ms (1000);
+    reset_keyboard ();
+    reset_tap_dance (state);
+  }
+}
+
+static void
+_td_sr_reset (qk_tap_dance_state_t *state, void *user_data) {
+  ergodox_right_led_1_off ();
+  wait_ms (50);
+  ergodox_right_led_2_off ();
+  wait_ms (50);
+  ergodox_right_led_3_off ();
+
+  if (state->count == 1) {
+    unregister_code (KC_MSTP);
+  }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+   [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
+  ,[CT_TA]  = {
+     .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
+     .user_data = (void *)&((td_ta_state_t) { false, false })
+   }
+  ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN)
+  ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
+  ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
+  ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
+  ,[CT_SR]  = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset)
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+  bool is_arrow = false;
+
+  if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
+    unregister_code (KC_LGUI);
+
+  if (!skip_leds) {
+    if (layer == HUN) {
+      ergodox_right_led_2_on();
+      ergodox_right_led_3_on();
+    } else if (layer == NMDIA) {
+      ergodox_right_led_1_on();
+      ergodox_right_led_2_on();
+    } else if (layer == PLVR) {
+      ergodox_right_led_1_on ();
+      ergodox_right_led_2_on ();
+      ergodox_right_led_3_on ();
+    } else if (layer == ADORE) {
+      ergodox_right_led_1_on ();
+      ergodox_right_led_2_on ();
+      ergodox_right_led_3_on ();
+
+      ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
+    }
+  }
+
+  if (layer_state & (1UL << ARRW)) {
+    if (!skip_leds) {
+      ergodox_right_led_1_on ();
+      ergodox_right_led_3_on ();
+    }
+    is_arrow = true;
+  }
+
+  if (!skip_leds) {
+    if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
+        ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
+      ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
+      ergodox_right_led_1_on ();
+    } else {
+      ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
+      if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow)
+        ergodox_right_led_1_off ();
+    }
+
+    if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
+        ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) {
+      ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
+      ergodox_right_led_2_on ();
+    } else {
+      ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
+      if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE)
+        ergodox_right_led_2_off ();
+    }
+
+    if (keyboard_report->mods & MOD_BIT(KC_LCTRL) ||
+        ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) {
+      ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
+      ergodox_right_led_3_on ();
+    } else {
+      ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
+      if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow)
+        ergodox_right_led_3_off ();
+    }
+  }
+
+  LEADER_DICTIONARY() {
+    leading = false;
+    leader_end ();
+
+    SEQ_ONE_KEY (KC_C) {
+      ang_tap (LSFT(KC_C), KC_S, KC_I, KC_L, KC_L, KC_RALT, KC_QUOT, KC_A, KC_M, KC_A, KC_S,
+               KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0);
+    }
+
+    SEQ_ONE_KEY (KC_G) {
+      ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O,
+               KC_RALT, KC_EQL, KC_O,
+               KC_RALT, KC_EQL, KC_O, 0);
+    }
+
+#if KEYLOGGER_ENABLE
+    SEQ_ONE_KEY (KC_D) {
+      ergodox_led_all_on();
+      wait_ms(100);
+      ergodox_led_all_off();
+      log_enable = !log_enable;
+    }
+#endif
+
+    SEQ_ONE_KEY (KC_T) {
+      time_travel = !time_travel;
+    }
+
+    SEQ_ONE_KEY (KC_U) {
+      qk_ucis_start();
+    }
+
+    SEQ_ONE_KEY (KC_V) {
+      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" LAYOUT_ergodox_VERSION ")");
+    }
+
+    SEQ_ONE_KEY (KC_L) {
+      /* λ */
+      unicode_input_start();
+      register_hex(0x03bb);
+      unicode_input_finish();
+    }
+
+    SEQ_ONE_KEY (KC_Y) {
+      ang_tap (KC_BSLS, KC_O, KC_SLSH, 0);
+    }
+
+    SEQ_ONE_KEY (KC_S) {
+      unicode_input_start(); register_hex(0xaf); unicode_input_finish();
+      TAP_ONCE (KC_BSLS);
+      register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
+      unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
+      register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
+      TAP_ONCE (KC_SLSH);
+      unicode_input_start (); register_hex(0xaf); unicode_input_finish();
+    }
+
+    SEQ_TWO_KEYS (KC_W, KC_M) {
+      uprintf("CMD:wm\n");
+    }
+
+    SEQ_ONE_KEY (KC_A) {
+      if (is_adore == 0) {
+        default_layer_and (0);
+        default_layer_or ((1UL << ADORE));
+        eeconfig_update_default_layer ((1UL << ADORE));
+        is_adore = 1;
+
+        ergodox_led_all_off ();
+        ergodox_right_led_3_on ();
+        wait_ms (100);
+        ergodox_right_led_2_on ();
+        wait_ms (100);
+        ergodox_right_led_3_off ();
+        ergodox_right_led_1_on ();
+        wait_ms (100);
+        ergodox_right_led_2_off ();
+        wait_ms (100);
+        ergodox_right_led_1_off ();
+      } else {
+        is_adore = 0;
+        default_layer_and (0);
+        default_layer_or (1UL << BASE);
+        eeconfig_update_default_layer ((1UL << BASE));
+
+        ergodox_led_all_off ();
+        ergodox_right_led_1_on ();
+        wait_ms (100);
+        ergodox_right_led_2_on ();
+        wait_ms (100);
+        ergodox_right_led_1_off ();
+        ergodox_right_led_3_on ();
+        wait_ms (100);
+        ergodox_right_led_2_off ();
+        wait_ms (100);
+        ergodox_right_led_3_off ();
+      }
+    }
+  }
+}
+
+static uint16_t last4[4];
+
+const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
+(
+ UCIS_SYM("poop", 0x1f4a9),
+ UCIS_SYM("rofl", 0x1f923),
+ UCIS_SYM("kiss", 0x1f619),
+ UCIS_SYM("snowman", 0x2603),
+ UCIS_SYM("coffee", 0x2615),
+ UCIS_SYM("heart", 0x2764),
+ UCIS_SYM("bolt", 0x26a1),
+ UCIS_SYM("pi", 0x03c0),
+ UCIS_SYM("mouse", 0x1f401),
+ UCIS_SYM("micro", 0x00b5),
+ UCIS_SYM("tm", 0x2122)
+);
+
+bool process_record_user (uint16_t keycode, keyrecord_t *record) {
+#if KEYLOGGER_ENABLE
+  if (log_enable) {
+    uint8_t layer = biton32(layer_state);
+
+    if ((layer == ADORE) || (layer == BASE))
+      uprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col,
+               record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak");
+  }
+#endif
+
+  if (keycode == KC_ESC && record->event.pressed) {
+    bool queue = true;
+
+    if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
+      clear_oneshot_mods ();
+      queue = false;
+    }
+    if (layer_state & (1UL<<HUN)) {
+      layer_off (HUN);
+      queue = false;
+    }
+    return queue;
+  }
+
+  if (time_travel && !record->event.pressed) {
+    uint8_t p;
+
+    // shift cache one to the left
+    for (p = 0; p < 3; p++) {
+      last4[p] = last4[p + 1];
+    }
+    last4[3] = keycode;
+
+    if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) {
+      ang_tap (KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0);
+      register_code (KC_RSFT);
+      register_code (KC_EQL);
+      unregister_code (KC_EQL);
+      unregister_code (KC_RSFT);
+
+      ang_tap (KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0);
+
+      return false;
+    }
+  }
+
+  return true;
+}
+
+void qk_ucis_symbol_fallback (void) {
+  for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
+    uint8_t code;
+
+    if ((qk_ucis_state.codes[i] >= M(A_1)) && (qk_ucis_state.codes[i] <= M(A_0)))
+      code = qk_ucis_state.codes[i] - M(A_1) + KC_1;
+    else
+      code = qk_ucis_state.codes[i];
+    register_code(code);
+    unregister_code(code);
+    wait_ms (10);
+  }
+}
diff --git a/layouts/community/ergodox/algernon/readme.md b/layouts/community/ergodox/algernon/readme.md
new file mode 100644 (file)
index 0000000..4c1fb15
--- /dev/null
@@ -0,0 +1,149 @@
+<!-- -*- mode: markdown; fill-column: 8192 -*- -->
+
+algernon's layout
+=======================
+
+This is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox].
+
+ [ez]: https://ergodox-ez.com/
+ [blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
+
+Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary.
+
+ [spacemacs]: http://spacemacs.org/
+ [gnome]: https://www.gnome.org/
+
+## Table of Contents
+
+* [Layouts](#layouts)
+    - [Base layer](#base-layer)
+    - [ADORE layer](#adore-layer)
+    - [Steno layer](#steno-layer)
+    - [LED states](#led-states)
+* [Tools](#tools)
+    - [Heatmap](#heatmap)
+    - [Layer notification](#layer-notification)
+* [Special features](#special-features)
+    - [Unicode Symbol Input](#unicode-symbol-input)
+* [Building](#building)
+    - [Using on Windows](#using-on-windows)
+* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme)
+* [License](#license)
+
+# Layouts
+
+## Base layer
+
+[![Base layer](https://i.imgur.com/q1MDvq4.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
+
+At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
+
+* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer.
+* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap.
+* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout.
+* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode.
+* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle.
+* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`.
+* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap.
+* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
+* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`.
+* The **Lead** key allows me to type in a sequence of keys, and trigger some actions:
+    - `LEAD l` uses the unicode input method to enter a `λ`.
+    - `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
+    - `LEAD y` types `\o/`.
+    - `LEAD w m` maximises the currently focused window.
+    - `LEAD a` makes the [ADORE layer](#adore-layer) the default.
+    - `LEAD v` prints the firmware version, the keyboard and the keymap.
+    - `LEAD d` toggles logging keypress positions to the HID console.
+    - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader.
+    - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode.
+    
+The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front.
+
+## ADORE layer
+
+[![ADORE layer](https://i.imgur.com/r3LnQAA.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
+
+My experimental layout, that I keep tweaking. No full description here, because things are very much in flux.
+
+Note that the **HUN** layer does not work well with ADORE: it still has the same layout as on the [Base](#base-layer) layer. This will remain until ADORE becomes the default.
+
+## Steno layer
+
+[![Steno layer for Plover](https://i.imgur.com/PgifhBF.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
+
+This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too.
+
+## LED states
+
+The primary purpose of the LEDs is to show the modifier status, a secondary, to show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each have their designated LEDs: the *red*, *green* and *blue*, respectively. When a modifier is in a one-shot state, the respective LED will turn on with a dimmer light. If the modifier is toggled on, the brightness of the LED turns full.
+
+For the layers, the following rules apply:
+
+* When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active.
+* When the **Hungarian** layer is active, the *green* and *blue* LEDs are on.
+* When the **Media** layer is active, the *red* and *green* ones are on.
+* When the **ARROW** layer is active, the *red* and *blue* ones are on.
+* For the [Steno layer](#steno-layer), all LEDs will be turned on.
+
+Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on.
+
+# Special features
+
+## Unicode Symbol Input
+
+Once in the Unicode Symbol Input mode, one is able to type in symbol names, press `Enter` or `Space`, and get the Unicode symbol itself back. When in the mode, a capital `U` is printed first. Once the sequence is finished, all of it is erased by sending enough `Backspace` taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code. If it is not found, it will just replay the pressed keycodes.
+
+For the list of supported symbols, please see the source.
+
+This is an experimental feature, and may or may not work reliably.
+
+# Tools
+
+## Heatmap
+
+When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too.
+
+Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information.
+
+ [kle]: http://www.keyboard-layout-editor.com/
+
+The generated heatmap looks somewhat like this:
+
+ ![Heatmap](https://i.imgur.com/tly9XSy.png)
+
+## Layer notification
+
+There is a very small tool in `tools/layer-notify`, that listens to the HID console, looking for layer change events, and pops up a notification for every detected change. It is a very simple tool, mainly serving as an example.
+
+# Building
+
+To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this:
+
+ [algernon:ez-layout]: https://github.com/algernon/ergodox-layout
+ [qmk]: https://github.com/qmk/qmk_firmware
+
+```
+$ git clone https://github.com/qmk/qmk_firmware.git
+$ cd qmk_firmware
+$ git clone https://github.com/algernon/ergodox-layout.git \
+            keyboards/ergodox/keymaps/algernon-master
+$ make keyboard=ergodox keymap=algernon-master
+```
+
+From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware):
+
+```
+$ make keyboard=ergodox keymap=algernon
+```
+
+## Using on Windows
+
+The keymap default to forcing NKRO, which seems to upset Windows, and except the modifiers, none of them work. If you experience this problem, recompile the firmware with `FORCE_NKRO=no` added to the `make` command line.
+
+# License
+
+The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
+
+![nav-n-media-layer.png](https://i.imgur.com/AReX8C9.png)
+![hun-layer.png](https://i.imgur.com/uPGBl9J.png)
\ No newline at end of file
diff --git a/layouts/community/ergodox/algernon/rules.mk b/layouts/community/ergodox/algernon/rules.mk
new file mode 100644 (file)
index 0000000..4487dd8
--- /dev/null
@@ -0,0 +1,43 @@
+BOOTMAGIC_ENABLE=no
+COMMAND_ENABLE=no
+SLEEP_LED_ENABLE=no
+FORCE_NKRO = yes
+DEBUG_ENABLE = no
+CONSOLE_ENABLE = no
+TAP_DANCE_ENABLE = yes
+KEYLOGGER_ENABLE = yes
+UCIS_ENABLE = yes
+MOUSEKEY_ENABLE = no
+
+AUTOLOG_ENABLE = no
+
+ifeq (${FORCE_NKRO},yes)
+OPT_DEFS += -DFORCE_NKRO
+endif
+
+ifeq (${AUTOLOG_ENABLE},yes)
+KEYLOGGER_ENABLE = yes
+OPT_DEFS += -DAUTOLOG_ENABLE
+endif
+
+ifeq (${KEYLOGGER_ENABLE},yes)
+OPT_DEFS += -DKEYLOGGER_ENABLE
+CONSOLE_ENABLE = yes
+endif
+
+OPT_DEFS += -DUSER_PRINT
+
+LAYOUT_ergodox_VERSION = $(shell \
+ if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \
+  cd "${LAYOUT_ergodox_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
+ else echo QMK; fi)
+
+LAYOUT_ergodox_BRANCH = $(shell \
+ if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \
+  cd "${LAYOUT_ergodox_PATH}"; \
+ fi; \
+ git rev-parse --abbrev-ref HEAD 2>/dev/null)
+
+OPT_DEFS += -DLAYOUT_ergodox_VERSION=\"$(LAYOUT_ergodox_VERSION)\\\#$(LAYOUT_ergodox_BRANCH)\"
+
+
diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json
new file mode 100644 (file)
index 0000000..e09efec
--- /dev/null
@@ -0,0 +1,486 @@
+[
+  {
+    "backcolor": "#ffffff",
+    "name": "ErgoDox - algernon's layout: Heatmap",
+    "author": "Gergely Nagy <kbd@gergo.csillger.hu>",
+    "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Tea",
+    "pcb": true,
+    "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
+  },
+  [
+    {
+      "x": 3.5,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "*\n5\nF5",
+    {
+      "x": 10.5,
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "#\n4\nF4"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n7\nF7",
+    {
+      "x": 1
+    },
+    "^\n3\nF3",
+    {
+      "x": 8.5
+    },
+    "!\n2\nF2",
+    {
+      "x": 1
+    },
+    "&\n6\nF6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "$\n1\nF1",
+    {
+      "a": 7,
+      "f": 3
+    },
+    "F11",
+    {
+      "x": 4.5,
+      "f": 3
+    },
+    "Fx",
+    {
+      "a": 4,
+      "f": 3,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "%\n0\nF10"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 9,
+      "a": 6,
+      "w": 1.5
+    },
+    "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
+    {
+      "f": 3,
+      "a": 4,
+      "fa": [
+          0,
+          0,
+          2
+      ]
+    },
+    " \n9\nF9",
+    {
+      "x": 14.5
+    },
+    " \n8\nF8",
+    {
+      "a": 7,
+      "w": 1.5
+    },
+    "STENO"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 6
+    },
+    "C",
+    {
+      "x": 10.5
+    },
+    "L"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 6
+    },
+    "W",
+    {
+      "x": 1,
+      "a": 6
+    },
+    "H",
+    {
+      "x": 8.5
+    },
+    "G",
+    {
+      "x": 1
+    },
+    "P"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "F",
+    {
+      "a": 4,
+      "fa": [0, 0, 0],
+      "h": 1.5
+    },
+    "{\n(\n[",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "}\n)\n]",
+    {
+      "a": 6
+    },
+    "M"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 3,
+      "a": 4,
+      "w": 1.5
+    },
+    "\n\n|\n\\",
+    {
+      "a": 6,
+      "f": 3
+    },
+    "X",
+    {
+      "x": 14.5,
+      "a": 4
+    },
+    "/\n?",
+    {
+      "a": 4,
+      "w": 1.5
+    },
+    "~\n`"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 6
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "T"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "O",
+    {
+      "x": 1,
+      "n": true
+    },
+    "I",
+    {
+      "x": 8.5,
+      "n": true
+    },
+    "R",
+    {
+      "x": 1
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "U",
+    {
+      "x": 6.5
+    },
+    "D"
+  ],
+  [
+    {
+      "y": -0.875,
+      "fa": [
+        6
+      ],
+      "w": 1.5
+    },
+    "<i class='fa fa-arrows'></i>\n\nTab",
+    {
+      "f": 3
+    },
+    "A",
+    {
+      "x": 14.5,
+      "f": 3
+    },
+    "S",
+    {
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        6
+      ],
+      "w": 1.5
+    },
+    "+\n="
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "a": 7,
+      "f": 9,
+      "h": 1.5
+    },
+    "<i class='fa fa-columns'></i>",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "<i class='fa fa-table'></i>"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "a": 4,
+      "f": 3
+    },
+    "\"\n'",
+    {
+      "x": 10.5,
+      "a": 6,
+      "f": 3
+    },
+    "V"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 6
+    },
+    "Q",
+    {
+      "x": 1,
+      "a": 4
+    },
+    "<\n,",
+    {
+      "x": 8.5,
+      "a": 6
+    },
+    "K",
+    {
+      "x": 1
+    },
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "a": 4
+    },
+    ">\n.",
+    {
+      "x": 6.5,
+      "a": 6
+    },
+    "B"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 9,
+      "w": 1.5,
+      "g": true
+    },
+    "",
+    {
+      "a": 6,
+      "f": 3,
+      "g": false
+    },
+    "Z",
+    {
+      "x": 14.5
+    },
+    "J",
+    {
+      "f": 9,
+      "g": true,
+      "w": 1.5,
+      "a": 4
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "g": true,
+      "a": 7,
+      "f": 3
+    },
+    "",
+    {
+      "x": 10.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "",
+    {
+      "x": 1,
+      "g": false,
+      "a": 5
+    },
+    ";\n:",
+    {
+      "x": 8.5
+    },
+    "_\n-",
+    {
+      "x": 1,
+      "g": true,
+      "a": 7
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5
+    },
+    "",
+    {},
+    "",
+    {
+      "x": 14.5
+    },
+    "",
+    {},
+    ""
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "g": false
+    },
+    "Alt",
+    {
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        0,
+        9
+      ]
+    },
+    "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
+  ],
+  [
+    {
+      "a": 7,
+      "f": 9,
+      "h": 2
+    },
+    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
+    {
+      "h": 2
+    },
+    "<i class='fa fa-angle-double-up'></i>",
+    {
+      "f": 3
+    },
+    "Ctrl"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "ESC"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3,
+      "f": 2
+    },
+    "MEDIA",
+    {},
+    "DEL"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "HUN",
+    {
+      "f": 9,
+      "h": 2
+    },
+    "<i class='kb kb-Return-2'></i>",
+    {
+      "f": 3,
+      "h": 2
+    },
+    "SPC"
+  ],
+  [
+    {
+      "x": -3,
+      "f": 2
+    },
+    "LEAD"
+  ]
+]
diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json
new file mode 100644 (file)
index 0000000..1e53281
--- /dev/null
@@ -0,0 +1,477 @@
+[
+  {
+    "backcolor": "#ffffff",
+    "name": "ErgoDox - algernon's layout: Heatmap",
+    "author": "Gergely Nagy <kbd@gergo.csillger.hu>",
+    "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Tea",
+    "pcb": true,
+    "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
+  },
+  [
+    {
+      "x": 3.5,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "*\n5\nF5",
+    {
+      "x": 10.5,
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "#\n4\nF4"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n7\nF7",
+    {
+      "x": 1
+    },
+    "^\n3\nF3",
+    {
+      "x": 8.5
+    },
+    "!\n2\nF2",
+    {
+      "x": 1
+    },
+    "&\n6\nF6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "$\n1\nF1",
+    {
+      "a": 7,
+      "f": 3
+    },
+    "F11",
+    {
+      "x": 4.5,
+      "f": 3
+    },
+    "Fx",
+    {
+      "a": 4,
+      "f": 3,
+      "fa": [
+        0,
+        0,
+        2
+      ]
+    },
+    "%\n0\nF10"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 6,
+      "a": 6,
+      "w": 1.5
+    },
+    "<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
+    {
+      "f": 3,
+      "a": 4,
+      "fa": [
+          0,
+          0,
+          2
+      ]
+
+    },
+    " \n9\nF9",
+    {
+      "x": 14.5
+    },
+    " \n8\nF8",
+    {
+      "a": 7,
+      "w": 1.5
+    },
+    "STENO"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 4
+    },
+    ">\n.",
+    {
+      "x": 10.5,
+      "a": 6
+    },
+    "C"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 4
+    },
+    "<\n,",
+    {
+      "x": 1,
+      "a": 6
+    },
+    "P",
+    {
+      "x": 8.5
+    },
+    "G",
+    {
+      "x": 1
+    },
+    "R"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "Y",
+    {
+      "a": 4,
+      "h": 1.5
+    },
+    "{\n(\n[",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "}\n)\n]",
+    {
+      "a": 6
+    },
+    "F"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 3,
+      "a": 4,
+      "w": 1.5
+    },
+    "\n\n~\n`",
+    {
+      "a": 4,
+      "f": 3
+    },
+    "\"\n'",
+    {
+      "x": 14.5,
+      "a": 6
+    },
+    "L",
+    {
+      "a": 4,
+      "w": 1.5
+    },
+    "|\n\\"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 6
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "T"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "O",
+    {
+      "x": 1,
+      "n": true
+    },
+    "U",
+    {
+      "x": 8.5,
+      "n": true
+    },
+    "H",
+    {
+      "x": 1
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "I",
+    {
+      "x": 6.5
+    },
+    "D"
+  ],
+  [
+    {
+      "y": -0.875,
+      "fa": [
+        6
+      ],
+      "w": 1.5
+    },
+    "<i class='fa fa-arrows'></i>\n\nTab",
+    {
+      "f": 3
+    },
+    "A",
+    {
+      "x": 14.5,
+      "f": 3
+    },
+    "S",
+    {
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        6
+      ],
+      "w": 1.5
+    },
+    "+\n="
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "a": 7,
+      "f": 9,
+      "h": 1.5
+    },
+    "<i class='fa fa-columns'></i>",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "<i class='fa fa-table'></i>"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "f": 3,
+      "a": 6
+    },
+    "J",
+    {
+      "x": 10.5
+    },
+    "W"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "Q",
+    {
+      "x": 1
+    },
+    "K",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1
+    },
+    "V"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "X",
+    {
+      "x": 6.5
+    },
+    "B"
+  ],
+  [
+    {
+      "y": -0.875,
+      "f": 9,
+      "w": 1.5
+    },
+    "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
+    {
+      "a": 4,
+      "f": 3
+    },
+    "?\n/",
+    {
+      "x": 14.5,
+      "a": 6
+    },
+    "Z",
+    {
+      "f": 9,
+      "w": 1.5
+    },
+    "<i class='kb kb-Multimedia-Stop'></i>"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "g": true,
+      "a": 7,
+      "f": 3
+    },
+    "",
+    {
+      "x": 10.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "",
+    {
+      "x": 1,
+      "g": false,
+      "a": 5
+    },
+    ";\n:",
+    {
+      "x": 8.5
+    },
+    "_\n-",
+    {
+      "x": 1,
+      "g": true,
+      "a": 7
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5
+    },
+    "",
+    {},
+    "",
+    {
+      "x": 14.5
+    },
+    "",
+    {},
+    ""
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "g": false
+    },
+    "Alt",
+    {
+      "a": 4,
+      "fa": [
+        0,
+        0,
+        0,
+        9
+      ]
+    },
+    "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
+  ],
+  [
+    {
+      "a": 7,
+      "f": 9,
+      "h": 2
+    },
+    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
+    {
+      "h": 2
+    },
+    "<i class='fa fa-angle-double-up'></i>",
+    {
+      "f": 3
+    },
+    "Ctrl"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "ESC"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3,
+      "f": 2
+    },
+    "MEDIA",
+    {},
+    "DEL"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "LEAD",
+    {
+      "f": 9,
+      "h": 2
+    },
+    "<i class='kb kb-Return-2'></i>",
+    {
+      "f": 3,
+      "h": 2
+    },
+    "SPC"
+  ],
+  [
+    {
+      "x": -3,
+      "f": 2
+    },
+    "HUN"
+  ]
+]
diff --git a/layouts/community/ergodox/algernon/tools/hid-commands b/layouts/community/ergodox/algernon/tools/hid-commands
new file mode 100644 (file)
index 0000000..54ca755
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+set -e
+
+LAST_APPSEL_START=0
+
+cmd_wm () {
+    WIN="$(xdotool getactivewindow)"
+    wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
+    xdotool windowsize ${WIN} 100% 100%
+    wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz
+}
+
+_cmd_appsel () {
+    wmctrl -x -a $1 || true
+    xdotool key Escape
+}
+
+cmd_appsel_music () {
+    wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \
+        wmctrl -x -a banshee || wmctrl -x -a kodi || true
+    xdotool key Escape
+}
+
+cmd_appsel_slack () {
+    _cmd_appsel slack
+}
+
+cmd_appsel_emacs () {
+    _cmd_appsel emacs
+}
+
+cmd_appsel_term () {
+    _cmd_appsel gnome-terminal
+}
+
+cmd_appsel_chrome () {
+    _cmd_appsel chrom
+}
+
+cmd_appsel_start () {
+    if [ ! -z "${DISABLE_APPSEL_START}" ]; then
+        return
+    fi
+
+    APPSEL_START=$(date +%s)
+    if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then
+        return
+    fi
+    LAST_APPSEL_START=$APPSEL_START
+    notify-send -t 1000 "Please select an application!" -c device -u low \
+                -i /usr/share/icons/Adwaita/24x24/devices/video-display.png
+}
+
+cmd_reflash () {
+    teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true
+}
+
+cmd_help () {
+    cat <<EOF
+Use the source, Luke!
+EOF
+}
+
+while read l; do
+    case "$l" in
+        "CMD:"*)
+            ;;
+        *)
+            continue
+            ;;
+    esac
+
+    cmd="$(echo $l | cut -d: -f2-)"
+
+    echo "Got command: ${cmd}"
+
+    if type cmd_${cmd} >/dev/null 2>&1; then
+        cmd_${cmd}
+    fi
+done
diff --git a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py b/layouts/community/ergodox/algernon/tools/log-to-heatmap.py
new file mode 100644 (file)
index 0000000..e927e0e
--- /dev/null
@@ -0,0 +1,344 @@
+#! /usr/bin/env python3
+import json
+import os
+import sys
+import re
+import argparse
+import time
+
+from math import floor
+from os.path import dirname
+from subprocess import Popen, PIPE, STDOUT
+from blessings import Terminal
+
+class Heatmap(object):
+    coords = [
+        [
+            # Row 0
+            [ 4,  0], [ 4,  2], [ 2,  0], [ 1,  0], [ 2,  2], [ 3,  0], [ 3,  2],
+            [ 3,  4], [ 3,  6], [ 2,  4], [ 1,  2], [ 2,  6], [ 4,  4], [ 4,  6],
+        ],
+        [
+            # Row 1
+            [ 8,  0], [ 8,  2], [ 6,  0], [ 5,  0], [ 6,  2], [ 7,  0], [ 7,  2],
+            [ 7,  4], [ 7,  6], [ 6,  4], [ 5,  2], [ 6,  6], [ 8,  4], [ 8,  6],
+        ],
+        [
+            # Row 2
+            [12,  0], [12,  2], [10,  0], [ 9,  0], [10,  2], [11, 0], [     ],
+            [      ], [11,  2], [10,  4], [ 9,  2], [10,  6], [12, 4], [12, 6],
+        ],
+        [
+            # Row 3
+            [17,  0], [17,  2], [15,  0], [14,  0], [15,  2], [16,  0], [13,  0],
+            [13,  2], [16,  2], [15,  4], [14,  2], [15,  6], [17,  4], [17,  6],
+        ],
+        [
+            # Row 4
+            [20,  0], [20,  2], [19,  0], [18,  0], [19,  2], [], [], [], [],
+            [19,  4], [18,  2], [19,  6], [20,  4], [20,  6], [], [], [], []
+        ],
+        [
+            # Row 5
+            [     ], [23,  0], [22,  2], [22,  0], [22,  4], [21,  0], [21,  2],
+            [24, 0], [24,  2], [25,  0], [25,  4], [25,  2], [26,  0], [      ],
+        ],
+    ]
+
+    def set_attr_at(self, block, n, attr, fn, val):
+        blk = self.heatmap[block][n]
+        if attr in blk:
+            blk[attr] = fn(blk[attr], val)
+        else:
+            blk[attr] = fn(None, val)
+
+    def coord(self, col, row):
+        return self.coords[row][col]
+
+    @staticmethod
+    def set_attr(orig, new):
+        return new
+
+    def set_bg(self, coords, color):
+        (block, n) = coords
+        self.set_attr_at(block, n, "c", self.set_attr, color)
+        #self.set_attr_at(block, n, "g", self.set_attr, False)
+
+    def set_tap_info(self, coords, count, cap):
+        (block, n) = coords
+        def _set_tap_info(o, _count, _cap):
+            ns = 4 - o.count ("\n")
+            return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100)
+
+        if not cap:
+            cap = 1
+        self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap)
+
+    @staticmethod
+    def heatmap_color (v):
+        colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]]
+        fb = 0
+        if v <= 0:
+            idx1, idx2 = 0, 0
+        elif v >= 1:
+            idx1, idx2 = len(colors) - 1, len(colors) - 1
+        else:
+            val = v * (len(colors) - 1)
+            idx1 = int(floor(val))
+            idx2 = idx1 + 1
+            fb = val - float(idx1)
+
+        r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0]
+        g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1]
+        b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2]
+
+        r, g, b = [x * 255 for x in (r, g, b)]
+        return "#%02x%02x%02x" % (int(r), int(g), int(b))
+
+    def __init__(self, layout):
+        self.log = {}
+        self.total = 0
+        self.max_cnt = 0
+        self.layout = layout
+
+    def update_log(self, coords):
+        (c, r) = coords
+        if not (c, r) in self.log:
+            self.log[(c, r)] = 0
+        self.log[(c, r)] = self.log[(c, r)] + 1
+        self.total = self.total + 1
+        if self.max_cnt < self.log[(c, r)]:
+            self.max_cnt = self.log[(c, r)]
+
+    def get_heatmap(self):
+        with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f:
+            self.heatmap = json.load (f)
+
+        ## Reset colors
+        for row in self.coords:
+            for coord in row:
+                if coord != []:
+                    self.set_bg (coord, "#d9dae0")
+
+        for (c, r) in self.log:
+            coords = self.coord(c, r)
+            b, n = coords
+            cap = self.max_cnt
+            if cap == 0:
+                cap = 1
+            v = float(self.log[(c, r)]) / cap
+            self.set_bg (coords, self.heatmap_color (v))
+            self.set_tap_info (coords, self.log[(c, r)], self.total)
+        return self.heatmap
+
+    def get_stats(self):
+        usage = [
+            # left hand
+            [0, 0, 0, 0, 0],
+            # right hand
+            [0, 0, 0, 0, 0]
+        ]
+        finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4]
+        for (c, r) in self.log:
+            if r == 5: # thumb cluster
+                if c <= 6: # left side
+                    usage[0][4] = usage[0][4] + self.log[(c, r)]
+                else:
+                    usage[1][0] = usage[1][0] + self.log[(c, r)]
+            elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys
+                if c <= 6: # left side
+                    usage[0][4] = usage[0][4] + self.log[(c, r)]
+                else:
+                    usage[1][0] = usage[1][0] + self.log[(c, r)]
+            else:
+                fc = c
+                hand = 0
+                if fc >= 7:
+                    hand = 1
+                fm = finger_map[fc]
+                usage[hand][fm] = usage[hand][fm] + self.log[(c, r)]
+        hand_usage = [0, 0]
+        for f in usage[0]:
+            hand_usage[0] = hand_usage[0] + f
+        for f in usage[1]:
+            hand_usage[1] = hand_usage[1] + f
+
+        total = self.total
+        if total == 0:
+            total = 1
+        stats = {
+            "total-keys": total,
+            "hands": {
+                "left": {
+                    "usage": round(float(hand_usage[0]) / total * 100, 2),
+                    "fingers": {
+                        "pinky": 0,
+                        "ring": 0,
+                        "middle": 0,
+                        "index": 0,
+                        "thumb": 0,
+                    }
+                },
+                "right": {
+                    "usage": round(float(hand_usage[1]) / total * 100, 2),
+                    "fingers": {
+                        "thumb": 0,
+                        "index": 0,
+                        "middle": 0,
+                        "ring": 0,
+                        "pinky": 0,
+                    }
+                },
+            }
+        }
+
+        hmap = ['left', 'right']
+        fmap = ['pinky', 'ring', 'middle', 'index', 'thumb',
+                'thumb', 'index', 'middle', 'ring', 'pinky']
+        for hand_idx in range(len(usage)):
+            hand = usage[hand_idx]
+            for finger_idx in range(len(hand)):
+                stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2)
+        return stats
+
+def dump_all(out_dir, heatmaps):
+    stats = {}
+    t = Terminal()
+    t.clear()
+    sys.stdout.write("\x1b[2J\x1b[H")
+
+    print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir))
+
+    keys = list(heatmaps.keys())
+    keys.sort()
+
+    for layer in keys:
+        if len(heatmaps[layer].log) == 0:
+            continue
+
+        with open ("%s/%s.json" % (out_dir, layer), "w") as f:
+            json.dump(heatmaps[layer].get_heatmap(), f)
+        stats[layer] = heatmaps[layer].get_stats()
+
+        left = stats[layer]['hands']['left']
+        right = stats[layer]['hands']['right']
+
+        print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer,
+                                                                    total=int(stats[layer]['total-keys'] / 2)))
+        print (('{t.underline}        | ' + \
+                'left ({l[usage]:6.2f}%)  | ' + \
+                'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right))
+        print ((' {t.bright_magenta}pinky{t.white}  |     {left[pinky]:6.2f}%     |     {right[pinky]:6.2f}%     |\n' + \
+                ' {t.bright_cyan}ring{t.white}   |     {left[ring]:6.2f}%     |     {right[ring]:6.2f}%     |\n' + \
+                ' {t.bright_blue}middle{t.white} |     {left[middle]:6.2f}%     |     {right[middle]:6.2f}%     |\n' + \
+                ' {t.bright_green}index{t.white}  |     {left[index]:6.2f}%     |     {right[index]:6.2f}%     |\n' + \
+                ' {t.bright_red}thumb{t.white}  |     {left[thumb]:6.2f}%     |     {right[thumb]:6.2f}%     |\n' + \
+                '').format(left=left['fingers'], right=right['fingers'], t=t))
+
+def process_line(line, heatmaps, opts, stamped_log = None):
+    m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line)
+    if not m:
+        return False
+    if stamped_log is not None:
+        if line.startswith("KL:"):
+            print ("%10.10f %s" % (time.time(), line),
+                   file = stamped_log, end = '')
+        else:
+            print (line,
+                   file = stamped_log, end = '')
+        stamped_log.flush()
+
+    (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4))
+    if (c, r) not in opts.allowed_keys:
+        return False
+
+    heatmaps[l].update_log ((c, r))
+
+    return True
+
+def setup_allowed_keys(opts):
+    if len(opts.only_key):
+        incmap={}
+        for v in opts.only_key:
+            m = re.search ('(\d+),(\d+)', v)
+            if not m:
+                continue
+            (c, r) = (int(m.group(1)), int(m.group(2)))
+            incmap[(c, r)] = True
+    else:
+        incmap={}
+        for r in range(0, 6):
+            for c in range(0, 14):
+                incmap[(c, r)] = True
+
+        for v in opts.ignore_key:
+            m = re.search ('(\d+),(\d+)', v)
+            if not m:
+                continue
+            (c, r) = (int(m.group(1)), int(m.group(2)))
+            del(incmap[(c, r)])
+
+    return incmap
+
+def main(opts):
+    heatmaps = {"Dvorak": Heatmap("Dvorak"),
+                "ADORE": Heatmap("ADORE")
+    }
+    cnt = 0
+    out_dir = opts.outdir
+
+    if not os.path.exists(out_dir):
+        os.makedirs(out_dir)
+
+    opts.allowed_keys = setup_allowed_keys(opts)
+
+    if not opts.one_shot:
+
+        try:
+            with open("%s/stamped-log" % out_dir, "r") as f:
+                while True:
+                    line = f.readline()
+                    if not line:
+                        break
+                    if not process_line(line, heatmaps, opts):
+                        continue
+        except:
+            pass
+
+        stamped_log = open ("%s/stamped-log" % (out_dir), "a+")
+    else:
+        stamped_log = None
+
+    while True:
+        line = sys.stdin.readline()
+        if not line:
+            break
+        if not process_line(line, heatmaps, opts, stamped_log):
+            continue
+
+        cnt = cnt + 1
+
+        if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot:
+            cnt = 0
+            dump_all(out_dir, heatmaps)
+
+    dump_all (out_dir, heatmaps)
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser (description = "keylog to heatmap processor")
+    parser.add_argument ('outdir', action = 'store',
+                         help = 'Output directory')
+    parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int,
+                         default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only')
+    parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str,
+                         default = [], help = 'Ignore the key at position (x, y)')
+    parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str,
+                         default = [], help = 'Only include key at position (x, y)')
+    parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true',
+                         help = 'Do not load previous data, and do not update it, either.')
+    args = parser.parse_args()
+    if len(args.ignore_key) and len(args.only_key):
+        print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!",
+               file = sys.stderr)
+        sys.exit(1)
+    main(args)
diff --git a/layouts/community/ergodox/algernon/tools/text-to-log.py b/layouts/community/ergodox/algernon/tools/text-to-log.py
new file mode 100644 (file)
index 0000000..f080c32
--- /dev/null
@@ -0,0 +1,107 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+
+charmap = {
+    '9': [[1, 0]],
+    '7': [[2, 0]], '@': [[2, 5], [2, 0]],
+    '5': [[3, 0]], '*': [[2, 5], [3, 0]],
+    '3': [[4, 0]], '^': [[2, 5], [4, 0]],
+    '1': [[5, 0]], '$': [[2, 5], [5, 0]],
+    '0': [[8, 0]], '%': [[2, 5], [8, 0]],
+    '2': [[9, 0]], '!': [[2, 5], [9, 0]],
+    '4': [[10, 0]], '#': [[2, 5], [10, 0]],
+    '6': [[11, 0]], '&': [[2, 5], [11, 0]],
+    '8': [[12, 0]],
+
+    '\\': [[0, 1]], '|': [[2, 5], [0, 1]],
+    'x': [[1, 1]], 'X': [[2, 5], [1, 1]],
+    'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
+    'c': [[3, 1]], 'C': [[2, 5], [3, 1]],
+    'h': [[4, 1]], 'H': [[2, 5], [4, 1]],
+    'f': [[5, 1]], 'F': [[2, 5], [5, 1]],
+    '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
+    ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
+    'm': [[8, 1]], 'M': [[2, 5], [8, 1]],
+    'g': [[9, 1]], 'G': [[2, 5], [9, 1]],
+    'l': [[10, 1]], 'L': [[2, 5], [10, 1]],
+    'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
+    '/': [[12, 1]], '?': [[2, 5], [12, 1]],
+    '`': [[13, 1]], '~': [[2, 5], [13, 1]],
+
+    '\t': [[0, 2]],
+    'a': [[1, 2]], 'A': [[2, 5], [1, 2]],
+    'o': [[2, 2]], 'O': [[2, 5], [2, 2]],
+    'e': [[3, 2]], 'E': [[2, 5], [3, 2]],
+    'i': [[4, 2]], 'I': [[2, 5], [4, 2]],
+    'u': [[5, 2]], 'U': [[2, 5], [5, 2]],
+    'd': [[8, 2]], 'D': [[2, 5], [8, 2]],
+    'r': [[9, 2]], 'R': [[2, 5], [9, 2]],
+    't': [[10, 2]], 'T': [[2, 5], [10, 2]],
+    'n': [[11, 2]], 'N': [[2, 5], [11, 2]],
+    's': [[12, 2]], 'S': [[2, 5], [12, 2]],
+    '=': [[13, 2]], '+': [[2, 5], [13, 2]],
+
+    'z': [[1, 3]], 'Z': [[2, 5], [1, 3]],
+    'q': [[2, 3]], 'Q': [[2, 5], [2, 3]],
+    '\'': [[3, 3]], '"': [[2, 5], [3, 3]],
+    ',': [[4, 3]], '<': [[2, 5], [4, 3]],
+    '.': [[5, 3]], '>': [[2, 5], [5, 3]],
+    'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
+    'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
+    'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
+    'y': [[11, 3]], 'Y': [[2, 5], [11, 3]],
+    'j': [[12, 3]], 'J': [[2, 5], [12, 3]],
+
+    ':': [[4, 4]], ';': [[4, 4], [4, 4]],
+    '-': [[9, 4]], '_': [[2, 5], [9, 4]],
+
+    ' ': [[10, 5]],
+    '\n': [[11, 5]],
+
+    ## Layered things
+    # Hungarian
+    'á': [[9, 5], [1, 2]],  'Á': [[2, 5], [9, 5], [1, 2]],
+    'ó': [[9, 5], [2, 2]],  'Ó': [[2, 5], [9, 5], [2, 2]],
+    'ő': [[9, 5], [2, 1]],  'Ő': [[2, 5], [9, 5], [2, 1]],
+    'ö': [[9, 5], [2, 3]],  'Ö': [[2, 5], [9, 5], [2, 3]],
+    'é': [[9, 5], [3, 2]],  'É': [[2, 5], [9, 5], [3, 2]],
+    'ú': [[9, 5], [4, 2]],  'Ú': [[2, 5], [9, 5], [4, 2]],
+    'ű': [[9, 5], [4, 1]],  'Ű': [[2, 5], [9, 5], [4, 1]],
+    'ü': [[9, 5], [4, 3]],  'Ü': [[2, 5], [9, 5], [4, 3]],
+    'í': [[9, 5], [5, 2]],  'Í': [[2, 5], [9, 5], [5, 2]],
+}
+
+def lookup_char(layer, ch):
+    if ch in charmap:
+        return charmap[ch]
+    return None
+
+def process_char(layer, ch, out=sys.stdout):
+    keys = lookup_char(layer, ch)
+    if not keys:
+        print ("Unknown char: %s" % ch, file=sys.stderr)
+    else:
+        for (c, r) in keys:
+            print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out)
+            print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out)
+
+def process_file(fn, layer, out=sys.stdout):
+    with open(fn, "r") as f:
+        ch = f.read(1)
+        while ch:
+            process_char(layer, ch, out)
+            ch = f.read(1)
+
+if sys.argv[1] == '-':
+    out='/dev/stdin'
+else:
+    out=sys.argv[1]
+
+if len(sys.argv) >= 2:
+    layer = 'ADORE'
+else:
+    layer = sys.argv[2]
+
+process_file(out, layer = layer)
diff --git a/layouts/community/ergodox/alphadox/config.h b/layouts/community/ergodox/alphadox/config.h
new file mode 100644 (file)
index 0000000..6fc64f5
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#define FORCE_NKRO
+#define PREVENT_STUCK_MODIFIERS
+
+#undef TAPPING_TERM
+#undef IGNORE_MOD_TAP_INTERRUPT
+
+#endif
diff --git a/layouts/community/ergodox/alphadox/keymap.c b/layouts/community/ergodox/alphadox/keymap.c
new file mode 100644 (file)
index 0000000..8acd86b
--- /dev/null
@@ -0,0 +1,107 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define ETC  2 // etc
+
+enum macro_id {
+    TEENSY,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[BASE] = LAYOUT_ergodox(
+    KC_NO,          KC_NO,         KC_NO,   KC_NO,    KC_NO,          KC_NO,  KC_NO,
+    KC_TAB,         KC_Q,          KC_W,    KC_D,     KC_F,           KC_K,   KC_PGUP,
+    CTL_T(KC_ESC),  LT(ETC,KC_A),  KC_S,    KC_E,     KC_T,           KC_G,
+    KC_LSFT,        KC_Z,          KC_X,    KC_C,     KC_V,           KC_B,   KC_PGDN,
+    KC_GRV,         KC_DEL,        KC_DEL,  KC_LALT,  GUI_T(KC_TAB),
+                                                                      KC_NO,  KC_NO,
+                                                                              KC_NO,
+                                           LT(SYMB,KC_BSPC),  CTL_T(KC_ESC),  KC_NO,
+
+    KC_NO,    KC_NO,  KC_NO,          KC_NO,    KC_NO,    KC_NO,    KC_NO,
+    KC_VOLU,  KC_J,   KC_U,           KC_R,     KC_L,     KC_SCLN,  KC_BSLS,
+              KC_Y,   KC_N,           KC_I,     KC_O,     KC_H,     KC_QUOT,
+    KC_VOLD,  KC_P,   KC_M,           KC_COMM,  KC_DOT,   KC_SLSH,  KC_RSFT,
+                      GUI_T(KC_TAB),  KC_LEFT,  KC_DOWN,  KC_UP,    LCAG_T(KC_RGHT),
+    KC_NO,  KC_NO,
+    KC_NO,
+    KC_NO,  SFT_T(KC_ENT),  LT(SYMB,KC_SPC)
+),
+
+[SYMB] = LAYOUT_ergodox(
+    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,
+    KC_TRNS,  KC_EXLM,  KC_AT,    KC_LCBR,  KC_RCBR,  KC_PIPE,  KC_TRNS,
+    KC_TRNS,  KC_HASH,  KC_DLR,   KC_LPRN,  KC_RPRN,  KC_BSLS,
+    KC_TRNS,  KC_PERC,  KC_CIRC,  KC_LBRC,  KC_RBRC,  KC_ASTR,  KC_TRNS,
+    KC_TILD,  KC_AMPR,  KC_AMPR,  KC_TRNS,  KC_TRNS,
+                                                      KC_TRNS,  KC_TRNS,
+                                                                KC_TRNS,
+                                              KC_TRNS, KC_TRNS, KC_TRNS,
+
+    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
+    KC_TRNS,  KC_EQL,   KC_7,   KC_8,   KC_9,    KC_PLUS,  KC_NO,
+              KC_MINS,  KC_4,   KC_5,   KC_6,    KC_QUOT,  KC_NO,
+    KC_TRNS,  KC_UNDS,  KC_1,   KC_2,   KC_3,    KC_DQUO,  KC_TRNS,
+                        KC_0,   KC_NO,  KC_DOT,  KC_TRNS,  KC_TRNS,
+    KC_TRNS,  KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,  KC_TRNS,  KC_TRNS
+),
+
+[ETC] = LAYOUT_ergodox(
+    RESET,    KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_NO,    KC_NO,
+    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_PGUP,  KC_TRNS,
+    KC_TRNS,  LT(ETC,KC_A),  KC_NO,  KC_NO,    KC_NO,    KC_PGDN,
+    KC_TRNS,  KC_NO,         KC_NO,  KC_NO,    KC_NO,    KC_DEL,   KC_TRNS,
+    KC_TRNS,  KC_TRNS,       KC_NO,  KC_TRNS,  KC_TRNS,
+                                                         KC_TRNS,  KC_TRNS,
+                                                                   KC_TRNS,
+                                                 KC_TRNS, KC_TRNS, KC_TRNS,
+
+    KC_NO,    KC_NO,    KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
+    KC_TRNS,  KC_VOLU,  KC_F7,  KC_F8,  KC_F9,   KC_HOME,  KC_NO,
+              KC_VOLD,  KC_F4,  KC_F5,  KC_F6,   KC_END,   KC_NO,
+    KC_TRNS,  KC_MUTE,  KC_F1,  KC_F2,  KC_F3,   KC_INS,   KC_TRNS,
+                        KC_NO,  KC_NO,  KC_NO,   KC_NO,    KC_NO,
+    KC_TRNS,  KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,  KC_TRNS,  KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch(id) {
+    case TEENSY:
+      break;
+  }
+  return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+};
+
+void matrix_scan_user(void) {
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            break;
+    }
+};
diff --git a/layouts/community/ergodox/alphadox/rules.mk b/layouts/community/ergodox/alphadox/rules.mk
new file mode 100644 (file)
index 0000000..f93ff3b
--- /dev/null
@@ -0,0 +1,15 @@
+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.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
+
+
diff --git a/layouts/community/ergodox/andrew_osx/keymap.c b/layouts/community/ergodox/andrew_osx/keymap.c
new file mode 100644 (file)
index 0000000..ef37fc0
--- /dev/null
@@ -0,0 +1,187 @@
+// Netable differences vs. the default firmware for the ErgoDox EZ:
+// 1. The Cmd key is now on the right side, making Cmd+Space easier.
+// 2. The media keys work on OSX (But not on Windows).
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  |  '"  |           |  '"  |   6  |   7  |   8  |   9  |   0  | BkSp   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  | ~L1  |           | ~L1  |   Y  |   U  |   I  |   O  |   P  |   -    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   /    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1| Alt  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  |  L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Esc  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |  (   |       |  {   |        |      |
+ *                                 | Space| LGui |------|       |------| RGui   |Enter |
+ *                                 |      |      |  )   |       |  }   |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_QUOT,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_FN1,
+        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_LPRN,
+                                               KC_SPC,KC_LGUI,KC_RPRN,
+        // right hand
+             KC_QUOT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSPC,
+             KC_FN1,      KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_BSLS,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          TG(1),
+             KC_ESC,        CTL_T(KC_ESC),
+             KC_LCBR,
+             KC_RCBR,KC_RGUI, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/belak/LICENSE b/layouts/community/ergodox/belak/LICENSE
new file mode 100644 (file)
index 0000000..b462ba3
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Kaleb Elwert
+
+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.
diff --git a/layouts/community/ergodox/belak/README.md b/layouts/community/ergodox/belak/README.md
new file mode 100644 (file)
index 0000000..30484e6
--- /dev/null
@@ -0,0 +1,79 @@
+# Belak's Ergodox Layout
+
+This has been based off of [emacs\_osx\_dk](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/emacs_osx_dk)
+from the main qmk repo. However, I've taken some of the ideas for the thumbs
+from [dvorak\_emacs](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/dvorak_emacs)
+and tweaked it a bit based on the keycaps I have.
+
+This keyboard is intended for use in emacs (one of the main reasons for easy
+access to modifiers) but it could be useful in other instances as well.
+
+The main repo is used as a testbed, so sometimes the layout may be in a strange
+state. The qmk version should be relatively stable.
+
+## Instructions
+
+This is currently being used on a regular ergodox, but it should work fine on
+the infinity as well. Though, you may have to modify the commands to build and
+flash the firmware to match the separate halves as defined in the infinity
+documentation.
+
+If you are using this keymap in the qmk repo, you should be able to just run
+`make ergodox-belak-teensy`. If you're using this externally (I sometimes make
+changes before syncing them to qmk), use the following instructions:
+
+1. Clone the main qmk repo
+2. Clone this to `$QMK/keyboards/ergodox/keymaps/belak-external`
+3. Run `make ergodox-belak-external-teensy` from the root of the qmk repo.
+
+## Changelog
+
+Fifth Revision
+
+* Change layer keys to tap-dance keys which cycle through additional layers
+* Add a few emoji keys (in preparation for an emoji layer)
+
+Fourth Revision
+
+* Remove media layer
+* Add a layer which swaps control and gui on the thumb keys.
+* Add some basic code to save settings to the eeprom
+* Save the state of the keys swapped in the thumb in the eeprom
+
+Third Revision
+
+* Add numpad layer and remove numpad from symbols layer
+* Disable media layer
+* Add arrow keys on ijkl to the symbols layer
+* Replace ALT on held enter and held delete with GUI (for better OSX
+  compatibility, as there's already an ALT key relatively close)
+* Replace keys above enter and delete with temporary layer switch buttons not
+  matching the other layer switch for that hand.
+* Reindent and space out most of the layer definitions
+
+Second Revision
+
+* Clean up definitions to make differences between layers easier to see
+* Remove old LCD code
+* Add new LCD code based on fredizzimo's branch
+
+First Revision
+
+* Reverse grave and escape
+
+Initial Version
+
+* Copy from emacs\_osx\_dk
+* "Fix" right alt
+* Change thumb keys to match default layout (backspace, delete, enter, space)
+* Add modifiers to thumb keys (ctrl to backspace and space, alt to delete and
+  enter)
+* Replace the RAlt below the brackets with LGui and RGui
+* Remove LCtrl and RCtrl from the keys above shift
+* Add browser forward, and move browser back
+* "Fix" the order of volume keys
+
+## Repository
+
+The original code for this is kept at https://github.com/belak/ergodox-layout and
+is synced to qmk every few main revisions.
diff --git a/layouts/community/ergodox/belak/keymap.c b/layouts/community/ergodox/belak/keymap.c
new file mode 100644 (file)
index 0000000..016cf30
--- /dev/null
@@ -0,0 +1,368 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "eeprom.h"
+
+#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
+#define _______ KC_TRNS
+
+#define EECONFIG_BELAK_MAGIC (uint16_t)0xBE42
+
+// NOTE: This is just a number that's a bit beyond the end of what's already
+// defined. As there is no other define we can base this on, it may need to be
+// changed in the future. The initial value here is used as a placeholder with a
+// magic word, similar to the normal eeconfig. Note that all the storage being
+// used needs to fit inside the 32 bytes of the Ergodox Infinity.
+#define EECONFIG_BELAK (uint16_t *)16
+
+// The correct way to do this would be how the normal eeconfig handles it and
+// use a bitfield. However, the eeprom has a ton of space which isn't being
+// used so I don't really care and have a separate byte for every setting.
+#define EECONFIG_BELAK_SWAP_GUI_CTRL (uint8_t *)18
+
+static uint8_t swap_gui_ctrl = 0;
+static uint8_t td_led_override = 0;
+
+enum belak_keycodes {
+    // Function codes
+    BEL_F0 = SAFE_RANGE,
+    BEL_F1,
+
+    E_SHRUG,
+    E_TFLIP,
+    E_TSET,
+};
+
+inline void tap(uint16_t keycode) {
+    register_code(keycode);
+    unregister_code(keycode);
+};
+
+// TODO: Add LED support to the tap dance by using the advanced macro
+#define LTOGGLE TD(TD_LAYER_TOGGLE)
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define NUMP 2 // numpad
+#define SWPH 3 // swap gui/ctrl on the hands
+
+enum belak_td {
+    TD_LAYER_TOGGLE = 0,
+};
+
+void belak_td_each(qk_tap_dance_state_t *state, void *user_data);
+void belak_td_finished(qk_tap_dance_state_t *state, void *user_data);
+void belak_td_reset(qk_tap_dance_state_t *state, void *user_data);
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN_ADVANCED(belak_td_each, belak_td_finished, belak_td_reset),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   Esc  |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L2  |   6  |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   -    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |    \   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| LGui |           | RGui |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Layers| LCtrl| Left | Right| LAlt |                                       | RAlt | Up   | Down | RCtrl|Layers|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |  ~L2 | Ins  |       | Grv  | ~L1   |
+ *                                ,-------|------|------|       |------+-------+-------.
+ *                                | Back  |      | Home |       | PgUp |       |       |
+ *                                | Space | Del  |------|       |------| Enter | Space |
+ *                                |       |      | End  |       | PgDn |       |       |
+ *                                `---------------------'       `----------------------'
+ */
+    [BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
+        CTL_T(KC_BSLS), KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
+        LTOGGLE,        KC_LCTRL,     KC_LEFT,KC_RGHT,KC_LALT,
+                                                     MO(NUMP),KC_INS,
+                                                              KC_HOME,
+                                 CTL_T(KC_BSPC),GUI_T(KC_DEL),KC_END,
+        // right hand
+        TG(NUMP),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_EQL,
+        KC_RBRC,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
+                     KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
+        KC_RGUI,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                             KC_RALT,KC_UP,  KC_DOWN,KC_RCTRL,         LTOGGLE,
+        KC_GRV,      MO(SYMB),
+        KC_PGUP,
+        KC_PGDN,     GUI_T(KC_ENT), CTL_T(KC_SPC)
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |      |  Up  |      |      |   F12  |
+ * |--------+------+------+------+------+------| TFLIP|           | TSET |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down | Left | Down | Rght |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  | SHRUG|           |      |   &  |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LClear|      |      |      |      |                                       |      |      |      |      |LClear|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | TOGL |      |       |      | TOGL |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+    [SYMB] = LAYOUT_ergodox(
+        // left hand
+        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   E_TFLIP,
+        _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, E_TSET,
+        _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
+        _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, E_SHRUG,
+        BEL_F1,  _______, _______, _______, _______,
+                                                     BEL_F0,  _______,
+                                                              _______,
+                                            _______, _______, _______,
+        // right hand
+        _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
+        _______, KC_UP,   _______, KC_UP,   _______, _______, KC_F12,
+                 KC_DOWN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+        _______, KC_AMPR, _______, _______, _______, _______, _______,
+                          _______, _______, _______, _______, BEL_F1,
+        _______, BEL_F0,
+        _______,
+        _______, _______, _______
+    ),
+/* Keymap 2: Numpad Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LClear|      |      |      |      |                                       |   0  |    0 |   .  |   =  |LClear|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | TOGL |      |       |      | TOGL |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+    [NUMP] = LAYOUT_ergodox(
+        // left hand
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        BEL_F1,  _______, _______, _______, _______,
+                                                     BEL_F0,  _______,
+                                                              _______,
+                                            _______, _______, _______,
+        // right hand
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, KC_7,    KC_8,    KC_9,    KC_ASTR, _______,
+                 _______, KC_4,    KC_5,    KC_6,    KC_PLUS, _______,
+        _______, _______, KC_1,    KC_2,    KC_3,    KC_BSLS, _______,
+                          KC_0,    KC_0,    KC_DOT,  KC_EQL,  BEL_F1,
+        _______, BEL_F0,
+        _______,
+        _______, _______, _______
+    ),
+/* Keymap 3: Swap control and gui on the thumb */
+    [SWPH] = LAYOUT_ergodox(
+        // left hand
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______,
+                                                     _______, _______,
+                                                              _______,
+                               GUI_T(KC_BSPC), CTL_T(KC_DEL), _______,
+        // right hand
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+                 _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+                          _______, _______, _______, _______, _______,
+        _______, _______,
+        _______,
+        _______, CTL_T(KC_ENT), GUI_T(KC_SPC)
+    ),
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+    // If our magic word wasn't set properly, we need to zero out the settings.
+    if (eeprom_read_word(EECONFIG_BELAK) != EECONFIG_BELAK_MAGIC) {
+        eeprom_update_word(EECONFIG_BELAK, EECONFIG_BELAK_MAGIC);
+        eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, 0);
+    }
+
+    if (eeprom_read_byte(EECONFIG_BELAK_SWAP_GUI_CTRL)) {
+        layer_on(SWPH);
+        swap_gui_ctrl = 1;
+    }
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+
+    switch (td_led_override) {
+    case 1:
+        ergodox_right_led_1_on();
+        break;
+    case 2:
+        ergodox_right_led_2_on();
+        break;
+    default:
+        // Layer 1 and 2 are both overlay layers, so they could both be on. This
+        // means we can't use the lazy check of checking for the first significant
+        // bit.
+        if (LAYER_ON(SYMB)) {
+            ergodox_right_led_1_on();
+        }
+        if (LAYER_ON(NUMP)) {
+            ergodox_right_led_2_on();
+        }
+    }
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+    case BEL_F0:
+        if(record->event.pressed){
+            swap_gui_ctrl = !swap_gui_ctrl;
+            eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, swap_gui_ctrl);
+
+            if (swap_gui_ctrl) {
+                layer_on(SWPH);
+            } else {
+                layer_off(SWPH);
+            }
+
+            return false;
+        }
+        break;
+    case BEL_F1:
+        if(record->event.pressed){
+            layer_off(SYMB);
+            layer_off(NUMP);
+
+            return false;
+        }
+        break;
+    case E_SHRUG: // ¯\_(ツ)_/¯
+        if (record->event.pressed) {
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+            tap(KC_BSLS);                                   // Arm
+            register_code(KC_RSFT);
+            tap(KC_UNDS);                                   // Arm
+            tap(KC_LPRN);                                   // Head
+            unregister_code(KC_RSFT);
+            process_unicode((0x30C4|QK_UNICODE), record);   // Face
+            register_code(KC_RSFT);
+            tap(KC_RPRN);                                   // Head
+            tap(KC_UNDS);                                   // Arm
+            unregister_code(KC_RSFT);
+            tap(KC_SLSH);                                   // Arm
+            process_unicode((0x00AF|QK_UNICODE), record);   // Hand
+        }
+        return false;
+        break;
+    case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻
+        if (record->event.pressed) {
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            process_unicode((0x25A1|QK_UNICODE), record);   // Mouth
+            process_unicode((0x00B0|QK_UNICODE), record);   // Eye
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+            process_unicode((0x256F|QK_UNICODE), record);   // Arm
+            tap(KC_SPC);
+            process_unicode((0x0361|QK_UNICODE), record);   // Flippy
+            tap(KC_SPC);
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+            process_unicode((0x2501|QK_UNICODE), record);   // Table
+            process_unicode((0x253B|QK_UNICODE), record);   // Table
+        }
+        return false;
+        break;
+    case E_TSET: // ┬──┬ ノ( ゜-゜ノ)
+        if (record->event.pressed) {
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x2500|QK_UNICODE), record);   // Table
+            process_unicode((0x252C|QK_UNICODE), record);   // Table
+            tap(KC_SPC);
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_9);
+            unregister_code(KC_RSFT);
+            tap(KC_SPC);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            tap(KC_MINS);
+            process_unicode((0x309C|QK_UNICODE), record);   // Eye
+            process_unicode((0x30CE|QK_UNICODE), record);   // Arm
+            register_code(KC_RSFT);
+            tap(KC_0);
+            unregister_code(KC_RSFT);
+        }
+        return false;
+        break;
+    }
+
+    return true;
+}
+
+void belak_td_each(qk_tap_dance_state_t *state, void *user_data) {
+    switch (state->count) {
+    case 1:
+        td_led_override = 1;
+        break;
+    case 2:
+        td_led_override = 2;
+        break;
+    default:
+        reset_tap_dance(state);
+    }
+}
+
+void belak_td_finished(qk_tap_dance_state_t *state, void *user_data) {
+    switch (state->count) {
+    case 1:
+        layer_on(SYMB);
+        break;
+    case 2:
+        layer_on(NUMP);
+        break;
+    }
+    td_led_override = 0;
+}
+
+void belak_td_reset(qk_tap_dance_state_t *state, void *user_data) {
+    td_led_override = 0;
+}
diff --git a/layouts/community/ergodox/belak/rules.mk b/layouts/community/ergodox/belak/rules.mk
new file mode 100644 (file)
index 0000000..cd8fdec
--- /dev/null
@@ -0,0 +1,4 @@
+TAP_DANCE_ENABLE=yes
+UNICODE_ENABLE=yes
+
+
diff --git a/layouts/community/ergodox/belak/visualizer.c b/layouts/community/ergodox/belak/visualizer.c
new file mode 100644 (file)
index 0000000..b92890a
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+Copyright 2017 Fred Sundvik
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// Currently we are assuming that both the backlight and LCD are enabled
+// But it's entirely possible to write a custom visualizer that use only
+// one of them
+#ifndef LCD_BACKLIGHT_ENABLE
+#error This visualizer needs that LCD backlight is enabled
+#endif
+
+#ifndef LCD_ENABLE
+#error This visualizer needs that LCD is enabled
+#endif
+
+#include "simple_visualizer.h"
+
+static void get_visualizer_layer_and_color(visualizer_state_t* state) {
+    uint8_t saturation = 60;
+    if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
+        saturation = 255;
+    }
+
+    if (state->status.layer & 0x4) {
+        state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
+        state->layer_text = "Media";
+    }
+    else if (state->status.layer & 0x2) {
+        state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
+        state->layer_text = "Symbols";
+    }
+    else {
+        state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
+        state->layer_text = "Base";
+    }
+}
diff --git a/layouts/community/ergodox/bepo/keymap.c b/layouts/community/ergodox/bepo/keymap.c
new file mode 100644 (file)
index 0000000..c33c3c2
--- /dev/null
@@ -0,0 +1,368 @@
+#include QMK_KEYBOARD_H
+#include "keymap_bepo.h"
+#include "keymap_french.h"
+
+// keymaps
+#define BEPO 0 // default layer, for bepo compatible systems
+#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems
+#define QW_A 2 // bepo with altgr key to qwerty compat layer
+#define QW_S 3 // bepo with shift key to qwerty compat layer
+#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems
+#define AZ_A 5 // bepo with altgr key to azerty compat layer
+#define AZ_S 6 // bepo with shift key to azerty compat layer
+#define FNAV 7 // function / navigation / mouse layer
+#define NUMK 8 // numeric keypad layer
+
+// macros
+#define KP_00 0        // keypad "double 0"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: default layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   %    |   B  |E_ACUT|   P  |   O  |E_GRAV|Backsp|                                  |CapsLo|   ^  |   V  |   D  |   L  |   J  |   Z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   W    |   A  |   U  |   I  |   E  |   ,  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * | E_CIRC |A_GRAV|   Y  |   X  |   .  |   K  |      |                                  |      |   '  |   Q  |   G  |   H  |   F  | C_CEDIL|
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             | Space|LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[BEPO] = LAYOUT_ergodox(
+// Left hand
+BP_DOLLAR,     BP_DQOT,        BP_LGIL,        BP_RGIL,        BP_LPRN,        BP_RPRN,        KC_DEL,
+BP_PERCENT,    BP_B,           BP_E_ACUTE,     BP_P,           BP_O,           BP_E_GRAVE,     KC_BSPC,
+BP_W,          BP_A,           BP_U,           BP_I,           BP_E,           BP_COMMA,
+BP_ECRC,       BP_A_GRAVE,     BP_Y,           BP_X,           BP_DOT,         BP_K,           KC_TAB,
+KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
+                                                                                                               DF(BEPO),       DF(QW_B),
+                                                                                                                               MO(NUMK),
+                                                                                               KC_SPC,         KC_LSHIFT,      MO(FNAV),
+// Right hand
+                               KC_SLCK,        BP_AT,          BP_PLUS,        BP_MINUS,       BP_SLASH,       BP_ASTR,        BP_EQUAL,
+                               KC_CAPSLOCK,    BP_DCRC,        BP_V,           BP_D,           BP_L,           BP_J,           BP_Z,
+                                               BP_C,           BP_T,           BP_S,           BP_R,           BP_N,           BP_M,
+                               KC_NUMLOCK,     BP_APOS,        BP_Q,           BP_G,           BP_H,           BP_F,           BP_CCED,
+                                                               BP_ALGR,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
+DF(AZ_B),      DF(BEPO),
+MO(NUMK),
+MO(FNAV),      KC_RSHIFT,      KC_ENTER),
+/* Keymap 1: bepo to qwerty base compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   %    |   b  |   e  |   p  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   e    |   a  |   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             | Space|LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[QW_B] = LAYOUT_ergodox(
+// Left hand
+KC_DOLLAR,     S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LPRN,        KC_RPRN,        KC_DEL,
+KC_PERCENT,    KC_B,           KC_E,           KC_P,           KC_O,           KC_E,           KC_BSPC,
+KC_W,          KC_A,           KC_U,           KC_I,           KC_E,           KC_COMMA,
+KC_E,          KC_A,           KC_Y,           KC_X,           KC_DOT,         KC_K,           KC_TAB,
+KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_SPC,         MO(QW_S),       KC_TRNS,
+// Right hand
+                               KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
+                               KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
+                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
+                               KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
+                                                               MO(QW_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       MO(QW_S),       KC_ENTER),
+/* Keymap 2: bepo with altgr key to qwerty compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   w    |   a  |   u  |   i  |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   e    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             |   _  |LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[QW_A] = LAYOUT_ergodox(
+// Left hand
+KC_DOLLAR,     S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LBRC,        KC_RBRC,        KC_DEL,
+KC_PERCENT,    KC_PIPE,        KC_E,           KC_AMPR,        KC_O,           KC_E,           KC_BSPC,
+KC_W,          KC_A,           KC_U,           KC_I,           RALT(KC_5),     KC_COMMA,
+KC_E,          KC_BSLASH,      KC_LCBR,        KC_RCBR,        KC_DOT,         KC_TILDE,       KC_TAB,
+KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_UNDS,        MO(QW_S),       KC_TRNS,
+// Right hand
+                               KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
+                               KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
+                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
+                               KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
+                                                               KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       MO(QW_S),       KC_ENTER),
+/* Keymap 3: bepo with shift key to qwerty compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             | Space|LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[QW_S] = LAYOUT_ergodox(
+// Left hand
+KC_HASH,       KC_1,           KC_2,           KC_3,           KC_4,           KC_5,           KC_TRNS,
+KC_GRV,                S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
+S(KC_W),       S(KC_A),        S(KC_U),        S(KC_I),        S(KC_E),        KC_SCOLON,
+S(KC_E),       S(KC_A),        S(KC_Y),        S(KC_X),        KC_COLON,       S(KC_K),        S(KC_TAB),
+S(KC_ESC),     S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,
+// Right hand
+                               KC_TRNS,        KC_6,           KC_7,           KC_8,           KC_9,           KC_0,           KC_TRNS,
+                               KC_TRNS,        KC_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(KC_Z),
+                                               S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(KC_M),
+                               KC_TRNS,        S(KC_SLASH),    S(KC_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
+                                                               S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       KC_TRNS,        KC_TRNS),
+/* Keymap 4: bepo to azerty base compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   %    |   b  |e_acut|   p  |   o  |e_grav|Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   e    |a_grav|   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  | c_cedil|
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             | Space|LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[AZ_B] = LAYOUT_ergodox(
+// Left hand
+FR_DLR,                FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LPRN,        FR_RPRN,        KC_DEL,
+FR_PERC,       KC_B,           FR_EACU,        KC_P,           KC_O,           FR_EGRV,        KC_BSPC,
+FR_W,          FR_A,           KC_U,           KC_I,           KC_E,           FR_COMM,
+KC_E,          FR_AGRV,        KC_Y,           KC_X,           FR_DOT,         KC_K,           KC_TAB,
+KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_SPC,         MO(AZ_S),       KC_TRNS,
+// Right hand
+                               KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
+                               KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
+                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
+                               KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
+                                                               MO(AZ_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       MO(AZ_S),       KC_ENTER),
+/* Keymap 5: bepo with altgr key to azerty compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   w    |   a  |u_grav| trem |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   /    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             |   _  |LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[AZ_A] = LAYOUT_ergodox(
+// Left hand
+FR_DLR,                FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LBRC,        FR_RBRC,        KC_DEL,
+FR_PERC,       FR_PIPE,        FR_EACU,        FR_AMP,         KC_O,           FR_EGRV,        KC_BSPC,
+FR_W,          FR_A,           FR_UGRV,        S(KC_LBRC),     FR_EURO,        FR_COMM,
+FR_SLSH,       FR_BSLS,        FR_LCBR,        FR_RCBR,        FR_DOT,         FR_TILD,        KC_TAB,
+KC_ESC,                KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               FR_UNDS,        MO(AZ_S),       KC_TRNS,
+// Right hand
+                               KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
+                               KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
+                                               KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
+                               KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
+                                                               KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       MO(AZ_S),       KC_ENTER),
+/* Keymap 6: bepo with shift key to azerty compat layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   °    |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
+ * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
+ * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
+ * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
+ * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |L_NumK|      |L_NumK|      |      |
+ *                                             | Space|LShift|------|      |------|RShift|Enter |
+ *                                             |      |      |L_FNav|      |L_FNav|      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[AZ_S] = LAYOUT_ergodox(
+// Left hand
+FR_HASH,       FR_1,           FR_2,           FR_3,           FR_4,           FR_5,           KC_TRNS,
+FR_GRV,                S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
+S(FR_W),       S(FR_A),        S(KC_U),        S(KC_I),        S(KC_E),        FR_SCLN,
+S(KC_E),       S(FR_A),        S(KC_Y),        S(KC_X),        FR_COLN,        S(KC_K),        S(KC_TAB),
+S(KC_ESC),     S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,
+// Right hand
+                               KC_TRNS,        FR_6,           FR_7,           FR_8,           FR_9,           FR_0,           FR_OVRR,
+                               KC_TRNS,        FR_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(FR_Z),
+                                               S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(FR_M),
+                               KC_TRNS,        FR_QUES,        S(FR_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
+                                                               S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       KC_TRNS,        KC_TRNS),
+/* Keymap 7: function / navigation / mouse layer
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |VolMut|                                  |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |        | Next |LClick|  Up  |RClick| WhUp |VolDwn|                                  |      | PgUp | Home |  Up  |  End |  F11 |        |
+ * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
+ * |        | Prev | Left | Down | Right|WhDown|------|                                  |------| PgDn | Left | Down | Right|  F12 |        |
+ * |--------+------+------+------+------+------| VolUp|                                  |      |------+------+------+------+------+--------|
+ * |        | Undo |  Cut | Copy | Paste|      |      |                                  |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |             |      |      |      |      |      |             |      |      |      |      |      |
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |      |      |      |      |      |
+ *                                             |      |      |------|      |------|      |      |
+ *                                             |      |      |      |      |      |      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[FNAV] = LAYOUT_ergodox(
+// Left hand
+KC_NO,         KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_MUTE,
+KC_NO,         KC_MS_BTN5,     KC_MS_BTN1,     KC_MS_UP,       KC_MS_BTN2,     KC_MS_WH_UP,    KC_VOLU,
+KC_NO,         KC_MS_BTN4,     KC_MS_LEFT,     KC_MS_DOWN,     KC_MS_RIGHT,    KC_MS_WH_DOWN,
+KC_NO,         KC_UNDO,        KC_CUT,         KC_COPY,        KC_PASTE,       KC_NO,          KC_VOLD,
+KC_NO,         KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_NO,          KC_TRNS,        KC_TRNS,
+// Right hand
+                               KC_NO,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_NO,
+                               KC_NO,          KC_PGUP,        KC_HOME,        KC_UP,          KC_END,         KC_F11,         KC_NO,
+                                               KC_PGDOWN,      KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_F12,         KC_NO,
+                               KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+                                                               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_NO,          KC_NO,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       KC_TRNS,        KC_NO),
+/* Keymap 8: numeric keypad layer, sends keypad codes
+ *
+ * ,--------------------------------------------------.                                  ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |                                  |      |      | NumLo|   /  |   *  |   -  |        |
+ * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |                                  |      |      |   7  |   8  |   9  |   +  |        |
+ * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|                                  |------|      |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |                                  |      |      |   1  |   2  |   3  | Enter|        |
+ * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |             |      |      |      |      |      |             |   0  |  00  |   .  | Enter|      |
+ *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
+ *                                             |      |      |      |      |      |      |      |
+ *                                             |      |      |------|      |------|      |      |
+ *                                             |      |      |      |      |      |      |      |
+ *                                             `--------------------'      `--------------------'
+ */
+[NUMK] = LAYOUT_ergodox(
+// Left hand
+KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+KC_NO,         KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+KC_NO,         KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
+                                                                                                               KC_TRNS,        KC_TRNS,
+                                                                                                                               KC_TRNS,
+                                                                                               KC_NO,          KC_TRNS,        KC_TRNS,
+// Right hand
+                               KC_NO,          KC_NO,          KC_NUMLOCK,     KC_KP_SLASH,    KC_KP_ASTERISK, KC_KP_MINUS,    KC_NO,
+                               KC_NO,          KC_NO,          KC_KP_7,        KC_KP_8,        KC_KP_9,        KC_KP_PLUS,     KC_NO,
+                                               KC_NO,          KC_KP_4,        KC_KP_5,        KC_KP_6,        KC_KP_PLUS,     KC_NO,
+                               KC_NO,          KC_NO,          KC_KP_1,        KC_KP_2,        KC_KP_3,        KC_KP_ENTER,    KC_NO,
+                                                               KC_KP_0,        M(KP_00),       KC_KP_COMMA,    KC_KP_ENTER,    KC_NO,
+KC_TRNS,       KC_TRNS,
+KC_TRNS,
+KC_TRNS,       KC_TRNS,        KC_NO)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  switch(id) {
+    // keypad "double 0"
+    case KP_00:
+      if (record->event.pressed) {
+        return MACRO( T(KP_0), D(KP_0), END );
+      } else {
+        return MACRO( U(KP_0), END );
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
diff --git a/layouts/community/ergodox/bepo/readme.md b/layouts/community/ergodox/bepo/readme.md
new file mode 100644 (file)
index 0000000..14a1d22
--- /dev/null
@@ -0,0 +1,36 @@
+![bepo.png](https://i.imgur.com/TnO8ApW.png)
+
+# BEPO keymap for the ErgoDox
+
+This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this readme will be in french.
+
+# Disposition BÉPO pour l'ErgoDox
+
+Cette keymap a été pensée pour la disposition BÉPO (http://bepo.fr), qui est une disposition de clavier francophone, ergonomique et libre, élaborée selon la méthode Dvorak. L'adaptation de cette disposition à l'ErgoDox a été réalisée en conservant les points forts du clavier TypeMatrix 2030 (très répandu dans la communauté bépo, avec un excellent rapport ergonomie / prix) voir en réglant certains de ses défauts (3 colonnes pour l'auriculaire droit et touche "Ê") et en apportant son lot de nouveautés (compatibilité avec les systèmes azerty et qwerty).
+
+Particularités
+--------------
+
+Touches de repos des pouces : "espace" à gauche et "entrée" à droite.
+
+Placement des touches de combinaison ("Shift", "Alt", "Ctrl"...) adapté aux pouces, et permettant de conserver chaque doigt pour les rangées de lettres auxquelles ils sont assignés sans avoir à changer la touche de combinaison de côté (exemple : "A" majuscule puis "M" majuscule avec les auriculaires et un seul appui d'une touche "Shift").
+
+Les touches "Alt" et "Alt Gr" sont accessibles avec les pouces sur la rangée du bas comme sur la TypeMatrix 2030, avec une symétrie gauche / droite.
+
+Les touches "Ctrl" sont placées sur la même ligne que les touche "Alt" et "Alt Gr" comme sur un clavier clasique, elles sont accessibles aux pouces sur la rangée du bas (moins éloigné que le groupe de touches de pouces pour des petites mains).
+
+Les touches "Backspace" et "Delete" sont placées comme sur la TypeMatrix 2030, du côté gauche uniquement (pour laisser celles de la main droite servir de {caps,num,scroll}lock puisqu'elles ont des LED).
+
+La touche "Tab" est placée comme sur la TypeMatrix 2020.
+
+Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO".
+
+Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite et d'effectuer des actions souris avec uniquement la main gauche. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long).
+
+Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0".
+
+Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour des accès BIOS ou console en QWERTY.
+
+Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier AZERTY. Cette compatibilité n'est pas parfaite (pas de gestion des caractères non présents sur le clavier AZERTY, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour faire du bureau à distance vers un système Windows sans BEPO.
+
+> Olivier Smedts <olivier@gid0.org>
diff --git a/layouts/community/ergodox/bepo/rules.mk b/layouts/community/ergodox/bepo/rules.mk
new file mode 100644 (file)
index 0000000..839dd82
--- /dev/null
@@ -0,0 +1,7 @@
+# Having a file like this allows you to override Makefile definitions
+# for your own particular keymap
+
+SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+
+
diff --git a/layouts/community/ergodox/bepo_csa/keymap.c b/layouts/community/ergodox/bepo_csa/keymap.c
new file mode 100644 (file)
index 0000000..9526ea3
--- /dev/null
@@ -0,0 +1,527 @@
+/* TypeMatrix-2030-like keymap  */
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+#include "led.h"
+#include "keymap_extras/keymap_bepo.h"
+#include "keymap_extras/keymap_canadian_multilingual.h"
+
+enum layers {
+    LR_BASE, // default layer
+    LR_CSA, // BÉPO over Canadian Multilingual (CSA)
+    LR_CSA_SFT, // shifted BÉPO over CSA
+    LR_CSA_AGR, // altgr-ed BÉPO over CSA
+    LR_CSA_AGR_SFT, // altgr-shifted BÉPO over CSA
+    LR_NUMR, // numeric layer
+    LR_FN, // fn layer
+};
+
+#define IS_CA_MULT_ENABLED()    (layer_state & (1 << LR_CSA))
+
+enum macros {
+    // Characters that do not exist in CSA and must be implemented based on unicode support
+    // Note: these are intentionally declared first to be used as indexes in spec_chars below
+    UC_NDSH, // –
+    UC_MDSH, // —
+    UC_ELPS, // …
+    END_UC, // indicates the last unicode character macro
+    // other macros
+    M_CSA_SFT, // toggle shift on CSA
+    M_CSA_AGR_SFT, // toggle shift on LR_CSA_AGR (goes to LR_CSA_AGR_SFT)
+    M_CSA_SFT_AGR, // toggle AltGr on LR_CSA_SFT (goes to LR_CSA_AGR_SFT)
+    // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT
+    M_1,
+    M_2,
+    M_3,
+    M_4,
+    M_5,
+    M_6,
+    M_7,
+    M_8,
+    M_9,
+    M_0,
+    M_DEGR,
+    M_SCLN,
+    M_GRV,
+    M_NBSP,
+    // macros for characters that don't have a simple key combination in LR_CA_MULT_ALTGR
+    M_CRC,
+    // other layer macros
+    M_DBL0, // double 0
+    M_FNLR, // fn layer
+    M_NMAL, // num+alt
+};
+
+#define CSA(name)   M(M_CSA_##name)     // calls a CSA macro
+
+const uint16_t unicode_chars[] = {
+        [UC_NDSH] = L'–',
+        [UC_MDSH] = L'—',
+        [UC_ELPS] = L'…',
+};
+
+/* shortcut for unicode character macros */
+#define MUC(name)   M(UC_##name)    // calls a unicode macro
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
+ * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+ * |   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
+ * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+ * | LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl |  fn  | LGui |numAlt| LAlt |                                       |Alt Gr|   %  |  App |   Ç  | RCtrl|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                       ,--------------.       ,-------------.
+ *                                       |  Esc  | num  |       | Left |Right |
+ *                                ,------+-------+------|       |------+------+------.
+ *                                |      |       | PgUp |       |  Up  |      |      |
+ *                                |Space | Home  |------|       |------| End  |Space |
+ *                                |      |       | PgDn |       | Down |      |      |
+ *                                `---------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[LR_BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        BP_DLR,     KC_1,      KC_2,    KC_3,      KC_4,     KC_5,    KC_DELT,
+        KC_TAB,     BP_B,      BP_ECUT, BP_P,      BP_O,     BP_EGRV, KC_BSPC,
+        BP_EQL,     BP_A,      BP_U,    BP_I,      BP_E,     BP_COMM,
+        KC_LSFT,    BP_AGRV,   BP_Y,    BP_X,      BP_DOT,   BP_K,    KC_ENT,
+        KC_LCTL,    M(M_FNLR), KC_LGUI, M(M_NMAL), KC_LALT,
+
+                                                   KC_ESC,   TG(LR_NUMR),
+                                                             KC_PGUP,
+                                          KC_SPC,  KC_HOME,  KC_PGDN,
+
+        // right hand
+        KC_DELT,   KC_6,     KC_7,    KC_8,    KC_9,    KC_0,     BP_W,
+        KC_BSPC,   BP_DCRC,  BP_V,    BP_D,    BP_L,    BP_J,     BP_Z,
+                   BP_C,     BP_T,    BP_S,    BP_R,    BP_N,     BP_M,
+        KC_ENT,    BP_APOS,  BP_Q,    BP_G,    BP_H,    BP_F,     KC_RSFT,
+                             BP_ALGR, BP_PERC, KC_APP,  BP_CCED,  KC_RCTL,
+
+        KC_LEFT, KC_RGHT,
+        KC_UP,
+        KC_DOWN, KC_END,   KC_SPC
+    ),
+/**
+ * Same as default but for use with Canadian Multilingual on OS side
+ */
+[LR_CSA] = LAYOUT_ergodox(
+        // left hand
+        KC_DLR,      CSA_DQOT,   CSA_LGIL,  CSA_RGIL,  KC_LPRN,  KC_RPRN,   KC_TRNS,
+        KC_TRNS,     KC_B,       CSA_ECUT,  KC_P,      KC_O,     CSA_EGRV,  KC_TRNS,
+        KC_EQL,      KC_A,       KC_U,      KC_I,      KC_E,     KC_COMM,
+        CSA(SFT),    CSA_AGRV,   KC_Y,      KC_X,      KC_DOT,   KC_K,      KC_TRNS,
+        KC_TRNS,     KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,
+
+                                                       KC_TRNS,  KC_TRNS,
+                                                                 KC_TRNS,
+                                            KC_TRNS,   KC_TRNS,  KC_TRNS,
+
+        // right hand
+        KC_TRNS,  KC_AT,     KC_PLUS,  KC_MINS,  CSA_SLSH,  KC_ASTR,   KC_W,
+        KC_TRNS,  CSA_DCRC,  KC_V,     KC_D,     KC_L,      KC_J,      KC_Z,
+                  KC_C,      KC_T,     KC_S,     KC_R,      KC_N,      KC_M,
+        KC_TRNS,  CSA_APOS,  KC_Q,     KC_G,     KC_H,      KC_F,      CSA(SFT),
+                      MO(LR_CSA_AGR),  KC_PERC,  KC_TRNS,   CSA_CCED,  KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL
+
+        KC_TRNS,  KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,  KC_TRNS,  KC_TRNS
+    ),
+/* Shifted BÉPO over Canadian Multilingual
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   #    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |   !  |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   °    |      |      |      |      |   ;  |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |   :  |      |      |           |      |   ?  |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |   `  |      |      |       |
+ *   `----------------------------------'                                       `-----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[LR_CSA_SFT] = LAYOUT_ergodox(
+        // left hand
+        KC_HASH,  M(M_1),   M(M_2),   M(M_3),  M(M_4),   M(M_5),   KC_TRNS,
+        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
+        M(M_DEGR),KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,  M(M_SCLN),
+        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_COLN,  KC_TRNS,  KC_TRNS,
+        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,
+
+                                                      KC_TRNS,  KC_TRNS,
+                                                                KC_TRNS,
+                                          M(M_NBSP),  KC_TRNS,  KC_TRNS,
+
+        // right hand
+        KC_TRNS,  M(M_6),    M(M_7),   M(M_8),   M(M_9),   M(M_0),   KC_TRNS,
+        KC_TRNS,  KC_EXLM,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+                  KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+        KC_TRNS,  CSA_QEST,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+                        CSA(SFT_AGR),  M(M_GRV), KC_TRNS,  KC_TRNS,  KC_TRNS,
+
+        KC_TRNS,  KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,  KC_TRNS,  M(M_NBSP)
+    ),
+/* AltGr-ed BÉPO over Canadian Multilingual
+ * "////" indicates that the key is disabled (unsupported bépo character)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |    –   |   —  |   <  |   >  |   [  |   ]  |      |           |      |   ^  |   ±  | //// |   ÷  |   ×  | dead ˘ |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   |  |dead '|   &  |   œ  |dead `|      |           |      |   ¡  |dead ˇ|   ð  | //// |   ij  | ////// |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | ////// |   æ  |   ù  |dead "|   €  |   ̛’  |------|           |------|   ©  |   þ  |   ß  |   ®  |dead ~| dead ¯ |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   \  |   {  |   }  |   …  |   ~  |      |           |      |   ¿  |dead °|   μ  | //// |dead ˛|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      | //// |      |dead ¸|       |
+ *   `----------------------------------'                                       `-----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   _  |      |------|       |------|      |  _   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[LR_CSA_AGR] = LAYOUT_ergodox(
+        // left hand
+        MUC(NDSH),    MUC(MDSH),  CSA_LESS,  CSA_GRTR,  CSA_LBRC,   CSA_RBRC,  KC_TRNS,
+        KC_TRNS,      CSA_PIPE,   CSA_DACT,  KC_AMPR,   CSA_OE,     CSA_DGRV,  KC_TRNS,
+        KC_NO,        CSA_AE,     CSA_UGRV,  CSA_DTRM,  CSA_EURO,   CSA_RQOT,
+        CSA(AGR_SFT), CSA_BSLS,   CSA_LCBR,  CSA_RCBR,  MUC(ELPS),  CSA_TILD,  KC_TRNS,
+        KC_TRNS,      KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,
+
+                                                      KC_TRNS,  KC_TRNS,
+                                                                KC_TRNS,
+                                        KC_UNDS, CSA(AGR_SFT),  KC_TRNS,
+
+        // right hand
+        KC_TRNS,  M(M_CRC),  CSA_PSMS,  KC_NO,     CSA_DVSN, CSA_TIMS,  CSA_DBRV,
+        KC_TRNS,  CSA_IXLM,  CSA_DCAR,  CSA_ETH,   KC_NO,    CSA_IJ,    KC_NO,
+                  CSA_CPRT,  CSA_THRN,  CSA_SRPS,  CSA_RTM,  CSA_DTLD,  CSA_DMCR,
+        KC_TRNS,  CSA_IQST,  CSA_DRNG,  CSA_MU,    KC_NO,    CSA_DOGO,  CSA(AGR_SFT),
+                             KC_TRNS,   KC_NO,     KC_TRNS,  CSA_DCED,  KC_TRNS,
+
+        KC_TRNS,  KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,  CSA(AGR_SFT),  KC_UNDS
+    ),
+/* AltGr-shifted BÉPO over Canadian Multilingual
+ * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |    ¶   | //// |   “  |   ”  | //// | //// |      |           |      | //// |   ¬  |   ¼  |   ½  |   ¾  | ////// |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   ¦  |   ˝  |   §  |   Œ  |   `  |      |           |      | //// | //// |   Ð  | //// |   IJ  | ////// |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | ////// |   Æ  |   Ù  |dead-˙| //// | //// |------|           |------| //// |   Þ  |   ẞ   |   ™  | //// |   º    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | //// |   ‘  |   ’  | //// | //// |      |           |      | //// | //// | //// | //// |   ª  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[LR_CSA_AGR_SFT] = LAYOUT_ergodox(
+        // left hand
+        CSA_PARG,      KC_NO,     CSA_LDQT,    CSA_RDQT,  KC_NO,     KC_NO,     KC_TRNS,
+        KC_TRNS,       CSA_BPIP,  CSA_DDCT,    CSA_SECT,  S(CSA_OE), M(M_GRV),  KC_TRNS,
+        KC_NO,         S(CSA_AE), S(CSA_UGRV), CSA_DDTA,  KC_NO,     KC_NO,
+        CSA(AGR_SFT),  KC_NO,     CSA_LQOT,    CSA_RQOT,  KC_NO,     KC_NO,     KC_TRNS,
+        KC_TRNS,       KC_TRNS,   KC_TRNS,     KC_TRNS,   KC_TRNS,
+
+        KC_TRNS,  KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,  CSA(AGR_SFT),  KC_TRNS,
+
+        // right hand
+        KC_TRNS,  KC_NO,     CSA_NEGT,    CSA_1QRT,    CSA_1HLF,  CSA_3QRT,   KC_NO,
+        KC_TRNS,  KC_NO,     KC_NO,       S(CSA_ETH),  KC_NO,     S(CSA_IJ),  KC_NO,
+                  KC_NO,     S(CSA_THRN), S(CSA_SRPS), CSA_TM,    KC_NO,      CSA_ORDO,
+        KC_TRNS,  KC_NO,     KC_NO,       KC_NO,       KC_NO,     CSA_ORDA,   CSA(AGR_SFT),
+                        CSA(SFT_AGR),     KC_TRNS,     KC_TRNS,   KC_TRNS,    KC_TRNS,
+
+        KC_TRNS,  KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,  CSA(AGR_SFT),  KC_TRNS
+    ),
+/* Numeric Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
+ *   `----------------------------------'                                       `-----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |n.lock|c.lock|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[LR_NUMR] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
+       KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                              KC_TRNS, KC_TRNS,KC_TRNS,
+
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,   KC_TAB,  KC_PSLS,  KC_PAST, KC_PMNS,
+       KC_TRNS, KC_TRNS, KC_HOME, KC_P7,   KC_P8,    KC_P9,   KC_PPLS,
+                KC_UP,   KC_END,  KC_P4,   KC_P5,    KC_P6,   KC_PPLS,
+       KC_LEFT, KC_DOWN, KC_RGHT, KC_P1,   KC_P2,    KC_P3,   KC_PENT,
+                         KC_TRNS, KC_P0,   M(M_DBL0),KC_PDOT, CTL_T(KC_PENT),
+
+       KC_NLCK, KC_CAPS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* fn layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |~CA-mult|      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  RESET |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | App  | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Next |       |      |      |      |
+ *                                 | Mute | play |------|       |------|      |      |
+ *                                 |      |      | Prev |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[LR_FN] = LAYOUT_ergodox(
+       TG(LR_CSA), KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_INS,
+       KC_TRNS,    KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_VOLU,
+       RESET,      KC_TRNS, KC_TRNS,      KC_CALC,     KC_MAIL,      KC_WHOM,
+       KC_TRNS,    KC_APP,  S(KC_DELT),   LCTL(KC_INS),S(KC_INS),    KC_MUTE, KC_VOLD,
+       KC_TRNS,    KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,
+
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_MPRV,
+                                  KC_MUTE, KC_MPLY, KC_MNXT,
+
+    // right hand
+       KC_INS,   KC_EJCT, KC_PWR,  KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+void hold_shift(void) {
+    register_code(KC_LSHIFT);
+}
+
+void release_shift(void) {
+    unregister_code(KC_LSHIFT);
+}
+
+uint16_t hextokeycode(int hex) {
+    if (hex == 0x0) {
+        return KC_P0;
+    } else if (hex < 0xA) {
+        return KC_P1 + (hex - 0x1);
+    } else {
+        return KC_A + (hex - 0xA);
+    }
+}
+
+void send_unicode(uint16_t unicode)
+{
+    // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input
+    // Implemented for Windows:
+    // Pressing ALT followed by + followed by the unicode code point in hex.
+    // Requires registry key HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad set to String 1
+    register_code(KC_LALT);
+    register_code(KC_PPLS);
+    unregister_code(KC_PPLS);
+
+    for (int i = 12; i >= 0; i -= 4) {
+        register_code(hextokeycode((unicode >> i) & 0xF));
+        unregister_code(hextokeycode((unicode >> i) & 0xF));
+    }
+
+    unregister_code(KC_LALT);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+        case 0 ... END_UC:
+            if (record->event.pressed) {
+                send_unicode(unicode_chars[id]);
+            }
+            break;
+        case M_CSA_SFT:
+            // BÉPO over CSA: toggle shift layer
+            layer_invert(LR_CSA_SFT);
+            if (record->event.pressed) {
+                hold_shift();
+            } else {
+                release_shift();
+            }
+            break;
+        case M_CSA_SFT_AGR:
+            // BÉPO over CSA: from shift layer, momentary altgr+shift layer
+            layer_invert(LR_CSA_AGR);
+            layer_invert(LR_CSA_AGR_SFT);
+            if (record->event.pressed) {
+                // shift not needed for LR_CSA_AGR_SFT
+                release_shift();
+            } else {
+                // back to shift layer
+                hold_shift();
+            }
+            break;
+        case M_CSA_AGR_SFT:
+            // BÉPO over CSA: from altgr layer, momentary altgr+shift layer
+            layer_invert(LR_CSA_SFT);
+            layer_invert(LR_CSA_AGR_SFT);
+            break;
+        case M_1 ... M_0:
+        case M_DEGR:
+        case M_SCLN:
+        case M_GRV:
+        case M_NBSP:
+            // macros of the shift layer that require to release shift
+            if (record->event.pressed) {
+                release_shift();
+                switch (id) {
+                    case M_1 ... M_0:
+                        register_code(KC_1 + (id - M_1));
+                        break;
+                    case M_DEGR:
+                        return MACRO(DOWN(CSA_ALTGR), D(SCLN), END);
+                    case M_SCLN:
+                        return MACRO(D(SCLN), END);
+                    case M_GRV:
+                        return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END);
+                    case M_NBSP:
+                        // use weak mod such that pressing another key will not be affected
+                        add_weak_mods(MOD_BIT(CSA_ALTGR));
+                        return MACRO(D(SPACE), END);
+                }
+            } else {
+                hold_shift();
+                switch (id) {
+                    case M_1 ... M_0:
+                        unregister_code(KC_1 + (id - M_1));
+                        break;
+                    case M_DEGR:
+                        return MACRO(UP(CSA_ALTGR), U(SCLN), END);
+                    case M_SCLN:
+                        return MACRO(U(SCLN), END);
+                    case M_NBSP:
+                        del_weak_mods(MOD_BIT(CSA_ALTGR));
+                        return MACRO(U(SPACE), END);
+                }
+            }
+            break;
+        case M_CRC:
+            if (record->event.pressed) {
+                return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END);
+            }
+            break;
+        case M_DBL0:
+            if (record->event.pressed) {
+                return MACRO( I(25), T(P0), T(P0), END );
+            }
+        break;
+        case M_FNLR:
+            layer_invert(LR_NUMR);
+            layer_invert(LR_FN);
+            break;
+        case M_NMAL:
+            layer_invert(LR_NUMR);
+            if (record->event.pressed) {
+                register_code(KC_LALT);
+            } else {
+                unregister_code(KC_LALT);
+            }
+            break;
+    }
+    return MACRO_NONE;
+};
+
+// 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) {
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    // led 1: numeric layer
+    if (layer_state & (1 << LR_NUMR)) {
+        ergodox_right_led_1_on();
+    }
+    // led 2: BÉPO over Canadian Multilingual
+    if (IS_CA_MULT_ENABLED()) {
+        ergodox_right_led_2_on();
+    }
+    // led 3: caps lock
+    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+      ergodox_right_led_3_on();
+    }
+};
diff --git a/layouts/community/ergodox/bepo_csa/readme.md b/layouts/community/ergodox/bepo_csa/readme.md
new file mode 100644 (file)
index 0000000..d4975b2
--- /dev/null
@@ -0,0 +1,162 @@
+# BÉPO Keymap with firmware-remapping for software CSA layout
+
+This is a keymap intended to be used with the [BÉPO layout](http://bepo.fr), a French ergonomic layout designed by following Dvorak's principles.
+
+The particularity of this keymap is that it supports using the [Canadian Multilingual Standard layout](https://en.wikipedia.org/wiki/QWERTY#Canadian_Multilingual_Standard) (also known as _ACNOR keyboard_ or _CSA keyboard_, see also the [French page](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) which contains more details) on the OS side, by enabling the _CSA_ layer. This is especially useful for operating systems that natively provide CSA, but not BÉPO, like Windows. The CSA layout was chosen because it is probably the standard layout that provides the best character set coverage.
+
+This keymap is based on the [tm2030](../tm2030/) keymap, whose goal was to have a [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) inspired layout for the ErgoDox EZ.
+
+As this keyboard is intended for French people, the rest of this page will be in French.
+
+# Keymap BÉPO avec support en firmware pour utilisation avec la disposition CSA en software
+
+Cette keymap a été conçue pour être utilisée avec la [disposition BÉPO](http://bepo.fr), la disposition francophone, ergonomique et libre basée sure les principes de Dvorak.
+
+La particularité de cette keymap est qu'elle supporte l'utilisation du [clavier canadien multilingue standard](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) (aussi appelé _clavier ACNOR_ ou _clavier CSA_) du côté du système d'exploitation, en activant la couche _CSA_. Ceci s'avère particulièrement utile pour les systèmes d'exploitations qui fournissent nativement le CSA, mais pas le BÉPO, comme Windows. Le clavier CSA a été choisi comme base car c'est probablement la disposition standard qui fournit la meilleure couverture en termes de caractères disponibles.
+
+Cette keymap est basée sur la keymap [tm2030](../tm2030/), dont le but est de fournir une disposition inspirée du [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) pour l'ErgoDox EZ.
+
+## Couche de base
+C'est la couche par défaut, proche du TypeMatrix, avec les différences suivantes:
+- La ligne du haut (les touches `F`) et la colonne de droite sont retirées, les touches correspondantes étant déplacées ailleurs.
+- Les touches situés en bas à gauche sont redisposées dans cet ordre: `Ctrl`, `fn`, `Gui`, `num+Alt`, `Alt`
+- Les touches `shuffle` (`Alt+Tab`) et `desktop` ne sont pas supportés
+- `W` est déplacé à la place de `=`
+- `=` est déplacé sous `Tab` (au lieu d'avoir un grand `Shift`)
+- `%` et `Ç` sont déplacés à la place de `Home` et `End` respectivement
+- Les flèches ainsi que `PgUp`/`PgDown`/`Home`/`End` sont déplacées sur les pouces
+
+À noter que pour `W` et `Ç`, le but a été de ne pas les déplacer trop par rapport à la disposition BÉPO _standard_, afin de pouvoir repasser facilement sur un TypeMatrix ou un clavier traditionnel.
+
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
+|--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+|   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
+|--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+| LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |LCtrl |  fn  | LGui |numAlt| LAlt |                                       |Alt Gr|   %  |  App |   Ç  | RCtrl|
+  `----------------------------------'                                       `----------------------------------'
+                                      ,--------------.       ,-------------.
+                                      |  Esc  | num  |       | Left |Right |
+                               ,------+-------+------|       |------+------+------.
+                               |      |       | PgUp |       |  Up  |      |      |
+                               |Space | Home  |------|       |------| End  |Space |
+                               |      |       | PgDn |       | Down |      |      |
+                               `---------------------'       `--------------------'
+```
+
+### Changer de couche
+
+- Utilisez `num` pour activer/désactiver [la couche numérique](#couche-numérique)
+- Maintenez `fn` pour activer temporairement [les couches numériques et Fn](#couche-fn)
+- Maintenez `numAlt` pour activer temporairement la couche numérique combinée avec `Alt` (facilite l'utilisation des raccourcis tels que `Alt`+`F4`)
+
+### Diodes
+Les diodes de l'ErgoDox EZ (côté droit) sont utilisées de la façon suivante :
+
+- diode de gauche (rouge) : indique l'activation de [la couche numérique](#couche-numérique)
+- diode du milieu (verte) : indique l'activation du [mode CSA](#couche-csa)
+- diode de droite (bleue) : indique le verrouillage majuscules
+
+## Couche CSA
+La couche _CSA_ est la même que la couche de base, pour une utilisation avec un clavier Canadien Multilingue configuré dans le système d'exploitation.
+
+Pour l'activer, appuyez sur `fn`+`$`. La [diode](#diodes) verte indique que la couche CSA est activée.
+
+### Limitations
+Seuls les caractères présents dans le clavier CSA sont parfaitement supportés. De manière générale, il s'agit des caractères suivants :
+
+- toute la couche de base
+- tous les caractères accessibles en `Shift`
+- tous les caractères de la main gauche accessibles en `AltGr` à l'exception du `≠`
+- environ la moitié des caractères de la main droite accessibles en `AltGr` et la moitié des caractères accessibles en `AltGr`+`Shift` (consultez [le fichier source](keymap.c) pour voir les caractères supportés)
+
+En particulier, les caractères suivants sont émulés via le support Unicode (Windows seulement):
+
+- le tiret cadratin (tiret long) : —
+- le tiret demi-cadratin (demi tiret) : –
+- les points de suspension : …
+
+L'implémentation actuelle ne fonctionne pas dans toutes les applications, en particulier les applications MS Office.
+
+Il est probable que l'utilisation de la couche CSA ne fonctionne pas correctement dans certains jeux vidéos.
+
+Cette fonctionnalité a été conçue et testée essentiellment pour Windows (7).
+
+### Détails techniques
+Techniquement, la couche CSA est en réalité composée de 4 couches servant à émuler la couche de base, les appuis sur `Shift` ou `Alt` et la combinaison des deux.
+
+Le changement de couches se fait par des macros afin d'activer ou désactiver plusieurs couches et la touche `Shift` en même temps.
+
+Certains caractères sont également implémentés par des macros, notamment ceux de la couche `Shift` qui n'ont pas besoin de cette touche en CSA, comme les chiffres.
+
+Les caractères Unicode se basent sur une implémentation spécifique et non celle fournie dans QMK — il faudrait sans doute migrer le code. Notez la façon dont ces caractères sont déclarés tels quels dans [le code source](keymap.c) (tableau `unicode_char`).
+
+## Couche numérique
+Couche numérique proche du TM lorsqu'on active `num`, avec les différences suivantes :
+
+- Le clavier numérique est déplacés de 1 vers le haut et vers la droite.
+- Les flèches sont décalées de 1 vers la gauche.
+- Fournit l'accès aux touches `F1` à `F12`, `caps-lock` et `num-lock`.
+
+La couche numérique est indiquée par la [diode](#diodes) de gauche (rouge). Caps-lock est indiqué par la diode de droite (bleue).
+
+La touche `numAlt` de [la couche de base](#couche-de-base) permet d'activer la couche numérique et la touche `Alt` simultanément, afin de faciliter les raccourcis claviers comme `Alt`+`F4`.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
+  `----------------------------------'                                       `-----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |n.lock|c.lock|
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+
+## Couche Fn
+Activée simultanément avec la couche numérique lorsque l'on maintient la touche `fn`. Comme sur le TM, elle fournit l'accès aux fonctionnalités suivantes :
+
+- `couper`, `copier` et `coller` — attention: ne pas utiliser dans l'explorateur de fichiers.
+- monter/baisser/couper le volume — seulement accessible en main gauche, contrairement au TM.
+- piste précédente/suivante
+- calculatrice, e-mail et page d'accueil du navigateur web
+- `insert`, `power`, `sleep`, `wake`, `print screen`, `scroll-lock` et `pause`
+- ~CSA: (dés)activation de [la couche CSA](#couche-csa) sur `$`
+- RESET: rechargement du firmware avec Teensy-Loader (pour les développeurs)
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  ~CSA  |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|  RESET |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        | App  | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      |      |                                       |      |      |      |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      | Next |       |      |      |      |
+                                | Mute | play |------|       |------|      |      |
+                                |      |      | Prev |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
\ No newline at end of file
diff --git a/layouts/community/ergodox/bryan/keymap.c b/layouts/community/ergodox/bryan/keymap.c
new file mode 100644 (file)
index 0000000..220ae2e
--- /dev/null
@@ -0,0 +1,226 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------------.           ,--------------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | Cmd,Shft,[ |           | Cmd,Shft,] |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------------|           |------------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1        |           |  L1        |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|            |           |            |------+------+------+------+------+--------|
+ * |BkSp/Cmd|   A  |   S  |   D  |   F  |   G  |------------|           |------------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper      |           | Meh        |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |            |           |            |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Ctrl/Esc|PgUp|       | App  | LGui |       
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | PgDn |       | Home |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | Esc  |       | Alt  |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,                KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   M(2),
+        KC_DELT,               KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        GUI_T(KC_BSPC),        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,               CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                                 CTL_T(KC_ESC),KC_PGUP,
+                                                               KC_PGDN,
+                                               KC_SPC,KC_BSPC, KC_ESC,
+        // right hand
+             M(3),        KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             
+             ALT_T(KC_APP),  KC_LGUI,
+             KC_HOME,
+             KC_LALT,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |  <-  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, M(1), KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+// KC_COMM, KC_MINS
+
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c
new file mode 100644 (file)
index 0000000..5b1887e
--- /dev/null
@@ -0,0 +1,320 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+#include "led.h"
+#include "keymap_extras/keymap_neo2.h"
+
+// Layer names
+#define BASE 0      // default layer
+#define PMQ  1      // poor man’s QWERTZ
+#define PMN  2      // poor man’s Neo
+#define FMU  3      // FMU layer
+#define NHL  4      // Neo’s software layer 4 rebuilt in Hardware
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Layer 0: default
+ * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+ * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+ * │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
+ * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+ * │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
+ * ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │     │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
+ * │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
+ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+ *   │ CTL │ ALT │ MO1 │ Win │ Mod4│                             │ Mod4│ Win │ MO1 │ ALT │ CTL │
+ *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+ *                                   │  ←  │  ↑  │ │  ↓  │  →  │
+ *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+ *                             │     │     │  ─  │ │  ─  │     │     │
+ *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+ *                             │     │     │ HYP │ │ MEH │     │     │
+ *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   NEO_GRV,
+        NEO_Y,      NEO_X,  NEO_V,  NEO_L,  NEO_C,  NEO_W,  KC_HOME,
+        NEO_L1_L,   NEO_U,  NEO_I,  NEO_A,  NEO_E,  NEO_O,
+        KC_LSFT,    NEO_UE, NEO_OE, NEO_AE, NEO_P,  NEO_Z,  TG(PMQ),
+        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,NEO_L2_L,
+                                                    KC_LEFT,    KC_UP,
+                                                                KC_MINS,
+                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
+        // right hand
+        NEO_ACUT,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
+        KC_END,     NEO_K,  NEO_H,  NEO_G,  NEO_F,  NEO_Q,  NEO_SS,
+                    NEO_S,  NEO_N,  NEO_R,  NEO_T,  NEO_D,  NEO_L1_R,
+        TG(PMN),    NEO_B,  NEO_M,  KC_COMM,KC_DOT, NEO_J,  KC_RSFT,
+                            NEO_L2_R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
+        KC_DOWN,    KC_RGHT,
+        KC_MINS,
+        MEH_T(KC_NO),KC_ENT,KC_SPC
+    ),
+
+/* Layer 1: poor man’s QWERTZ
+ * based on kaimi’s layout
+ * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+ * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+ * │   C   │  P  │  T  │  F  │  K  │  L  │ HOM │     │ END │  B  │  A  │  S  │  G  │  V  │  Y    │
+ * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+ * │ Mod3  │  D  │  H  │  Ö  │  O  │  I  ├─────┤     ├─────┤  U  │  -  │  Z  │  E  │  X  │ Mod3  │
+ * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+ * │ LSHFT │  Ä  │  Q  │  R  │  W  │  N  │     │     │     │  J  │  M  │  ,  │  .  │  ẞ  │ Shift │
+ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+ *   │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ ALT │ CTL │
+ *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+ *                                   │  ←  │  ↑  │ │  ↓  │  →  │
+ *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+ *                             │     │     │  ─  │ │  ─  │     │     │
+ *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+ *                             │     │     │ HYP │ │ MEH │     │     │
+ *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ */
+[PMQ] = LAYOUT_ergodox(
+        // left hand
+        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
+        DE_C,       DE_P,   DE_T,   DE_F,   DE_K,   DE_L,   KC_HOME,
+        NEO_L1_L,   DE_D,   DE_H,   DE_OE,  DE_O,   DE_I,
+        KC_LSFT,    DE_AE,  DE_Q,   DE_R,   DE_W,   DE_N,   KC_TRNS,
+        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
+                                                    KC_LEFT,    KC_UP,
+                                                                KC_MINS,
+                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
+        // right hand
+        DE_ACUT,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
+        KC_END,     DE_B,   DE_A,   DE_S,   DE_G,   DE_V,   DE_Y,
+                    DE_U,   DE_MINS,DE_Z,   DE_E,   DE_X,   NEO_L1_R,
+        KC_TRNS,    DE_J,   DE_M,   DE_COMM,DE_DOT, DE_SS,  KC_RSFT,
+                            MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
+        KC_DOWN,    KC_RGHT,
+        KC_MINS,
+        MEH_T(KC_NO),KC_ENT,KC_SPC
+    ),
+
+/* Layer 2: poor man’s Neo
+ * based on kaimi’s layout
+ * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+ * │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+ * │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
+ * ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+ * │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
+ * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+ * │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
+ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+ *   │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ ALT │ CTL │
+ *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+ *                                   │  ←  │  ↑  │ │  ↓  │  →  │
+ *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+ *                             │     │     │  ─  │ │  ─  │     │     │
+ *                             │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+ *                             │     │     │ HYP │ │ MEH │     │     │
+ *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ */
+[PMN] = LAYOUT_ergodox(
+        KC_TAB,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
+        DE_Y,       DE_X,   DE_V,   DE_L,   DE_C,   DE_W,   KC_HOME,
+        KC_NO,      DE_U,   DE_I,   DE_A,   DE_E,   DE_O,
+        KC_LSFT,    DE_UE,  DE_OE,  DE_AE,  DE_P,   DE_Z,   KC_TRNS,
+        KC_LCTL,    KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
+                                                    KC_LEFT,    KC_UP,
+                                                                KC_MINS,
+                                            KC_SPC, KC_ENT,    ALL_T(KC_NO),
+        // right hand
+        DE_ACUT,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_BSPC,
+        KC_END,     DE_K,   DE_H,   DE_G,   DE_F,   DE_Q,   DE_SS,
+                    DE_S,   DE_N,   DE_R,   DE_T,   DE_D,   KC_NO,
+        KC_TRNS,    DE_B,   DE_M,   KC_COMM,KC_DOT, DE_J,   KC_RSFT,
+                            MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
+        KC_DOWN,    KC_RGHT,
+        KC_MINS,
+        MEH_T(KC_NO),KC_ENT,KC_SPC
+    ),
+
+/* Layer 3: F-keys, Mouse and Unicode
+ * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+ * │       │ F1  │ F2  │ F3  │ F4  │ F5  │ F6  │     │ F7  │ F8  │ F9  │ F10 │ F11 │ F12 │       │
+ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+ * │       │  ┌  │  ┬  │  ┐  │  ─  │  │  │     │     │     │  ↔  │  ←  │  →  │  ↑  │  ↓  │       │
+ * ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+ * │       │  ├  │  ┼  │  ┤  │  〈 │  〉 ├─────┤     ├─────┤     │  ✓  │  ✕  │  •  │  ∶  │       │
+ * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+ * │       │  └  │  ┴  │  ┘  │     │     │     │     │     │  ⇔  │  ⇐  │  ⇒  │  ⇑  │  ⇓  │       │
+ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+ *   │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
+ *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+ *                                   │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
+ *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+ *                             │     │     │ MLC │ │ MRC │     │     │
+ *                             │     │     ├─────┤ ├─────┤     │     │
+ *                             │     │     │     │ │     │     │     │
+ *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ */
+[FMU] = LAYOUT_ergodox(
+        // left hand
+        KC_TRNS,    KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,
+        KC_TRNS,    UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
+        KC_TRNS,    UC(0x251C),UC(0x253C),UC(0x2524),UC(0x3008),UC(0x3009),
+        KC_TRNS,    UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS,   KC_TRNS,   KC_TRNS,
+        KC_TRNS,    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
+                                                     KC_MS_L,   KC_MS_U,
+                                                                KC_BTN1,
+                                            KC_TRNS, KC_TRNS,   KC_TRNS,
+        // right hand
+        KC_F7,      KC_F8,     KC_F9,     KC_F10,    KC_F11,    KC_F12,    KC_TRNS,
+        KC_TRNS,    UC(0x2194),UC(0x2190),UC(0x2192),UC(0x2191),UC(0x2193),KC_TRNS,
+                    KC_TRNS,   UC(0x2713),UC(0x2715),UC(0x2022),UC(0x2236),KC_TRNS,
+        KC_TRNS,    UC(0x21D4),UC(0x21D0),UC(0x21D2),UC(0x21D1),UC(0x21D3),KC_TRNS,
+                               KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
+        KC_MS_D,    KC_MS_R,
+        KC_BTN2,
+        KC_TRNS,    KC_TRNS,   KC_TRNS
+    ),
+
+/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
+ * based on kaimi’s layout
+ * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+ * │       │     │     │     │     │     │     │     │     │     │     │     │     │     │       │
+ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+ * │       │ PgUp│ BSpc│  ↑  │ Del │ PgDn│     │     │     │     │  7  │  8  │  9  │  +  │   −   │
+ * ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+ * │       │ Home│  ←  │  ↓  │  →  │ End ├─────┤     ├─────┤     │  4  │  5  │  6  │  ,  │   .   │
+ * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+ * │       │ Esc │ Tab │ Ins │ Ret │ Undo│     │     │     │     │  1  │  2  │  3  │     │       │
+ * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+ *   │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
+ *   └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+ *                                   │     │     │ │     │     │
+ *                             ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+ *                             │     │     │     │ │     │     │     │
+ *                             │     │     ├─────┤ ├─────┤     │     │
+ *                             │     │     │     │ │     │     │     │
+ *                             └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ */
+[NHL] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+        KC_NO,      KC_PGUP,KC_BSPC,KC_UP,  KC_DELT,KC_PGDN,KC_NO,
+        KC_NO,      KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END,
+        KC_NO,      KC_ESC, KC_TAB, KC_INS, KC_ENT, KC_UNDO,KC_TRNS,
+        KC_NO,      KC_NO,  KC_TRNS,KC_NO,  KC_TRNS,
+                                                    KC_NO,      KC_NO,
+                                                                KC_NO,
+                                            KC_NO,  KC_NO,      KC_NO,
+        // right hand
+        KC_NO,      KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+        KC_NO,      KC_NO,  KC_7,   KC_8,   KC_9,   DE_PLUS,DE_MINS,
+                    KC_NO,  KC_4,   KC_5,   KC_6,   KC_COMM,KC_DOT,
+        KC_TRNS,    KC_NO,  KC_1,   KC_2,   KC_3,   KC_NO,  KC_NO,
+                            KC_TRNS,KC_NO,  KC_TRNS,KC_NO,  KC_NO,
+        KC_NO,      KC_NO,
+        KC_NO,
+        KC_NO,      KC_NO,  KC_NO
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [BASE] = ACTION_FUNCTION(BASE),
+    [PMQ]  = ACTION_FUNCTION(PMQ),
+    [PMN]  = ACTION_FUNCTION(PMN),
+    [FMU]  = ACTION_LAYER_TAP_TOGGLE(FMU),
+    [NHL]  = ACTION_LAYER_TAP_TOGGLE(NHL)
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+    switch(id) {
+        case 0:
+            if (record->event.pressed) {
+                register_code(KC_RSFT);
+            }
+            else {
+                unregister_code(KC_RSFT);
+            }
+        break;
+    }
+
+    return MACRO_NONE;
+};
+
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+    set_unicode_input_mode(UC_LNX);
+};
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void)
+{
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case FMU:
+            ergodox_right_led_1_on();
+        break;
+        case PMQ:
+            ergodox_right_led_2_on();
+        break;
+        case PMN:
+            ergodox_right_led_3_on();
+        break;
+        default:
+            if(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) {
+                ergodox_led_all_set(LED_BRIGHTNESS_HI);
+                ergodox_right_led_1_on();
+            }
+            else {
+                ergodox_board_led_off();
+            }
+        break;
+    }
+
+};
+
+
+// Override Unicode start method to use NEO_U instead of KC_U
+void unicode_input_start (void) {
+    register_code(KC_LCTL);
+    register_code(KC_LSFT);
+    register_code(NEO_U);
+    unregister_code(NEO_U);
+    unregister_code(KC_LSFT);
+    unregister_code(KC_LCTL);
+};
+
+// Override method to use NEO_A instead of KC_A
+uint16_t hex_to_keycode(uint8_t hex)
+{
+  if(hex == 0x0) {
+    return KC_0;
+  }
+  else if(hex >= 0xA) {
+    switch(hex) {
+      case 0xA:
+        return NEO_A;
+      case 0xB:
+        return NEO_B;
+      case 0xC:
+        return NEO_C;
+      case 0xD:
+        return NEO_D;
+      case 0xE:
+        return NEO_E;
+      case 0xF:
+        return NEO_F;
+      default:
+        return KC_NO;
+    }
+  }
+
+  return KC_1 + (hex - 0x1);
+}
diff --git a/layouts/community/ergodox/coderkun_neo2/readme.md b/layouts/community/ergodox/coderkun_neo2/readme.md
new file mode 100644 (file)
index 0000000..0c9290b
--- /dev/null
@@ -0,0 +1,129 @@
+# coderkun’s Neo2 layout for the ErgoDox EZ
+
+The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but also provide layers to use QWERTZ with activated Neo driver and to use (basic) Neo when no driver is available (standard QWERTZ driver is active) (e. g. on other computers, in virtual machines) and to make heavily use of thumb keys.
+
+The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
+
+It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and some useful Unicode symbols.
+
+
+## Build
+
+    ```
+    make clean
+    make coderkun_neo2
+    ```
+
+
+## Keymap
+
+0. Default layer for Neo2
+1. Poor man’s QWERTZ
+2. Poor man’s Neo
+3. F-keys, mouse keys und Unicode symbols
+4. Neo’s software layers 4 rebuilt in hardware
+
+
+### Layer 0: Default layer for Neo2
+
+    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+    │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
+    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+    │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
+    ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │     │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
+    │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
+    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+      │ CTL │ ALT │ MO1 │ Win │ Mod4│                             │ Mod4│ Win │ MO1 │ Alt │ CTL │
+      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+                                      │  ←  │  ↑  │ │  ↓  │  →  │
+                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+                                │     │     │  ─  │ │  ─  │     │     │
+                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+                                │     │     │ HYP │ │ MEH │     │     │
+                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
+
+
+### Layer 1: Poor man’s QWERTZ
+
+    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+    │   C   │  P  │  T  │  F  │  K  │  L  │ HOM │     │ END │  B  │  A  │  S  │  G  │  V  │  Y    │
+    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+    │ Mod3  │  D  │  H  │  Ö  │  O  │  I  ├─────┤     ├─────┤  U  │  -  │  Z  │  E  │  X  │ Mod3  │
+    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+    │ LSHFT │  Ä  │  Q  │  R  │  W  │  N  │     │     │     │  J  │  M  │  ,  │  .  │  ẞ  │ Shift │
+    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+      │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ Alt │ CTL │
+      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+                                      │  ←  │  ↑  │ │  ↓  │  →  │
+                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+                                │     │     │  ─  │ │  ─  │     │     │
+                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+                                │     │     │ HYP │ │ MEH │     │     │
+                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
+
+
+### Layer 2: Poor man’s Neo
+
+    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+    │  TAB  │  1  │  2  │  3  │  4  │  5  │  `  │     │  ´  │  6  │  7  │  8  │  9  │  0  │ BKSPC │
+    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+    │   Y   │  X  │  V  │  L  │  C  │  W  │ HOM │     │ END │  K  │  H  │  G  │  F  │  Q  │  ß    │
+    ├───────┼─────┼─────┼─────╆─────╅─────┤  E  │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+    │ Mod3  │  U  │  I  │  A  │  E  │  O  ├─────┤     ├─────┤  S  │  N  │  R  │  T  │  D  │ Mod3  │
+    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+    │ LSHFT │  Ü  │  Ö  │  Ä  │  P  │  Z  │     │     │     │  B  │  M  │  ,  │  .  │  J  │ Shift │
+    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+      │ CTL │ ALT │ MO1 │ Win │ MO4 │                             │ M04 │ Win │ MO1 │ Alt │ CTL │
+      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+                                      │  ←  │  ↑  │ │  ↓  │  →  │
+                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+                                │     │     │  ─  │ │  ─  │     │     │
+                                │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
+                                │     │     │ HYP │ │ MEH │     │     │
+                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
+
+
+### Layer 3: F-keys, mouse keys und Unicode symbols
+
+    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+    │       │ F1  │ F2  │ F3  │ F4  │ F5  │ F6  │     │ F7  │ F8  │ F9  │ F10 │ F11 │ F12 │       │
+    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+    │       │  ┌  │  ┬  │  ┐  │  ─  │  │  │     │     │     │  ↔  │  ←  │  →  │  ↑  │  ↓  │       │
+    ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+    │       │  ├  │  ┼  │  ┤  │ 〈  │  〉 ├─────┤     ├─────┤     │  ✓  │  ✕  │  •  │  ∶  │       │
+    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+    │       │  └  │  ┴  │  ┘  │     │     │     │     │     │  ⇔  │  ⇐  │  ⇒  │  ⇑  │  ⇓  │       │
+    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+      │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
+      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+                                      │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
+                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+                                │     │     │ MLC │ │ MRC │     │     │
+                                │     │     ├─────┤ ├─────┤     │     │
+                                │     │     │     │ │     │     │     │
+                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
+
+
+### Layer 4: Neo’s software layers 4 rebuilt in hardware
+
+    ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐     ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
+    │       │     │     │     │     │     │     │     │     │     │     │     │     │     │       │
+    ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤     ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
+    │       │ PgUp│ BSpc│  ↑  │ Del │ PgDn│     │     │     │     │  7  │  8  │  9  │  +  │   −   │
+    ├───────┼─────┼─────┼─────╆─────╅─────┤     │     │     ├─────╆─────╅─────┼─────┼─────┼───────┤
+    │       │ Home│  ←  │  ↓  │  →  │ End ├─────┤     ├─────┤     │  4  │  5  │  6  │  ,  │   .   │
+    ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│     │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
+    │       │ Esc │ Tab │ Ins │ Ret │ Undo│     │     │     │     │  1  │  2  │  3  │     │       │
+    └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘     └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
+      │     │     │(MO1)│     │(MO4)│                             │(MO4)│     │(MO1)│     │     │
+      └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
+                                      │     │     │ │     │     │
+                                ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
+                                │     │     │     │ │     │     │     │
+                                │     │     ├─────┤ ├─────┤     │     │
+                                │     │     │     │ │     │     │     │
+                                └─────┴─────┴─────┘ └─────┴─────┴─────┘
diff --git a/layouts/community/ergodox/coderkun_neo2/rules.mk b/layouts/community/ergodox/coderkun_neo2/rules.mk
new file mode 100644 (file)
index 0000000..b0fe90a
--- /dev/null
@@ -0,0 +1,3 @@
+SLEEP_LED_ENABLE = no
+UNICODE_ENABLE = yes
+COMMAND_ENABLE = no
diff --git a/layouts/community/ergodox/colemak/keymap.c b/layouts/community/ergodox/colemak/keymap.c
new file mode 100644 (file)
index 0000000..e9e27bc
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |O / L2|   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_F,   KC_P,   KC_G,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,   KC_D,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
+                          KC_H,   KC_N,   KC_E,   KC_I,   LT(MDIA, KC_O),   KC_QUOT,
+             MEH_T(KC_NO),KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/colemak/readme.md b/layouts/community/ergodox/colemak/readme.md
new file mode 100644 (file)
index 0000000..e28b2f0
--- /dev/null
@@ -0,0 +1,4 @@
+# ErgoDox EZ Colemak Configuration
+
+Colemak layout with same layers as default ergodox ez keymap.
+
diff --git a/layouts/community/ergodox/colemak_osx_pc_no/keymap.c b/layouts/community/ergodox/colemak_osx_pc_no/keymap.c
new file mode 100644 (file)
index 0000000..1196770
--- /dev/null
@@ -0,0 +1,264 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_norwegian.h"
+
+#define BASE 0 // default layer
+#define BASE_MAC 1 // default layer mac
+#define NUMB_SYMB 2 // numbers and symbols
+#define NUMB_SYMB_MAC 3 // numbers and symbols mac
+#define FUNCTION 4 // function keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Keymap 0: Basic layer PC
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |    \   |   [  |   ]  |   {  |   }  |   *  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |    ?   |   Q  |   W  |   F  |   P  |   G  |  "   |           |   '  |   J  |   L  |   U  |   Y  |   Å  |   Æ    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |    :   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   Ø    |
+ * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
+ * |    !   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  | RIGHT| DOWN |   UP |   _    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Func | Lclk | Rclk | TAB  |,/CTRL|                                       | LEFT | Esc  |   `  |   #  | Num  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |   &  |   |  |       |Insert|   /   |
+ *                                 ,------|------|------|       |------+-------+------.
+ *                                 |      |      |   +  |       |  Del |        |     |
+ *                                 | Shift| ./Spc|------|       |------|  Enter |Space|
+ *                                 |      |      |-/Alt |       | Bspc |        |     |
+ *                                 `--------------------'       `---------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        NO_BSLS,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, NO_ASTR,  TG(1),
+        NO_QUES,         KC_Q,         KC_W,    KC_F,   KC_P,   KC_G,   NO_QUO2,
+        NO_COLN,         KC_A,         KC_R,    KC_S,   KC_T,   KC_D,
+        KC_EXLM,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
+        MO(4),     KC_BTN1,      KC_BTN2, KC_TAB,GUI_T(KC_COMMA),
+                                                      NO_AMPR, NO_PIPE,
+                                                              NO_PLUS,
+                                               KC_FN1,CTL_T(KC_DOT),ALT_T(NO_MINS),
+        // right hand
+             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
+             NO_APOS,      KC_J,    KC_L,    KC_U,      KC_Y,     NO_AA,   NO_AE  ,
+                           KC_H,    KC_N,    KC_E,      KC_I,      KC_O,    NO_OSLH,
+             NO_EQL,        KC_K,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP, NO_UNDS,
+                                  KC_LEFT,  KC_ESC,   KC_FN7,   KC_HASH,   MO(2),
+             KC_INSERT,  NO_SLSH,
+             KC_DELT,
+             KC_BSPC,KC_ENT,KC_SPC
+    ),
+/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Func |      |      |      |,/Ctrl|                                       |      |      |  `   |      | Num  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |  |   |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |./Cmd |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[BASE_MAC] = LAYOUT_ergodox(
+       NO_BSLS_MAC, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CTL_T(KC_COMMA),
+                                           KC_TRNS, NO_PIPE_MAC,
+                                                    KC_TRNS,
+                                  KC_TRNS,GUI_T(KC_DOT) , KC_TRNS,
+    // right hand
+       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
+       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, 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_GRV_MAC, KC_TRNS, MO(3),
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Number ++ layer pc
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |   %  |      |      |           |      |      |   ~  |   ´  |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   3  |  2   |  1   |   0  |      |------|           |------|      |   5  |   6  |   7  |   8  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |   4  |      |      |           |      |      |   9  |  END | PGDWN| PGUP |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMB_SYMB] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_3   , KC_2   , KC_1   , KC_0   , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_FN2, KC_FN6 , KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS,
+       KC_TRNS,  KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
+                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 3: Number ++ layer mac. Some keys have to be repeated from the pc symbol layer, since transient keys inherit from the layer we jump from, not the layer above.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |   %  |      |      |           |      |      |   ~  |   ´  |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   3  |  2   |  1   |   0  |      |------|           |------|      |   5  |   6  |   7  |   8  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |   4  |      |      |           |      |      |   9  |  END | PGDWN| PGUP |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMB_SYMB_MAC] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_3   , KC_2   , KC_1   , KC_0   , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_FN2, KC_FN10, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS,
+       KC_TRNS,  KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
+                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 4: Function layer mac + pc
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F3  |  F2  |  F1  |     |      |------|           |------|       |  F5  |  F6  |  F7  |  F8  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |  F4  |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[FUNCTION] = LAYOUT_ergodox(
+       KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_F3   , KC_F2   , KC_F1 , KC_TRNS   , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F4, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS,
+       KC_TRNS,  NO_TILD, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
+
+enum macro_id {
+    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
+    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
+    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
+    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
+    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
+    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
+    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
+    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
+    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
+    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
+};
+
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    keyevent_t event = record->event;
+
+    switch (id) {
+        case TILDE_NO:
+            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
+        case LESS_NO:
+            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
+        case GRTR_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
+        case CIRC_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
+        case ACUT_NO:
+            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
+        case GRV_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
+        case LESS_NO_MAC:
+            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
+        case GRTR_NO_MAC:
+            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
+        case ACUT_NO_MAC:
+            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
+    }
+    return MACRO_NONE;
+};
diff --git a/layouts/community/ergodox/colemak_osx_pc_no/readme.md b/layouts/community/ergodox/colemak_osx_pc_no/readme.md
new file mode 100644 (file)
index 0000000..b28483f
--- /dev/null
@@ -0,0 +1,23 @@
+# Norwegian Colemak setup with osx/pc toggle
+
+## Motivation
+I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I  also wanted it to translate from a standard Norwegian keyboard OS setup.
+
+## Overview
+The setup is created to be programmer friendly.
+- Most of the symbols used in code can be activated without using layers or shift key.
+- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb.
+- Navigation is prioritized, arrows are right below the home row.
+
+## PC/Mac toggle
+The default setup is for Norwegian keyboard setting(not colemak variants) on a PC(Windows or Linux). Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
+
+## Layers
+Numbers and function buttons are on their own layers. The easiest way to switch layers(at least with my hands) in this setup, is to push your hand right below the little finger, on the layer switches. You will then have all your fingers free to type numbers or press function buttons.
+
+## Shift-key
+Tap for the next character to be shifted, hold down for regular shift functionality
+
+## Layout
+
+![keyboard-layout](https://i.imgur.com/168aGmR.png)
diff --git a/layouts/community/ergodox/colemak_programmer/keymap.c b/layouts/community/ergodox/colemak_programmer/keymap.c
new file mode 100644 (file)
index 0000000..46cd28d
--- /dev/null
@@ -0,0 +1,256 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ * MEH:   Alt+Control+Shift
+ * HYPER: Alt+Control+Shift+Gui
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ` ~  |  1 ! | 2 @  | 3 #  | 4 $  | 5 %  |  6 ^ |           | 7 &  |  8 * | 9 (  |  0 ) | - _  | = +  | Backsp |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   TAB  |   Q  |   W  |   F  |   P  |   G  |TG(3) |           |TG(4) |   J  |   L  |   U  |   Y  |  ; : |  ' "   |
+ * |--------+------+------+------+------+------|F-lck |           |N-lck |------+------+------+------+------+--------|
+ * |  CAPS  |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |  ENT   |
+ * |--------+------+------+------+------+------| MEH  |           | MEH  |------+------+------+------+------+--------|
+ * | Shift  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |  , < |  . > |  UP  | Shift  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | LCTL | LCTL | LGUI | LALT | LGUI |                                       | RALT | RCTL | LEFT | DOWN | RIGHT|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,--------------.       ,--------------.
+ *                                        |  Esc | App   |       | Ins  | Del   |
+ *                                 ,------|------|-------|       |------+-------+------.
+ *                                 |      |      | Home  |       | PgUp |       |      |
+ *                                 | MO(2)| MO(4)|-------|       |------| Space |Space |
+ *                                 |symbol|N-Lock| End   |       | PgDn |       |      |
+ *                                 `---------------------'       `---------------------'
+ */
+[0] = LAYOUT_ergodox(  // layer 0 : default 
+        // left hand
+        KC_GRV,     KC_1,       KC_2,       KC_3,       KC_4,        KC_5,        KC_6,
+        KC_TAB,     KC_Q,       KC_W,       KC_F,       KC_P,        KC_G,        TG(3),
+        KC_CAPS,    KC_A,       KC_R,       KC_S,       KC_T,        KC_D,
+        KC_LSFT,    KC_Z,       KC_X,       KC_C,       KC_V,        KC_B,        KC_MEH,
+        KC_LCTL,    KC_LCTL,    KC_LGUI,    KC_LALT,    KC_LGUI,
+
+                    KC_ESC,     KC_APP,
+                    KC_HOME,
+        MO(2),      MO(4),      KC_END,
+
+        // right hand
+        KC_7,       KC_8,       KC_9,       KC_0,       KC_MINS,     KC_EQL,      KC_BSPC,
+        TG(4),      KC_J,       KC_L,       KC_U,       KC_Y,        KC_SCLN,     KC_QUOT,
+                    KC_H,       KC_N,       KC_E,       KC_I,        KC_O,        KC_ENT,
+        KC_MEH,     KC_K,       KC_M,       KC_COMM,    KC_DOT,      KC_UP,       KC_RSFT,
+                                KC_RALT,    KC_RCTL,    KC_LEFT,     KC_DOWN,     KC_RIGHT,
+
+        KC_INS,     KC_DEL,
+        KC_PGUP,
+        KC_PGDN,    KC_SPC,     KC_SPC
+    ),
+
+/* Keymap 1: QWERTY layer (games)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[1] = LAYOUT_ergodox(  // layer 1: QWERTY layer (games) 
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       KC_TRNS,
+       KC_TRNS,        KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
+       KC_TRNS,        KC_Z,       KC_X,       KC_C,       KC_V,       KC_B,       KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+
+                       KC_TRNS,    KC_TRNS,
+                                   KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,
+       
+    // right hand
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_TRNS,
+                       KC_H,       KC_J,       KC_K,       KC_L,       KC_SCLN,    KC_TRNS,
+       KC_TRNS,        KC_N,       KC_M,       KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+                                   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS
+    ),
+
+/* Keymap 2: Symbol Layer
+*
+* ,--------------------------------------------------.           ,--------------------------------------------------.
+* |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
+* |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+* |        |   |  |   +  |  <   |   %  |  #   | DF(1)|           |      |  &   |   [  |   ]  |   \  |  :   |   "    |
+* |--------+------+------+------+------+------|QWERTY|           |      |------+------+------+------+------+--------|
+* |        |   !  |   -  |  >   |   =  |  @   |------|           |------|  *   |   {  |   }  |   /  |  ?   |        |
+* |--------+------+------+------+------+------| DF(0)|           |      |------+------+------+------+------+--------|
+* |        | NUBS | NUHS |  /   |   $  |  ^   |COLEMAK           |      |  |   |   (  |   )  |      |      |        |
+* `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+*   |      |      |      |      |      |                                       |      |      |      |      |      |
+*   `----------------------------------'                                       `----------------------------------'
+*                                        ,-------------.       ,-------------.
+*                                        |      |      |       |      |      |
+*                                 ,------|------|------|       |------+------+------.
+*                                 |      |      |      |       |      |      |      |
+*                                 |      |      |------|       |------|      |      |
+*                                 |      |      |      |       |      |      |      |
+*                                 `--------------------'       `--------------------'
+*/
+// SYMBOLS
+[2] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,        KC_F1,        KC_F2,       KC_F3,      KC_F4,       KC_F5,      KC_F6,
+       KC_TRNS,        KC_PIPE,      KC_PLUS,     KC_LT,      KC_PERC,     KC_HASH,    DF(1),
+       KC_LBRC,        KC_EXCLAIM,   KC_MINUS,    KC_GT,      KC_EQUAL,    KC_AT,
+       KC_TRNS,        KC_NUBS,      KC_NUHS,     KC_SLSH,    KC_DOLLAR,   KC_CIRC,    DF(0),
+       KC_TRNS,        KC_TRNS,      KC_TRNS,     KC_TRNS,    KC_TRNS,
+
+                       KC_TRNS,      KC_TRNS,
+                                     KC_TRNS,
+       KC_TRNS,        KC_TRNS,      KC_TRNS,
+
+       // right hand
+       KC_F7,          KC_F8,        KC_F9,        KC_F10,     KC_F11,      KC_F12,     KC_TRNS,
+       KC_TRNS,        KC_AMPERSAND, KC_LBRC,      KC_RBRC,    KC_BSLS,     KC_COLN,    KC_DQT,
+                       KC_ASTERISK,  KC_LCBR,      KC_RCBR,    KC_SLSH,     KC_QUES,    KC_TRNS,
+       KC_TRNS,        KC_PIPE,      KC_LPRN,      KC_RPRN,    KC_TRNS,     KC_TRNS,    KC_TRNS,
+                                     KC_TRNS,      KC_TRNS,    KC_TRNS,     KC_TRNS,    KC_TRNS,
+
+       KC_TRNS,        KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,        KC_TRNS,      KC_TRNS
+),
+
+/* Keymap 3:
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      | HYPR |           | HYPR |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------        |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// F-keys
+[3] = LAYOUT_ergodox(
+       KC_TRNS,        KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_HYPR,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+
+                       KC_TRNS,    KC_TRNS,
+                                   KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,
+
+       // right hand
+       KC_F7,          KC_F8,      KC_F9,      KC_F10,     KC_F11,     KC_F12,     KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+                       KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_HYPR,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+                                   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+
+       KC_TRNS,        KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS
+),
+/* Keymap 4: Numlock
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |P-SCRE|S-LOCK|PAUSE |           |NLOCK | CALC |  =   |  /   |  *   |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      | Vol+ |  7   |  8   |  9   |  -   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------| Vol- |  4   |  5   |  6   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      | HYPR |           | HYPR | Mute |  1   |  2   |  3   |Enter |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |  0   |  .   | RCTL | RCTL |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------        |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[4] = LAYOUT_ergodox(
+       RESET,          KC_LSFT,    KC_LSFT,    KC_SYSREQ,  KC_PSCR,    KC_SLCK,    KC_PAUSE,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_HYPR,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+
+                       KC_TRNS,    KC_TRNS,
+                                   KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS,
+
+       // right hand
+       KC_NLCK,        KC_CALC,    KC_PEQL,    KC_PSLS,    KC_PAST,    KC_LSFT,    KC_TRNS,
+       KC_TRNS,        KC_VOLU,    KC_P7,      KC_P8,      KC_P9,      KC_PMNS,    KC_TRNS,
+                       KC_VOLD,    KC_P4,      KC_P5,      KC_P6,      KC_PPLS,    KC_TRNS,
+       KC_HYPR,        KC_MUTE,    KC_P1,      KC_P2,      KC_P3,      KC_PENT,    KC_TRNS,
+                                   KC_TRNS,    KC_P0,      KC_PDOT,    KC_RCTL,    KC_RCTL,
+
+       KC_TRNS,        KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,        KC_TRNS,    KC_TRNS
+),
+
+};
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+    static uint8_t state;
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+
+    //reduce LED on time to 1/6th because LEDs are too strong
+    if (++state < 6) return;
+    state = 0;
+
+    //bit 1: default layer 1 - QWERTY
+    if (default_layer_state & (1UL << 1)) ergodox_right_led_1_on();
+
+    uint8_t layer = biton32(layer_state);
+
+    //layer 2 : Symbols (& Fs)
+    //if (layer == 2) ergodox_right_led_2_on();
+
+    //layer 3 : F-lock
+    if (layer == 3) ergodox_right_led_2_on();
+
+    //layer 4 : Num-lock
+    if (layer == 4) ergodox_right_led_3_on();
+};
diff --git a/layouts/community/ergodox/colemak_programmer/readme.md b/layouts/community/ergodox/colemak_programmer/readme.md
new file mode 100644 (file)
index 0000000..a1544dc
--- /dev/null
@@ -0,0 +1,23 @@
+# ErgoDox EZ colemak_programmer
+
+## Features
+
+* Qwerty and colemak 2 in 1
+  * Use DF() macro to swap the bottom layer so it behaves literally as collemak or qwerty
+  * Graphical creator did not allow this so I had to use TO(0) and TO(1) on the picture
+* Symbol layer programmers friendly
+  * Not only symbols are easy to access but common combination are easy too: ->, =>, !=, etc.
+* Windows and Mac
+  * The extra repeated Win key is very handy on Mac
+* Numlock
+
+I came to this layout after several iterations. It is not the ultimate best ergonomic layout but it is the best if you switch back and forth between ergodox and laptops.
+
+## Notes
+* The Quote and Enter can be swapped
+* If you use sculpted key caps try turning the bottom key 180 degrees so it became very comfortable to type with thumb.
+
+Alternatively view the [graphical creator version](http://configure.ergodox-ez.com/keyboard_layouts/kmevwm/edit) but beware it is not the same due to the creator limitations.
+
+![Default](https://i.imgur.com/BCJEoKw.jpg)
+![Default](https://i.imgur.com/0P1jBph.jpg)
\ No newline at end of file
diff --git a/layouts/community/ergodox/colemak_programmer/rules.mk b/layouts/community/ergodox/colemak_programmer/rules.mk
new file mode 100644 (file)
index 0000000..91b77c7
--- /dev/null
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = no
\ No newline at end of file
diff --git a/layouts/community/ergodox/common_nighthawk/keymap.c b/layouts/community/ergodox/common_nighthawk/keymap.c
new file mode 100644 (file)
index 0000000..e113e85
--- /dev/null
@@ -0,0 +1,216 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+//Tap Dance Declarations
+enum {
+  TD_U_LBRC = 0,
+  TD_I_RBRC,
+};
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC),
+  [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC)
+};
+
+//Macro Declarations
+static uint16_t sunds_timer;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  _     |   x  |   x  |   _  |  Esc | Hypr | Home |           | End  | Hypr |   [  |   ]  |  `~  |  `~  |  Bks   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |Ctrl/Tab|   Q  |   W  |   E  |   R  |   T  |  Up  |           | PgUp |   Y  |   U  |   I  |   O  |   P  |  Ctrl  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Cmd/"' |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;:  |Cmd/Entr|
+ * |--------+------+------+------+------+------| Down |           | PgDn |------+------+------+------+------+--------|
+ * |  Shft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |  ,<  |  .>  |  /?  |  Shft  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Alt  |   x  |   x  |   x  | Left |                                       |Right |  Bks |   x  |   x  |  Alt |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Teensy| VolUp|       | Play |  Del   |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | VolDn|       | Next |        |      |
+ *                                 |Sp/~L1|  L2  |------|       |------|   L2   |'"/~L1|
+ *                                 |      |      | Mute |       | Prev |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_UNDS,         KC_1,          KC_1,          KC_UNDS,         KC_ESC,   ALL_T(KC_NO),      KC_HOME,
+        CTL_T(KC_TAB),   KC_Q,          KC_W,          KC_E,            KC_R,     KC_T,              KC_UP,
+        M(1),            KC_A,          KC_S,          KC_D,            KC_F,     KC_G,
+        KC_LSFT,         KC_Z,          KC_X,          KC_C,            KC_V,     KC_B,              KC_DOWN,
+        KC_LALT,         KC_1,          KC_1,          KC_1,            KC_LEFT,
+                                                                        RESET,    KC_VOLU,
+                                                                        KC_VOLD,
+                                                                        LT(SYMB, KC_SPC),  TG(MDIA), KC_MUTE,
+        // right hand
+        KC_END,          ALL_T(KC_NO),  KC_LBRC,        KC_RBRC,        KC_GRV,   KC_GRV,            KC_BSPC,
+        KC_PGUP,         KC_Y,          KC_U,           KC_I,           KC_O,     KC_P,              KC_LCTRL,
+                         KC_H,          KC_J,           KC_K,           KC_L,     KC_SCOLON,         GUI_T(KC_ENT),
+        KC_PGDN,         KC_N,          KC_M,           KC_COMM,        KC_DOT,   KC_SLSH,           KC_RSFT,
+                                        KC_RGHT,        KC_BSPC,        KC_1,     KC_1,              KC_RALT,
+        KC_MPLY,         KC_DEL,
+        KC_MNXT,
+        KC_MPRV,         TG(MDIA),      LT(SYMB, KC_QUOT)
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   ^  |   [  |   (  |   {  |      |           |      |   =  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   &  |   $  |   ]  |   )  |   }  |------|           |------|   +  |   4  |   5  |   6  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   \  |   @  |   #  |   %  |   |  |      |           |      |   -  |   1  |   2  |   3  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0  |   0  |   .  |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,  KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_TRNS,
+       KC_TRNS,  KC_EXLM,  KC_CIRC,  KC_LBRC,  KC_LPRN,  KC_LCBR,  KC_TRNS,
+       KC_TRNS,  KC_AMPR,  KC_DLR,   KC_RBRC,  KC_RPRN,  KC_RCBR,
+       KC_TRNS,  KC_BSLS,  KC_AT,    KC_HASH,  KC_PERC,  KC_PIPE,  KC_TRNS,
+       KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+                                               KC_TRNS,  KC_TRNS,
+                                               KC_TRNS,
+                                               KC_TRNS,  KC_TRNS,  KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_TRNS,
+       KC_TRNS,  KC_EQL,   KC_7,     KC_8,     KC_9,     KC_0,     KC_TRNS,
+                 KC_PLUS,  KC_4,     KC_5,     KC_6,     KC_ASTR,  KC_TRNS,
+       KC_TRNS,  KC_MINS,  KC_1,     KC_2,     KC_3,     KC_TRNS,  KC_TRNS,
+                           KC_0,     KC_0,     KC_DOT,   KC_TRNS,  KC_TRNS,
+       KC_TRNS,  KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,  KC_TRNS,  KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | WhDn | WhUp |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      | R-Ck | L-Ck |      |------|           |------| MsLt | MsDn | MsUp | MsRt |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       M(0),    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS,     KC_WH_U,     KC_WH_D,     KC_TRNS,     KC_TRNS, KC_TRNS,
+                 KC_MS_LEFT,  KC_MS_DOWN,  KC_MS_UP,    KC_MS_RIGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
+                              KC_TRNS,     KC_TRNS,     KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+          }
+          break;
+
+        case 1:
+          if (record->event.pressed) {
+            sunds_timer = timer_read();
+            register_code (KC_LGUI);
+          } else {
+            if (timer_elapsed (sunds_timer) < TAPPING_TERM) {
+              unregister_code (KC_LGUI);
+              register_code (KC_LSFT);
+              register_code (KC_QUOT);
+              unregister_code (KC_QUOT);
+              unregister_code (KC_LSFT);
+              register_code (KC_LGUI);
+            }
+            unregister_code (KC_LGUI);
+          }
+          break;
+
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_3_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+    if (keyboard_report->mods & MOD_BIT(KC_LSFT)) {
+        ergodox_right_led_1_on ();
+    }
+};
diff --git a/layouts/community/ergodox/common_nighthawk/rules.mk b/layouts/community/ergodox/common_nighthawk/rules.mk
new file mode 100644 (file)
index 0000000..180880c
--- /dev/null
@@ -0,0 +1,4 @@
+SUBPROJECT_DEFAULT = ez
+TAP_DANCE_ENABLE = yes
+
+
diff --git a/layouts/community/ergodox/csharp_dev/keymap.c b/layouts/community/ergodox/csharp_dev/keymap.c
new file mode 100644 (file)
index 0000000..7996c92
--- /dev/null
@@ -0,0 +1,239 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define FKEYS 1 // F keys + macros
+
+#define MACRO_PUBLIC 10
+#define MACRO_PRIVATE 11
+
+#define MACRO_STATIC 12
+#define MACRO_CONST 13
+
+#define MACRO_VOID 14
+#define MACRO_VAR 15
+#define MACRO_STRING 16
+
+#define MACRO_INT 17
+#define MACRO_FLOAT 18
+#define MACRO_BOOL 19
+
+#define MACRO_RETURN 20
+#define MACRO_NULL 21
+#define MACRO_BREAK 22
+
+#define MACRO_TODO 23
+#define MACRO_NEW 24
+#define MACRO_PARENTHESE 25
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   (    |   1  |   2  |   3  |   4  |   5  |  "   |           | Save |   6  |   7  |   8  |   9  |   0  |   [    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   )    |   Q  |   W  |   E  |   R  |   T  |Bkspa |           | Del  |   Y  |   U  |   I  |   O  |   P  |   ]    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   {    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   _  |   Redo |
+ * |--------+------+------+------+------+------|   /  |           |  ;   |------+------+------+------+------+--------|
+ * |   }    |Z~Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   '  |   !  |   ?  |   Undo |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Tab~CL|  <   |  >   |   |  |  &   |                                       |   =  |   +  |   -  |   *  |  L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |. ~L1 | ,    |       |Home  |End~L1|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Copy |       | UP   |      |      |
+ *                                 | Enter| Space|------|       |------| Space|Enter |
+ *                                 | ~WIN | ~LSFT| Past |       | DOWN | ~LSFT| ~WIN |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_LPRN,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LSFT(KC_QUOTE),
+        KC_RPRN,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_BSPACE,
+        KC_LCBR,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_RCBR,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_SLASH,
+        CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, 
+                                              LT(1,KC_DOT),  KC_COMM,
+                                                              LCTL(KC_C),
+                                               GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V),
+        // right hand
+             LCTL(KC_S)  ,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_LBRACKET,
+             KC_DELETE,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_RBRACKET,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_UNDS,LCTL(KC_Y),
+             KC_SCOLON,KC_N,   KC_M, KC_QUOTE  ,KC_EXLM , LSFT(KC_SLASH),   LCTL(KC_Z),
+                                  KC_EQUAL,KC_PLUS  ,  KC_MINUS,KC_ASTR  ,     TG(1),
+             KC_HOME,         LT(1,KC_END),
+             KC_UP,
+             KC_DOWN,SFT_T(KC_SPACE), GUI_T(KC_ENTER)
+    ),
+
+/* Keymap 1:  F keys + macros
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  ESC   |  F1  |  F2  |  F3  |  F4  |  F5  |  `   |           | Calc |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |Public|Static|string|int   |return|      |           |      |//TODO|      |      |      |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |Privat|Const |var   |float |null  |------|           |------|new   |      |      |      |      |        |
+ * |--------+------+------+------+------+------|  \   |           |  ~   |------+------+------+------+------+--------|
+ * |        |      |      |void  |bool  |break;|      |           |      |();   |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |  WIN | Alt  |      |      |                                       | PgUp | PgDw | Ins  | PtSc |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      | Cut  |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------| Left | Right|
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// FKEYS + MACROS
+[FKEYS] = LAYOUT_ergodox(
+       // left hand
+       KC_ESCAPE,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_GRAVE,
+       KC_TAB,M(MACRO_PUBLIC),M(MACRO_STATIC),  M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS,
+       KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL),
+       KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_BSLASH,
+       KC_TRNS,KC_LGUI,KC_LALT,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,LCTL(KC_X),
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_CALCULATOR, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, M(MACRO_TODO),   KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_F12,
+                M(MACRO_NEW), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
+       KC_TILD, M(MACRO_PARENTHESE), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
+                         KC_PGUP,KC_PGDOWN,  KC_INSERT,   KC_PSCREEN,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_LEFT, KC_RIGHT
+),
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(FKEYS)                // FN1 - Momentary Layer 1
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+               case MACRO_PUBLIC:
+                       if (record->event.pressed) {
+                               return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
+                       } 
+                       break;
+               case MACRO_PRIVATE:
+                       if (record->event.pressed) {
+                               return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
+                       } 
+                       break;
+               case MACRO_STATIC:
+                       if (record->event.pressed) {
+                               return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_CONST:
+                       if (record->event.pressed) {
+                               return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_VOID:
+                       if (record->event.pressed) {
+                               return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_VAR:
+                       if (record->event.pressed) {
+                               return MACRO( T(V), T(A), T(R), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_STRING:
+                       if (record->event.pressed) {
+                               return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
+                       } 
+                       break;          
+               case MACRO_BOOL:
+                       if (record->event.pressed) {
+                               return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END);
+                       } 
+                       break;          
+               case MACRO_INT:
+                       if (record->event.pressed) {
+                               return MACRO( T(I), T(N), T(T), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_FLOAT:
+                       if (record->event.pressed) {
+                               return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_RETURN:
+                       if (record->event.pressed) {
+                               return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END);
+                       } 
+                       break;
+               case MACRO_NULL:
+                       if (record->event.pressed) {
+                               return MACRO( T(N), T(U), T(L), T(L), END);
+                       } 
+               case MACRO_BREAK:
+                       if (record->event.pressed) {
+                               return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END);
+                       } 
+                       break;
+               case MACRO_TODO:
+                       if (record->event.pressed) {
+                               return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END);
+                       } 
+                       break;
+               case MACRO_NEW:
+                       if (record->event.pressed) {
+                               return MACRO( T(N), T(E), T(W), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_PARENTHESE:
+                       if (record->event.pressed) {
+                               return MACRO(  D(LSHIFT),T(9), T(0),U(LSHIFT), T(SCOLON), END);
+                       } 
+                       break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/csharp_dev/readme.md b/layouts/community/ergodox/csharp_dev/readme.md
new file mode 100644 (file)
index 0000000..980480d
--- /dev/null
@@ -0,0 +1,48 @@
+# ErgoDox EZ C# Developer configuration
+
+## Changelog
+
+* Feb 12, 2016 (V1): 
+  * First version commit
+* Mar 20, 2016 (V2):
+  * Removed "Classic QWERTY" layer, inverted GUI and SHIFT on Hold for Space and Enter
+
+## About
+This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions.
+
+I came to the realization that my main tool as a developer, the qwerty keyboard was something that did not evolved at its core in almost 150 years.
+There are a lot of reasons to this, and it would be a massive entreprise to change a standard so strongly anchored, but I wanted to give it a try and see how would look an input device dedicated to developers, more specifically a C# developer in my case.
+The biggest flaw in standard QWERTY keyboards was that I always needed to perform key combination to access commonly used characters or actions. Think about it a minute, how many times a day do you press a modifier key such as Ctrl or Shift, it's insane and could be so easily optimized to require only one key press.
+
+Then I came across the ErgoDox EZ project, that allowed a full customization of its firmware, and a unique 2 parts design.
+
+![CSharpDev](https://i.imgur.com/PkNqi7V.png)
+![CSharpDev](https://i.imgur.com/0IcMgMf.png)
+
+## Layout design principles
+* No key combination required for the most common input characters ( (),[],{},<> ... )
+* No key combination required for the most common actions (copy/paste/undo/save)
+* Regroup characters by usage ( + - * =  ...)
+* Easy access to the most commonly used characters: ; / " . ,
+* Preregistered macro for the most common C# langage instructions: public / private / string / int / float ...
+
+## Why is it specific to C Sharp
+I defined the characters priority based on their usage in C# language, most of this characters are also used in other coding languages but it may require some tweaking. 
+For example there is no direct access to ~ or $ keys which can be very common in some languages.
+Note it is also specific to Windows environement as the shortcut used in action keys would not work on Mac Os
+
+## In usage
+It was relatively easy to get used to the layout, but it's hard for me to define how easy it was as I was getting used to a blank Ergodox keyboard at the same time.
+Still it's extremely satisfying to Save your file with just one easily accessible key or to have one big key to end your code line ( ; )
+
+## Improvements
+This layout was shared after a bunch of iterations and only once I was happy with it.
+Still there are many way to improve or iterate on this:
+* Make it language agnostic
+* Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g.  https://dzone.com/articles/most-pressed-keys-various )
+* QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur
+
+## Issues 
+One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold )
+
+
diff --git a/layouts/community/ergodox/dave/keymap.c b/layouts/community/ergodox/dave/keymap.c
new file mode 100644 (file)
index 0000000..f50be71
--- /dev/null
@@ -0,0 +1,199 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define PROG 1 // programming
+#define NAVI 2 // navigation
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |   6  |           |   6  |   7  |   8  |   9  |   0  |   -  | BkSpce |
+ * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |   Y  |           |   G  |   Y  |   U  |   I  |   O  |   P  | Enter  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
+ * |--------+------+------+------+------+------|   H  |           |   B  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |`/Ctrl|   \  |      |      | LAlt |                                       | RAlt |   [  |   ]  |      |'/Ctrl|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | PrtS | PrtS |       | CtAl | CtAl |
+ *                                 ,------+------+------|       |------+------+------.
+ *                                 |      |      |  L1  |       |  L1  |      |      |
+ *                                 | Spce | ~L2  +------|       |------+  ~L1 | Spce |
+ *                                 |      |      | LGui |       | RGui |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,   KC_1,     KC_2,    KC_3,    KC_4,    KC_5,   KC_6,
+        KC_TAB,   KC_Q,     KC_W,    KC_E,    KC_R,    KC_T,   KC_Y,
+        KC_LCTRL, KC_A,     KC_S,    KC_D,    KC_F,    KC_G,
+        KC_LSFT,  KC_Z,     KC_X,    KC_C,    KC_V,    KC_B,   KC_H,
+        CTL_T(KC_GRV),KC_NUBS,KC_NO, KC_NO,   KC_LALT,
+                                                  KC_PSCREEN, KC_PSCREEN,
+                                                      TO(PROG),
+                                               KC_SPC, MO(NAVI), KC_LGUI,
+        // right hand
+             KC_6,    KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_BSPC,
+             KC_G,    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,    KC_ENTER,
+                      KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN, KC_ENTER,
+             KC_B,    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+                              KC_RALT,KC_LBRC,KC_RBRC,KC_NO,   CTL_T(KC_QUOT),
+             MT(0x5, KC_NO), MT(0x5, KC_NO),
+             TO(PROG),
+             KC_RGUI, MO(PROG), KC_SPC
+    ),
+
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |  K/  |  K*  |  K-  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   (  |   )  |   |  |      |           |      |      |  K7  |  K8  |  K9  |  K+  |   #    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   {  |   }  |   `  |------|           |------|      |  K4  |  K5  |  K6  |  K+  |   '    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |  K1  |  K2  |  K3  |  K=  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  K0  |  K0  |  K.  |  K=  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |  L2  |       |  L2  |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// PROGRAMMING
+[PROG] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+       KC_TRNS, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
+       KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                        KC_TRNS, KC_TRNS,
+                                      TO(NAVI),
+                               KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS, KC_NO,  KC_PSLS, KC_PAST, KC_PMNS, KC_EQUAL,
+       KC_TRNS, KC_TRNS, KC_P7,  KC_P8,   KC_P9,   KC_PPLS, KC_NUHS,
+                KC_TRNS, KC_P4,  KC_P5,   KC_P6,   KC_PPLS, KC_QUOT,
+       KC_TRNS, KC_TRNS, KC_P1,  KC_P2,   KC_P3,   KC_PENT, KC_TRNS,
+                         KC_P0,  KC_P0,   KC_PDOT, KC_PENT, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       TO(NAVI),
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Navigation and system keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | Home |  Up  | End  | Ins  | PgUp |      |           |      |      |      | Ins  |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Left | Down | Rght | Del  | PgDn |------|           |------|      | Back | Del  | Fwrd |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Lclk | MsUp | Rclk |      |      |      |           |      |      | Prev | Play | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      | MsLt | MsDn | MsRt |      |                                       |VolDn | Mute |VolUp |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |  L0  |       |  L0  |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// NAVIGATION
+[NAVI] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
+       KC_TRNS, KC_HOME, KC_UP,   KC_END,  KC_INS,  KC_PGUP, KC_TRNS,
+       KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELT, KC_PGDN,
+       KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                         TO(BASE),
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_INS,  KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_WBAK, KC_DELT, KC_WFWD, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       TO(BASE),
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    //[1] = ACTION_LAYER_TAP_TOGGLE(PROG),               // FN1 - Momentary Layer 1 (Symbols)
+    //[2] = ACTION_LAYER_TAP_TOGGLE(NAVI)                // FN2 - Momentary Layer 2 (Navigation)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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) {
+    /* leds is a static array holding the current brightness of each of the
+     * three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and
+     * -1s in the code below, and because wasting a byte really doesn't matter
+     * that much (no, it *doesn't*, stop whinging!). Note that because it's
+     * static it'll maintain state across invocations of this routine.
+     */
+    static uint8_t leds[4];
+    uint8_t led;
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+
+    /* Loop over each LED/layer */
+    for (led = 1; led <= 3; ++led) {
+        /* If the current layer matches the current LED, increment its
+         * brightness by 1 up to a maximum of 255. If the current layer doesn't
+         * match, decrement its brightness by 1 down to a minimum of zero.
+         */
+        leds[led] += (layer == led) ?
+            (leds[led] < 255 ? 1 : 0):
+            (leds[led] > 0 ? -1 : 0);
+        /* Set LED state according to the new brightness */
+        if (leds[led]) {
+            ergodox_right_led_on(led);
+            ergodox_right_led_set(led, leds[led]);
+        }
+        else {
+            ergodox_right_led_off(led);
+        }
+    }
+
+
+};
diff --git a/layouts/community/ergodox/dave/readme.md b/layouts/community/ergodox/dave/readme.md
new file mode 100644 (file)
index 0000000..aa0f9bd
--- /dev/null
@@ -0,0 +1,38 @@
+This keymap is my preferred layout (after a certain amount of experimentation).
+The rationale behind the design is as follows:
+
+I grew up typing from a very early age and thus never learned the "correct" way
+to touch type (essentially, I'm self-taught). As a, result my fingers don't
+tend to stay on the "home keys" and occasionally my right hand wants to type
+keys that are on the left of the keyboard, and vice versa.
+
+Hence, despite liking the idea of split keyboards in principle, I've never been
+able to get on with them because the split simply doesn't work with my style of
+typing. The Ergodox solves this neatly by virtue of having a few extra keys in
+the "middle" of the keyboard which I can utilise for deliberate redundancy.
+Thus in this keymap there are two "6" keys (one on the left, one on the right)
+and likewise Y, H, G, and B are all duplicated to enable one-handed patterns
+that I use frequently (e.g. "byobu" with the right hand, "yes" with the left,
+etc.).
+
+I occasionally use the numeric pad for data entry, thus this is duplicated
+under the natural home position of the right hand in layer 1 (activated by
+holding one of the right thumb buttons), while the cursor keys are duplicated
+under the classic WASD gaming layout of the left hand in layer 2 (activated by
+holding one of the left thumb buttons). Various other useful keys also appear
+in these layers (brackets and symbols for coding in layer 1, navigation and
+F-keys in layer 2, etc.).
+
+Finally, modifier keys like Ctrl, Shift, and Alt, along with Backspace and
+Enter are all in traditional locations in an effort to reuse existing muscle
+memory as much as possible (keys like =, #, and ' are in layer 1). The layout
+maps are in the comments of keymap_dave.c so I won't bother duplicating them
+here.
+
+Oh, and the LEDs are rather pimped ... because I could!
+
+Anyway, although I'm sure this keymap won't be to many people's taste you might
+find some interesting ideas in here for your own layouts. Do tweet me
+(@waveform80) if you have any questions / suggestions / bugs.
+
+Dave.
diff --git a/layouts/community/ergodox/deadcyclo/keymap.c b/layouts/community/ergodox/deadcyclo/keymap.c
new file mode 100644 (file)
index 0000000..0ae1ef7
--- /dev/null
@@ -0,0 +1,563 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys and navigation
+#define UNI 3  // unicode 1
+#define UNI2 4 // unicode 2
+
+enum macros {
+  RUN
+};
+
+enum function_ids {
+  EMOJI,
+  EMOJI2,
+  EPRM,
+  VRSN,
+  RGB_SLD,
+  GO_GROUP
+};
+
+/* opt can only be 0-15 */
+enum emojis {
+  SHRUG,
+  YAY,
+  HUG,
+  SMILE,
+  SMILE2,
+  HMM1,
+  HMM2,
+  BEAR1,
+  BEAR2,
+  FUU,
+  EGGY1,
+  EGGY2,
+  FACE1,
+  FACE2,
+  UHU,
+  SMRK1
+};
+
+enum emojis2 {
+  SMRK2,
+  LOVE
+};
+
+enum progmem_ids {
+  EMOJI_SHRUG,
+  EMOJI_YAY,
+  EMOJI_HUG,
+  EMOJI_SMILE,
+  EMOJI_SMILE2,
+  EMOJI_HMM1,
+  EMOJI_HMM2,
+  EMOJI_BEAR1,
+  EMOJI_BEAR2,
+  EMOJI_FUU,
+  EMOJI_EGGY1,
+  EMOJI_EGGY2,
+  EMOJI_FACE1,
+  EMOJI_FACE2,
+  EMOJI_UHU,
+  EMOJI_SMRK1,
+  EMOJI_SMRK2,
+  EMOJI_LOVE,
+  F_EPRM,
+  F_VRSN,
+  F_RGB_SLD,
+  I3_GO_GROUP_10,
+  I3_GO_GROUP_1,
+  I3_GO_GROUP_2,
+  I3_GO_GROUP_3,
+  I3_GO_GROUP_4,
+  I3_GO_GROUP_5,
+  I3_GO_GROUP_6,
+  I3_GO_GROUP_7,
+  I3_GO_GROUP_8,
+  I3_GO_GROUP_9,
+};
+
+// TODO: Finish the macros for i3 (Macros should potentially be own function instead to make things easier? some of them at least, f. ex. the ones that use 1-0 keys so we can have a single switch)
+
+// TODO: Do stuff with hyper and meh keys
+// TODO: Add macros for lots of stuff. (Lastpass cli, pushbullet cli, other push service cli, linode cli, more?)
+// TODO: Make macros for gnu screen and i3wm
+// TODO: Need to change hotkeys for lastpass, and potentially make my own keys for them on one of my layers
+// TODO: Look into using tap dance
+// TODO: Use leader key for stuff. See https://github.com/qmk/qmk_firmware/wiki
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc/L3 |   1  |   2  |   3  |   4  |   5  |  6   |           |   6  |   7  |   8  |   9  |   0  |   -  |   =/L3 |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab/L1 |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \/L1 |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | ctrl/'|
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z / L4|X / L2|   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |. / L2|/ / L4| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  UNI |AltShf| Lalt | Ralt |                                       | Lalt | Ralt | LEAD |  UNI | ~/L1 |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | Home |       | PgUp |  Ins   |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 | Space|  TAB |------|       |------|  BSPC  |Enter |
+ *                                 |      |      |   [  |       |  ]   |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+       LT(UNI,KC_ESC),         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
+        LT(SYMB,KC_TAB),        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_LCTL,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        LT(4, KC_Z),  LT(MDIA, KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),LCTL(LSFT(KC_U)),      LALT(KC_LSFT),  KC_RALT,KC_LALT,
+                                              ALT_T(KC_APP),  KC_HOME,
+                                                              KC_END,
+                                               KC_SPC,KC_TAB,KC_LBRC,
+        // right hand
+               KC_6,     KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,             LT(UNI,KC_EQL),
+       TG(MDIA),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             LT(SYMB, KC_BSLS),
+       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,CTL_T(KC_QUOT),
+       MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,LT(MDIA, KC_DOT), LT(UNI2, KC_SLSH),   KC_RSFT,
+               KC_LALT,  KC_RALT,KC_LEAD,LCTL(LSFT(KC_U)),          LT(SYMB,KC_TILD),
+             KC_PGUP,        KC_INS,
+             KC_PGDN,
+             KC_RBRC,KC_BSPC, KC_ENT   
+    ),
+/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U))  
+ *                                                  
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |   F12  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Toggle|Animat|       | Hue+ | Hue- |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Bright|Bright|Solid |       |      |      |      |
+ *                                 |ness- |ness+ |------|       |------| DEL  |      |
+ *                                 |      |      |      |       | EPRM |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       RGB_TOG,RGB_MOD,
+       F(F_RGB_SLD),
+                               RGB_VAD,RGB_VAI,KC_TRNS,
+       // right hand
+       KC_F6, KC_F7,   KC_F8,  KC_F9,   KC_F10,   KC_F11,  KC_F12,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       RGB_HUD, RGB_HUI,
+       KC_TRNS,
+       F(F_EPRM), KC_DEL, KC_TRNS
+),
+/* Keymap 2: Media, mouse and navigation
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        | gg(1)| gg(2)| gg(3)| gg(4)| gg(5)| gg(6)|           | gg(6)| gg(7)| gg(8)| gg(9)| gg(0)|      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp | RUN  |      |      |           |      |      |      |  Up  |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Left | Down | Right|      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | Prev | Next |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA , MOUSE and NAVIGATION
+[MDIA] = LAYOUT_ergodox(
+               KC_TRNS, F(I3_GO_GROUP_1), F(I3_GO_GROUP_2), F(I3_GO_GROUP_3), F(I3_GO_GROUP_4), F(I3_GO_GROUP_5), F(I3_GO_GROUP_6),
+KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+               F(I3_GO_GROUP_6), F(I3_GO_GROUP_7), F(I3_GO_GROUP_8), F(I3_GO_GROUP_9), F(I3_GO_GROUP_10), KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS,  KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE,  KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+
+/* Keymap 3: Unicode
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  ┌   |  ┐   |  └   |  ┘   |  │   |  ─   |           |  ╔   |  ╗   |  ╚   |  ╝   |  ║   |  ═   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | shrug| yay  | hug  | smile|smile2|      |           |      |  ■   |  λ   |  →   |  ➙   |  ▻   |  █     |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | hmm1 | hmm2 | bear1| bear2| fuu  |------|           |------|  ☺   |  ☻   |  ☹   |  ♡   |  ♥   |  ░     |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | eggy1| eggy2| face1| face2| uhu  |      |           |      |  ❤   |  ☐   |  ☑   |  ☒   |  ✓   |  ▄     |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      | smrk1| smrk2| love | VER  |                                       |  ✔   |  ✗   |  ✘   |  ●   |  ▀   |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |   ▒  |  ▓   |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      | 
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Unicode
+[UNI] = LAYOUT_ergodox(
+               KC_TRNS, UC(0x250c), UC(0x2510), UC(0x2514), UC(0x2518), UC(0x2502), UC(0x2500),
+               KC_TRNS, F(EMOJI_SHRUG), F(EMOJI_YAY), F(EMOJI_HUG), F(EMOJI_SMILE), F(EMOJI_SMILE2), KC_TRNS,
+               KC_TRNS, F(EMOJI_HMM1), F(EMOJI_HMM2), F(EMOJI_BEAR1), F(EMOJI_BEAR2), F(EMOJI_FUU),
+               KC_TRNS, F(EMOJI_EGGY1), F(EMOJI_EGGY2), F(EMOJI_FACE1), F(EMOJI_FACE2), F(EMOJI_UHU), KC_TRNS,
+               KC_TRNS, F(EMOJI_SMRK1), F(EMOJI_SMRK2), F(EMOJI_LOVE), F(F_VRSN),
+               KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       UC(0x2554),  UC(0x2557), UC(0x255a), UC(0x255d), UC(0x2551), UC(0x2550), KC_TRNS,
+       KC_TRNS,  UC(0x25a0), UC(0x03bb), UC(0x2192), UC(0x2799), UC(0x25bb), UC(0x2588),
+                 UC(0x263a), UC(0x263b), UC(0x2639), UC(0x2661), UC(0x2665), UC(0x2591),
+       KC_TRNS,  UC(0x2764), UC(0x2610), UC(0x2611), UC(0x2612), UC(0x2713), UC(0x2584),
+       UC(0x2714), UC(0x2717), UC(0x2718), UC(0x25cf), UC(0x2580),
+               UC(0x2592), UC(0x2593),
+               KC_TRNS,
+               KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 4: Unicode 2 
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  ¹   |  ²   |  ³   |  ⁴   |  ⁵   |  ⁶   |           |  ⁶   |  ⁷   |  ⁸   |  ⁹   |  ⁰   |  ℃   |   ™    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  ₁   |  ₂   |  ₃   |  ₄   |  ₅   |  ₆   |           |  ₆   |  ₇   |  ₈   |  ₉   |  ₀   |  ⁄   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  ⅞   |  ⅝   |  ⅜   |  ⅛   |  ⅚   |------|           |------|  ⅓   |  ⅒   |  ⅑   |  ⅐   |  ¾   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |  ⅗   |  ⅖   |  ⅕   |  ⅔   |           |  ¼   |  ⅙   |  ⅘   |  ½   |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      | 
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Unicode 2   
+[UNI2] = LAYOUT_ergodox(
+               KC_TRNS, UC(0x00b9), UC(0x00b2), UC(0x00b3), UC(0x2074), UC(0x2075), UC(0x2076),
+               KC_TRNS, UC(0x2081), UC(0x2082), UC(0x2083), UC(0x2084), UC(0x2085), UC(0x2086),
+               KC_TRNS, UC(0x215e), UC(0x215d), UC(0x215c), UC(0x215b), UC(0x215a),
+               KC_TRNS, KC_TRNS, KC_TRNS, UC(0x2157), UC(0x2156), UC(0x2155), UC(0x2154),
+               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+               KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+               UC(0x2076),  UC(0x2077), UC(0x2078), UC(0x2079), UC(0x2070), UC(0x2103), UC(0x2122),
+               UC(0x2086),  UC(0x2087), UC(0x2088), UC(0x2089), UC(0x2080), UC(0x2044), KC_TRNS,
+               UC(0x2153), UC(0x2152), UC(0x2151), UC(0x2150), UC(0x00be), KC_TRNS,
+               UC(0x00bc),  UC(0x2159), UC(0x2158), UC(0x00bd), KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+               KC_TRNS, KC_TRNS,
+               KC_TRNS,
+               KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [EMOJI_SHRUG]   = ACTION_FUNCTION_OPT(EMOJI, SHRUG),
+  [EMOJI_YAY]     = ACTION_FUNCTION_OPT(EMOJI, YAY),
+  [EMOJI_HUG]     = ACTION_FUNCTION_OPT(EMOJI,HUG),
+  [EMOJI_SMILE]   = ACTION_FUNCTION_OPT(EMOJI,SMILE),
+  [EMOJI_SMILE2]  = ACTION_FUNCTION_OPT(EMOJI,SMILE2),
+  [EMOJI_HMM1]    = ACTION_FUNCTION_OPT(EMOJI,HMM1),
+  [EMOJI_HMM2]    = ACTION_FUNCTION_OPT(EMOJI,HMM2),
+  [EMOJI_BEAR1]   = ACTION_FUNCTION_OPT(EMOJI,BEAR1),
+  [EMOJI_BEAR2]   = ACTION_FUNCTION_OPT(EMOJI,BEAR2),
+  [EMOJI_FUU]     = ACTION_FUNCTION_OPT(EMOJI,FUU),
+  [EMOJI_EGGY1]   = ACTION_FUNCTION_OPT(EMOJI,EGGY1),
+  [EMOJI_EGGY2]   = ACTION_FUNCTION_OPT(EMOJI,EGGY2),
+  [EMOJI_FACE1]   = ACTION_FUNCTION_OPT(EMOJI,FACE1),
+  [EMOJI_FACE2]   = ACTION_FUNCTION_OPT(EMOJI,FACE2),
+  [EMOJI_UHU]     = ACTION_FUNCTION_OPT(EMOJI,UHU),
+  [EMOJI_SMRK1]   = ACTION_FUNCTION_OPT(EMOJI,SMRK1),
+  [EMOJI_SMRK2]   = ACTION_FUNCTION_OPT(EMOJI2,SMRK2),
+  [EMOJI_LOVE]    = ACTION_FUNCTION_OPT(EMOJI2,LOVE),
+  [F_EPRM]        = ACTION_FUNCTION(EPRM),
+  [F_VRSN]        = ACTION_FUNCTION(VRSN),
+  [F_RGB_SLD]     = ACTION_FUNCTION(RGB_SLD),
+  [I3_GO_GROUP_10]= ACTION_FUNCTION_OPT(GO_GROUP,0),
+  [I3_GO_GROUP_1] = ACTION_FUNCTION_OPT(GO_GROUP,1),
+  [I3_GO_GROUP_2] = ACTION_FUNCTION_OPT(GO_GROUP,2),
+  [I3_GO_GROUP_3] = ACTION_FUNCTION_OPT(GO_GROUP,3),
+  [I3_GO_GROUP_4] = ACTION_FUNCTION_OPT(GO_GROUP,4),
+  [I3_GO_GROUP_5] = ACTION_FUNCTION_OPT(GO_GROUP,5),
+  [I3_GO_GROUP_6] = ACTION_FUNCTION_OPT(GO_GROUP,6),
+  [I3_GO_GROUP_7] = ACTION_FUNCTION_OPT(GO_GROUP,7),
+  [I3_GO_GROUP_8] = ACTION_FUNCTION_OPT(GO_GROUP,8),
+  [I3_GO_GROUP_9] = ACTION_FUNCTION_OPT(GO_GROUP,9),
+};
+
+#define TAP_ONCE(code)  \
+  register_code (code); \
+  unregister_code (code)
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  if (record->event.pressed) {
+    switch(id) {
+    case EPRM:
+      eeconfig_init();
+      break;
+    case VRSN:
+      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      break;
+    case RGB_SLD:
+#ifdef RGBLIGHT_ENABLE
+      rgblight_mode(1);
+#endif
+      break;
+    case GO_GROUP:
+      register_code(KC_LCTL); TAP_ONCE(KC_I); unregister_code(KC_LCTL);
+      TAP_ONCE(KC_G);
+      if (opt == 0) {
+       TAP_ONCE(39);
+      } else {
+       TAP_ONCE(29+opt);
+      }
+      break;
+    case EMOJI:
+      switch(opt) {
+      case SHRUG:
+       unicode_input_start(); register_hex(0xaf); unicode_input_finish();
+       TAP_ONCE (KC_BSLS);
+       register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
+       unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
+       register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
+       TAP_ONCE (KC_SLSH);
+       unicode_input_start (); register_hex(0xaf); unicode_input_finish();
+       break;
+      case YAY:
+       SEND_STRING ("\\o/");   
+       break;
+      case HUG:
+       unicode_input_start(); register_hex(0x0f3c); unicode_input_finish();
+       TAP_ONCE (KC_SPC);
+       unicode_input_start(); register_hex(0x3064); unicode_input_finish();
+       TAP_ONCE (KC_SPC);
+       unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x25d5); unicode_input_finish();
+       TAP_ONCE (KC_SPC);
+       unicode_input_start(); register_hex(0x0f3d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x3064); unicode_input_finish();
+       break;
+      case SMILE:
+       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
+       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
+       break;
+      case SMILE2:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
+       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0298); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case HMM1:
+       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
+       break;
+      case HMM2:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0ca0); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case BEAR1:
+       unicode_input_start(); register_hex(0x0295); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
+       unicode_input_start(); register_hex(0x1d25); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0294); unicode_input_finish();
+       break;
+      case BEAR2:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x1d54); unicode_input_finish();
+       unicode_input_start(); register_hex(0x1d25); unicode_input_finish();
+       unicode_input_start(); register_hex(0x1d54); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case FUU:
+       unicode_input_start(); register_hex(0x256d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2229); unicode_input_finish();
+       unicode_input_start(); register_hex(0x256e); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       unicode_input_start(); register_hex(0x256d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2229); unicode_input_finish();
+       unicode_input_start(); register_hex(0x256e); unicode_input_finish();
+       break;
+      case EGGY1:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x256f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x00b0); unicode_input_finish();
+       unicode_input_start(); register_hex(0x25a1); unicode_input_finish();
+       unicode_input_start(); register_hex(0x00b0); unicode_input_finish();
+       unicode_input_start(); register_hex(0xff09); unicode_input_finish();
+       unicode_input_start(); register_hex(0x256f); unicode_input_finish();
+       break;
+      case EGGY2:
+       unicode_input_start(); register_hex(0x30ce); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0020); unicode_input_finish();
+       unicode_input_start(); register_hex(0x309c); unicode_input_finish();
+       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x309c); unicode_input_finish();
+       unicode_input_start(); register_hex(0x30ce); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case FACE1:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x002d); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case FACE2:
+       unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2022); unicode_input_finish();
+       unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+       break;
+      case UHU:
+       unicode_input_start(); register_hex(0x2299); unicode_input_finish();
+       unicode_input_start(); register_hex(0xfe4f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2299); unicode_input_finish();
+       break;
+      case SMRK1:
+       unicode_input_start(); register_hex(0x005e); unicode_input_finish();
+       unicode_input_start(); register_hex(0x032e); unicode_input_finish();
+       unicode_input_start(); register_hex(0x005e); unicode_input_finish();
+       break;
+      }
+      break;
+    case EMOJI2:
+      switch(opt) {
+       case SMRK2:
+         unicode_input_start(); register_hex(0x0028); unicode_input_finish();
+         unicode_input_start(); register_hex(0x005e); unicode_input_finish();
+         unicode_input_start(); register_hex(0x032e); unicode_input_finish();
+         unicode_input_start(); register_hex(0x005e); unicode_input_finish();
+         unicode_input_start(); register_hex(0x0029); unicode_input_finish();
+         break;
+      case LOVE:
+       unicode_input_start(); register_hex(0x2665); unicode_input_finish();
+       unicode_input_start(); register_hex(0x203f); unicode_input_finish();
+       unicode_input_start(); register_hex(0x2665); unicode_input_finish();
+       break;
+      }
+      break;   
+    }
+  }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  if (record->event.pressed) {
+    switch(id) {
+      case RUN:
+       return MACRO( D(LCTL), T(I), U(LCTL), T(R), END  );
+      break;
+    }
+  }
+  return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  set_unicode_input_mode(UC_LNX);
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+    case 1:
+      ergodox_right_led_1_on();
+      #ifdef RGBLIGHT_ENABLE
+      rgblight_setrgb(0xff,0x00,0x00);
+      #endif
+      break;
+    case 2:
+      ergodox_right_led_2_on();
+      #ifdef RGBLIGHT_ENABLE
+      rgblight_setrgb(0x00,0xff,0x00);
+      #endif
+      break;
+    case 3:
+      ergodox_right_led_3_on();
+      #ifdef RGBLIGHT_ENABLE
+       rgblight_setrgb(0x00,0x00,0xff);
+      #endif
+      break;
+    case 4:
+      ergodox_right_led_1_on();
+      ergodox_right_led_3_on();
+      #ifdef RGBLIGHT_ENABLE
+       rgblight_setrgb(0xff,0x00,0xff);
+      #endif
+      break;
+    default:
+      // none
+      break;
+    }
+
+};
diff --git a/layouts/community/ergodox/deadcyclo/readme.md b/layouts/community/ergodox/deadcyclo/readme.md
new file mode 100644 (file)
index 0000000..6ae5299
--- /dev/null
@@ -0,0 +1,79 @@
+# ErgoDox EZ 1337 configuration
+
+Custom layout based on the default layout. Intended for interational
+users of us intl-altgr layout. Note that some common keys might be
+missing, as this layout is intented to be used on *nix systems by
+users familiar with their system. The layout is geared towards
+avoiding using the rat (mouse for those of you who are unfamiliar with
+tiling window managers) as much as possibly.
+
+# Layouts
+
+All layer images created using [keyboard-layout-editor](http://www.keyboard-layout-editor.com/)
+
+## Base layer
+
+[![Base layer](https://i.imgur.com/PGhP2jZ.png)](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
+
+The base layer here is marked with the us international alt-gr layout,
+including characters bound to what on an iso keyboard would be alt-gr
+and on an ansi keyboard right alt.
+
+Regular (and irregular) modifier keys are marked with a yellowish
+gray. Layer moderators are marked with blue, red and green, which are
+the same colors each layer displays on the LEDs when active.
+
+All of the layer switch keys, except for the two center keys marked L1
+TOG, are dual purpose. Hence for example the top left key produces ESC
+if tapped, and temporarilly toggles L3 when hold down. The two center
+L1 TOG keys toggle L1 on and off for more permanent layer toggling.
+
+The UNI keys enter the linux ibus unicode composer mode
+(ie. Ctrl+Shift+u). Use this to enter unicode characters. Hit the key,
+type in the unicode hex value, and hit enter.
+
+## Layer 1 - Symbols and RGB
+
+[![Layer 1 - Symbols and RGB](https://i.imgur.com/SfkkU5D.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
+
+The Symbols and RGB layer contains function keys, commonly used
+symbols, a numpad and if you have the new Ergodox Ez shine keys for
+controlling various RGB-led functions. In addition, it provides an up
+and a down key for easy scrolling. RGB controller keys are yellow.
+
+## Layer 2 - Media, Mouse and Navigation
+
+[![Layer 2 - Media, Mouse and Navigation](https://i.imgur.com/UwPHjCO.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
+
+The Media, Mouse and unicode layer contains special keys for moving
+the mouse and clicking on it with the keyboard. In addition it
+provides standard media control keys, and default arrow keys.
+
+## Layer 3 - Unicode
+
+[![Layer 3 - Unicode](https://i.imgur.com/HRkeY8j.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
+
+The unicode layer provides keys for directly typing unicode (utf-8)
+
+## Layer 4 - Unicode 2
+
+[![Layer 43 - Unicode](https://i.imgur.com/dyB459q.png)](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a)
+
+The unicode 2 layer provides keys for directly typing unicode (utf-8)
+
+# Changelog
+
+- 02.01.2017 Added delete key on second layer
+- 10.01.2017 Added layer images to readme
+- 24.01.2017 Added support for Ergodox Shine. Added secondary L2 switch key on left hand
+- 24.01.2017 Added unicode keys. Added shrug hug and yay. Moved Navigation to layer 2
+- 25.01.2017 Added lots of new emojis and some unicode keys
+- 27.01.2017 Added new unicode keys and shortcut for ibus unicode composer key (CTRL+SHIFT+U)
+- 11.03.2017 Added additional unicode layer. Moved some layer switch keys to more sane locations
+
+# TODO
+
+- Add macros for lots of stuff. (Lastpass cli, pushbullet cli, other push service cli, linode cli, more?)
+- Make macros for gnu screen and i3wm
+- Look into the app launch macros in algernon keymap
+
diff --git a/layouts/community/ergodox/deadcyclo/rules.mk b/layouts/community/ergodox/deadcyclo/rules.mk
new file mode 100644 (file)
index 0000000..039f07c
--- /dev/null
@@ -0,0 +1 @@
+UNICODE_ENABLE = yes
diff --git a/layouts/community/ergodox/dragon788/keymap.c b/layouts/community/ergodox/dragon788/keymap.c
new file mode 100644 (file)
index 0000000..ea3fe3e
--- /dev/null
@@ -0,0 +1,229 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define PLVR 3 // Plover layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LGui |           |Plover|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '"/Ctrl|
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | ~L1  | Grv  |  '"  | Left |Rgt/L2|                                       | Up/L2| Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | Home |       | PgUp |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 |Backsp|Delete|------|       |------| Enter  |Space |
+ *                                 | ace  |      | LAlt |       |TabCtl|        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LGUI,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
+        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+         KC_FN1,      KC_GRV,      KC_QUOT,KC_LEFT, LT(MDIA, KC_RGHT),
+                                                     KC_APP,  KC_HOME,
+                                                               KC_END,
+                                              KC_BSPC,KC_DELT,KC_LALT,
+        // right hand
+             TG(3),       KC_6,   KC_7,   KC_8,   KC_9,   KC_0,           KC_MINS,
+             TG(2),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,           KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN, CTL_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,        KC_RSFT,
+                       LT(MDIA, KC_UP),   KC_DOWN,KC_LBRC,KC_RBRC,         KC_FN1,
+             KC_PGUP,        CTL_T(KC_ESC),
+             KC_PGDN,
+             CTL_T(KC_TAB),KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      | Calc |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_CALC,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | Rclk | Lclk |      |      |           |      |      | Lclk | Rclk |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft| MsUp |MsDown|MsRght|------|           |------|MsLeft|MsDown| MsUp |MsRght|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      | Prev |       |VolUp |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Play |       | Mute |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
+ *                                 |      |      | Next |       |VolDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+         RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_MPRV,
+                                                    KC_MPLY,
+                                  KC_BTN1, KC_BTN2, KC_MNXT,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_VOLU,  KC_TRNS,
+       KC_MUTE,
+       KC_VOLD,  KC_WBAK, KC_WFWD
+),
+
+/* Keymap 4: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |  6   |  7   |   8  |   9  |  0   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   c  |   v  |------|       |------|  n   |  m   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+
+[PLVR] = LAYOUT_ergodox(  // layout: layer 4: Steno for Plover
+        // left hand
+        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NO,
+        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
+        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
+        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                                      KC_FN4, KC_NO,
+                                           KC_NO,
+                                 KC_C,   KC_V,   KC_NO,
+        // right hand
+             KC_TRNS,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
+               KC_NO,   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
+                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
+               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
+                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_NO,  KC_N,   KC_M
+),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/dvorak/dvorak.png.md b/layouts/community/ergodox/dvorak/dvorak.png.md
new file mode 100644 (file)
index 0000000..0022150
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/zLx5fus.png
diff --git a/layouts/community/ergodox/dvorak/keymap.c b/layouts/community/ergodox/dvorak/keymap.c
new file mode 100644 (file)
index 0000000..ade89db
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |S / L2|   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(1),
+        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
+             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MDIA, KC_S),   KC_MINS,
+             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/dvorak_emacs/keymap.c b/layouts/community/ergodox/dvorak_emacs/keymap.c
new file mode 100644 (file)
index 0000000..fc83a1d
--- /dev/null
@@ -0,0 +1,165 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+/******************************************************************************************
+ * DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
+ * Layer 1: auxiliary keys
+ * Layer 2: full qwerty layout
+ *****************************************************************************************/
+
+// LAYERS
+#define BASE    0 // dvorak layout (default)
+#define AUX     1 // auxiliary keys
+
+// MACROS
+/* #define OBRACE 0 // key { or shift */
+/* #define CBRACE 1 // key } or shift */
+/* #define OBRACK 2 // key [ or left alt */
+/* #define CBRACK 3 // key ] or left alt */
+/* #define CAPS   4 // caps lock */
+
+// LEDS
+#define USB_LED_NUM_LOCK    0
+#define USB_LED_CAPS_LOCK   1
+#define USB_LED_SCROLL_LOCK 2
+#define USB_LED_COMPOSE     3
+#define USB_LED_KANA        4
+
+// TIMERS
+#define KEY_TAP_FAST 85
+#define KEY_TAP_SLOW 95
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base layer
+ * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
+ *
+  * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  | = / +  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   ~    |" / ' |, / < |. / > |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  | / / ?  |
+ * |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
+ * |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  | - / _  |
+ * |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
+ * | {/LSft |; / : |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      | ~L1  |                                       | ~L1  |      |      | \ / ||        |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | HOME |  END |       | LEFT | RIGHT|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+ *                                 |  /   |  /   |------|       |------|   /    |  /   |
+ *                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+ *                                 `--------------------'       `----------------------'
+ *
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,          KC_1,     KC_2,   KC_3,   KC_4,          KC_5,           KC_ESC,
+        KC_TILD,        KC_QUOTE, KC_COMM,KC_DOT, KC_P,          KC_Y,           KC_LBRACKET,
+        KC_TAB,         KC_A,     KC_O,   KC_E,   SFT_T(KC_U),   LT(AUX, KC_I),
+        SFT_T(KC_LBRC), KC_SCLN,  KC_Q,   KC_J,   KC_K,          KC_X,           KC_LGUI,
+        KC_NO,          KC_NO,    KC_NO,  KC_NO,  MO(AUX),
+                                                           KC_HOME, KC_END,
+                                                                    KC_PGUP,
+                                      CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN,
+        // right hand
+                    KC_ESC,          KC_6,           KC_7,         KC_8,   KC_9,   KC_0,   KC_EQL,
+                    KC_RBRACKET,     KC_F,           KC_G,         KC_C,   KC_R,   KC_L,   KC_SLASH,
+                                     LT(AUX, KC_D),  SFT_T(KC_H),  KC_T,   KC_N,   KC_S,   KC_MINUS,
+                    KC_LGUI,         KC_B,           KC_M,         KC_W,   KC_V,   KC_Z,   SFT_T(KC_RBRC),
+                                                                 MO(AUX), KC_NO,   KC_NO,  KC_BSLASH, KC_NO,
+        KC_LEFT, KC_RIGHT,
+        KC_UP,
+        KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC)
+    ),
+/* Keymap 1: Aux layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
+ * |  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | TRANS| TRANS|       | TRANS| TRANS|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | TRANS|       | TRANS|      |      |
+ *                                 |TRANS |TRANS |------|       |------| TRANS| TRANS|
+ *                                 |      |      | TRANS|       | TRANS|      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[AUX] = LAYOUT_ergodox(
+       // left hand
+       KC_VOLU, KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_SLEP,
+       KC_VOLD, KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_NO,   KC_NO,
+       KC_NO  , KC_F5, KC_F6,  KC_F7,  KC_F8,  KC_TRNS,
+       KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO,   KC_NO,
+       LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_TRNS,
+                                                            KC_TRNS  , KC_TRNS,
+                                                                     KC_TRNS,
+                                                KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+            KC_PWR,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,
+            KC_NO,   KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_NO,
+                     KC_TRNS, KC_4,   KC_5,   KC_6,    KC_PPLS, KC_NO,
+            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_TRNS,
+                              KC_TRNS,KC_DOT, KC_0,    KC_PEQL, KC_NO,
+       KC_TRNS  , KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+}
diff --git a/layouts/community/ergodox/dvorak_emacs/readme.md b/layouts/community/ergodox/dvorak_emacs/readme.md
new file mode 100644 (file)
index 0000000..a3fc34a
--- /dev/null
@@ -0,0 +1,70 @@
+# Ergodox Dvorak Layout with emacs binding in mind
+ * Control & Alt key on the thumbs (activated if pressed with another key).
+ * In the same way, "U" and "R" are the shift modifier if pressed with another key.
+ * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key.
+ * Software layout set to english.
+
+## Keymap Layers
+ - L0: dvorak with some customizations (see layout below)
+ - L1: auxiliary keys (includes function keys, numpad...)
+
+
+### Keymap 0: Base layer
+Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
+|--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
+|  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
+|--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
+| {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | HOME |  END |       | LEFT | RIGHT|
+                                ,------|------|------|       |------+--------+------.
+                                | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+                                |  /   |  /   |------|       |------|   /    |  /   |
+                                | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+                                `--------------------'       `----------------------'
+
+</pre></code>
+
+### Keymap 1: Aux layer
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
+|--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
+|  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | TRANS| TRANS|       | TRANS| TRANS|
+                                ,------|------|------|       |------+------+------.
+                                |      |      | TRANS|       | TRANS|      |      |
+                                |TRANS |TRANS |------|       |------| TRANS| TRANS|
+                                |      |      | TRANS|       | TRANS|      |      |
+                                `--------------------'       `--------------------'
+
+</pre></code>
+
+
+
+## Generation of .hex file
+> In the "qmk_firmware/keyboards/ergodox" directory.
+
+> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware".
+
+> Flash with `teensy_loader` binary
diff --git a/layouts/community/ergodox/dvorak_emacs_software/keymap.c b/layouts/community/ergodox/dvorak_emacs_software/keymap.c
new file mode 100644 (file)
index 0000000..1f5681f
--- /dev/null
@@ -0,0 +1,166 @@
+#include QMK_KEYBOARD_H
+#include "keymap_dvorak.h"
+#include "debug.h"
+#include "action_layer.h"
+
+/******************************************************************************************
+ * DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
+ * Layer 1: auxiliary keys
+ * Layer 2: full qwerty layout
+ *****************************************************************************************/
+
+// LAYERS
+#define BASE    0 // dvorak layout (default)
+#define AUX     1 // auxiliary keys
+
+// MACROS
+/* #define OBRACE 0 // key { or shift */
+/* #define CBRACE 1 // key } or shift */
+/* #define OBRACK 2 // key [ or left alt */
+/* #define CBRACK 3 // key ] or left alt */
+/* #define CAPS   4 // caps lock */
+
+// LEDS
+#define USB_LED_NUM_LOCK    0
+#define USB_LED_CAPS_LOCK   1
+#define USB_LED_SCROLL_LOCK 2
+#define USB_LED_COMPOSE     3
+#define USB_LED_KANA        4
+
+// TIMERS
+#define KEY_TAP_FAST 85
+#define KEY_TAP_SLOW 95
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base layer
+ * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
+ *
+  * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  | = / +  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   ~    |" / ' |, / < |. / > |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  | / / ?  |
+ * |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
+ * |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  | - / _  |
+ * |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
+ * | {/LSft |; / : |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      | ~L1  |                                       | ~L1  |      |      | \ / ||        |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | HOME |  END |       | LEFT | RIGHT|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+ *                                 |  /   |  /   |------|       |------|   /    |  /   |
+ *                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+ *                                 `--------------------'       `----------------------'
+ *
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_NO,          KC_1,     KC_2,   KC_3,   KC_4,          KC_5,           KC_ESC,
+        KC_TILD,        DV_QUOT,  DV_COMM,DV_DOT, DV_P,          DV_Y,           DV_LBRC,
+        KC_TAB,         DV_A,     DV_O,   DV_E,   SFT_T(DV_U),   LT(AUX, DV_I),
+        SFT_T(DV_LBRC), DV_SCLN,  DV_Q,   DV_J,   DV_K,          DV_X,           KC_LGUI,
+        KC_NO,          KC_NO,    KC_NO,  KC_NO,  MO(AUX),
+                                                            KC_HOME, KC_END,
+                                                                     KC_PGUP,
+                                      CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN,
+        // right hand
+        KC_ESC,         KC_6,         KC_7,   KC_8,   KC_9,   KC_0,   DV_EQL,
+        DV_RBRC,        DV_F,         DV_G,   DV_C,   DV_R,   DV_L,   DV_SLSH,
+        LT(AUX, DV_D),  SFT_T(DV_H),  DV_T,   DV_N,   DV_S,   DV_MINS,
+        KC_LGUI,        DV_B,         DV_M,   DV_W,   DV_V,   DV_Z,   SFT_T(DV_RBRC),
+                                                                 MO(AUX), KC_NO,   KC_NO,  KC_BSLS, KC_NO,
+        KC_LEFT, KC_RIGHT,
+        KC_UP,
+        KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC)
+    ),
+/* Keymap 1: Aux layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |PSCR  |------+-----aan+------+------+------+--------|
+ * |  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | TRANS| TRANS|       | TRANS| TRANS|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | TRANS|       | TRANS|      |      |
+ *                                 |TRANS |TRANS |------|       |------| TRANS| TRANS|
+ *                                 |      |      | TRANS|       | TRANS|      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[AUX] = LAYOUT_ergodox(
+       // left hand
+       KC_VOLU, KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_SLEP,
+       KC_VOLD, KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_NO,   KC_NO,
+       KC_NO  , KC_F5, KC_F6,  KC_F7,  KC_F8,  KC_TRNS,
+       KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO,   KC_NO,
+       LCTL(DV_S), LCTL(DV_Z), LCTL(DV_X), LCTL(DV_C), KC_TRNS,
+                                                            KC_TRNS  , KC_TRNS,
+                                                                     KC_TRNS,
+                                                KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+            KC_PWR,  KC_NO,   KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,
+            KC_NO,   KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_NO,
+                     KC_TRNS, KC_4,   KC_5,   KC_6,    KC_PPLS, KC_NO,
+            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_TRNS,
+                              KC_TRNS,KC_DOT, KC_0,    KC_PEQL, KC_NO,
+       KC_TRNS  , KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+}
diff --git a/layouts/community/ergodox/dvorak_emacs_software/readme.md b/layouts/community/ergodox/dvorak_emacs_software/readme.md
new file mode 100644 (file)
index 0000000..0e1e94f
--- /dev/null
@@ -0,0 +1,74 @@
+# Ergodox Dvorak Layout with emacs binding in mind - software version
+
+This configuration is the same as the dvorak_emacs layout, but using a sofware dvorak configuration
+instead of a firmware configuration. This layout is for those who run their computer in dvorak mode.
+
+ * Control & Alt key on the thumbs (activated if pressed with another key).
+ * In the same way, "U" and "R" are the shift modifier if pressed with another key.
+ * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key.
+ * Software layout set to english.
+
+## Keymap Layers
+ - L0: dvorak with some customizations (see layout below)
+ - L1: auxiliary keys (includes function keys, numpad...)
+
+
+### Keymap 0: Base layer
+Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
+|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
+|   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
+|--------|------|------|------|------|------|   {  |           |   }  |------|------|------|------|------|--------|
+|  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
+|--------|------|------|------|------|------| LGUI |           | LGUI |------|------|------|------|------|--------|
+| {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | HOME |  END |       | LEFT | RIGHT|
+                                ,------|------|------|       |------|--------|------.
+                                | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+                                |  /   |  /   |------|       |------|   /    |  /   |
+                                | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+                                `--------------------'       `----------------------'
+
+</pre></code>
+
+### Keymap 1: Aux layer
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
+|--------|------|------|------|------|-------------|           |------|------|------|------|------|------|--------|
+|  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+|--------|------|------|------|------|------|      |           |      |------|------|------|------|------|--------|
+|        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
+|--------|------|------|------|------|------|      |           |PSCR  |------|------|------|------|------|--------|
+|  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
+`--------|------|------|------|------|-------------'           `-------------|------|------|------|------|--------'
+  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | TRANS| TRANS|       | TRANS| TRANS|
+                                ,------|------|------|       |------|------|------.
+                                |      |      | TRANS|       | TRANS|      |      |
+                                |TRANS |TRANS |------|       |------| TRANS| TRANS|
+                                |      |      | TRANS|       | TRANS|      |      |
+                                `--------------------'       `--------------------'
+
+</pre></code>
+
+
+
+## Generation of .hex file
+> In the "qmk_firmware/keyboards/ergodox" directory.
+
+> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware".
+
+> Flash with `teensy_loader` binary
diff --git a/layouts/community/ergodox/dvorak_intl_squisher/keymap.c b/layouts/community/ergodox/dvorak_intl_squisher/keymap.c
new file mode 100644 (file)
index 0000000..e1ed56f
--- /dev/null
@@ -0,0 +1,185 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | BrBck|           | Play |   6  |   7  |   8  |   9  |   0  | \ / L2 |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Esc    |   '  |   ,  |   .  |   P  |   Y  | Del  |           | Ins  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1| LAlt | LGui | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | L1   |       | L2   |PrntScr |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space| Tab  |------|       |------| AltShf |Enter |
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_WBAK,
+        KC_ESC,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   KC_DELT,
+        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_LALT,      KC_LGUI,  KC_LEFT,KC_RGHT,
+                                              CTL_T(KC_APP),  TG(1),
+                                                              KC_HOME,
+                                               KC_SPC,KC_TAB,KC_END,
+        // right hand
+             KC_MPLY,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             LT(MDIA, KC_BSLS),
+             KC_INS,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
+             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             TG(2),        KC_PSCREEN,
+             KC_PGUP,
+             KC_PGDN,RALT(KC_RSFT), KC_ENT
+    ), 
+/* Keymap 1: Symbol & Media Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Prev | Next |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |VolUp |      |      |
+ *                                 |      |      |------|       |------| Mute |      |
+ *                                 |      |      |      |       |VolDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MNXT,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_VOLU,
+       KC_VOLD, KC_MUTE, KC_TRNS
+),
+/* Keymap 2: QWERTY Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,        KC_Q,         KC_W,      KC_E,   KC_R,   KC_T,   KC_TRNS,
+        KC_TRNS,        KC_A,         KC_S,      KC_D,   KC_F,   KC_G,
+        KC_TRNS,        CTL_T(KC_Z),  KC_X,      KC_C,   KC_V,   KC_B,   KC_TRNS,
+        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+        // right hand
+        KC_TRNS,     KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_TRNS,
+                     KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_TRNS,
+        KC_TRNS,     KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_TRNS,
+                             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/dvorak_intl_squisher/readme.md b/layouts/community/ergodox/dvorak_intl_squisher/readme.md
new file mode 100644 (file)
index 0000000..7a48bf5
--- /dev/null
@@ -0,0 +1,29 @@
+# ErgoDox EZ Dvorak International Squisher
+
+Dvorak layout adjusted with several (linux) applications in mind:
+
+* Easier Escape for VIM
+* Windows/Super key for awesome WM
+* Alt+Shift for international characters
+* PrintScreen for sys-rq
+* Insert for the X11 clip-board
+
+Major layer changes:
+
+* Common multimedia keys are integrated into layer 0, less common into layer 1
+* No mouse keys
+* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users)
+
+Known issues:
+
+* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
+  entirely clear...)
+
+![layer0](https://i.imgur.com/AL70X44.png)
+![layer1](https://i.imgur.com/k1DcUdt.png)
+![layer2](https://i.imgur.com/nK80mKf.png)
+
+## Changelog
+
+* 2016-03-29
+  * Initial release
diff --git a/layouts/community/ergodox/dvorak_plover/README.md b/layouts/community/ergodox/dvorak_plover/README.md
new file mode 100644 (file)
index 0000000..c8287b0
--- /dev/null
@@ -0,0 +1,14 @@
+Dvorak support, plover support, gaming support
+
+I'm used to the Kinesis, so originally I was just going to patch up
+the thumb keys to be more familiar. But the ergodox is really well
+suited to NKRO support in Plover, so I added a layer for that, and
+then I remembered that dvorak can be really annoying for video
+games (try to reach WASD), so I added a layer for that.
+
+The result is probably a bit idiosyncratic, but it works for me.
+
+(I also don't have any press/hold distinction keys, because that
+confuses my fuzzy little brain.)
+
+Contributed by seebs (seebs@seebs.net)
diff --git a/layouts/community/ergodox/dvorak_plover/keymap.c b/layouts/community/ergodox/dvorak_plover/keymap.c
new file mode 100644 (file)
index 0000000..4d11224
--- /dev/null
@@ -0,0 +1,230 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define PLVR 2 // media keys
+#define QWRT 3 // qwerty layer for gaming
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L2  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LGui   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| Esc  |           |  L3  |------+------+------+------+------+--------|
+ * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Lalt  |  Grv |      | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | LCtrl| Alt  |       | LGui | RCtrl  |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Backsp|Delete|------|       |------| Enter  |Space |
+ *                                 |   ace|      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_ESC,
+        KC_TAB,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   MO(SYMB),
+        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        KC_SCLN,        KC_Q,    KC_J,   KC_K,   KC_X,   KC_ESC,
+        KC_LALT,        KC_GRV,         KC_ESC,  KC_LEFT,KC_RGHT,
+                                               KC_LCTL,  KC_LALT,
+                                                              KC_HOME,
+                                               KC_BSPC,KC_DEL,KC_END,
+        // right hand
+            KC_ESC,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
+             TG(PLVR),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
+             TG(QWRT),KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,             KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT,
+             KC_LGUI,        KC_RCTL,
+             KC_PGUP,
+             KC_PGDN,KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |  KP7 |  KP8 | KP9  |  KP* |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |  KP4 |  KP5 | KP6  |  KP+ |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |  KP1 |  KP2 | KP3  |  KP/ |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |  KP. | KP0  |  KP= |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_P7,  KC_P8,   KC_P9,   KC_PAST, KC_F12,
+                KC_DOWN, KC_P4,  KC_P5,   KC_P6,   KC_PPLS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_P1,  KC_P2,   KC_P3,   KC_PSLS, KC_TRNS,
+                         KC_TRNS,KC_PDOT,  KC_P0,   KC_PEQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           | L2   |  6   |  7   |   8  |   9  |  0   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   c  |   v  |------|       |------|  n   |  m   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+
+[PLVR] = LAYOUT_ergodox(  // layout: layer 2: Steno for Plover
+        // left hand
+        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
+        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
+        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
+        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                                      KC_FN4, KC_NO,
+                                           KC_NO,
+                                 KC_C,   KC_V,   KC_NO,
+        // right hand
+               KC_NO,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
+               TG(2),   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
+                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
+               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
+                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_NO,  KC_N,   KC_M
+),
+/* Keymap 3: qwerty-ish
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LGui   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  LGui  |
+ * |--------+------+------+------+------+------| Spc  |           |  L3  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Lalt |  Grv |  '"  | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | LCtrl| LAlt |       | LGui | RCtrl  |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Backsp|Delete|------|       |------| Enter  |Space |
+ *                                 |   ace|      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[QWRT] = LAYOUT_ergodox(  // layer 3: qwerty for gaming
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_SPACE,
+        KC_LALT,      KC_GRV,      KC_QUOT,  KC_LEFT,KC_RGHT,
+                                                                                       KC_LCTL,  KC_LALT,
+                                                                                                      KC_HOME,
+                                                                                       KC_BSPC,KC_DEL,KC_END,
+        // right hand
+             KC_ESC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             KC_NO,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
+             TG(QWRT),    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT,
+              KC_LGUI,        KC_RCTL,
+              KC_PGUP,
+              KC_PGDN,KC_ENT, KC_SPC
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+               case 3:
+                       ergodox_right_led_3_on();
+                       break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/dvorak_programmer/README.md b/layouts/community/ergodox/dvorak_programmer/README.md
new file mode 100644 (file)
index 0000000..3672246
--- /dev/null
@@ -0,0 +1,39 @@
+Dvorak Programmer Layout
+========================
+
+This is a dvorak-only layout. The overall philosophy is that the left hand contains a number of layer-switching shortcuts, and the right hand key codes vary based on the layer selected.
+
+Layers
+------
+
+* BASE: this is where you type.
+* SHELL_NAV: hold down the Tab key to access shell/terminal navigation shorcuts such as forward/backward word, history, Ctrl+C, screen tab movement.
+* KEY_NAV: arrow key movement with backward/forward word support, and copy/paste.
+* KEY_SEL: same as above, but every movement shift-selects.
+* NUMBER: keypad layer.
+* SYMBOL: all the symbols.
+* BRACKET: special brackets-only layer for programming. Activated by pressing left capslock (OSL)
+* SHORTCUTS: sends Hyper keys for Autohotkey to interpret. I use this to switch between specific apps.
+* MOUSE: use mouse keys
+
+Updates
+-------
+
+2017/02/10:
+* Made left shift an MO for SHELL_NAV, and symbol+right shift CAPSLOCK. Made all modifiers OSM.
+
+2017/01/28:
+* Made the capslock key a dual momentary layer activation for BRACKETS and SHELL_NAV. One keypress held down for BRACKETS, one keypress, released and then held down for SHELL_NAV
+
+2017/01/22:
+* Made brackets toggle an OSL on the left capslock
+* Added SHELL_LAYER
+
+2016/12/10:
+* toggle for brackets layer is now on left thumb cluster.
+
+2016/11/05:
+* removed brackets anywhere but in brackets layer
+* added mouse layer back in
+* put semicolon-newline and end-newline on symbol layer
+* replaced all HYPR with MEH, added more shortcut keys
\ No newline at end of file
diff --git a/layouts/community/ergodox/dvorak_programmer/keymap.c b/layouts/community/ergodox/dvorak_programmer/keymap.c
new file mode 100644 (file)
index 0000000..33115d2
--- /dev/null
@@ -0,0 +1,406 @@
+
+#include QMK_KEYBOARD_H
+#include "led.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "action_code.h"
+
+#define BASE    0 // default layer
+#define SHELL_NAV 2
+#define KEY_NAV 3 // key navigation layer
+#define KEY_SEL 4 // key selection layer
+#define NUMBER  5  // number layer
+#define SYMBOL  6
+#define BRACKETS  7
+#define SHORTCUTS 8
+#define MOUSE 9
+
+// macros
+#define MC_COPY_LINE  0
+#define MC_CUT_LINE   1
+#define MC_PASTE_LINE 2
+#define MC_NEW_SEARCH_TAB 3
+#define SCREEN_TAB_LEFT 4
+#define SCREEN_TAB_RIGHT 5
+#define SCREEN_NEW_TAB 6
+#define SWITCH_NDS 7
+#define SCREEN_COPY_MODE 8
+#define SCREEN_PASTE 9
+#define OPEN_CLOSE_PAREN 10
+#define OPEN_CLOSE_BRACKET 11
+#define OPEN_CLOSE_CURLY 12
+#define OPEN_CLOSE_SINGLE_QUOTE 13
+#define OPEN_CLOSE_DOUBLE_QUOTE 14
+#define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15
+#define SEMICOLON_NEWLINE 16
+#define END_NEWLINE 17
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// base layer
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,                    KC_F1,          KC_F2,       KC_F3,        KC_F4,       KC_F5,       KC_F6,
+        KC_TAB,                    KC_QUOT,        KC_COMM,     KC_DOT,       KC_P,        KC_Y,        MO(KEY_SEL),
+        MO(BRACKETS),              KC_A,           KC_O,        KC_E,         KC_U,        KC_I,
+        MO(SHELL_NAV),             KC_SCLN,        KC_Q,        KC_J,         KC_K,        KC_X,        MO(KEY_NAV),
+                   OSL(SHORTCUTS),OSM(MOD_LCTL), OSM(MOD_LALT),OSL(SYMBOL),MO(NUMBER),  
+                                              // thumb cluster
+                                               OSM(MOD_LSFT), RCTL(KC_S),
+                                                          RCTL(KC_DEL),
+                                               KC_BSPC,RCTL(KC_BSPC),KC_DEL,
+        // right hand
+             KC_F7,       KC_F8,       KC_F9,       KC_F10,        KC_F11,       KC_F12,       KC_BSLS,
+             KC_PGUP,     KC_F,        KC_G,        KC_C,          KC_R,         KC_L,         KC_SLSH,
+                          KC_D,        KC_H,        KC_T,          KC_N,         KC_S,         KC_MINS,
+             KC_PGDN,     KC_B,        KC_M,        KC_W,          KC_V,         KC_Z,         OSM(MOD_LSFT),
+                                  // lower keys - browser tab control
+                                  RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W),
+             // thumb cluster
+             KC_HOME,KC_END,
+             KC_UP,
+             KC_DOWN,KC_ENT, KC_SPC
+    ),
+     
+
+        
+        
+// shell navigation layer
+[SHELL_NAV] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+               // bottom row
+               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       // thumb cluster
+                                       KC_TRNS,KC_TRNS,
+                                               LALT(KC_D),
+                               KC_TRNS,RCTL(KC_W),KC_TRNS,
+       // right hand
+       KC_TRNS,    KC_TRNS,        KC_TRNS,             KC_TRNS,         KC_TRNS,         KC_TRNS,        KC_TRNS,
+       RCTL(KC_L), RCTL(KC_W),     KC_HOME,             KC_UP,           KC_END,          LALT(KC_D),     RCTL(KC_R),
+                   LALT(KC_B),     KC_LEFT,             KC_DOWN,         KC_RIGHT,        LALT(KC_F),     LALT(KC_DOT),
+       RCTL(KC_C), RCTL(KC_U),     M(SCREEN_COPY_MODE), M(SCREEN_PASTE), MEH(KC_V),      RCTL(KC_K),     M(SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND),
+                // bottom row
+                 M(SCREEN_TAB_LEFT), M(SCREEN_TAB_RIGHT), M(SCREEN_NEW_TAB),  KC_TRNS,    KC_TRNS,
+       // thumb cluster
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+    
+// key navigation layer
+[KEY_NAV] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+               // bottom row
+               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       // thumb cluster
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS,        KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,        KC_TRNS,
+       KC_TRNS, KC_PGDN,        KC_HOME,    KC_UP,      KC_END,     KC_PGUP,        M(MC_COPY_LINE),
+                RCTL(KC_LEFT),  KC_LEFT,    KC_DOWN,    KC_RIGHT,   RCTL(KC_RIGHT), M(MC_CUT_LINE),
+       KC_TRNS, KC_TRNS,        RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_TRNS,        M(MC_PASTE_LINE),
+                // bottom row
+                KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
+       // thumb cluster
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+// key selection layer
+[KEY_SEL] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+               // bottom row
+               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       // thumb cluster
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS,       KC_TRNS,             KC_TRNS,       KC_TRNS,       KC_TRNS,        KC_TRNS,              KC_TRNS,
+       RSFT(KC_PGUP), RSFT(KC_PGDN),       RSFT(KC_HOME), RSFT(KC_UP),   RSFT(KC_END),   RSFT(KC_PGUP),        M(MC_COPY_LINE),
+                      RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), M(MC_CUT_LINE),
+       RSFT(KC_PGDN), KC_TRNS,             RCTL(KC_C),    RCTL(KC_X),    RCTL(KC_V),     KC_TRNS,              M(MC_PASTE_LINE),
+                // bottom row
+                KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
+       // thumb cluster
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+// number layer
+[NUMBER] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+               // bottom row
+               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       // thumb cluster
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_PLUS,  KC_7,    KC_8,    KC_9,     KC_ASTR, KC_TRNS,
+                KC_MINS,  KC_4,    KC_5,    KC_6,     KC_SLSH, KC_TRNS,
+       KC_TRNS, KC_EQUAL, KC_1,    KC_2,    KC_3,     KC_COLN, KC_TRNS,
+                               // bottom row
+                                KC_0, KC_DOT, KC_COMMA, KC_TRNS,  KC_TRNS,
+       // thumb cluster
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+
+[SYMBOL] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,       
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_PLUS, KC_AMPR, KC_ASTR, KC_GRAVE,KC_TILD, KC_TRNS,
+                KC_MINS, KC_DLR,  KC_PERC, KC_CIRC, KC_PIPE, KC_TRNS,
+       KC_TRNS, KC_EQUAL,KC_EXLM, KC_AT,   KC_HASH, KC_TRNS, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+       M(SEMICOLON_NEWLINE), M(END_NEWLINE),
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[BRACKETS] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,             KC_TRNS,            KC_TRNS,               KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,M(OPEN_CLOSE_CURLY), M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_BRACKET), KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_LPRN, KC_RPRN,            KC_LBRC,            KC_RBRC,               KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,             KC_LCBR,            KC_RCBR,               KC_TRNS,KC_TRNS,       
+       KC_TRNS,KC_TRNS,KC_TRNS,             KC_TRNS,            KC_TRNS,
+                                        KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS, KC_TRNS, M(OPEN_CLOSE_BRACKET),M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_CURLY),KC_TRNS,KC_TRNS,
+                KC_TRNS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[SHORTCUTS] = LAYOUT_ergodox(
+       // left hand
+       KC_NO,  MEH(KC_F1), MEH(KC_F2), MEH(KC_F3),  MEH(KC_F4), MEH(KC_F5), MEH(KC_F6),
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,       
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                         MEH(KC_0),MEH(KC_1),
+                                                   MEH(KC_2),
+                               MEH(KC_3),MEH(KC_4),MEH(KC_5),
+       // right hand
+       MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10),  MEH(KC_F11), MEH(KC_F12),  M(SWITCH_NDS),
+       KC_TRNS, MEH(KC_A), MEH(KC_B),    MEH(KC_C),    MEH(KC_D),    MEH(KC_E), MEH(KC_F),
+                MEH(KC_G), MEH(KC_H),    MEH(KC_I),    MEH(KC_J),    MEH(KC_K), MEH(KC_L),
+       KC_TRNS, MEH(KC_M), MEH(KC_N),    MEH(KC_O),    MEH(KC_P),    MEH(KC_Q), KC_CAPSLOCK,
+                           MEH(KC_S),    MEH(KC_T),    MEH(KC_U),    MEH(KC_V), MEH(KC_X),
+       MEH(KC_6), MEH(KC_7),
+       MEH(KC_8),
+       MEH(KC_9), MEH(KC_Y), MEH(KC_Z)
+),
+
+
+[MOUSE] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+          KC_TRNS, KC_BTN1, KC_BTN2
+),
+
+};
+
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case MC_COPY_LINE:
+            if (record->event.pressed) {
+                return MACRO( T(HOME), D(LSFT), T(END), U(LSFT), D(LCTL), T(C), U(LCTL), END);
+            }
+            break;
+        case MC_CUT_LINE:
+            if (record->event.pressed) {
+                return MACRO( T(HOME), D(LSFT), T(END), U(LSFT), D(LCTL), T(X), U(LCTL), END);
+            }        
+            break;
+        case MC_PASTE_LINE:
+            if (record->event.pressed) {
+                return MACRO( T(END), T(ENTER), D(LCTL), T(V), U(LCTL), END);
+            }                
+            break;
+        case MC_NEW_SEARCH_TAB:
+             if (record->event.pressed) {
+                return MACRO( D(LCTL), T(T), T(K), U(LCTL), END);
+            }
+            break;
+        case SCREEN_TAB_LEFT:
+             if (record->event.pressed) {
+                return MACRO( D(LCTL), T(A), U(LCTL), T(P), END);
+            }        
+            break;
+        case SCREEN_TAB_RIGHT:
+             if (record->event.pressed) {
+                return MACRO( D(LCTL), T(A), U(LCTL), T(N), END);
+            }                    
+            break;
+        case SCREEN_NEW_TAB:
+             if (record->event.pressed) {
+                return MACRO( D(LCTL), T(A), U(LCTL), T(C), END);
+            }                                
+        break;
+        case SCREEN_COPY_MODE:
+            if (record->event.pressed) {
+                return MACRO( D(LCTL), T(A), U(LCTL), T(ESC), END);
+            }
+        break;
+        case SCREEN_PASTE:
+            if (record->event.pressed) {
+                return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END); 
+            }
+        break;        
+        case SWITCH_NDS:
+             if (record->event.pressed) {
+                return MACRO( D(LSFT), T(F11), U(LSFT), W(255), D(LALT), T(TAB), U(LALT), END);
+            }                                
+        break;        
+        case OPEN_CLOSE_PAREN:
+            if (record->event.pressed) {
+                return MACRO( D(LSFT), T(9), T(0), U(LSFT), T(LEFT), END);
+            }
+        break;
+        case OPEN_CLOSE_BRACKET:
+            if (record->event.pressed) {
+                return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
+            }
+        break;        
+        case OPEN_CLOSE_CURLY:
+            if (record->event.pressed) {
+                return MACRO( D(LSFT), T(LBRC), T(RBRC), U(LSFT), T(LEFT), END);
+            }
+        break;                
+        case OPEN_CLOSE_SINGLE_QUOTE:
+            if (record->event.pressed) {
+                return MACRO( T(QUOT), T(QUOT), T(LEFT), END);
+            }
+        break;        
+        case OPEN_CLOSE_DOUBLE_QUOTE:
+            if (record->event.pressed) {
+                return MACRO( D(LSFT), T(QUOT), T(QUOT), U(LSFT), T(LEFT), END);
+            }
+        break;                        
+        case SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND:
+            if (record->event.pressed) {
+                return MACRO( T(UP), T(HOME), D(LALT), T(D), U(LALT), END);
+            }
+        break;                                
+               case SEMICOLON_NEWLINE:
+            if (record->event.pressed) {
+                return MACRO( T(END), T(SCLN), T(ENTER), END);
+            }          
+               break;
+               case END_NEWLINE:
+            if (record->event.pressed) {
+                return MACRO( T(END), T(ENTER), END);
+            }          
+               break;  
+               
+        
+      }
+    return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+    return;
+};
+
+void led_set_user(uint8_t usb_led) {
+    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+        ergodox_right_led_1_on();
+    } else {
+        ergodox_right_led_1_off();
+    }
+}
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case NUMBER:
+        case SYMBOL:
+               case BRACKETS:
+               //case SHELL_LAYER:             
+            ergodox_right_led_2_on();
+            break;
+        case KEY_NAV:
+        case KEY_SEL:
+            ergodox_right_led_3_on();
+            break;        
+        case SHORTCUTS:
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        default:
+            // none
+            break;
+    } 
+    return;
+};
diff --git a/layouts/community/ergodox/dvorak_programmer/rules.mk b/layouts/community/ergodox/dvorak_programmer/rules.mk
new file mode 100644 (file)
index 0000000..44d7022
--- /dev/null
@@ -0,0 +1,8 @@
+BOOTMAGIC_ENABLE=no
+COMMAND_ENABLE=no
+SLEEP_LED_ENABLE=no
+FORCE_NKRO = yes
+DEBUG_ENABLE = no
+CONSOLE_ENABLE = no
+TAP_DANCE_ENABLE = no
+MOUSEKEY_ENABLE = yes
diff --git a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c
new file mode 100644 (file)
index 0000000..9c66bac
--- /dev/null
@@ -0,0 +1,331 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "keymap_nordic.h"
+#include "keymap_norwegian.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // mouse keys
+#define DEVL 3 // dev keys
+
+#define MACRO_PUBLIC 10
+#define MACRO_PRIVATE 11
+#define MACRO_PROT 12
+
+#define MACRO_SHARED 13
+#define MACRO_CONST 14
+#define MACRO_DIM 15
+#define MACRO_STRING 16
+#define MACRO_INT 17
+#define MACRO_DEC 18
+#define MACRO_BOOL 19
+
+#define MACRO_RETURN 20
+#define MACRO_NOTHING 21
+#define MACRO_TODO 22
+
+#define MACRO_SAVE 24
+#define MACRO_BUILD 25
+#define MACRO_DEBUG 26
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   L3   |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   -  |   ,  |   .  |   P  |   Y  |  LT1 |           |  LT1 |   F  |   G  |   C  |   R  |   L  |   Å    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | WIN    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   Ä    |
+ * |--------+------+------+------+------+------|  LT2 |           |  LT2 |------+------+------+------+------+--------|
+ * | LShift |   Ö  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | CTRL |  L1  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        MO(DEVL),       KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        NO_MINS,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(SYMB),
+        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(MDIA),
+        CTL_T(KC_NO),   MO(SYMB),       LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLASH,
+             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             NO_AM,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             NO_AE,
+             TG(MDIA),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   @  |   {  |   }  |   [  |   ]  |      |           |      |   <  |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   (  |   )  |   \  |   /  |------|           |------|   >  |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      | UND  | CUT  | COP  | PAS  |      |           |      |   ?  |   1  |   2  |   3  |   %  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   .  |   0  |   =  |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),      KC_F1,   KC_F2,    KC_F3,    KC_F4,     KC_F5,    KC_TRNS,
+       KC_TRNS,   NO_AT,   ALGR(KC_7),  ALGR(KC_0),  NO_LBRC,   NO_RBRC,  KC_TRNS,
+       KC_TRNS,   KC_HASH, NO_LPRN,  NO_RPRN,  ALGR(KC_MINS), NO_SLSH,
+       KC_TRNS,   KC_TRNS, LCTL(KC_Z),  LCTL(KC_X),  LCTL(KC_C),    LCTL(KC_V),  KC_TRNS,
+       KC_TRNS,   KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, NO_LESS,   KC_7,   KC_8,    KC_9,    KC_KP_ASTERISK, KC_F12,
+                LSFT(NO_LESS), KC_4,   KC_5,    KC_6,    KC_KP_PLUS, KC_TRNS,
+       KC_TRNS, NO_QUES, KC_1,   KC_2,    KC_3,    LSFT(KC_5), KC_TRNS,
+                         KC_DOT,KC_0,  LSFT(KC_0),    KC_TRNS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 3: Developer keys in vb.net
+ * shortened in layout beneth, for example int-> integer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | Save |Build |Debug |      |      |      |           |      | bool | int  |string| dec  | Todo |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------| priv | publ |shared| prot |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      | const| dim  |return|nothin|      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[DEVL] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(MACRO_SAVE), M(MACRO_BUILD), M(MACRO_DEBUG), KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  M(MACRO_BOOL), M(MACRO_INT), M(MACRO_STRING), M(MACRO_DEC), M(MACRO_TODO), KC_TRNS,
+                 M(MACRO_PRIVATE), M(MACRO_PUBLIC), M(MACRO_SHARED), M(MACRO_PROT), KC_TRNS, KC_TRNS,
+       KC_TRNS,  M(MACRO_CONST), M(MACRO_DIM), M(MACRO_RETURN), M(MACRO_NOTHING), KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+            if (record->event.pressed) {
+                register_code(KC_RSFT);
+            } else {
+                unregister_code(KC_RSFT);
+            }
+            break;
+        case MACRO_PUBLIC:
+                       if (record->event.pressed) {
+                               return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
+                       } 
+                       break;
+               case MACRO_PRIVATE:
+                       if (record->event.pressed) {
+                               return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
+                       } 
+                       break;
+        case MACRO_PROT:
+                       if (record->event.pressed) {
+                               return MACRO( T(P), T(R), T(O), T(T), T(E), T(C), T(T), T(E), T(D), T(SPACE),END);
+                       } 
+                       break;
+               case MACRO_SHARED:
+                       if (record->event.pressed) {
+                               return MACRO( T(S), T(H), T(A), T(R), T(E), T(D), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_CONST:
+                       if (record->event.pressed) {
+                               return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
+                       } 
+                       break;          
+               case MACRO_DIM:
+                       if (record->event.pressed) {
+                               return MACRO( T(D), T(I), T(M), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_STRING:
+                       if (record->event.pressed) {
+                               return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
+                       } 
+                       break;          
+               case MACRO_BOOL:
+                       if (record->event.pressed) {
+                               return MACRO( T(B), T(O), T(O), T(L), T(E), T(A), T(N), T(SPACE), END);
+                       } 
+                       break;          
+               case MACRO_INT:
+                       if (record->event.pressed) {
+                               return MACRO( T(I), T(N), T(T), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_DEC:
+                       if (record->event.pressed) {
+                               return MACRO( T(D), T(E), T(C), T(I), T(M), T(A), T(L), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_RETURN:
+                       if (record->event.pressed) {
+                               return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), T(SPACE), END);
+                       } 
+                       break;
+               case MACRO_NOTHING:
+                       if (record->event.pressed) {
+                               return MACRO( T(N), T(O), T(T), T(H), T(I), T(N), T(G), T(SPACE), END);
+                       }               
+               case MACRO_TODO:
+                       if (record->event.pressed) {
+                               return MACRO( KC_BSLASH, D(LSHIFT) ,T(T), T(O), T(D), T(O), KC_DOT, U(LSHIFT),  T(SPACE),END);
+                       } 
+                       break;  
+        case MACRO_SAVE:
+                       if (record->event.pressed) {
+                               return MACRO( D(LCTL) ,T(S), U(LCTL),END);
+                       } 
+                       break;  
+        case MACRO_BUILD:
+                       if (record->event.pressed) {
+                               return MACRO(  D(LCTL), D(LSHIFT) ,T(B), U(LSHIFT), U(LCTL),END);
+                       } 
+                       break;
+        case MACRO_DEBUG:
+                       if (record->event.pressed) {
+                               return MACRO( KC_F5 ,END);
+                       } 
+                       break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/dvorak_programmer_swe/readme.md b/layouts/community/ergodox/dvorak_programmer_swe/readme.md
new file mode 100644 (file)
index 0000000..552fa0e
--- /dev/null
@@ -0,0 +1,28 @@
+# ErgoDox EZ Dvorak Programmer SWEDISH
+
+Dvorak layout adjusted for a suitable programmer layout and swedish special characters added:
+
+* åäö characters added
+* Layout for common vb.net keywords
+* Common Visual Studio commands like Save, Build, Debug
+
+TODO:
+
+* (Layer 4 is qwerty (for easier gaming & less fortunate keyboard users)) Like this idea, will add it later on
+
+Known issues:
+
+* Keymap 2 modifier has not gotten its place yet..
+* Print screen, where?
+
+
+## Changelog
+
+* 2017-05-16
+  * Initial release
+
+# Author
+Christian Westerlund
+cwesterlund @ github
+
+Thanks to the author of keymap csharp_dev for inspiration!
\ No newline at end of file
diff --git a/layouts/community/ergodox/dvorak_spanish/keymap.c b/layouts/community/ergodox/dvorak_spanish/keymap.c
new file mode 100644 (file)
index 0000000..19dfb27
--- /dev/null
@@ -0,0 +1,284 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+/******************************************************************************************
+ * SPANISH DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
+ * Layer 1: auxiliary keys
+ * Layer 2: full qwerty layout
+ ******************************************************************************************
+ * IMPORTANT: Software layout must be set to SPANISH QWERTY to work properly
+ *****************************************************************************************/
+
+// LAYERS
+#define BASE    0 // dvorak layout (default)
+#define AUX     1 // auxiliary keys
+#define QWERTY  2 // qwerty layout
+
+// MACROS
+#define OBRACE 0 // key { or shift
+#define CBRACE 1 // key } or shift
+#define OBRACK 2 // key [ or left alt
+#define CBRACK 3 // key ] or left alt
+#define CAPS   4 // caps lock
+
+// LEDS
+#define USB_LED_NUM_LOCK    0
+#define USB_LED_CAPS_LOCK   1
+#define USB_LED_SCROLL_LOCK 2
+#define USB_LED_COMPOSE     3
+#define USB_LED_KANA        4
+
+// TIMERS
+#define KEY_TAP_FAST 85
+#define KEY_TAP_SLOW 95
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base layer
+ * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | F1/~L1 |   .  |   ,  |   Ñ  |   P  |   Y  |MEH_T |           |  L1  |   F  |   G  |   C  |   H  |   L  |ALL_T/+ |
+ * |--------+------+------+------+------+------| DEL  |           | ~L1  |------+------+------+------+------+--------|
+ * |Esc/Ctrl|   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   R  |   T  |   N  |   S  |'/RCtrl |
+ * |--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
+ * | {/LSft |   -  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |F5/CAG|F6/~L1|       |F7/~L1|F8/CAG|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |F4/CA |       |F11/CA|        |      |
+ *                                 | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
+ *                                 |      |      |F3/SA |       |F12/SA|        |      |
+ *                                 `--------------------'       `----------------------'
+ *  CAG = CTRL-ALT-GUI
+ *   CA = CTRL-ALT
+ *   SA = SHIFT-ALT
+ *
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_GRAVE,       KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NONUS_BSLASH,
+        LT(AUX, KC_F1), KC_DOT, KC_COMM,KC_SCLN,KC_P,   KC_Y,   MEH_T(KC_DEL),
+        CTL_T(KC_ESC),  KC_A,   KC_O,   KC_E,   KC_U,   KC_I,
+        M(OBRACE),      KC_SLSH,KC_Q,   KC_J,   KC_K,   KC_X,   KC_LGUI,
+        M(OBRACK),      KC_HOME,KC_PGDN,KC_PGUP,KC_END,
+                                                           LCAG_T(KC_F5),  LT(AUX, KC_F6),
+                                                           MT((MOD_LALT | MOD_LCTL), KC_F4),
+                                           KC_ENT,KC_TAB,MT((MOD_LALT | MOD_LSFT), KC_F3),
+        // right hand
+                    KC_EQL,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINUS,
+                    KC_FN1,    KC_F,   KC_G,   KC_C,   KC_H,   KC_L,   ALL_T(KC_RBRACKET),
+                               KC_D,   KC_R,   KC_T,   KC_N,   KC_S,   CTL_T(KC_QUOTE),
+                    KC_RALT,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,   M(CBRACE),
+                                       KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,M(CBRACK),
+        LT(AUX, KC_F7), LCAG_T(KC_F8),
+        MT((MOD_LALT | MOD_LCTL), KC_F11),
+        MT((MOD_LALT | MOD_LSFT), KC_F12),KC_BSPC, KC_SPC
+    ),
+/* Keymap 1: Aux layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  | SLEEP            | PWR  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  <   |  >   | MsUp |      |      |      |           | ~L0  |      |   7  |   8  |   9  |   *  |  `^    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |   4  |   5  |   6  |   +  |   Ç    |
+ * |--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
+ * |CAPSLOCK|      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V|                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      | Play |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       | VolUp|      |      |
+ *                                 | Lclk | Rclk |------|       |------| Prev | Next |
+ *                                 |      |      |  L2  |       | VolDn|      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[AUX] = LAYOUT_ergodox(
+       // left hand
+       KC_NO  , KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_SLEP,
+       KC_TRNS, KC_NONUS_BSLASH, LSFT(KC_NONUS_BSLASH), KC_MS_U, KC_NO, KC_NO, KC_NO,
+       KC_NO  , KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO  ,
+       M(CAPS), KC_NO, KC_NO  , KC_NO  , KC_NO  , KC_NO  , KC_NO,
+       LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V),
+                                                            KC_NO  , KC_TRNS,
+                                                                       KC_NO,
+                                                KC_BTN1, KC_BTN2, TG(QWERTY),
+       // right hand
+            KC_PWR,  KC_F6,   KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11,
+            KC_TRNS, KC_NO,   KC_7,   KC_8,   KC_9,    KC_PAST, KC_LBRACKET,
+                     KC_NO,   KC_4,   KC_5,   KC_6,    KC_PPLS, KC_BSLASH,
+            KC_PSCR, KC_NO,   KC_1,   KC_2,   KC_3,    KC_PSLS, KC_NO,
+                              KC_NO  ,KC_DOT, KC_0,    KC_PEQL, KC_NO,
+       KC_TRNS, KC_MPLY,
+       KC_VOLU,
+       KC_VOLD, KC_MPRV, KC_MNXT
+),
+/* Keymap 2: QWERTY layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  TRANS |   Q  |   W  |   E  |   R  |   T  |MEH_T |           | TRANS|   Y  |   U  |   I  |   O  |   P  |ALL_T/+ |
+ * |--------+------+------+------+------+------| DEL  |           |      |------+------+------+------+------+--------|
+ * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ñ  |'/RCtrl |
+ * |--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
+ * | {/LSft |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   -  | }/RSft |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |F5/CAG| TRANS|       | TRANS|F8/CAG|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |F4/CA |       |F11/CA|        |      |
+ *                                 | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
+ *                                 |      |      | TRANS|       |F12/SA|        |      |
+ *                                 `--------------------'       `----------------------'
+ *  CAG = CTRL-ALT-GUI
+ *   CA = CTRL-ALT
+ *   SA = SHIFT-ALT
+ *
+ */
+[QWERTY] = LAYOUT_ergodox(
+        // left hand
+        KC_GRAVE,       KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_NONUS_BSLASH,
+        KC_TRNS,        KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   MEH_T(KC_DEL),
+        CTL_T(KC_ESC),  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
+        M(OBRACE),      KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
+        M(OBRACK),      KC_HOME,KC_PGDN,KC_PGUP,KC_END,
+                                                                  LCAG_T(KC_F5),  KC_TRNS,
+                                                           MT((MOD_LALT | MOD_LCTL), KC_F4),
+                                                                    KC_ENT,KC_TAB,KC_TRNS,
+        // right hand
+                    KC_EQL,    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINUS,
+                    KC_TRNS,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   ALL_T(KC_RBRACKET),
+                               KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,CTL_T(KC_QUOTE),
+                    KC_RALT,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,M(CBRACE),
+                                       KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,M(CBRACK),
+        KC_TRNS, LCAG_T(KC_F8),
+        MT((MOD_LALT | MOD_LCTL), KC_F11),
+        MT((MOD_LALT | MOD_LSFT), KC_F12),KC_BSPC, KC_SPC
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(AUX)                // FN1 - Momentary Layer 1 (Aux)
+};
+
+static uint16_t key_timer;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case OBRACE: {
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                register_code(KC_RSFT);
+            } else {
+                unregister_code(KC_RSFT);
+                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
+                    register_code(KC_RALT);
+                    register_code(KC_QUOTE);
+                    unregister_code(KC_QUOTE);
+                    unregister_code(KC_RALT);
+                }
+            }
+            break;
+        }
+        case CBRACE: {
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                register_code(KC_RSFT);
+            } else { 
+                unregister_code(KC_RSFT);
+                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
+                    register_code(KC_RALT); 
+                    register_code(KC_BSLS); 
+                    unregister_code(KC_BSLS); 
+                    unregister_code(KC_RALT); 
+                }
+            }
+            break;
+        }
+        case OBRACK: {
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                register_code(KC_LALT);
+            } else { 
+                unregister_code(KC_LALT);
+                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
+                    register_code(KC_RALT); 
+                    register_code(KC_LBRACKET); 
+                    unregister_code(KC_LBRACKET); 
+                    unregister_code(KC_RALT); 
+                }
+            }
+            break;
+        }
+        case CBRACK: {
+            if (record->event.pressed) {
+                key_timer = timer_read();
+                register_code(KC_LALT);
+            } else { 
+                unregister_code(KC_LALT);
+                if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { 
+                    register_code(KC_RALT); 
+                    register_code(KC_RBRACKET); 
+                    unregister_code(KC_RBRACKET); 
+                    unregister_code(KC_RALT); 
+                }
+            }
+            break;
+        }
+        case CAPS: {
+            if (record->event.pressed) {
+                register_code(KC_CAPSLOCK);
+            } else { 
+                unregister_code(KC_CAPSLOCK);
+            }
+            break;
+        }
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_3_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+    
+    // Turn the caps lock led on
+    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+        ergodox_right_led_1_on();
+    }
+
+}
+
diff --git a/layouts/community/ergodox/dvorak_spanish/readme.md b/layouts/community/ergodox/dvorak_spanish/readme.md
new file mode 100644 (file)
index 0000000..e075e3c
--- /dev/null
@@ -0,0 +1,99 @@
+# Ergodox Spanish Dvorak Layout
+ * See spanish dvorak layout [here](http://djelibeibi.unex.es/dvorak/)
+ * Software layout must be set to SPANISH QWERTY to work properly
+
+## Keymap Layers
+ - L0: spanish dvorak with some customizations (see layout below)
+ - L1: auxiliary keys (includes qwerty shortcuts, numpad...)
+ - L2: qwerty layout with customizations
+
+
+### Keymap 0: Base layer
+Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| F1/~L1 |   .  |   ,  |   Ñ  |   P  |   Y  |MEH_T |           |  L1  |   F  |   G  |   C  |   H  |   L  |ALL_T/+ |
+|--------+------+------+------+------+------| DEL  |           | ~L1  |------+------+------+------+------+--------|
+|Esc/Ctrl|   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   R  |   T  |   N  |   S  |'/RCtrl |
+|--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
+| {/LSft |   -  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
+  |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
+  '----------------------------------'                                       '----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |F5/CAG|F6/~L1|       |F7/~L1|F8/CAG|
+                                ,------|------|------|       |------+--------+------.
+                                |      |      |F4/CA |       |F11/CA|        |      |
+                                | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
+                                |      |      |F3/SA |       |F12/SA|        |      |
+                                '--------------------'       '----------------------'
+ CAG = CTRL-ALT-GUI
+  CA = CTRL-ALT
+  SA = SHIFT-ALT
+
+</pre></code>
+
+### Keymap 1: Aux layer
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |  F1  |  F2  |  F3  |  F4  |  F5  | SLEEP|           | PWR  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |  <   |  >   | MsUp |      |      |      |           | ~L0  |      |   7  |   8  |   9  |   *  |  '^    |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |   4  |   5  |   6  |   +  |   Ç    |
+|--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
+|CAPSLOCK|      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   /  |        |
+'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
+  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V|                                       |      |    . |   0  |   =  |      |
+  '----------------------------------'                                       '----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      | Play |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       | VolUp|      |      |
+                                | Lclk | Rclk |------|       |------| Prev | Next |
+                                |      |      |  L2  |       | VolDn|      |      |
+                                '--------------------'       '--------------------'
+
+</pre></code>
+
+### Keymap 2: QWERTY layer
+
+<pre><code>
+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   \    |   1  |   2  |   3  |   4  |   5  |  <>  |           |   ¡  |   6  |   7  |   8  |   9  |   0  |   '    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|  TRANS |   Q  |   W  |   E  |   R  |   T  |MEH_T |           | TRANS|   Y  |   U  |   I  |   O  |   P  |ALL_T/+ |
+|--------+------+------+------+------+------| DEL  |           |      |------+------+------+------+------+--------|
+|Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ñ  |'/RCtrl |
+|--------+------+------+------+------+------| LGUI |           | RALT |------+------+------+------+------+--------|
+| {/LSft |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   -  | }/RSft |
+'--------+------+------+------+------+-------------'           '-------------+------+------+------+------+--------'
+  |[/LALT| HOME |PGDOWN| PGUP | END  |                                       | LEFT | DOWN |  UP  |RIGHT |]/LALT|
+  '----------------------------------'                                       '----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |F5/CAG| TRANS|       | TRANS|F8/CAG|
+                                ,------|------|------|       |------+--------+------.
+                                |      |      |F4/CA |       |F11/CA|        |      |
+                                | ENTER| TAB  |------|       |------|  BSPC  | SPACE|
+                                |      |      | TRANS|       |F12/SA|        |      |
+                                '--------------------'       '----------------------'
+ CAG = CTRL-ALT-GUI
+  CA = CTRL-ALT
+  SA = SHIFT-ALT
+
+</pre></code>
+
+
+## Generation of .hex file
+> [Download scripts from here](https://github.com/johgh/keyboard/tree/master/ergodox)
+
+> Execute install.sh and generate.sh scripts.
+
+> Flash with `teensy_loader` binary (should be installed from previous step)
diff --git a/layouts/community/ergodox/emacs_osx_dk/keymap.c b/layouts/community/ergodox/emacs_osx_dk/keymap.c
new file mode 100644 (file)
index 0000000..3fa14a5
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   Grv  |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L2  |   6  |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   -    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | \/LCtrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |'/RCtrl |
+ * |--------+------+------+------+------+------| RAlt |           | RAlt |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | ~L1  | LCtrl|  Left| Right| LAlt |                                       | LAlt | Up   | Down | RCtrl|  ~L2 |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Del  | Ins  |       | Esc  | App  |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  LGui  |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
+        CTL_T(KC_BSLS), KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_RALT,
+        MO(SYMB),       KC_LCTRL,     KC_LEFT,KC_RGHT,KC_LALT,
+                                                      KC_DELT,KC_INS,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             TG(MDIA),    KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_EQL,
+             KC_RBRC,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_MINS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          CTL_T(KC_QUOT),
+             KC_RALT,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                  KC_LALT,KC_UP,  KC_DOWN,KC_RCTRL,         MO(MDIA),
+             KC_ESC,      KC_APP,
+             KC_PGUP,
+             KC_PGDN,     KC_LGUI, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0  |    0 |   .  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/emacs_osx_dk/readme.md b/layouts/community/ergodox/emacs_osx_dk/readme.md
new file mode 100644 (file)
index 0000000..bd12c7d
--- /dev/null
@@ -0,0 +1,10 @@
+# ErgoDox EZ Emacs-OSX-DeadKeys Configuration
+
+Since I'm an Emacs user, ctrl keys are very important and gets a placement where the usual caps_lock is. There
+are an extra pair of ctrls, just in case there where problems with the holding one's, but not as comfortable.
+
+Gui button takes a predominant place on the thumb cluster, as I'm using a mac os x and it relies heavily on it.
+
+Finally there is also two Right Alts to easily access to accented letters of the spanish alphabet.
+
+![Default](https://i.imgur.com/EDgp9xj.png)
diff --git a/layouts/community/ergodox/erez_experimental/config.h b/layouts/community/ergodox/erez_experimental/config.h
new file mode 100644 (file)
index 0000000..4b9c29c
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#define ONESHOT_TAP_TOGGLE 2
+#define ONESHOT_TIMEOUT 300
+
+#undef LEADER_TIMEOUT
+#define LEADER_TIMEOUT 300
+
+#endif
diff --git a/layouts/community/ergodox/erez_experimental/keymap.c b/layouts/community/ergodox/erez_experimental/keymap.c
new file mode 100644 (file)
index 0000000..481f984
--- /dev/null
@@ -0,0 +1,223 @@
+#include <keymap_extras/keymap_colemak.h>
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  RGB_FF00BB // always start with RGB_
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  |Ctrl- |           | Ctrl+|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  | Alt/J|   K  |   L  |; / L2| LGui/' |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * |LShift/(|Z/Ctrl|   X  |   C  |   V  |   B  |   [  |           |  ]   |   N  |   M  |   ,  |   .  |//Ctrl|RShift/)|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | -/L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Leader|------|       |------| Tab/L1 |Enter |
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,     KC_5,   LCTL(KC_MINS),
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,     KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,     KC_G,
+        KC_LSPO,       CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,     KC_B,   ALL_T(KC_LBRC),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,  KC_RGHT,
+                                              ALT_T(KC_APP),    KC_LGUI,
+                                                                KC_HOME,
+                                                 KC_SPC,KC_LEAD,KC_END,
+        // right hand
+             LCTL(KC_EQL),       KC_6,KC_7,       KC_8,   KC_9,   KC_0,            KC_MINS,
+             TG(SYMB),      KC_Y,KC_U,       KC_I,   KC_O,   KC_P,            KC_BSLS,
+                            KC_H,ALT_T(KC_J),KC_K,   KC_L,   LT(MDIA,KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_RBRC),KC_N,KC_M,       KC_COMM,KC_DOT, CTL_T(KC_SLSH),  KC_RSPC,
+                            KC_UP,           KC_DOWN,KC_LBRC,KC_RBRC,         LT(SYMB,KC_MINS),
+             KC_LALT,       CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,LT(SYMB, KC_TAB), KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   1  |   2  |   3  |   4  |   5  |------|           |------|   &  |   _  |   -  |   ;  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   6  |   7  |   8  |   9  |   0  |      |           |      |   |  |   @  |   =  |   %  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |NxtTab|PrvTab|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |TOG   |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |VAI   |VAD   |HUI   |       |SAI   |      |MOD   |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |HUD   |       |SAD   |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       RGB_FF00BB, KC_F1,  KC_F2,  KC_F3,      KC_F4,        KC_F5,   KC_TRNS,
+       KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,       KC_TRNS,      KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_1,   KC_2,   KC_3,          KC_4,         KC_5,
+       KC_TRNS, KC_6,   KC_7,   KC_8,          KC_9,         KC_0,    KC_TRNS,
+       KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN),
+                                                                              KC_TRNS,KC_TRNS,
+                                                                                      RGB_HUI,
+                                                                      RGB_VAI,RGB_VAD,RGB_HUD,
+               // right hand
+       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
+                KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_PIPE, KC_AT,   KC_EQL,  KC_PERC,   KC_TRNS, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       RGB_TOG, KC_TRNS,
+       RGB_SAI,
+       RGB_SAD, KC_TRNS, RGB_MOD
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | PgUp | Home | End  | PgDn |      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_PGUP, KC_HOME, KC_END,  KC_PGDN, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),               // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_MACRO_TAP(0),                         // Eric Tang's Famous Macro!
+    [3] = ACTION_MACRO_TAP(1)                          // Eric Tang's Famous Macro!
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case RGB_FF00BB:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_enable();
+          rgblight_mode(1);
+          rgblight_setrgb(0xff,0x00,0xbb);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+LEADER_EXTERNS();
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+  uint8_t layer = biton32(layer_state);
+
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+  switch (layer) {
+    // TODO: Make this relevant to the ErgoDox EZ.
+    case 1:
+      ergodox_right_led_1_on();
+      break;
+    case 2:
+      ergodox_right_led_2_on();
+      break;
+    default:
+      // none
+      break;
+  }
+
+  LEADER_DICTIONARY() {
+    leading = false;
+    leader_end();
+
+    SEQ_ONE_KEY(KC_W) {
+      register_code(KC_LALT);
+      register_code(KC_F4);
+      unregister_code(KC_F4);
+      unregister_code(KC_LALT);
+    }
+    SEQ_ONE_KEY(KC_O) {
+      register_code(KC_LCTL);
+      register_code(KC_LSFT);
+      register_code(KC_O);
+      unregister_code(KC_O);
+      unregister_code(KC_LSFT);
+      unregister_code(KC_LCTL);
+    }
+  }
+}
+
diff --git a/layouts/community/ergodox/erez_experimental/readme.md b/layouts/community/ergodox/erez_experimental/readme.md
new file mode 100644 (file)
index 0000000..f0738d9
--- /dev/null
@@ -0,0 +1,55 @@
+# Erez's experimental layout
+
+This is my personal layout which I use to test out ideas which may or may not make it onto the default layout we ship with. It's based off the default layout, with various tweaks.
+
+Changelog:
+
+## Nov 1, 2016:
+
+* Adds dedicated text zooming keys in inner corners
+
+## May 24, 2016:
+
+* Implements Leader key example
+  * Leader, W sends Alt-F4
+  * Leader, O sends Ctrl-shift-o (a shortcut I use in FrontApp) 
+
+## May 8, 2016:
+
+* Makes bottom-right key send minus/underscore when tapped, L1 temporary toggle when held
+* Tweaked the positions of the numbers on the symbol layer. Basically, 12345 are now directly under their number-row counterparts in layer 0. You can imagine pulling the number row down to the home row. And 67890 are directly under 12345 - so it's a matter of just adding 5 and going to the next row (1+5 = 6, 2+5 = 7 and so on).
+* Tweaks media/nav layer
+  * Removes mouse control, as I don't use it
+  * Makes left home row keys PgUp, Home, End, PgDn
+
+## Apr 29, 2016:
+
+* Tweaks the Hyper and Meh key to send brackets when tapped
+* Turns bottom-right key into a minus/underscore (easy to reach with the right pinky)
+
+## Apr 25, 2016:
+
+* Made it so that the right and left Shift keys send opening and closing parens ( ) when tapped
+
+## Feb 11, 2016:
+
+* Updated ASCII legend for thumb clusters
+* Made it so outer left-hand thumb key is L1 momentary toggle
+* Added % and @ to L1
+* Swapped positions for _ and - on L1
+
+## Feb 5, 2016:
+
+* A whole new design for the symbol layer. Specifically:
+  * Put the minus, underscore, and semicolon right in the homerow for the right hand
+  * Parens are in better places for me
+  * The arrow keys now send Ctrl-PgUp and Ctrl-PgDn, for switching browser tabs with the arrows when in symbol layer
+  * Tab (right-hand outer thumb key) now does double duty to toggle symbol layer when held down
+  * Backspace (left-hand outer thumb key) now just toggles symbol layer (I wasn't using it as a backspace)
+  
+
+## Jan 19, 2016:
+
+* Made J into dual-action key (Alt when held down), to make Alt-tab more ergonomic.
+* Made ' into dual-action key (Win/Cmd when held down).
+
diff --git a/layouts/community/ergodox/erez_experimental/rules.mk b/layouts/community/ergodox/erez_experimental/rules.mk
new file mode 100644 (file)
index 0000000..839dd82
--- /dev/null
@@ -0,0 +1,7 @@
+# Having a file like this allows you to override Makefile definitions
+# for your own particular keymap
+
+SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+
+
diff --git a/layouts/community/ergodox/familiar/README.md b/layouts/community/ergodox/familiar/README.md
new file mode 100644 (file)
index 0000000..5361793
--- /dev/null
@@ -0,0 +1,69 @@
+# ErgoDox Familiar Layout
+Familiar layout for those who regularly switch back and forth from ErgoDox to "normal" QWERTY.
+
+[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](../../../../license_GPLv3.md../../../../license_GPLv3.md) [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme)
+
+## Table of Contents
+
+- [Background](#background)
+- [Install](#install)
+- [Usage](#usage)
+    - [Layers](#layers)
+- [Contribute](#contribute)
+    - [Issues](#issues)
+- [License](#license)
+
+## Background
+
+This layout is built to be as familiar as possible for users coming directly from a default (QWERTY US) keyboard, while gaining as much advantage as possible from the ErgoDox and QMK featureset. I use an ErgoDoxEZ at home, but I don't have a regular office (CS grad student) so I regularly use either my laptop or a default-setup lab computer; I context switch daily so this layout is meant to reduce the mental overhead as much as possible.
+
+The default ErgoDoxEZ layout is probably more optimized as a solo daily driver - as are a lot of the others available keymaps. The focus of this layout is to get as much from the 'Dox as possible without overly disrupting long-established muscle memory.
+
+Key features of the familiar layout:
+1. QWERTY default layout.
+1. International symbols layer, mapped in the US-International layout default positions, through [UCIS](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable).
+1. Numpad layer on right hand.
+1. Thumb cluster holds spacebar and access to secondary layers.
+1. Function-layer arrow keys in both the first-person-shooter (actually ESDF instead of WASD) and vim (HJKL) locations.
+
+## Install
+
+If you are on Windows or Mac, choose the proper line in [`keymap.c`](keymap.c) for [unicode/international character support](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable) (starts at line 253).
+```c
+void matrix_init_user(void) {
+    set_unicode_input_mode(UC_LNX); // Linux
+    //set_unicode_input_mode(UC_OSX); // Mac OSX
+    //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki)
+    //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
+};
+```
+
+For instructions on building and installing this keymap, [go to the wiki](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ergodox#build-dependencies). Below is the command for me; it may be different for you.
+```sh
+$ make ergodox-ez-familiar-teensy
+```
+
+## Usage
+
+[![Familiar Layout](http://i.imgur.com/6nLN9UT.png)](https://gist.github.com/nstickney/13508a9f99cff381d58b7be6f7dcc644)
+
+### Layers
+1. Base Layer: QWERTY, with arrow keys at bottom right.
+1. UCIS Layer: US-International symbols layer, plus —. Accessed by toggling the `SYMB` layer using the UCIS key (bottom of left thumb cluster).
+1. UCIS-Shifted Layer: Making shift work for UCIS characters. An ugly workaround. Any ideas? Accessed by holding shift while the `SYMB` layer is active (toggles the `CSYM` layer).
+1. Numpad Layer: Right hand number pad. Accessed by toggling the `NUMP` layer using the NUMP key (bottom of right thumb cluster).
+1. Function Layer: F1-F12, arrows on ESDF and HJKL, media player controls. Accessed by holding either FN key (center key of each thumb cluster), which toggles the `ARRW` layer. I know, I need to work on my naming conventions.
+
+## Contribute
+
+[Contributor Covenant](http://contributor-covenant.org/)
+
+I'm terrible at this; I have no background in human-computer interaction, kinesiology, or keyboard-ology. Please send comments/issues/pull requests/angry tweets/etc. If you think there is a better way to take advantage of the ErgoDox/QMK comination without straying far from 84/101-key QWERTY, I want to know it.
+
+### Issues
+1. The `CSYM` layer is an ugly workaround. I should write a function for doing different things in the `SYMB` layer depending on whether SHIFT is being held. Or something. Ideas?
+1. Right now, the thumb cluster function keys double as slash and whack... this really isnt a great solution.
+1. `MENU` and `LEAD` are useless, at the moment.
+
+## License
+QMK is licensed ([mostly](https://github.com/qmk/qmk_firmware/issues/1038)) under the [GPLv2](blob/master/license_GPLv2.md). Accordingly, to whatever extent applicable, this keymap is licensed under the [GPLv3](../../../../license_GPLv3.md).
diff --git a/layouts/community/ergodox/familiar/keymap.c b/layouts/community/ergodox/familiar/keymap.c
new file mode 100644 (file)
index 0000000..bc513c0
--- /dev/null
@@ -0,0 +1,285 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+// Layers
+#define BASE 0 // default layer
+#define SYMB 1 // international symbols
+#define CSYM 2 // international symbols shifted
+#define NUMP 3 // numpad
+#define ARRW 4 // function, media, arrow keys
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Tap Dancing
+void dance_lock (qk_tap_dance_state_t *state, void *user_data) {
+    if (state->count == 1) { // Press once for NUMLOCK
+        register_code (KC_NLCK);
+        unregister_code (KC_NLCK);
+    } else if (state->count == 2) { // Press twice for CAPSLOCK
+        register_code (KC_CAPS);
+        unregister_code (KC_CAPS);
+    } else if (state->count == 3) { //Press thrice for SCROLLLOCK
+        register_code (KC_SLCK);
+        unregister_code (KC_SLCK);
+    }
+}
+enum {LOCKS = 0};
+qk_tap_dance_action_t tap_dance_actions[] = {
+    [LOCKS] = ACTION_TAP_DANCE_FN(dance_lock)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+/* layer 0 : default
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | `      |   1  |   2  |   3  |   4  |   5  |   6  |           |  7   |   8  |   9  |   0  |   -  |   =  | BCKSPC |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | TAB    |   Q  |   W  |   E  |   R  |   T  | HOME |           | PGUP |   Y  |   U  |   I  |   O  |   P  | DELETE |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | '      |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  ENTER |
+ * |--------+------+------+------+------+------|  END |           | PGDN |------+------+------+------+------+--------|
+ * | (/LSFT |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  UP  | )/RSFT |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ * | LCTRL  | LGUI | MENU | LEAD | LALT |                                       |[/RALT|]/RCTL| LEFT | DOWN |  RIGHT |
+ * `------------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |PRTSCR| ESC  |       | VOL- | VOL+ |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |SLASH/| LOCKS|       | MUTE |WHACK/|      |
+ *                                 |  SPC | MO(4)|------|       |------|MO(4) | SPC  |
+ *                                 |      |      | TO(1)|       |TO(3) |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_GRV,     KC_1,       KC_2,       KC_3,       KC_4,       KC_5,       KC_6,
+        KC_TAB,     KC_Q,       KC_W,       KC_E,       KC_R,       KC_T,       KC_HOME,
+        KC_QUOT,    KC_A,       KC_S,       KC_D,       KC_F,       KC_G,
+        KC_LSPO,    KC_Z,       KC_X,       KC_C,       KC_V,       KC_B,       KC_END,
+        KC_LCTL,    KC_LGUI,    KC_MENU,    KC_LEAD,    KC_LALT,
+                                                                    KC_PSCR,    KC_ESC,
+                                                                                TD(LOCKS),
+                                                KC_SPC,     LT(ARRW, KC_SLSH),  TG(SYMB),
+        // right hand
+            KC_7,       KC_8,       KC_9,       KC_0,       KC_MINS,    KC_EQL,     KC_BSPC,
+            KC_PGUP,    KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_DEL,
+                        KC_H,       KC_J,       KC_K,       KC_L,       KC_SCLN,    KC_ENTER,
+            KC_PGDN,    KC_N,       KC_M,       KC_COMM,    KC_DOT,     KC_UP,      KC_RSPC,
+                        MT(MOD_RALT, KC_LBRC),  MT(MOD_RCTL, KC_RBRC),  KC_LEFT,    KC_DOWN,    KC_RGHT,
+            KC_VOLD,    KC_VOLU,
+            KC_MUTE,
+            TG(NUMP),   LT(ARRW, KC_BSLS),   KC_SPC
+    ),
+
+/* layer 1: International symbols, etc
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   ¡  |   ²  |   ³  |   ¤  |   €  |   ¼  |           |  ½   |  ¾   |  ‘   |  ’   |  ¥   |  ×   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   ä  |   å  |   é  |   ®  |   þ  |      |           |      |  ü   |  ú   |  í   |  ó   |  ö   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |     ´  |   á  |   ß  |   ð  |      |      |------|           |------|      |      |      |  ø   |  ¶   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |MO(CSYM)|   æ  |   ¿  |   ©  |   ¬  |      |      |           |      |  ñ   |  µ   |  ç   |      |      |MO(CSYM)|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ * |        |      |      |      |      |                                       |  «   |  »   |      |      |        |
+ * `------------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[SYMB] = LAYOUT_ergodox(
+        // left hand
+        _______,    UC(0x00A1), UC(0x00B2), UC(0x00B3), UC(0x00A4), UC(0x20AC), UC(0x00BC),
+        _______,    UC(0x00E4), UC(0x00E5), UC(0x00E9), UC(0x00AE), UC(0x00FE), _______,
+        UC(0x00B4), UC(0x00E1), UC(0x00DF), UC(0x00F0), _______,    _______,
+        MO(CSYM),   UC(0x00E6), UC(0x00BF), _______,    UC(0x00AC), UC(0x00A9),    _______,
+        _______,    _______,    _______,    _______,    _______,
+                                            _______,    _______,
+                                                        _______,
+                            _______,        _______,    _______,
+        // right hand
+            UC(0x00BD), UC(0x00BE), UC(0x2018), UC(0x2019), UC(0x00A5), UC(0x00D7), _______,
+            _______,    UC(0x00FC), UC(0x00FA), UC(0x00ED), UC(0x00F3), UC(0x00F6), _______,
+                        _______,    _______,    _______,    UC(0x00F8), UC(0x00B6), _______,
+            _______,    UC(0x00F1), UC(0x00B5), UC(0x00E7), _______,    _______,    MO(CSYM),
+                                    UC(0x00AB), UC(0x00BB), _______,    _______,    _______,
+            _______,    _______,
+            _______,
+            _______,    _______,    _______
+    ),
+
+/* layer 2 : international symbols, shifted
+ * This layer is an ugly workaround; it pretends that SHIFT still works normally on keys
+ * which don't produce an "upper case" or "shifted" international symobol.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   ¹  |      |      |   £  |      |      |           |      |      |      |      |  —  |  ÷   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Ä  |   Å  |   É  |      |   Þ  |      |           |      |  Ü   |  Ú   |  Í   |  Ó   |  Ö   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |     ¨  |   Á  |   §  |   Ð  |      |      |------|           |------|      |      |      |  Ø   |  °   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   Æ  |      |   ¢  |   ¦  |      |      |           |      |  Ñ   |      |  Ç   |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ * |        |      |      |      |      |                                       |  “   |  ”   |      |      |        |
+ * `------------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[CSYM] = LAYOUT_ergodox(
+        // left hand
+        _______,    UC(0x00B9), _______,    _______,    UC(0x00A3), _______,    _______,
+        _______,    UC(0x00C4), UC(0x00C5), UC(0x00C9), S(KC_R),    UC(0x00DE), _______,
+        UC(0x00A8), UC(0x00C1), UC(0x00A7), UC(0x00D0), S(KC_F),    S(KC_G),
+        _______,    UC(0x00C6), UC(0x00A6), UC(0x00A2), S(KC_V),    S(KC_B),    _______,
+        _______,    _______,    _______,    _______,    _______,
+                                                                    _______,    _______,
+                                                                                _______,
+                                                    _______,        _______,    _______,
+        // right hand
+            _______,    _______,    _______,    _______,    UC(0x2014), UC(0x00F7), _______,
+            _______,    UC(0x00DC), UC(0x00DA), UC(0x00CD), UC(0x00D3), UC(0x00D6), _______,
+                        S(KC_H),    S(KC_J),    S(KC_K),    UC(0x00D8), UC(0x00B0), _______,
+            _______,    UC(0x00D1), _______,    UC(0x00C7), S(KC_DOT),  _______,    _______,
+                                    UC(0x201C), UC(0x201D), _______,    _______,    _______,
+            _______,    _______,
+            _______,
+            _______,    _______,    _______
+    ),
+
+/* layer 3: numberpad
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |   (  |   )  |   /  |  *   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |   7  |   8  |   9  |  -   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |   4  |   5  |   6  |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |  =   |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ * |        |      |      |      |      |                                       |0/RALT|./RCTL|   ,  | ENTER|        |
+ * `------------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMP] = LAYOUT_ergodox(
+        // left hand
+        _______,    _______,    _______,    _______,    _______,    _______,    _______,
+        _______,    _______,    _______,    _______,    _______,    _______,    _______,
+        _______,    _______,    _______,    _______,    _______,    _______,
+        _______,    _______,    _______,    _______,    _______,    _______,    _______,
+        _______,    _______,    _______,    _______,    _______,
+                                            _______,    _______,
+                                                        _______,
+                            _______,        _______,    _______,
+        // right hand
+            _______,    _______,    S(KC_9),    S(KC_0),    KC_PSLS,    KC_PAST,    _______,
+            _______,    _______,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_PMNS,    _______,
+                        _______,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_PPLS,    _______,
+            _______,    _______,    KC_KP_1,    KC_KP_2,    KC_KP_3,    KC_PEQL,    _______,
+                                    MT(MOD_RALT, KC_KP_0),  MT(MOD_RCTL, KC_KP_DOT),KC_PCMM,    KC_PENT,    _______,
+            _______,    _______,
+            _______,
+            _______,    _______,    _______
+    ),
+
+/* layer 4 : functions and arrows
+ * This layer is at the top so that the functions still work no matter what layers are active.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | ESCAPE |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |  UP  |      |      |      |           |      |      |      |      |      |      | INSERT |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      | LEFT | DOWN |RIGHT |      |------|           |------| LEFT | DOWN |  UP  | RIGHT|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |M_PREV|M_STOP|M_PLPS|M_NEXT|      |      |           |      |      |      |      |      | PGUP |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ * |        |      |      |      |      |                                       |      |      | HOME | PGDN |    END |
+ * `------------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | SYSRQ| PAUSE|       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[ARRW] = LAYOUT_ergodox(
+        // left hand
+        KC_ESC,     KC_F1,      KC_F2,      KC_F3,      KC_F4,      KC_F5,      KC_F6,
+        _______,    _______,    _______,    KC_UP,      _______,    _______,    _______,
+        _______,    _______,    KC_LEFT,    KC_DOWN,    KC_RGHT,    _______,
+        _______,    KC_MPRV,    KC_MSTP,    KC_MPLY,    KC_MNXT,    _______,    _______,
+        _______,    _______,    _______,    _______,    _______,
+                                                                    KC_SYSREQ,  KC_PAUSE,
+                                                                                _______,
+                                                    _______,        _______,    _______,
+        // right hand
+            KC_F7,      KC_F8,      KC_F9,      KC_F10,     KC_F11,     KC_F12,     _______,
+            _______,    _______,    _______,    _______,    _______,    _______,    KC_INS,
+                        KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT,    _______,    _______,
+            _______,    _______,    _______,    _______,    _______,    KC_PGUP,    _______,
+                                    _______,    _______,    KC_HOME,    KC_PGDN,    KC_END,
+            _______,    _______,
+            _______,
+            _______,    _______,    _______
+    ),
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+    set_unicode_input_mode(UC_LNX); // Linux
+    //set_unicode_input_mode(UC_OSX); // Mac OSX
+    //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki)
+    //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki)
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case SYMB:
+        case CSYM:
+            ergodox_right_led_1_on();
+            break;
+        case NUMP:
+            ergodox_right_led_2_on();
+            break;
+        case ARRW:
+            ergodox_right_led_3_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/familiar/rules.mk b/layouts/community/ergodox/familiar/rules.mk
new file mode 100644 (file)
index 0000000..31e0fcf
--- /dev/null
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE=yes
diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c
new file mode 100644 (file)
index 0000000..30bf566
--- /dev/null
@@ -0,0 +1,365 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "keymap_french.h"
+
+#define BASE 0 // default Colemak Mod-DH layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define ACC 3 // accented characters
+
+#define QCOPY 0 // Qubes OS VM to VM copy
+#define QPASTE 1 // Qubes OS VM to VM paste
+#define M_ACIRC 2 // â
+#define M_ECIRC 3 // ê
+#define M_ICIRC 4 // î
+#define M_OCIRC 5 // ô
+#define M_UCIRC 6 // û
+#define M_YCIRC 7 // ŷ
+#define M_AUMLT 8 // ä
+#define M_EUMLT 9 // ë
+#define M_IUMLT 10 // ï
+#define M_OUMLT 11 // ö
+#define M_UUMLT 12 // ü
+#define M_YUMLT 13 // ÿ
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base Colemak Mod-DH layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   F  |   P  |   B  | TO(0)|           |TO(2) |   J  |   L  |   U  |   Y  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Tab    |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  | Bcksp  |
+ * |--------+------+------+------+------+------| TO(1)|           |OSL(3)|------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   .  |   :  | Rshift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Ins  | Caps | Left | Right| MO(2)|                                       | MO(2)| Down |  Up  | PgDn | PgUp  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |QCopy | Ralt |       | Ralt |QPaste|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Home |       | End  |      |      |
+ *                                 | Space| Ctrl |------|       |------| Ctrl |Enter |
+ *                                 |      |      | LAlt |       | LAlt |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+  // If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
+        KC_TRNS,        FR_Q,         FR_W,   KC_F,   KC_P,   KC_B,   TO(BASE),
+        KC_TAB,         FR_A,         KC_R,   KC_S,   KC_T,   KC_G,
+        KC_LSFT,        FR_Z,         KC_X,   KC_C,   KC_D,   KC_V,   TO(SYMB),
+        KC_INS,         KC_CAPS,      KC_LEFT,KC_RIGHT, MO(SYMB),
+                                               M(QCOPY),          KC_RALT,
+                                                                  KC_HOME,
+                                               KC_SPC,KC_LCTRL,   KC_LALT,
+        // right hand
+        KC_TRNS,     KC_6,    KC_7,   KC_8,     KC_9,    KC_0,             KC_TRNS,
+        TO(MDIA),    KC_J,    KC_L,   KC_U,     KC_Y,    FR_SCLN,          KC_TRNS,
+                     FR_M,    KC_N,   KC_E,     KC_I,    KC_O,             KC_BSPC,
+        OSL(ACC),    KC_K,    KC_H,   FR_COMM,  FR_DOT,  FR_COLN,          KC_RSFT,
+        MO(SYMB),    KC_DOWN, KC_UP,  KC_PGDN,  KC_PGUP,
+
+        KC_RALT,        M(QPASTE),
+        KC_END,
+        KC_LALT,KC_RCTL, KC_ENT
+                  ),
+
+
+/* Keymap 1: Symbol Layer
+ * // TODO missing: ¤
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   §  |   <  |   {  |   \  |   ~  |      |           |      |   %  |   @  |   }  |  >   |  µ   |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   '  |   =  |   -  |   (  |   +  |------|           |------|   *  |   )  |   _  |  /   |   "  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   `  |   ?  |   #  |   [  |   |  |      |           |      |   &  |   ]  |   $  |   !  |   ^  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |   €  |   £  |   $  |      |      |                                       |      |      |      |   ß  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,FR_SECT,FR_LESS,  FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS,
+       KC_TRNS,FR_APOS,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS,
+       KC_TRNS,FR_GRV,FR_QUES,FR_HASH,FR_LBRC,FR_PIPE,KC_TRNS,
+          FR_EURO,FR_PND,FR_DLR,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, FR_PERC, FR_AT,  FR_RCBR, FR_GRTR, FR_MU, KC_F12,
+                FR_ASTR,   FR_RPRN, FR_UNDS, FR_SLSH, FR_QUOT, KC_TRNS,
+       KC_TRNS, FR_AMP,  FR_RBRC, FR_DLR,  FR_EXLM,  FR_CIRC, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS,  ALGR(KC_S),  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+
+/* Keymap 3: accented characters
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |  à   |  â   |  ä   |      |      |           |      |      |      |  î   |  ï   |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  é   |  è   |  ê   |  ë   |      |------|           |------|      |      |  ô   |  ö   |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |  ù   |  û   |  ü   |      |      |           |      |      |      |  ŷ   |  ÿ   |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// ACCENTED CHARACTERS
+[ACC] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,    KC_TRNS, KC_TRNS,
+
+       KC_TRNS, KC_TRNS, FR_AGRV, M(M_ACIRC),  M(M_AUMLT), KC_TRNS, KC_TRNS,
+       KC_TRNS, FR_EACU, FR_EGRV, M(M_ECIRC),  M(M_EUMLT), KC_TRNS,
+       KC_TRNS, KC_TRNS, FR_UGRV, M(M_UCIRC),  M(M_UUMLT), KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,
+                                               KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, M(M_ICIRC), M(M_IUMLT), KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, M(M_OCIRC), M(M_OUMLT), KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, M(M_YCIRC), M(M_YUMLT), KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+  switch(id) {
+  case QCOPY:
+    if (record->event.pressed) {
+      return MACRO(I(255),
+                   D(LCTRL),
+                   T(C),
+                   D(LSFT),
+                   T(C),
+                   U(LCTRL),
+                   U(LSFT),
+                   END);
+    }
+    break;
+  case QPASTE:
+    if (record->event.pressed) {
+      return MACRO(I(255),
+                   D(LCTRL),
+                   D(LSFT),
+                   T(V),
+                   U(LCTRL),
+                   T(INS),
+                   U(LSFT),
+                   END);
+    }
+    break;
+  case M_ACIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(Q), // FR_A
+                   END);
+    }
+    break;
+  case M_ECIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(E),
+                   END);
+    }
+    break;
+  case M_UCIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(U),
+                   END);
+    }
+    break;
+  case M_ICIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(I),
+                   END);
+    }
+    break;
+  case M_OCIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(O),
+                   END);
+    }
+    break;
+  case M_YCIRC:
+    if (record->event.pressed) {
+      return MACRO(T(LBRC), // FR_CIRC
+                   T(Y),
+                   END);
+    }
+    break;
+  case M_AUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(Q),
+                   END);
+    }
+    break;
+  case M_EUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(E),
+                   END);
+    }
+    break;
+  case M_UUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(U),
+                   END);
+    }
+    break;
+  case M_IUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(I),
+                   END);
+    }
+    break;
+  case M_OUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(O),
+                   END);
+    }
+    break;
+  case M_YUMLT:
+    if (record->event.pressed) {
+      return MACRO(D(LSFT),
+                   T(LBRC),
+                   U(LSFT),
+                   T(Y),
+                   END);
+    }
+    break;
+
+  }
+  return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+    case SYMB:
+      ergodox_right_led_1_on();
+      break;
+    case MDIA:
+      ergodox_right_led_2_on();
+      break;
+    case ACC:
+      ergodox_right_led_3_on();
+      break;
+    default:
+      // none
+      break;
+    }
+
+};
diff --git a/layouts/community/ergodox/french_hacker/readme.md b/layouts/community/ergodox/french_hacker/readme.md
new file mode 100644 (file)
index 0000000..6b0575a
--- /dev/null
@@ -0,0 +1,30 @@
+# French hacker layout
+
+## Introduction
+
+[Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for
+users keeping an `azerty` layout configuration on their OS.
+
+This keymap is for users keeping their operating systems configured with
+`azerty` - for typing passwords or in their native languages - but who
+wants a Colemak Mod-DH layout on their mechanical.
+
+The symbols layers was done after analysing various programming
+languages sources codes and should be close to optimal for typing
+confort.
+
+Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
+
+There is an accented characters layer for infrequent typing of french
+accents.
+
+Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
+
+## Build
+
+    cd keyboards/ergodox
+    make french_hacker
+
+## Design explanations
+
+See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/).
diff --git a/layouts/community/ergodox/galson/keymap.c b/layouts/community/ergodox/galson/keymap.c
new file mode 100644 (file)
index 0000000..e345005
--- /dev/null
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   +    |   1  |   2  |   3  |   4  |   5  | rclk |           | lclk |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   =    |   Q  |   W  |   E  |   R  |cmd/T |shift |           |shift |cmd/Y |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|  (   |           |  )   |------+------+------+------+------+--------|
+ * |   "    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|    '   |
+ * |--------+------+------+------+------+------| ctrl |           | ctrl |------+------+------+------+------+--------|
+ * |   {    |   Z  |   X  |   C  |   V  |   B  |  [   |           |   ]  |   N  |   M  |   ,  |   .  |   /  |    }   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  _   |   `  |  $   | Left | Right|                                       |  Up  | Down |   :  |   *  |  !     |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |   <  |  |   |       |   &  |   >   |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |  #   |       |   @  |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   |  %   |       |  ESC |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_PLUS,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_BTN2,
+        KC_EQL,          KC_Q,         KC_W,   KC_E,   KC_R,   GUI_T(KC_T),   KC_LSPO,
+        KC_DQUO,  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LCBR,  CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   CTL_T(KC_LBRC),
+        KC_UNDS,         KC_GRV,       KC_DLR, KC_LEFT,KC_RGHT,
+                                                               KC_LABK,  KC_PIPE,
+                                                                       KC_HASH,
+                                                       KC_SPC, KC_BSPC,KC_PERC,
+        // right hand
+        KC_BTN1,         KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+        KC_RSPC,  GUI_T(KC_Y),   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                         KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN), KC_QUOT,
+        CTL_T(KC_RBRC),  KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,   KC_RCBR,
+                                 KC_UP,  KC_DOWN,KC_COLN,KC_ASTR,          KC_EXLM,
+        KC_AMPR,          KC_RABK,
+        KC_AT,
+        KC_ESC,         KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. 
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/galson/readme.md b/layouts/community/ergodox/galson/readme.md
new file mode 100644 (file)
index 0000000..ebc9167
--- /dev/null
@@ -0,0 +1,11 @@
+# Galson keymap
+
+
+Sep 26, 2016.
+
+This is an ergonomic layout for programming for those with typing-related injuries. Key features:
+
+- As many symbol keys as possible are accessible without shifting. These should be accessed by moving the entire hand and pressing with a strong finger.
+- Arrow keys and left and right mouse clicks for mouse-free navigation when combined with head mouse or eyetracker.
+- Modifier keys are dual role and relocated to positions convenient for the index finger.
+- Positions are more convenient when the keyboard is vertically mounted (as it should be!)
\ No newline at end of file
diff --git a/layouts/community/ergodox/galson/rules.mk b/layouts/community/ergodox/galson/rules.mk
new file mode 100644 (file)
index 0000000..f008f50
--- /dev/null
@@ -0,0 +1,2 @@
+COMMAND_ENABLE   = no  # Commands for debug and configuration
+
diff --git a/layouts/community/ergodox/german-kinergo/keymap.c b/layouts/community/ergodox/german-kinergo/keymap.c
new file mode 100644 (file)
index 0000000..d8da953
--- /dev/null
@@ -0,0 +1,210 @@
+// German keymap derived from "german", but more closely resembling the German layout of the Kinesis Ergo Elan.
+//
+// chschmitz, 2016-01-27
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german.h"
+
+// Layer names
+#define BASE 0 // default layer
+#define SYMB 1 // symbol layer
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * X'es mark the spots where this is different from the "german" layout which it is based on.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |X Esc  X|   1  |   2  |   3  |   4  |   5  |X `  X|           |XPRSCX|   6  |   7  |   8  |   9  |   0  |   ß    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |X Tab  X|   Q  |   W  |   E  |   R  |   T  |X L1 X|           |X L1 X|   Z  |   U  |   I  |   O  |   P  |   Ü    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Caps  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
+ * |--------+------+------+------+------+------|X L2 X|           |X L2 X|------+------+------+------+------+--------|
+ * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |X -  X| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |XLGuiX|X  ^ X|X  < X|XLEFTX|XRIGHT|                                       |XDownX|X Up X|X #  X|X  + X|XRGuiX|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |XCTRLX|XALTX |       | Alt  |Ctrl/Esc|
+ *                                 ,------+------+------|       |------+--------+------.
+ *                                 |XXX   |XXX   | Home |       | PgUp |XXX     |XXX   |
+ *                                 | Bkspc|Del   |------|       |------|  Enter | Space|
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   DE_ACUT,
+        KC_TAB,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   MO(1),
+        KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
+        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   MO(2),
+        KC_LGUI,      DE_CIRC, DE_LESS,  KC_LEFT,  KC_RIGHT,
+                                               KC_LCTRL, KC_LALT,
+                                                              KC_HOME,
+                                               KC_BSPC,KC_DELT,KC_END,
+        // right hand
+        KC_PSCREEN,  KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
+        MO(1),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
+                     KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
+        MO(2),       KC_N,   KC_M,    KC_COMM, KC_DOT, DE_MINS,          KC_RSFT,
+                             KC_DOWN, KC_UP,   DE_HASH,  DE_PLUS,          KC_RGUI,
+        KC_RALT, KC_RCTRL,
+        KC_PGUP,
+        KC_PGDN, KC_ENT, KC_SPC
+    ),
+// [BASE] = LAYOUT_ergodox(  // layer 0 : default
+//         // left hand
+//         KC_CIRC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   KC_MPLY,
+//         KC_DELT,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(1),
+//         KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
+//         KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
+//         LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT,  DE_MINS,  DE_PLUS,
+//                                                ALT_T(KC_APP), KC_LGUI,
+//                                                               KC_HOME,
+//                                                KC_SPC,KC_BSPC,KC_END,
+//         // right hand
+//         KC_MNXT,     KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
+//         TG(2),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
+//                      KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
+//         MEH_T(KC_NO),KC_N,   KC_M,    KC_COMM, KC_DOT, CTL_T(DE_MINS),   KC_RSFT,
+//                              KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT,          KC_FN1,
+//         KC_LALT,CTL_T(KC_ESC),
+//         KC_PGUP,
+//         KC_PGDN,KC_TAB, KC_ENT
+//     ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
+       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
+       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
+       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
+       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
+       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
+                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_WBAK, KC_WFWD
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case SYMB:
+            ergodox_right_led_1_on();
+            break;
+        case MDIA:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/german-kinergo/readme.md b/layouts/community/ergodox/german-kinergo/readme.md
new file mode 100644 (file)
index 0000000..addead0
--- /dev/null
@@ -0,0 +1,35 @@
+# German Layout for the ErgoDox
+
+This layout is inspired by the "kinesis-qwerty-mod" from benblazak's
+[ergodox-firmware](https://github.com/benblazak/ergodox-firmware), as well as by the "german" layout from the 
+[qmk_firmware](https://github.com/qmk/qmk_firmware).
+The goal was to have a layout that is pretty close to an ordinary German
+keyboard, so I don't have to make adjustments on the operating system level
+and I keep some of the muscle memory to use a regular keyboard.
+
+Modifications I made with regard to the aforementioned layouts:
+
+* The key layout is pretty close to the layout of a German Kinesis Ergo Elan.
+  The only exception I made is that I reversed the "up" and "down" cursor keys,
+  since that feels more natural to me.
+
+* All layer changes are "momentary", i.e. they only last as long as the respective key is pressed.
+
+* I sacrificed the Hyper and Meh keys, which I don't use, and put layer change keys in their place.
+
+* I added a PrintScreen key which I use quite regularly for screenshots.
+
+## Default Layer
+
+![Layout of the default layer](https://i.imgur.com/BIn8QF8.png "Layout of the default layer")
+
+## Code Layer
+
+![Layout of the code layer](https://i.imgur.com/RHZjBlt.png "Layout of the code layer")
+
+## Media Layer
+
+![Layout of the media layer](https://i.imgur.com/qRMmrL4.png "Layout of the media layer")
+
+Christoph Schmitz &lt;schm4704 at web dot de&gt;
+2016-01-28
diff --git a/layouts/community/ergodox/german-lukas/README.md b/layouts/community/ergodox/german-lukas/README.md
new file mode 100644 (file)
index 0000000..3566b4e
--- /dev/null
@@ -0,0 +1,12 @@
+# About this keymap
+
+This keymap is based on the qwertz layout.
+It has a key for pressing the left control and the left alt key at once.
+
+Linux makes a difference between AltGr and Control + Alt. Some keybindings are easier to press now.
+
+Also, I added a layer for pressing Control + Alt + F-Keys very fast.
+
+# Layer
+
+Each layer in the *keymap.c*-file has a comment showing the mappings of the layer.
diff --git a/layouts/community/ergodox/german-lukas/keymap.c b/layouts/community/ergodox/german-lukas/keymap.c
new file mode 100644 (file)
index 0000000..2ad909b
--- /dev/null
@@ -0,0 +1,236 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german.h"
+
+// Layer names
+#define BASE 0 // default layer
+#define SYMB 1 // symbol layer
+#define MDIA 2 // media keys
+#define SHRT 3 // shortcut layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Caps   |   1  |   2  |   3  |   4  |   5  |X `  X|           | PRSC |   6  |   7  |   8  |   9  |   0  |   ß    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Z  |   U  |   I  |   O  |   P  |   Ü    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Esc   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
+ * |--------+------+------+------+------+------|  L2  |           |  L2  |------+------+------+------+------+--------|
+ * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  -   | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | LGui |   ^  |   <  | LEFT | RIGHT|                                       | Up   | Down |  #   |   +  | LCA |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | CTRL | ALT  |       | Alt  |Ctrl/Esc|
+ *                                 ,------+------+------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Del   |------|       |------|  Bkspc | Enter|
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_CAPS,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   DE_ACUT,
+        KC_TAB,          KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(SYMB),
+        KC_ESC,          KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
+        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
+        KC_LGUI,      DE_CIRC, DE_LESS,  KC_LEFT,  KC_RIGHT,
+                                               KC_LCTRL, KC_LALT,
+                                                              KC_HOME,
+                                               KC_SPC ,KC_DELT,KC_END,
+        // right hand
+        KC_PSCREEN,   KC_6,   KC_7,    KC_8,    KC_9,    KC_0,        KC_MINS,
+        TG(MDIA),     DE_Z,   KC_U,    KC_I,    KC_O,    KC_P,        LT(SHRT,DE_UE),
+                      KC_H,   KC_J,    KC_K,    KC_L,    DE_OE,       LT(MDIA,DE_AE),
+        MEH_T(KC_NO),     KC_N,   KC_M,    KC_COMM, KC_DOT,  DE_MINS,     KC_RSFT,
+                              KC_UP,   KC_DOWN, DE_HASH, DE_PLUS,     LCA_T(KC_NO),
+        KC_RALT, KC_RCTRL,
+        KC_PGUP,
+        KC_PGDN, KC_BSPC, KC_ENT
+    ),
+
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
+       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
+       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
+       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+    // left hand
+       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
+       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
+       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
+                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_WBAK, KC_WFWD
+),
+
+/* Keymap 3: Linux shortcuts
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |LCA-F1|LCA-F2|LCA-F3|LCA-F4|LCA-F5|      |           |      |LCA-F6|LCA-F7|LCA-F8|LCA-F9|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |LCA-Le|      |LCA-Ri|      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |LCA-Le|LCA-Ri|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Shortcuts
+[SHRT] = LAYOUT_ergodox(
+    // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), KC_TRNS,
+       KC_TRNS, KC_TRNS, LCA(KC_LEFT), KC_TRNS, LCA(KC_RIGHT), KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_LEFT), LCA(KC_RIGHT),
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), KC_TRNS, KC_TRNS,
+                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                         LCA(KC_UP), LCA(KC_DOWN), KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case SYMB:
+            ergodox_right_led_1_on();
+            break;
+        case MDIA:
+            ergodox_right_led_2_on();
+            break;
+        case SHRT:
+            ergodox_right_led_3_on();
+            break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/german-manuneo/compile_keymap.py b/layouts/community/ergodox/german-manuneo/compile_keymap.py
new file mode 100644 (file)
index 0000000..44f31b1
--- /dev/null
@@ -0,0 +1,710 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Compiler for keymap.c files
+
+This scrip will generate a keymap.c file from a simple
+markdown file with a specific layout.
+
+Usage:
+    python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
+"""
+from __future__ import division
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import os
+import io
+import re
+import sys
+import json
+import unicodedata
+import collections
+import itertools as it
+
+PY2 = sys.version_info.major == 2
+
+if PY2:
+    chr = unichr
+
+
+KEYBOARD_LAYOUTS = {
+    # These map positions in the parsed layout to
+    # positions in the LAYOUT_ergodox MATRIX
+    'ergodox_ez': [
+        [ 0,  1,  2,  3,  4,  5,  6],  [38, 39, 40, 41, 42, 43, 44],
+        [ 7,  8,  9, 10, 11, 12, 13],  [45, 46, 47, 48, 49, 50, 51],
+        [14, 15, 16, 17, 18, 19    ],  [    52, 53, 54, 55, 56, 57],
+        [20, 21, 22, 23, 24, 25, 26],  [58, 59, 60, 61, 62, 63, 64],
+        [27, 28, 29, 30, 31        ],  [        65, 66, 67, 68, 69],
+        [                    32, 33],  [70, 71                    ],
+        [                        34],  [72                        ],
+        [                35, 36, 37],  [73, 74, 75                ],
+    ]
+}
+
+ROW_INDENTS = {
+    'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
+}
+
+BLANK_LAYOUTS = [
+# Compact Layout
+"""
+.------------------------------------.------------------------------------.
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ |    |    |    |    |    |                     !    |    |    |    |    |
+ '------------------------'                     '------------------------'
+                        .-----------. .-----------.
+                        |     |     | !     |     |
+                  .-----+-----+-----! !-----+-----+-----.
+                  !     !     |     | !     |     !     !
+                  !     !     !-----! !-----!     !     !
+                  |     |     |     | !     |     |     |
+                  '-----------------' '-----------------'
+""",
+
+# Wide Layout
+"""
+.---------------------------------------------. .---------------------------------------------.
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |-------! !-------!     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
+ |      |     |     |     |     |                             !     |     |     |     |      |
+ '------------------------------'                             '------------------------------'
+                              .---------------. .---------------.
+                              |       |       | !       |       |
+                      .-------+-------+-------! !-------+-------+-------.
+                      !       !       |       | !       |       !       !
+                      !       !       !-------! !-------!       !       !
+                      |       |       |       | !       |       |       |
+                      '-----------------------' '-----------------------'
+""",
+]
+
+
+DEFAULT_CONFIG = {
+    "keymaps_includes": [
+        "keymap_common.h",
+    ],
+    'filler': "-+.'!:x",
+    'separator': "|",
+    'default_key_prefix': ["KC_"],
+}
+
+
+SECTIONS = [
+    'layout_config',
+    'layers',
+]
+
+
+#       Markdown Parsing
+
+ONELINE_COMMENT_RE = re.compile(r"""
+    ^                       # comment must be at the start of the line
+    \s*                     # arbitrary whitespace
+    //                      # start of the comment
+    (.*)                    # the comment
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE
+)
+
+INLINE_COMMENT_RE = re.compile(r"""
+    ([\,\"\[\]\{\}\d])      # anythig that might end a expression
+    \s+                     # comment must be preceded by whitespace
+    //                      # start of the comment
+    \s                      # and succeded by whitespace
+    (?:[^\"\]\}\{\[]*)      # the comment (except things which might be json)
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE)
+
+TRAILING_COMMA_RE = re.compile(r"""
+    ,                       # the comma
+    (?:\s*)                 # arbitrary whitespace
+    $                       # only works if the trailing comma is followed by newline
+    (\s*)                   # arbitrary whitespace
+    ([\]\}])                # end of an array or object
+""", re.MULTILINE | re.VERBOSE)
+
+
+def loads(raw_data):
+    if isinstance(raw_data, bytes):
+        raw_data = raw_data.decode('utf-8')
+
+    raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
+    raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
+    raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
+    return json.loads(raw_data)
+
+
+def parse_config(path):
+    def reset_section():
+        section.update({
+            'name': section.get('name', ""),
+            'sub_name': "",
+            'start_line': -1,
+            'end_line': -1,
+            'code_lines': [],
+        })
+
+    def start_section(line_index, line):
+        end_section()
+        if line.startswith("# "):
+            name = line[2:]
+        elif line.startswith("## "):
+            name = line[3:]
+        else:
+            name = ""
+
+        name = name.strip().replace(" ", "_").lower()
+        if name in SECTIONS:
+            section['name'] = name
+        else:
+            section['sub_name'] = name
+        section['start_line'] = line_index
+
+    def end_section():
+        if section['start_line'] >= 0:
+            if section['name'] == 'layout_config':
+                config.update(loads("\n".join(
+                    section['code_lines']
+                )))
+            elif section['sub_name'].startswith('layer'):
+                layer_name = section['sub_name']
+                config['layer_lines'][layer_name] = section['code_lines']
+
+        reset_section()
+
+    def amend_section(line_index, line):
+        section['end_line'] = line_index
+        section['code_lines'].append(line)
+
+    config = DEFAULT_CONFIG.copy()
+    config.update({
+        'layer_lines': collections.OrderedDict(),
+        'macro_ids': {'UM'},
+        'unicode_macros': {},
+    })
+
+    section = {}
+    reset_section()
+
+    with io.open(path, encoding="utf-8") as fh:
+        for i, line in enumerate(fh):
+            if line.startswith("#"):
+                start_section(i, line)
+            elif line.startswith("    "):
+                amend_section(i, line[4:])
+            else:
+                # TODO: maybe parse description
+                pass
+
+    end_section()
+    assert 'layout' in config
+    return config
+
+#       header file parsing
+
+IF0_RE = re.compile(r"""
+    ^
+    #if 0
+    $.*?
+    #endif
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+COMMENT_RE = re.compile(r"""
+    /\*
+    .*?
+    \*/"
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def read_header_file(path):
+    with io.open(path, encoding="utf-8") as fh:
+        data = fh.read()
+    data, _ = COMMENT_RE.subn("", data)
+    data, _ = IF0_RE.subn("", data)
+    return data
+
+
+def regex_partial(re_str_fmt, flags):
+    def partial(*args, **kwargs):
+        re_str = re_str_fmt.format(*args, **kwargs)
+        return re.compile(re_str, flags)
+    return partial
+
+
+KEYDEF_REP = regex_partial(r"""
+    #define
+    \s
+    (
+        (?:{})          # the prefixes
+        (?:\w+)         # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_RE = re.compile(r"""
+    (
+        enum
+        \s\w+\s
+        \{
+        .*?             # the enum content
+        \}
+        ;
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_KEY_REP = regex_partial(r"""
+    (
+        {}              # the prefixes
+        \w+             # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def parse_keydefs(config, data):
+    prefix_options = "|".join(config['key_prefixes'])
+    keydef_re = KEYDEF_REP(prefix_options)
+    enum_key_re = ENUM_KEY_REP(prefix_options)
+    for match in keydef_re.finditer(data):
+        yield match.groups()[0]
+
+    for enum_match in ENUM_RE.finditer(data):
+        enum = enum_match.groups()[0]
+        for key_match in enum_key_re.finditer(enum):
+            yield key_match.groups()[0]
+
+
+def parse_valid_keys(config, out_path):
+    basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
+    dirpaths = []
+    subpaths = []
+    while len(subpaths) < 6:
+        path = os.path.join(basepath, *subpaths)
+        dirpaths.append(path)
+        dirpaths.append(os.path.join(path, "tmk_core", "common"))
+        dirpaths.append(os.path.join(path, "quantum"))
+        subpaths.append('..')
+
+    includes = set(config['keymaps_includes'])
+    includes.add("keycode.h")
+
+    valid_keycodes = set()
+    for dirpath, include in it.product(dirpaths, includes):
+        include_path = os.path.join(dirpath, include)
+        if os.path.exists(include_path):
+            header_data = read_header_file(include_path)
+            valid_keycodes.update(
+                parse_keydefs(config, header_data)
+            )
+    return valid_keycodes
+
+
+#       Keymap Parsing
+
+def iter_raw_codes(layer_lines, filler, separator):
+    filler_re = re.compile("[" + filler + " ]")
+    for line in layer_lines:
+        line, _ = filler_re.subn("", line.strip())
+        if not line:
+            continue
+        codes = line.split(separator)
+        for code in codes[1:-1]:
+            yield code
+
+
+def iter_indexed_codes(raw_codes, key_indexes):
+    key_rows = {}
+    key_indexes_flat = []
+
+    for row_index, key_indexes in enumerate(key_indexes):
+        for key_index in key_indexes:
+            key_rows[key_index] = row_index
+        key_indexes_flat.extend(key_indexes)
+    assert len(raw_codes) == len(key_indexes_flat)
+    for raw_code, key_index in zip(raw_codes, key_indexes_flat):
+        # we keep track of the row mostly for layout purposes
+        yield raw_code, key_index, key_rows[key_index]
+
+
+LAYER_CHANGE_RE = re.compile(r"""
+    (DF|TG|MO)\(\d+\)
+""", re.VERBOSE)
+
+
+MACRO_RE = re.compile(r"""
+    M\(\w+\)
+""", re.VERBOSE)
+
+
+UNICODE_RE = re.compile(r"""
+    U[0-9A-F]{4}
+""", re.VERBOSE)
+
+
+NON_CODE = re.compile(r"""
+    ^[^A-Z0-9_]$
+""", re.VERBOSE)
+
+
+def parse_uni_code(raw_code):
+    macro_id = "UC_" + (
+        unicodedata.name(raw_code)
+        .replace(" ", "_")
+        .replace("-", "_")
+    )
+    code = "M({})".format(macro_id)
+    uc_hex = "{:04X}".format(ord(raw_code))
+    return code, macro_id, uc_hex
+
+
+def parse_key_code(raw_code, key_prefixes, valid_keycodes):
+    if raw_code in valid_keycodes:
+        return raw_code
+
+    for prefix in key_prefixes:
+        code = prefix + raw_code
+        if code in valid_keycodes:
+            return code
+
+
+def parse_code(raw_code, key_prefixes, valid_keycodes):
+    if not raw_code:
+        return 'KC_TRNS', None, None
+
+    if LAYER_CHANGE_RE.match(raw_code):
+        return raw_code, None, None
+
+    if MACRO_RE.match(raw_code):
+        macro_id = raw_code[2:-1]
+        return raw_code, macro_id, None
+
+    if UNICODE_RE.match(raw_code):
+        hex_code = raw_code[1:]
+        return parse_uni_code(chr(int(hex_code, 16)))
+
+    if NON_CODE.match(raw_code):
+        return parse_uni_code(raw_code)
+
+    code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
+    return code, None, None
+
+
+def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
+    keymap = {}
+    raw_codes = list(iter_raw_codes(
+        layer_lines, config['filler'], config['separator']
+    ))
+    indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
+    key_prefixes = config['key_prefixes']
+    for raw_code, key_index, row_index in indexed_codes:
+        code, macro_id, uc_hex = parse_code(
+            raw_code, key_prefixes, valid_keycodes
+        )
+        # TODO: line numbers for invalid codes
+        err_msg = "Could not parse key '{}' on row {}".format(
+            raw_code, row_index
+        )
+        assert code is not None, err_msg
+        # print(repr(raw_code), repr(code), macro_id, uc_hex)
+        if macro_id:
+            config['macro_ids'].add(macro_id)
+        if uc_hex:
+            config['unicode_macros'][macro_id] = uc_hex
+        keymap[key_index] = (code, row_index)
+    return keymap
+
+
+def parse_keymaps(config, valid_keycodes):
+    keymaps = collections.OrderedDict()
+    key_indexes = config.get(
+        'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
+    )
+    # TODO: maybe validate key_indexes
+
+    for layer_name, layer_lines, in config['layer_lines'].items():
+        keymaps[layer_name] = parse_keymap(
+            config, key_indexes, layer_lines, valid_keycodes
+        )
+    return keymaps
+
+#       keymap.c output
+
+USERCODE = """
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
+"""
+
+MACROCODE = """
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {{
+    if (hex == 0x0) {{
+        return KC_P0;
+    }}
+    if (hex < 0xA) {{
+        return KC_P1 + (hex - 0x1);
+    }}
+    return KC_A + (hex - 0xA);
+}}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {{
+    switch (unicode_mode) {{
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }}
+}}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
+    if (!record->event.pressed) {{
+        return MACRO_NONE;
+    }}
+    // MACRODOWN only works in this function
+    switch(id) {{
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+{macro_cases}
+{unicode_macro_cases}
+        default:
+            break;
+    }}
+    return MACRO_NONE;
+}};
+"""
+
+
+UNICODE_MACRO_TEMPLATE = """
+case {macro_id}:
+    unicode_action_function(0x{hi:02x}, 0x{lo:02x});
+    break;
+""".strip()
+
+
+def unicode_macro_cases(config):
+    for macro_id, uc_hex in config['unicode_macros'].items():
+        hi = int(uc_hex, 16) >> 8
+        lo = int(uc_hex, 16) & 0xFF
+        unimacro_keys = ", ".join(
+            "T({})".format(
+                "KP_" + digit if digit.isdigit() else digit
+            ) for digit in uc_hex
+        )
+        yield UNICODE_MACRO_TEMPLATE.format(
+            macro_id=macro_id, hi=hi, lo=lo
+        )
+
+
+def iter_keymap_lines(keymap, row_indents=None):
+    col_widths = {}
+    col = 0
+    # first pass, figure out the column widths
+    prev_row_index = None
+    for code, row_index in keymap.values():
+        if row_index != prev_row_index:
+            col = 0
+            if row_indents:
+                col = row_indents[row_index]
+        col_widths[col] = max(len(code), col_widths.get(col, 0))
+        prev_row_index = row_index
+        col += 1
+
+    # second pass, yield the cell values
+    col = 0
+    prev_row_index = None
+    for key_index in sorted(keymap):
+        code, row_index = keymap[key_index]
+        if row_index != prev_row_index:
+            col = 0
+            yield "\n"
+            if row_indents:
+                for indent_col in range(row_indents[row_index]):
+                    pad = " " * (col_widths[indent_col] - 4)
+                    yield (" /*-*/" + pad)
+                col = row_indents[row_index]
+        else:
+            yield pad
+        yield " {}".format(code)
+        if key_index < len(keymap) - 1:
+            yield ","
+            # This will be yielded on the next iteration when
+            # we know that we're not at the end of a line.
+            pad = " " * (col_widths[col] - len(code))
+        prev_row_index = row_index
+        col += 1
+
+
+def iter_keymap_parts(config, keymaps):
+    # includes
+    for include_path in config['keymaps_includes']:
+        yield '#include "{}"\n'.format(include_path)
+
+    yield "\n"
+
+    # definitions
+    for i, macro_id in enumerate(sorted(config['macro_ids'])):
+        yield "#define {} {}\n".format(macro_id, i)
+
+    yield "\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        yield '#define L{0:<3} {0:<5}  // {1}\n'.format(i, layer_name)
+
+    yield "\n"
+
+    # keymaps
+    yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        # comment
+        layer_lines = config['layer_lines'][layer_name]
+        prefixed_lines = " * " + " * ".join(layer_lines)
+        yield "/*\n{} */\n".format(prefixed_lines)
+
+        # keymap codes
+        keymap = keymaps[layer_name]
+        row_indents = ROW_INDENTS.get(config['layout'])
+        keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
+        yield "[L{0}] = LAYOUT_ergodox({1}\n),\n".format(i, keymap_lines)
+
+    yield "};\n\n"
+
+    # no idea what this is for
+    yield "const uint16_t PROGMEM fn_actions[] = {};\n"
+
+    # macros
+    yield MACROCODE.format(
+        macro_cases="",
+        unicode_macro_cases="\n".join(unicode_macro_cases(config)),
+    )
+
+    # TODO: dynamically create blinking lights
+    yield USERCODE
+
+
+def main(argv=sys.argv[1:]):
+    if not argv or '-h' in argv or '--help' in argv:
+        print(__doc__)
+        return 0
+
+    in_path = os.path.abspath(argv[0])
+    if not os.path.exists(in_path):
+        print("No such file '{}'".format(in_path))
+        return 1
+
+    if len(argv) > 1:
+        out_path = os.path.abspath(argv[1])
+    else:
+        dirname = os.path.dirname(in_path)
+        out_path = os.path.join(dirname, "keymap.c")
+
+    config = parse_config(in_path)
+    valid_keys = parse_valid_keys(config, out_path)
+    keymaps = parse_keymaps(config, valid_keys)
+
+    with io.open(out_path, mode="w", encoding="utf-8") as fh:
+        for part in iter_keymap_parts(config, keymaps):
+            fh.write(part)
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/layouts/community/ergodox/german-manuneo/keymap.c b/layouts/community/ergodox/german-manuneo/keymap.c
new file mode 100644 (file)
index 0000000..71988b7
--- /dev/null
@@ -0,0 +1,783 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+#include "keymap.h"
+#include "keymap_german.h"
+
+#define UC_ASYMPTOTICALLY_EQUAL_TO 0
+#define UC_DIVISION_SIGN 1
+#define UC_DOWNWARDS_ARROW 2
+#define UC_ELEMENT_OF 3
+#define UC_EMPTY_SET 4
+#define UC_FOR_ALL 5
+#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
+#define UC_GREEK_CAPITAL_LETTER_BETA 7
+#define UC_GREEK_CAPITAL_LETTER_CHI 8
+#define UC_GREEK_CAPITAL_LETTER_DELTA 9
+#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
+#define UC_GREEK_CAPITAL_LETTER_ETA 11
+#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
+#define UC_GREEK_CAPITAL_LETTER_IOTA 13
+#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
+#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
+#define UC_GREEK_CAPITAL_LETTER_MU 16
+#define UC_GREEK_CAPITAL_LETTER_NU 17
+#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
+#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
+#define UC_GREEK_CAPITAL_LETTER_PHI 20
+#define UC_GREEK_CAPITAL_LETTER_PI 21
+#define UC_GREEK_CAPITAL_LETTER_PSI 22
+#define UC_GREEK_CAPITAL_LETTER_RHO 23
+#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
+#define UC_GREEK_CAPITAL_LETTER_TAU 25
+#define UC_GREEK_CAPITAL_LETTER_THETA 26
+#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
+#define UC_GREEK_CAPITAL_LETTER_XI 28
+#define UC_GREEK_CAPITAL_LETTER_ZETA 29
+#define UC_GREEK_SMALL_LETTER_ALPHA 30
+#define UC_GREEK_SMALL_LETTER_BETA 31
+#define UC_GREEK_SMALL_LETTER_CHI 32
+#define UC_GREEK_SMALL_LETTER_DELTA 33
+#define UC_GREEK_SMALL_LETTER_EPSILON 34
+#define UC_GREEK_SMALL_LETTER_ETA 35
+#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
+#define UC_GREEK_SMALL_LETTER_GAMMA 37
+#define UC_GREEK_SMALL_LETTER_IOTA 38
+#define UC_GREEK_SMALL_LETTER_KAPPA 39
+#define UC_GREEK_SMALL_LETTER_LAMDA 40
+#define UC_GREEK_SMALL_LETTER_MU 41
+#define UC_GREEK_SMALL_LETTER_NU 42
+#define UC_GREEK_SMALL_LETTER_OMEGA 43
+#define UC_GREEK_SMALL_LETTER_OMICRON 44
+#define UC_GREEK_SMALL_LETTER_PHI 45
+#define UC_GREEK_SMALL_LETTER_PI 46
+#define UC_GREEK_SMALL_LETTER_PSI 47
+#define UC_GREEK_SMALL_LETTER_RHO 48
+#define UC_GREEK_SMALL_LETTER_SIGMA 49
+#define UC_GREEK_SMALL_LETTER_TAU 50
+#define UC_GREEK_SMALL_LETTER_THETA 51
+#define UC_GREEK_SMALL_LETTER_UPSILON 52
+#define UC_GREEK_SMALL_LETTER_XI 53
+#define UC_GREEK_SMALL_LETTER_ZETA 54
+#define UC_INFINITY 55
+#define UC_LEFTWARDS_ARROW 56
+#define UC_MULTIPLICATION_SIGN 57
+#define UC_NOT_AN_ELEMENT_OF 58
+#define UC_NOT_EQUAL_TO 59
+#define UC_PLUS_MINUS_SIGN 60
+#define UC_RIGHTWARDS_ARROW 61
+#define UC_SUBSCRIPT_EIGHT 62
+#define UC_SUBSCRIPT_FIVE 63
+#define UC_SUBSCRIPT_FOUR 64
+#define UC_SUBSCRIPT_NINE 65
+#define UC_SUBSCRIPT_ONE 66
+#define UC_SUBSCRIPT_SEVEN 67
+#define UC_SUBSCRIPT_SIX 68
+#define UC_SUBSCRIPT_THREE 69
+#define UC_SUBSCRIPT_TWO 70
+#define UC_SUBSCRIPT_ZERO 71
+#define UC_SUPERSCRIPT_EIGHT 72
+#define UC_SUPERSCRIPT_FIVE 73
+#define UC_SUPERSCRIPT_FOUR 74
+#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
+#define UC_SUPERSCRIPT_NINE 76
+#define UC_SUPERSCRIPT_ONE 77
+#define UC_SUPERSCRIPT_SEVEN 78
+#define UC_SUPERSCRIPT_SIX 79
+#define UC_SUPERSCRIPT_THREE 80
+#define UC_SUPERSCRIPT_TWO 81
+#define UC_SUPERSCRIPT_ZERO 82
+#define UC_THERE_DOES_NOT_EXIST 83
+#define UC_THERE_EXISTS 84
+#define UC_UPWARDS_ARROW 85
+#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
+#define UC_VULGAR_FRACTION_ONE_FIFTH 87
+#define UC_VULGAR_FRACTION_ONE_HALF 88
+#define UC_VULGAR_FRACTION_ONE_QUARTER 89
+#define UC_VULGAR_FRACTION_ONE_SIXTH 90
+#define UC_VULGAR_FRACTION_ONE_THIRD 91
+#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
+#define UC_VULGAR_FRACTION_TWO_THIRDS 93
+#define UM 94
+
+#define L0   0      // layer_0
+#define L1   1      // layer_1
+#define L2   2      // layer_2
+#define L3   3      // layer_3
+#define L4   4      // layer_4
+#define L5   5      // layer_5
+#define L6   6      // layer_6
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * .------------------------------------.------------------------------------.
+ * |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |INS  |TG(2)| !M(UM)|DELT |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     | APP | ! PGUP|     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ *                   '-----------------' '-----------------'
+ */
+[L0] = LAYOUT_ergodox(
+ MO(5),   DE_1,     DE_2,     DE_3,    DE_4,    DE_5,    DE_ACUT,
+ MO(4),   DE_X,     DE_P,     DE_F,    DE_W,    DE_G,    KC_HOME,
+ MO(1),   DE_U,     DE_I,     DE_A,    DE_E,    DE_O,
+ MO(3),   DE_UE,    DE_OE,    DE_AE,   DE_C,    DE_V,    KC_END,
+ KC_TRNS, KC_TRNS,  KC_LGUI,  KC_LALT, KC_LCTL,
+ /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    KC_INS,  TG(2),
+ /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    /*-*/    KC_APP,
+ /*-*/    /*-*/     /*-*/     /*-*/    KC_BSPC, KC_LSFT, KC_ESC,
+ DE_GRV,  DE_6,     DE_7,     DE_8,    DE_9,    DE_0,    DE_CIRC,
+ TG(2),   DE_H,     DE_J,     DE_K,    DE_L,    DE_Q,    DE_Z,
+ /*-*/    DE_S,     DE_N,     DE_R,    DE_T,    DE_D,    DE_SS,
+ KC_TAB,  DE_B,     DE_M,     DE_COMM, DE_DOT,  KC_UP,   DE_Y,
+ /*-*/    /*-*/     KC_RCTL,  KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
+ M(UM),   KC_DELT,
+ KC_PGUP,
+ KC_PGDN, KC_ENTER, KC_SPACE
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L1] = LAYOUT_ergodox(
+ KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS,               KC_TRNS,               KC_TRNS,
+ KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR,               DE_RCBR,               KC_TRNS,
+ KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC,               DE_RBRC,
+ KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL,  KC_TRNS,               KC_TRNS,               KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/                  KC_TRNS,               KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/                  /*-*/                  KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,               KC_TRNS,               KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,               DE_RING,               KC_TRNS,
+ KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS,               DE_DQOT,               KC_TRNS,
+ /*-*/    DE_DLR,  DE_LPRN, DE_RPRN, DE_TILD,               DE_QUOT,               DE_QST,
+ KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN,               M(UC_UPWARDS_ARROW),   KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L2] = LAYOUT_ergodox(
+ KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_P7,   KC_P8,   KC_P9,   KC_PAST, KC_PSLS,
+ /*-*/    KC_TRNS, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, KC_PMNS,
+ KC_NLCK, KC_TRNS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PPLS,
+ /*-*/    /*-*/    KC_P0,   KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L3] = LAYOUT_ergodox(
+ KC_TRNS, M(UC_SUPERSCRIPT_ONE),           M(UC_SUPERSCRIPT_TWO),                  M(UC_SUPERSCRIPT_THREE),          M(UC_SUPERSCRIPT_FOUR),               M(UC_SUPERSCRIPT_FIVE),          M(UC_FOR_ALL),
+ KC_TRNS, M(UC_MULTIPLICATION_SIGN),       M(UC_VULGAR_FRACTION_ONE_HALF),         M(UC_DIVISION_SIGN),              M(UC_VULGAR_FRACTION_ONE_QUARTER),    M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
+ KC_TRNS, KC_TRNS,                         M(UC_PLUS_MINUS_SIGN),                  DE_AT,                            DE_EURO,                              M(UC_EMPTY_SET),
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO),                     M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO),   KC_TRNS,
+ KC_TRNS, KC_TRNS,                         KC_TRNS,                                KC_TRNS,                          KC_TRNS,
+ /*-*/    /*-*/                            /*-*/                                   /*-*/                             /*-*/                                 KC_TRNS,                         KC_TRNS,
+ /*-*/    /*-*/                            /*-*/                                   /*-*/                             /*-*/                                 /*-*/                            KC_TRNS,
+ /*-*/    /*-*/                            /*-*/                                   /*-*/                             KC_TRNS,                              KC_TRNS,                         KC_TRNS,
+ KC_TRNS, M(UC_SUPERSCRIPT_SIX),           M(UC_SUPERSCRIPT_SEVEN),                M(UC_SUPERSCRIPT_EIGHT),          M(UC_SUPERSCRIPT_NINE),               M(UC_SUPERSCRIPT_ZERO),          KC_TRNS,
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS,                                M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS,                              KC_TRNS,                         KC_TRNS,
+ /*-*/    M(UC_INFINITY),                  M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS),               M(UC_ELEMENT_OF),                     KC_TRNS,                         KC_TRNS,
+ KC_TRNS, DE_EXLM,                         KC_TRNS,                                M(UC_THERE_DOES_NOT_EXIST),       M(UC_NOT_AN_ELEMENT_OF),              KC_TRNS,                         KC_TRNS,
+ /*-*/    /*-*/                            KC_TRNS,                                KC_TRNS,                          KC_TRNS,                              KC_TRNS,                         KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS,                         KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L4] = LAYOUT_ergodox(
+ KC_TRNS, M(UC_SUBSCRIPT_ONE),              M(UC_SUBSCRIPT_TWO),            M(UC_SUBSCRIPT_THREE),          M(UC_SUBSCRIPT_FOUR),             M(UC_SUBSCRIPT_FIVE),             KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI),     M(UC_GREEK_SMALL_LETTER_PI),    M(UC_GREEK_SMALL_LETTER_PHI),   M(UC_GREEK_SMALL_LETTER_OMEGA),   M(UC_GREEK_SMALL_LETTER_GAMMA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA),  M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_THETA), KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          KC_TRNS,
+ KC_TRNS, KC_TRNS,                          KC_TRNS,                        KC_TRNS,                        KC_TRNS,
+ /*-*/    /*-*/                             /*-*/                           /*-*/                           /*-*/                             KC_TRNS,                          KC_TRNS,
+ /*-*/    /*-*/                             /*-*/                           /*-*/                           /*-*/                             /*-*/                             KC_TRNS,
+ /*-*/    /*-*/                             /*-*/                           /*-*/                           KC_TRNS,                          KC_TRNS,                          KC_TRNS,
+ KC_TRNS, M(UC_SUBSCRIPT_SIX),              M(UC_SUBSCRIPT_SEVEN),          M(UC_SUBSCRIPT_EIGHT),          M(UC_SUBSCRIPT_NINE),             M(UC_SUBSCRIPT_ZERO),             KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA),     M(UC_GREEK_SMALL_LETTER_XI),    M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA),   KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_ZETA),
+ /*-*/    M(UC_GREEK_SMALL_LETTER_SIGMA),   M(UC_GREEK_SMALL_LETTER_NU),    M(UC_GREEK_SMALL_LETTER_RHO),   M(UC_GREEK_SMALL_LETTER_TAU),     M(UC_GREEK_SMALL_LETTER_DELTA),   M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA),    M(UC_GREEK_SMALL_LETTER_MU),    KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_PSI),
+ /*-*/    /*-*/                             KC_TRNS,                        KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS,                          KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L5] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI),     M(UC_GREEK_CAPITAL_LETTER_PI),    M(UC_GREEK_CAPITAL_LETTER_PHI),   M(UC_GREEK_CAPITAL_LETTER_OMEGA),   M(UC_GREEK_CAPITAL_LETTER_GAMMA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA),  M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,
+ /*-*/    /*-*/                               /*-*/                             /*-*/                             /*-*/                               KC_TRNS,                            KC_TRNS,
+ /*-*/    /*-*/                               /*-*/                             /*-*/                             /*-*/                               /*-*/                               KC_TRNS,
+ /*-*/    /*-*/                               /*-*/                             /*-*/                             KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA),     M(UC_GREEK_CAPITAL_LETTER_XI),    M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA),   KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_ZETA),
+ /*-*/    M(UC_GREEK_CAPITAL_LETTER_SIGMA),   M(UC_GREEK_CAPITAL_LETTER_NU),    M(UC_GREEK_CAPITAL_LETTER_RHO),   M(UC_GREEK_CAPITAL_LETTER_TAU),     M(UC_GREEK_CAPITAL_LETTER_DELTA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA),    M(UC_GREEK_CAPITAL_LETTER_MU),    KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_PSI),
+ /*-*/    /*-*/                               KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS,                            KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L6] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {};
+
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {
+    if (hex == 0x0) {
+        return KC_P0;
+    }
+    if (hex < 0xA) {
+        return KC_P1 + (hex - 0x1);
+    }
+    return KC_A + (hex - 0xA);
+}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {
+    switch (unicode_mode) {
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    if (!record->event.pressed) {
+        return MACRO_NONE;
+    }
+    // MACRODOWN only works in this function
+    switch(id) {
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+
+case UC_GREEK_SMALL_LETTER_OMICRON:
+    unicode_action_function(0x03, 0xbf);
+    break;
+case UC_LEFTWARDS_ARROW:
+    unicode_action_function(0x21, 0x90);
+    break;
+case UC_GREEK_CAPITAL_LETTER_RHO:
+    unicode_action_function(0x03, 0xa1);
+    break;
+case UC_SUBSCRIPT_THREE:
+    unicode_action_function(0x20, 0x83);
+    break;
+case UC_VULGAR_FRACTION_ONE_EIGHTH:
+    unicode_action_function(0x21, 0x5b);
+    break;
+case UC_GREEK_SMALL_LETTER_LAMDA:
+    unicode_action_function(0x03, 0xbb);
+    break;
+case UC_VULGAR_FRACTION_ONE_THIRD:
+    unicode_action_function(0x21, 0x53);
+    break;
+case UC_GREEK_SMALL_LETTER_XI:
+    unicode_action_function(0x03, 0xbe);
+    break;
+case UC_THERE_DOES_NOT_EXIST:
+    unicode_action_function(0x22, 0x04);
+    break;
+case UC_SUPERSCRIPT_ONE:
+    unicode_action_function(0x00, 0xb9);
+    break;
+case UC_GREEK_SMALL_LETTER_BETA:
+    unicode_action_function(0x03, 0xb2);
+    break;
+case UC_SUBSCRIPT_FIVE:
+    unicode_action_function(0x20, 0x85);
+    break;
+case UC_GREEK_CAPITAL_LETTER_IOTA:
+    unicode_action_function(0x03, 0x99);
+    break;
+case UC_VULGAR_FRACTION_ONE_FIFTH:
+    unicode_action_function(0x21, 0x55);
+    break;
+case UC_GREEK_SMALL_LETTER_PSI:
+    unicode_action_function(0x03, 0xc8);
+    break;
+case UC_SUBSCRIPT_NINE:
+    unicode_action_function(0x20, 0x89);
+    break;
+case UC_SUPERSCRIPT_FOUR:
+    unicode_action_function(0x20, 0x74);
+    break;
+case UC_RIGHTWARDS_ARROW:
+    unicode_action_function(0x21, 0x92);
+    break;
+case UC_SUPERSCRIPT_SIX:
+    unicode_action_function(0x20, 0x76);
+    break;
+case UC_DOWNWARDS_ARROW:
+    unicode_action_function(0x21, 0x93);
+    break;
+case UC_GREEK_SMALL_LETTER_PI:
+    unicode_action_function(0x03, 0xc0);
+    break;
+case UC_SUPERSCRIPT_TWO:
+    unicode_action_function(0x00, 0xb2);
+    break;
+case UC_GREEK_CAPITAL_LETTER_OMEGA:
+    unicode_action_function(0x03, 0xa9);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PSI:
+    unicode_action_function(0x03, 0xa8);
+    break;
+case UC_SUBSCRIPT_FOUR:
+    unicode_action_function(0x20, 0x84);
+    break;
+case UC_GREEK_CAPITAL_LETTER_NU:
+    unicode_action_function(0x03, 0x9d);
+    break;
+case UC_DIVISION_SIGN:
+    unicode_action_function(0x00, 0xf7);
+    break;
+case UC_GREEK_SMALL_LETTER_SIGMA:
+    unicode_action_function(0x03, 0xc3);
+    break;
+case UC_GREEK_SMALL_LETTER_RHO:
+    unicode_action_function(0x03, 0xc1);
+    break;
+case UC_VULGAR_FRACTION_ONE_SIXTH:
+    unicode_action_function(0x21, 0x59);
+    break;
+case UC_GREEK_SMALL_LETTER_GAMMA:
+    unicode_action_function(0x03, 0xb3);
+    break;
+case UC_VULGAR_FRACTION_TWO_THIRDS:
+    unicode_action_function(0x21, 0x54);
+    break;
+case UC_GREEK_SMALL_LETTER_NU:
+    unicode_action_function(0x03, 0xbd);
+    break;
+case UC_GREEK_SMALL_LETTER_ZETA:
+    unicode_action_function(0x03, 0xb6);
+    break;
+case UC_GREEK_SMALL_LETTER_EPSILON:
+    unicode_action_function(0x03, 0xb5);
+    break;
+case UC_GREEK_SMALL_LETTER_KAPPA:
+    unicode_action_function(0x03, 0xba);
+    break;
+case UC_SUPERSCRIPT_SEVEN:
+    unicode_action_function(0x20, 0x77);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PI:
+    unicode_action_function(0x03, 0xa0);
+    break;
+case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
+    unicode_action_function(0x03, 0xc2);
+    break;
+case UC_GREEK_CAPITAL_LETTER_XI:
+    unicode_action_function(0x03, 0x9e);
+    break;
+case UC_GREEK_SMALL_LETTER_THETA:
+    unicode_action_function(0x03, 0xb8);
+    break;
+case UC_GREEK_SMALL_LETTER_ETA:
+    unicode_action_function(0x03, 0xb7);
+    break;
+case UC_SUBSCRIPT_TWO:
+    unicode_action_function(0x20, 0x82);
+    break;
+case UC_ASYMPTOTICALLY_EQUAL_TO:
+    unicode_action_function(0x22, 0x43);
+    break;
+case UC_GREEK_SMALL_LETTER_ALPHA:
+    unicode_action_function(0x03, 0xb1);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PHI:
+    unicode_action_function(0x03, 0xa6);
+    break;
+case UC_GREEK_SMALL_LETTER_PHI:
+    unicode_action_function(0x03, 0xc6);
+    break;
+case UC_INFINITY:
+    unicode_action_function(0x22, 0x1e);
+    break;
+case UC_GREEK_CAPITAL_LETTER_OMICRON:
+    unicode_action_function(0x03, 0x9f);
+    break;
+case UC_ELEMENT_OF:
+    unicode_action_function(0x22, 0x08);
+    break;
+case UC_MULTIPLICATION_SIGN:
+    unicode_action_function(0x00, 0xd7);
+    break;
+case UC_SUBSCRIPT_ZERO:
+    unicode_action_function(0x20, 0x80);
+    break;
+case UC_GREEK_CAPITAL_LETTER_SIGMA:
+    unicode_action_function(0x03, 0xa3);
+    break;
+case UC_GREEK_SMALL_LETTER_OMEGA:
+    unicode_action_function(0x03, 0xc9);
+    break;
+case UC_SUBSCRIPT_ONE:
+    unicode_action_function(0x20, 0x81);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ZETA:
+    unicode_action_function(0x03, 0x96);
+    break;
+case UC_GREEK_SMALL_LETTER_TAU:
+    unicode_action_function(0x03, 0xc4);
+    break;
+case UC_SUPERSCRIPT_FIVE:
+    unicode_action_function(0x20, 0x75);
+    break;
+case UC_THERE_EXISTS:
+    unicode_action_function(0x22, 0x03);
+    break;
+case UC_PLUS_MINUS_SIGN:
+    unicode_action_function(0x00, 0xb1);
+    break;
+case UC_VULGAR_FRACTION_THREE_QUARTERS:
+    unicode_action_function(0x00, 0xbe);
+    break;
+case UC_SUPERSCRIPT_THREE:
+    unicode_action_function(0x00, 0xb3);
+    break;
+case UC_EMPTY_SET:
+    unicode_action_function(0x22, 0x05);
+    break;
+case UC_UPWARDS_ARROW:
+    unicode_action_function(0x21, 0x91);
+    break;
+case UC_SUPERSCRIPT_NINE:
+    unicode_action_function(0x20, 0x79);
+    break;
+case UC_GREEK_SMALL_LETTER_DELTA:
+    unicode_action_function(0x03, 0xb4);
+    break;
+case UC_GREEK_SMALL_LETTER_MU:
+    unicode_action_function(0x03, 0xbc);
+    break;
+case UC_GREEK_CAPITAL_LETTER_KAPPA:
+    unicode_action_function(0x03, 0x9a);
+    break;
+case UC_SUBSCRIPT_EIGHT:
+    unicode_action_function(0x20, 0x88);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ALPHA:
+    unicode_action_function(0x03, 0x91);
+    break;
+case UC_SUBSCRIPT_SEVEN:
+    unicode_action_function(0x20, 0x87);
+    break;
+case UC_GREEK_CAPITAL_LETTER_BETA:
+    unicode_action_function(0x03, 0x92);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ETA:
+    unicode_action_function(0x03, 0x97);
+    break;
+case UC_SUPERSCRIPT_EIGHT:
+    unicode_action_function(0x20, 0x78);
+    break;
+case UC_SUPERSCRIPT_ZERO:
+    unicode_action_function(0x20, 0x70);
+    break;
+case UC_NOT_AN_ELEMENT_OF:
+    unicode_action_function(0x22, 0x09);
+    break;
+case UC_GREEK_SMALL_LETTER_UPSILON:
+    unicode_action_function(0x03, 0xc5);
+    break;
+case UC_NOT_EQUAL_TO:
+    unicode_action_function(0x22, 0x60);
+    break;
+case UC_GREEK_CAPITAL_LETTER_CHI:
+    unicode_action_function(0x03, 0xa7);
+    break;
+case UC_FOR_ALL:
+    unicode_action_function(0x22, 0x00);
+    break;
+case UC_GREEK_CAPITAL_LETTER_TAU:
+    unicode_action_function(0x03, 0xa4);
+    break;
+case UC_VULGAR_FRACTION_ONE_QUARTER:
+    unicode_action_function(0x00, 0xbc);
+    break;
+case UC_GREEK_SMALL_LETTER_CHI:
+    unicode_action_function(0x03, 0xc7);
+    break;
+case UC_GREEK_CAPITAL_LETTER_THETA:
+    unicode_action_function(0x03, 0x98);
+    break;
+case UC_GREEK_SMALL_LETTER_IOTA:
+    unicode_action_function(0x03, 0xb9);
+    break;
+case UC_GREEK_CAPITAL_LETTER_LAMDA:
+    unicode_action_function(0x03, 0x9b);
+    break;
+case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
+    unicode_action_function(0x20, 0x7f);
+    break;
+case UC_GREEK_CAPITAL_LETTER_UPSILON:
+    unicode_action_function(0x03, 0xa5);
+    break;
+case UC_GREEK_CAPITAL_LETTER_MU:
+    unicode_action_function(0x03, 0x9c);
+    break;
+case UC_GREEK_CAPITAL_LETTER_EPSILON:
+    unicode_action_function(0x03, 0x95);
+    break;
+case UC_GREEK_CAPITAL_LETTER_GAMMA:
+    unicode_action_function(0x03, 0x93);
+    break;
+case UC_SUBSCRIPT_SIX:
+    unicode_action_function(0x20, 0x86);
+    break;
+case UC_GREEK_CAPITAL_LETTER_DELTA:
+    unicode_action_function(0x03, 0x94);
+    break;
+case UC_VULGAR_FRACTION_ONE_HALF:
+    unicode_action_function(0x00, 0xbd);
+    break;
+        default:
+            break;
+    }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
diff --git a/layouts/community/ergodox/german-manuneo/keymap.md b/layouts/community/ergodox/german-manuneo/keymap.md
new file mode 100644 (file)
index 0000000..c59f16a
--- /dev/null
@@ -0,0 +1,188 @@
+# ManuNeo Ergodox Keyboard Layout
+
+Compile this file to a `keymap.c` file using `compile_keymap.py`
+
+    python compile_keymap.py keymaps/german-manuneo/keymap.md
+
+Tested with python 2.7 and python 3.4
+
+
+# Layout Config
+
+    {
+        "layout": "ergodox_ez",
+        "keymaps_includes": [
+            QMK_KEYBOARD_H,
+            "action_layer.h",
+            "keymap_common.h",
+            "keymap_extras/keymap_german.h",
+        ],
+        "key_prefixes": ["DE_", "KC_"],
+        "macros": {
+            // TODO: implement macros
+            // "MUC": "",
+        },
+        // TODO: implement default unicode mode
+    }
+
+
+# Layers
+
+
+## Layer 0
+
+    .------------------------------------.------------------------------------.
+    |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |INS  |TG(2)| !M(UM)|DELT |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     | APP | ! PGUP|     !     !
+                      !     !     !-----! !-----!     !     !
+                      |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+                      '-----------------' '-----------------'
+
+
+## Layer 1
+
+    .------------------------------------.------------------------------------.
+    |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 2
+
+    .------------------------------------.------------------------------------.
+    |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+
+## Layer 3
+
+http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
+
+    .------------------------------------.------------------------------------.
+    |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 4
+
+
+    .------------------------------------.------------------------------------.
+    |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 5
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 6
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
diff --git a/layouts/community/ergodox/german/keymap.c b/layouts/community/ergodox/german/keymap.c
new file mode 100644 (file)
index 0000000..67d01fd
--- /dev/null
@@ -0,0 +1,185 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german.h"
+
+// Layer names
+#define BASE 0 // default layer
+#define SYMB 1 // symbol layer
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ^    |   1  |   2  |   3  |   4  |   5  | Play |           | Next |   6  |   7  |   8  |   9  |   0  |   ß    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Del   |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Z  |   U  |   I  |   O  |   P  |   Ü    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Caps  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ö  |  Ä/L2  |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Y  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |-/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | </L1 |#/Ctrl|   ´  |   -  |   +  |                                       | Right| Down |  Up  | Left | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------+------+------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_CIRC,         KC_1,           KC_2,     KC_3,     KC_4,     KC_5,   KC_MPLY,
+        KC_DELT,         KC_Q,           KC_W,     KC_E,     KC_R,     KC_T,   TG(1),
+        KC_CAPS,         KC_A,           KC_S,     KC_D,     KC_F,     KC_G,
+        KC_LSFT,         DE_Y,           KC_X,     KC_C,     KC_V,     KC_B,   ALL_T(KC_NO),
+        LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT,  DE_MINS,  DE_PLUS,
+                                               ALT_T(KC_APP), KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+        KC_MNXT,     KC_6,   KC_7,    KC_8,    KC_9,   KC_0,             KC_MINS,
+        TG(2),       DE_Z,   KC_U,    KC_I,    KC_O,   KC_P,             DE_UE,
+                     KC_H,   KC_J,    KC_K,    KC_L,   DE_OE,            LT(MDIA,DE_AE),
+        MEH_T(KC_NO),KC_N,   KC_M,    KC_COMM, KC_DOT, CTL_T(DE_MINS),   KC_RSFT,
+                             KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT,          KC_FN1,
+        KC_LALT,CTL_T(KC_ESC),
+        KC_PGUP,
+        KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,DE_EXLM,DE_AT,  DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS,
+       KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV,
+       KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    DE_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    DE_PLUS, KC_TRNS,
+       KC_TRNS, DE_AMPR, KC_1,   KC_2,    KC_3,    DE_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
+       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
+       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
+                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_WBAK, KC_WFWD
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case SYMB:
+            ergodox_right_led_1_on();
+            break;
+        case MDIA:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/guni/keymap.c b/layouts/community/ergodox/guni/keymap.c
new file mode 100644 (file)
index 0000000..9a00f0a
--- /dev/null
@@ -0,0 +1,177 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "bootloader.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL  ,  KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
+       KC_FN25 ,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
+        KC_FN27 ,  KC_A,    KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT ,  KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_PGUP,
+        KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
+                                          KC_NO , KC_NO  ,
+                                               KC_NO  ,
+                                     KC_BSPC,KC_DEL ,KC_FN23,
+        // right hand
+             KC_RBRC , KC_6,   KC_7 ,  KC_8,   KC_9,   KC_0,   KC_MINS,
+             KC_END  , KC_Y,   KC_U ,  KC_I,   KC_O,   KC_P,   KC_FN28,
+             KC_H    , KC_J,   KC_K ,  KC_L,   KC_SCLN,KC_FN30,
+             KC_PGDN , KC_N,   KC_M ,  KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
+             KC_RALT , KC_DOWN,KC_UP,  KC_NO  ,KC_RGUI,
+        KC_NO  , KC_NO,
+        KC_NO  ,
+        KC_FN29,KC_ENT ,KC_SPC 
+    ),
+
+    LAYOUT_ergodox(  // layer 1 : function and symbol keys
+        // left hand
+        KC_TRNS,KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
+        KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
+        KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
+        KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1,
+        // right hand
+             KC_F12, KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_TRNS,
+             KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
+             LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
+             KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
+                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+    LAYOUT_ergodox(  // layer 2: navigation 
+        // left hand
+        KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
+        KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
+        KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,KC_NO,KC_NO,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1 ,
+        // right hand
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS ,KC_TRNS,  KC_HOME,  KC_TRNS,  KC_TRNS, KC_END ,KC_TRNS,
+                  KC_NO,  KC_LEFT,  KC_UP,   KC_DOWN, KC_RGHT,KC_TRNS,
+             KC_TRNS,KC_TRNS,  KC_HOME,  KC_UP,  KC_END, KC_PGUP,KC_TRNS,
+                       KC_LEFT,  KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+    LAYOUT_ergodox(  // layer 3 : teensy bootloader functions
+        // left hand
+        KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1 ,
+        // right hand
+             KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+
+    LAYOUT_ergodox(  // layer 4: numpad
+        // left hand
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_TRNS,
+        // right hand
+             KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
+             KC_TRNS,KC_NO,  KC_P7,  KC_P8,  KC_P9,  KC_PMNS,KC_BSPC,
+                  KC_NO,  KC_P4,  KC_P5,  KC_P6,  KC_PPLS,KC_PENT,
+             KC_TRNS,KC_NO,  KC_P1,  KC_P2,  KC_P3,  KC_PPLS,KC_PENT,
+                       KC_P0,  KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+};
+
+/* id for user defined functions */
+enum function_id {
+    TEENSY_KEY,
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+       [0]   =  ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
+       [1]   =  ACTION_LAYER_SET(0, ON_PRESS),              
+               //[11]  =  ACTION_MODS_KEY(MOD_LSFT, KC_COMM),
+       //[12]  =  ACTION_MODS_KEY(MOD_LSFT, KC_DOT),
+       
+       //[14]  =  ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),
+       //[17]  =  ACTION_MODS_KEY(MOD_LSFT, KC_SCLN),
+       //[20]  =  ACTION_MODS_KEY(MOD_LSFT, KC_5),
+       //[21]  =  ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
+       [23]  =  ACTION_LAYER_SET(3, ON_PRESS),
+        [24]  =  ACTION_LAYER_SET(2, ON_PRESS),   
+       [25]  =  ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
+       [26]  =  ACTION_LAYER_SET(1, ON_PRESS),
+       [27]  =  ACTION_LAYER_TAP_KEY(1, KC_CAPS),
+        [28]  =  ACTION_MODS_TAP_KEY(MOD_RCTL,KC_BSLS),
+       //[29]  =  ACTION_LAYER_TOGGLE(4),
+        [29]  = ACTION_MODS_TAP_KEY(MOD_RSFT,KC_ESC),
+       [30]  =  ACTION_LAYER_TAP_KEY(1, KC_QUOT),
+        [31]  =  ACTION_LAYER_MOMENTARY(2),
+       //[]  =  ACTION_LAYER_TAP_KEY(4, KC_S),
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+
+void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
+{
+   
+    if (id == TEENSY_KEY) {
+        clear_keyboard();
+        print("\n\nJump to bootloader... ");
+        wait_ms(250);
+        bootloader_jump(); // should not return
+        print("not supported.\n");
+    }
+}
diff --git a/layouts/community/ergodox/guni/readme.txt b/layouts/community/ergodox/guni/readme.txt
new file mode 100644 (file)
index 0000000..679a08e
--- /dev/null
@@ -0,0 +1,133 @@
+My main layout (Layer 0) is based on qwerty. I tried to fit the layout of the kinesis keyboard onto the ergodox. Furthermore I did some tweaks. 
+The other layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I cant press the reset button, so i need a key to send the teensy into reprogram mode.
+There is a layer with symbols a numpad. These layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I need a key to reprogram, because I can't access the reset button.
+
+I am a linux user and need the esc key and str keys often therefore it is easyly accessed. Switching console str+alt+tab+f2 (layer 2 and 2) is tricky but you get it after a while.
+As I live in germany and need to type umlaut frquently, i mapped the CAPS to the meta key, and swapped ' and ". So I can type ö with CAPS o + ¨. no need to press o+SHIFT+'
+As a note for linux users i use str+p to get last command, instead of using the cursor keys.  
+
+HOWTO to convert CAPS to Meta-Key and swap ' with "
+
+* create file with following content 
+.Xmodmap
+ clear Lock
+ keycode 48 = quotedbl apostrophe quotedbl apostrophe
+ keycode 66 = Multi_key
+
+* apply with
+xmodmap .Xmodmap
+
+* convert to xkbmap
+xkbcomp $DISPLAY $HOME/.xkbmap
+
+* automatic startup each time you startup x
+echo 'xkbcomp $HOME/.xkbmap $DISPLAY' >> ~/.xinitrc
+
+    LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL  ,  KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
+       KC_FN25 ,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
+        KC_FN27 ,  KC_A,    KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT ,  KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_PGUP,
+        KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT,
+                                          KC_NO , KC_NO  ,
+                                               KC_NO  ,
+                                     KC_BSPC,KC_DEL ,KC_FN23,
+        // right hand
+             KC_RBRC , KC_6,   KC_7 ,  KC_8,   KC_9,   KC_0,   KC_MINS,
+             KC_END  , KC_Y,   KC_U ,  KC_I,   KC_O,   KC_P,   KC_FN28,
+             KC_H    , KC_J,   KC_K ,  KC_L,   KC_SCLN,KC_FN30,
+             KC_PGDN , KC_N,   KC_M ,  KC_COMM,KC_DOT, KC_SLSH,KC_FN29,
+             KC_RALT , KC_DOWN,KC_UP,  KC_NO  ,KC_RGUI,
+        KC_NO  , KC_NO,
+        KC_NO  ,
+        KC_FN29,KC_ENT ,KC_SPC 
+    ),
+
+    LAYOUT_ergodox(  // layer 1 : function and symbol keys
+        // left hand
+        KC_TRNS,KC_F1, KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
+        KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS,
+        KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR,
+        KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1,
+        // right hand
+             KC_F12, KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_TRNS,
+             KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS,
+             LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS,
+             KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS,
+                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+    LAYOUT_ergodox(  // layer 2: navigation 
+        // left hand
+        KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS,
+        KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,
+        KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,KC_NO,KC_NO,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1 ,
+        // right hand
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS ,KC_TRNS,  KC_HOME,  KC_TRNS,  KC_TRNS, KC_END ,KC_TRNS,
+                  KC_NO,  KC_LEFT,  KC_UP,   KC_DOWN, KC_RGHT,KC_TRNS,
+             KC_TRNS,KC_TRNS,  KC_HOME,  KC_UP,  KC_END, KC_PGUP,KC_TRNS,
+                       KC_LEFT,  KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+    LAYOUT_ergodox(  // layer 3 : teensy bootloader functions
+        // left hand
+        KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_FN1 ,
+        // right hand
+             KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                  KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+
+    LAYOUT_ergodox(  // layer 4: numpad
+        // left hand
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                      KC_TRNS,KC_TRNS,
+                                           KC_TRNS,
+                                 KC_TRNS,KC_TRNS,KC_TRNS,
+        // right hand
+             KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC,
+             KC_TRNS,KC_NO,  KC_P7,  KC_P8,  KC_P9,  KC_PMNS,KC_BSPC,
+                  KC_NO,  KC_P4,  KC_P5,  KC_P6,  KC_PPLS,KC_PENT,
+             KC_TRNS,KC_NO,  KC_P1,  KC_P2,  KC_P3,  KC_PPLS,KC_PENT,
+                       KC_P0,  KC_PDOT,KC_SLSH,KC_PENT,KC_PENT,
+        KC_TRNS,KC_TRNS,
+        KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS
+    ),
+
+};
+
+
diff --git a/layouts/community/ergodox/ishigoya-jp/keymap.c b/layouts/community/ergodox/ishigoya-jp/keymap.c
new file mode 100644 (file)
index 0000000..43bc74a
--- /dev/null
@@ -0,0 +1,962 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_jp.h"
+
+static uint16_t start;
+
+#define BASE 0 // EN layer
+#define JP 1 // Japanese
+#define JPXON 2 // JP + Fn
+#define JPKAZARI 3 // JP + KAZARI
+#define JPTOPROW 4 // JP + TOPROW
+#define JPTRKZ 5 // JP + TOPROW + KAZARI
+#define NUM 6 // Numbers
+
+#define CTLSHFT 1
+#define CUTCOPY 2
+
+//kana macro definitions start here
+
+#define JPVU 4
+#define JPNU 6
+#define JPKO 7
+#define JPSA 8
+#define JPKE 9
+#define JPHE 10
+#define JPSHI 11
+#define JPKA 12
+#define JPKI 13
+#define JPSU 14
+#define JPSO 15
+#define JPHI 16
+#define JPCHI 17
+#define JPFU 18
+#define JPSE 19
+#define JPTSU 20
+#define JPKU 21
+#define JPTE 22
+#define JPTA 23
+#define JPTO 24
+#define JPHA 25
+#define JPHO 26
+#define JPXKE 27
+#define JPXU 28
+#define JPXKA 29
+#define JPXA 30
+#define JPXO 31
+#define JPGO 32
+#define JPZA 33
+#define JPGE 34
+#define JPBE 35
+#define JPYU 36
+#define JPJI 37
+#define JPGA 38
+#define JPGI 39
+#define JPZU 40
+#define JPZO 41
+#define JPBI 42
+#define JPDI 43
+#define JPZE 44
+#define JPDU 45
+#define JPGU 46
+#define JPYA 47
+#define JPYO 48
+#define JPDE 49
+#define JPDA 50
+#define JPDO 51
+#define JPBA 52
+#define JPBO 53
+#define JPRI 54
+#define JPRE 55
+#define JPRA 56
+#define JPNA 57
+#define JPNO 58
+#define JPMI 59
+#define JPMU 60
+#define JPME 61
+#define JPNE 62
+#define JPMA 63
+#define JPXTU 64
+#define JPWA 65
+#define JPRU 66
+#define JPWO 67
+#define JPNI 68
+#define JPNN 69
+#define JPMO 70
+#define JPRO 71
+#define JPXE 72
+#define JPXI 73
+#define JPXYU 74
+#define JPXYA 75
+#define JPXYO 76
+#define JPPE 77
+#define JPPU 78
+#define JPPI 79
+#define JPPA 80
+#define JPPO 81
+#define JPBU 82
+
+// kana macro definitions end here
+
+#define SHIFT 86
+#define KAZARI 87
+#define JPFN 88 //shifts to JPXON layer
+#define TOJPLOUT 89
+#define TOENL 90
+#define TOJPL 91
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * 
+ * ,----------------------------------------------------.           ,--------------------------------------------------.
+ * | En / 和  |      |   ^  |   %  |      |      |Selall|           | Undo |      |   $  |   @  |   LT |  UP  |   RT   |
+ * |----------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab      |   Q  |   D  |   R  |   W  |   B  | Cut  |           | PgUP |   J  |   F  |   U  |   P  |  DN  |   \    |
+ * |----------+------+------+------+------+------| Copy |           |      |------+------+------+------+------+--------|
+ * |   /      |   A  |   S  |   H  |   T  |   G  |------|           |------|   Y  |   N  |   E  |   O  |   I  |   ,    |
+ * |----------+------+------+------+------+------|Paste |           | PgDN |------+------+------+------+------+--------|
+ * | Ctl+Shft |   Z  |   X  |   M  |   C  |   V  |      |           |      | .    |   L  |   K  |  '   |   ?  | tmux   |
+ * `----------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | LCtrl  | LGui |   Alt|   _  | Esc  |                                       |MouseL|MouseR|   -  |  ~   | Ctrl |
+ *   `------------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |MidMs | Del  |       | VolUp| Mute |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       | VolDn|        |      |
+ *                                 | Space| Shift|------|       |------| Backsp |Enter |
+ *                                 |      |      | Num  |       |  Esc |        |      |
+ *                                 `--------------------'       `----------------------'
+ *
+ * 
+ * tmux prefix set to C-b
+ * 
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        M(TOJPLOUT),   KC_NO,   KC_EQL, LSFT(KC_5), KC_NO,   KC_NO,   LCTL(KC_A),
+        KC_TAB,        KC_Q,         KC_D,   KC_R,   KC_W,   KC_B,   M(CUTCOPY),
+        KC_SLSH,       KC_A,         KC_S,   KC_H,   KC_T,   KC_G,
+        M(CTLSHFT),    KC_Z,         KC_X,   KC_M,   KC_C,   KC_V,   LCTL(KC_V),
+        KC_RCTL,       KC_LGUI,      KC_LALT,JP_UNDS,KC_LCTL,
+                                              KC_BTN3,  KC_DEL,
+                                                              KC_NO,
+                                               KC_SPC,KC_LSFT,F(1),
+        // right hand
+             LCTL(KC_Z), KC_NO, LSFT(KC_4),      JP_AT,   KC_LEFT,       KC_UP,   KC_RIGHT,
+             KC_PGUP,    KC_J,       KC_F,       KC_U,       KC_P,       KC_DOWN, LSFT(KC_3),
+                         KC_Y,       KC_N,       KC_E,       KC_O,       KC_I,    KC_COMMA,
+             KC_PGDN, KC_DOT,     KC_L,       KC_K,       LSFT(KC_7), KC_QUES,   LCTL(KC_B),
+                                  KC_BTN1,  KC_BTN2,KC_MINS,JP_TILD,          KC_RCTL,
+             KC_VOLU,        KC_MUTE,
+             KC_VOLD,
+             KC_SPC,KC_BSLS, KC_ENT
+    ),
+/* Keymap 1: Japanese
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | En / 和|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   nu |  ko  |   sa |  he  |  ke  |      |           |      |  fu  |  se  | tsu  | ku   |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   to |  shi |  ka  |  ki  |  su  |------|           |------|  a   |  ha  | te   | ta   |  u   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   mu |  so  |  hi  |  chi |  me  |      |           |      |      |  ma  |  ho  |  i   |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 | shift|  fn  |------|       |------|      |kazari|
+ *                                 |      |      | Num  |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ * 
+ * 
+ * 
+ */
+[JP] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(JPNU), M(JPKO), M(JPSA), M(JPHE), M(JPKE), KC_TRNS,
+       KC_TRNS, M(JPTO), M(JPSHI), M(JPKA), M(JPKI), M(JPSU),
+       KC_TRNS, M(JPMU), M(JPSO), M(JPHI), M(JPCHI), M(JPME), KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_NO,
+                                  M(SHIFT), M(JPFN), F(1),
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  M(JPFU), M(JPSE), M(JPTSU), M(JPKU), KC_TRNS, KC_TRNS,
+                 KC_A, M(JPHA), M(JPTE), M(JPTA), KC_U, KC_TRNS,
+       KC_TRNS,  KC_TRNS, M(JPMA), M(JPHO), KC_I, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+             KC_TRNS,        KC_TRNS,
+             KC_TRNS,
+             KC_TRNS,KC_TRNS,M(KAZARI)
+),
+/* Keymap 2: Japanese with Fn
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |  xe  |      |      |  xke |      |           |      |  xya |      | xtsu |  xo  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |  xka |      |      |------|           |------|  xa  | xyo  |      |      |  xu  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |  xi  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ * 
+ * 
+ * 
+ */
+[JPXON] = LAYOUT_ergodox(
+          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
+          KC_NO, KC_NO,    M(JPXE),        KC_NO,    M(JPXKE),   KC_NO, KC_NO,
+       KC_NO, KC_NO,    KC_NO,          M(JPXKA),      KC_NO, KC_NO, 
+       KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
+       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
+                                           KC_NO, KC_NO,
+                                                    KC_NO,
+                                  KC_NO, KC_TRNS, KC_TRNS,
+    // right hand
+          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO,  M(JPXYA), KC_NO, M(JPXTU), M(JPXO), KC_NO, KC_NO,
+                 M(JPXA), M(JPXYO), M(JPXYU), KC_NO, M(JPXU), KC_NO,
+       KC_NO,  KC_NO,KC_NO, KC_NO, M(JPXI), KC_NO, KC_NO,
+                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO, KC_NO,
+       KC_NO,
+       KC_NO, KC_NO, KC_NO
+),
+/* Keymap 3: Japanese with kazari
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |  go  |  za  |  be  |  ge  |      |           |      |  bu  |  ze  |  du  |  gu  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  do  |  ji  |  ga  |  gi  |  zu  |------|           |------|      |  ba  |  de  |  da  |  vu  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |  zo  |  bi  |  di  |      |      |           |      |      |      |  bo  |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ * 
+ * 
+ * 
+ */
+[JPKAZARI] = LAYOUT_ergodox(
+          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
+          KC_NO, KC_NO,    M(JPGO),        M(JPZA),    M(JPBE), M(JPGE), KC_NO,
+       KC_NO, M(JPDO),    M(JPJI),        M(JPGA),    M(JPGI), M(JPZU), 
+       KC_NO, KC_NO,    M(JPZO),        M(JPBI),    M(JPDI), KC_NO, KC_NO,
+       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
+                                           KC_NO, KC_NO,
+                                                    KC_NO,
+                                  M(SHIFT), KC_NO, KC_TRNS,
+    // right hand
+          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO,  M(JPBU), M(JPZE), M(JPDU), M(JPGU), KC_NO, KC_NO,
+                 KC_NO, M(JPBA), M(JPDE), M(JPDA), M(JPVU), KC_NO,
+       KC_NO,  KC_NO, KC_NO, M(JPBO), KC_NO, KC_NO, KC_NO,
+                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO, KC_NO,
+       KC_NO,
+       KC_NO, KC_NO, KC_TRNS
+),
+/* Keymap 4: Japanese with Toprow
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |  e   |  -   | re   |      |      |           |      |  ya  | ne   |  ru  | o    |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | ra   |  ri  | na   | no   | mi   |------|           |------| wa   |  yo  | yu   | ni   | nn   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | mo   | ro   |  wo  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ * 
+ * 
+ * 
+ */
+[JPTOPROW] = LAYOUT_ergodox(
+          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO,   KC_NO, KC_NO,
+          KC_NO, KC_NO,    KC_E,       KC_MINS,  M(JPRE), KC_NO, KC_NO,
+       KC_NO, M(JPRA),  M(JPRI),       M(JPNA),  M(JPNO), M(JPMI), 
+       KC_NO, KC_NO, KC_NO,    KC_NO,  KC_NO, KC_NO, KC_NO,
+       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
+                                           KC_NO, KC_NO,
+                                                    KC_NO,
+                                  KC_TRNS, KC_NO, KC_NO,
+    // right hand
+          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO,  M(JPYA), M(JPNE), M(JPRU), KC_O, KC_NO, KC_NO,
+                 M(JPWA), M(JPYO), M(JPYU), M(JPNI), M(JPNN), KC_NO,
+       KC_NO,  KC_NO, M(JPMO), M(JPRO), M(JPWO), KC_NO, KC_NO,
+                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO, KC_NO,
+       KC_NO,
+       KC_NO, KC_NO, M(KAZARI)
+),
+
+/* Keymap 5: Japanese with Toprow and Kazari
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |  pe  |      |      |           |      |  pu  |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |  pa  |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |  pi  |      |      |      |           |      |      |      |  po  |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ * 
+ * 
+ * 
+ */
+[JPTRKZ] = LAYOUT_ergodox(
+          KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, KC_NO,
+          KC_NO, KC_NO,    KC_NO,        KC_NO,    M(JPPE),KC_NO,  KC_NO,
+       KC_NO, KC_NO,    KC_NO,        KC_NO,    KC_NO, KC_NO, 
+       KC_NO, KC_NO,    KC_NO,        M(JPPI),    KC_NO, KC_NO, KC_NO,
+       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_NO,
+                                           KC_NO, KC_NO,
+                                                    KC_NO,
+                                  KC_TRNS, KC_NO, KC_NO,
+    // right hand
+          KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO,  M(JPPU), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+                 KC_NO, M(JPPA), KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO,  KC_NO, KC_NO, M(JPPO), KC_NO, KC_NO, KC_NO,
+                          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+       KC_NO, KC_NO,
+       KC_NO,
+       KC_NO, KC_NO, KC_TRNS
+),
+/* Keymap 6: Number Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |   "  |   [  |   ]  |      |           |   |  |   %  |   7  |   8  |   9  |      |   F12  |
+ * |--------+------+------+------+------+------|   ;  |           |      |------+------+------+------+------+--------|
+ * |        |      |   /  |   +  |   {  |   }  |------|           |------|   !  |   4  |   5  |   6  |   0  |   ,    |
+ * |--------+------+------+------+------+------|   :  |           |   &  |------+------+------+------+------+--------|
+ * |        |      |   *  |   -  |   (  |   )  |      |           |      |   .  |   1  |   2  |   3  |   ?  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |   #  |                                       |   <  |   =  |   >  |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------| Back |  Ent |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Numbers
+[NUM] = LAYOUT_ergodox(
+       // left hand
+          KC_NO, KC_F1,      KC_F2,          KC_F3,      KC_F4,   KC_F5,   KC_NO,
+          KC_NO, KC_NO,    KC_NO,        JP_DQT,    KC_RBRACKET,   KC_BSPC, KC_SCLN,
+       KC_NO, KC_NO,    KC_SLSH,        JP_PLUS,    LSFT(KC_RBRACKET),   JP_RCBR, 
+       KC_NO, KC_NO,    JP_ASTR,        KC_MINS,    LSFT(KC_8), LSFT(KC_9), JP_COLN,
+       KC_TRNS, KC_NO,    KC_NO,        KC_NO,    KC_HASH,
+                                           KC_NO, KC_NO,
+                                                    KC_NO,
+                                  KC_NO, KC_NO, KC_TRNS,
+       // right hand
+       KC_NO, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       LSFT(KC_JYEN), KC_PERC,   KC_7,   KC_8,    KC_9,    KC_NO, KC_F12,
+                KC_EXLM, KC_4,   KC_5,    KC_6,    KC_0, KC_COMM,
+       LSFT(KC_6), KC_DOT, KC_1,   KC_2,    KC_3,    KC_QUES, KC_NO,
+                         KC_LT,JP_EQL,  KC_GT,    KC_NO,  KC_NO,
+       KC_NO, KC_NO,
+       KC_NO,
+       KC_SPC, KC_BSLS, KC_DOT
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(NUM)                // FN1 - Momentary Layer 6 (Numbers)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+       
+  // MACRO only works in this function
+       switch(id) {
+               case 0:
+                       if (record->event.pressed) {
+                               register_code(KC_RSFT);
+                       } else {
+                               unregister_code(KC_RSFT);
+                       }
+                       break;
+               case CTLSHFT:
+                       if (record->event.pressed) {
+                               return MACRO( D(LSFT), D(LCTL), END);
+                       } else {
+                               return MACRO( U(LSFT), U(LCTL), END);
+                       }
+                       break;
+               case CUTCOPY:
+                       if (record->event.pressed) {
+                               start = timer_read();
+                       } else {
+                               if (timer_elapsed(start) > 150) {
+                                       return MACRO( D(LCTL), T(X), U(LCTL), END);
+                               } else {
+                                       return MACRO( D(LCTL), T(C), U(LCTL), END);
+                               }
+                       }
+                       break;
+                       
+               // kana macros start here
+                       
+               case JPVU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(V), T(U), END);
+                       }
+                       break;
+               case JPNU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(U), END);
+                       }
+                       break;
+               case JPKO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(K), T(O), END);
+                       }
+                       break;
+               case JPSA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(S), T(A), END);
+                       }
+                       break;
+               case JPKE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(K), T(E), END);
+                       }
+                       break;
+               case JPHE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(H), T(E), END);
+                       }
+                       break;
+               case JPSHI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(S), T(I), END);
+                       }
+                       break;
+                       case JPKA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(K), T(A), END);
+                       }
+                       break;
+               case JPKI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(K), T(I), END);
+                       }
+                       break;
+               case JPSU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(S), T(U), END);
+                       }
+                       break;
+               case JPSO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(S), T(O), END);
+                       }
+                       break;
+               case JPHI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(H), T(I), END);
+                       }
+                       break;
+               case JPCHI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(T), T(I), END);
+                       }
+                       break;
+               case JPFU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(F), T(U), END);
+                       }
+                       break;
+               case JPSE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(S), T(E), END);
+                       }
+                       break;
+               case JPTSU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(T), T(U), END);
+                       }
+                       break;
+               case JPKU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(K), T(U), END);
+                       }
+                       break;
+               case JPTE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(T), T(E), END);
+                       }
+                       break;
+               case JPTA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(T), T(A), END);
+                       }
+                       break;
+               case JPTO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(T), T(O), END);
+                       }
+                       break;
+               case JPHA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(H), T(A), END);
+                       }
+                       break;
+               case JPHO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(H), T(O), END);
+                       }
+                       break;
+               case JPXKE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(K), T(E), END);
+                       }
+                       break;
+               case JPXU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(U), END);
+                       }
+                       break;
+               case JPXKA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(K), T(A), END);
+                       }
+                       break;
+               case JPXA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(A), END);
+                       }
+                       break;
+               case JPXO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(O), END);
+                       }
+                       break;
+               case JPGO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(G), T(O), END);
+                       }
+                       break;
+               case JPZA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Z), T(A), END);
+                       }
+                       break;
+               case JPGE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(G), T(E), END);
+                       }
+                       break;
+               case JPBE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(B), T(E), END);
+                       }
+                       break;
+               case JPYU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Y), T(U), END);
+                       }
+                       break;
+               case JPJI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(J), T(I), END);
+                       }
+                       break;
+               case JPGA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(G), T(A), END);
+                       }
+                       break;
+               case JPGI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(G), T(I), END);
+                       }
+                       break;
+               case JPZU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Z), T(U), END);
+                       }
+                       break;
+               case JPZO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Z), T(O), END);
+                       }
+                       break;
+               case JPBI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(B), T(I), END);
+                       }
+                       break;
+               case JPDI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(D), T(I), END);
+                       } 
+                       break;
+               case JPZE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Z), T(E), END);
+                       }
+                       break;
+               case JPDU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(D), T(U), END);
+                       }
+                       break;
+               case JPGU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(G), T(U), END);
+                       }
+                       break;
+               case JPYA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Y), T(A), END);
+                       }
+                       break;
+               case JPYO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(Y), T(O), END);
+                       }
+                       break;
+               case JPDE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(D), T(E), END);
+                       }
+                       break;
+               case JPDA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(D), T(A), END);
+                       }
+                       break;
+               case JPDO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(D), T(O), END);
+                       }
+                       break;
+               case JPBA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(B), T(A), END);
+                       }
+                       break;
+               case JPBO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(B), T(O), END);
+                       }
+                       break;
+               case JPRI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(R), T(I), END);
+                       }
+                       break;
+               case JPRE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(R), T(E), END);
+                       }
+                       break;
+               case JPRA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(R), T(A), END);
+                       }
+                       break;
+               case JPNA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(A), END);
+                       }
+                       break;
+               case JPNO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(O), END);
+                       }
+                       break;
+               case JPMI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(M), T(I), END);
+                       }
+                       break;
+               case JPMU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(M), T(U), END);
+                       }
+                       break;
+               case JPME:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(M), T(E), END);
+                       }
+                       break;
+               case JPNE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(E), END);
+                       }
+                       break;
+               case JPMA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(M), T(A), END);
+                       }
+                       break;
+               case JPXTU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(T), T(U), END);
+                       }
+                       break;
+               case JPWA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(W), T(A), END);
+                       }
+                       break;
+               case JPRU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(R), T(U), END);
+                       }
+                       break;
+               case JPWO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(W), T(O), END);
+                       }
+                       break;
+               case JPNI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(I), END);
+                       }
+                       break;
+               case JPNN:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(N), T(N), END);
+                       }
+                       break;
+               case JPMO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(M), T(O), END);
+                       }
+                       break;
+               case JPRO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(R), T(O), END);
+                       }
+                       break;
+               case JPXE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(E), END);
+                       }
+                       break;
+               case JPXI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(I), END);
+                       }
+                       break;
+               case JPXYU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(Y), T(U), END);
+                       }
+                       break;
+               case JPXYA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(Y), T(A), END);
+                       }
+                       break;
+               case JPXYO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(X), T(Y), T(O), END);
+                       }
+                       break;
+               case JPPE:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(P), T(E), END);
+                       }
+                       break;
+               case JPPU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(P), T(U), END);
+                       }
+                       break;
+               case JPPI:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(P), T(I), END);
+                       }
+                       break;
+               case JPPA:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(P), T(A), END);
+                       }
+                       break;
+               case JPPO:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(P), T(O), END);
+                       }
+                       break;
+               case JPBU:
+                       if (record->event.pressed) {
+                               return MACRO( I(1), T(B), T(U), END);
+                       }
+                       break;
+                       
+                       // kana macros end here
+                       
+                       break;
+               case SHIFT:
+               if (record->event.pressed) {
+                       start = timer_read();
+                       if (layer_state == (1<<JPKAZARI)) {
+                               layer_state = (1<<JPTOPROW)| (1<<JPTRKZ);
+                       } else {
+                               layer_state = (1<<JPTOPROW);                                                    
+                       } 
+      } else {
+                       layer_state = (0<<JPTOPROW);
+                       clear_keyboard_but_mods();
+                       if (timer_elapsed(start) < 100) {
+                               return MACRO( I(1), T(SPC), END);
+                       }
+      }
+      break;
+               case KAZARI:
+               if (record->event.pressed) {
+                       start = timer_read();
+                       if (layer_state == (1<<JPTOPROW)) {
+                               layer_state = (1<<JPKAZARI)| (1<<JPTRKZ);
+                       } else {
+                               layer_state = (1<<JPKAZARI);                                                    
+                       } 
+                       break;
+      } else {
+                       layer_state = (0<<JPKAZARI);
+                       layer_state = (0<<JPTRKZ);
+               if (timer_elapsed(start) < 100) {
+          return MACRO( T(ENTER), END);
+        }
+      }
+      break;  
+               case JPFN:
+                       if (record->event.pressed) {
+                               start = timer_read();
+                               layer_state = (1<<JPXON);
+                       } else {
+                               layer_state = (0<<JPXON);
+                               if (timer_elapsed(start) < 100) {
+                                       return MACRO( T(F7), END);
+                               }
+                       }
+      break;
+               case TOJPLOUT:
+                       if (record->event.pressed) {
+                               if (default_layer_state == (1<<JP)) {
+                                       default_layer_state = (0<<JP);
+                               } else {
+                                       default_layer_state = (1<<JP);
+                               }
+                               return MACRO( T(ZKHK), END);
+                       }
+                       break;
+/*
+               // TOJPL and TOENL switch keyboard language.
+               // The Ctrl+[] commands here load the appropriate ibus-anthy input engine via a WM shortcut
+               // The first key pressed in the new engine is missed, thus the space key
+               // TOJPLOUT works in the same way but is used for switching engines on external systems.
+               case TOJPL:
+                       if (record->event.pressed) {
+                               default_layer_state = (1<<JP);
+                               return MACRO( D(LCTL), T(END), U(LCTL), END);
+                               //return MACRO( D(LCTL), T(END), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
+                       }
+                       break;
+               case TOENL:
+                       if (record->event.pressed) {
+                               default_layer_state = (1<<BASE);
+                               return MACRO( D(LCTL), T(HOME), U(LCTL), END);
+                       //return MACRO( D(LCTL), T(HOME), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
+                       }
+                       break;
+*/
+               }
+    return MACRO_NONE;   
+};
+
+// 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);
+   uint8_t deflayer = biton32(default_layer_state);
+
+       ergodox_board_led_off();
+       ergodox_right_led_1_off();
+       ergodox_right_led_2_off();
+       ergodox_right_led_3_off();
+    
+  
+       switch (layer) {
+               case 0:
+                       //none
+                       break;
+//             case 1:
+//                     ergodox_right_led_2_on();
+//                     break;
+               case 6:
+                       ergodox_right_led_3_on();
+                       break;
+    }
+    switch (deflayer) {
+                case 0:
+                ergodox_right_led_1_off();
+                break;
+                case 1:
+                ergodox_right_led_1_on();
+                break;
+       }
+};
diff --git a/layouts/community/ergodox/ishigoya-jp/readme.md b/layouts/community/ergodox/ishigoya-jp/readme.md
new file mode 100644 (file)
index 0000000..839fe97
--- /dev/null
@@ -0,0 +1,54 @@
+This is a dual English-Japanese keymap that utilises a thumb-shift system for Japanese input. You can read more about this layout on my blog [here](https://ishigoya.com). 
+
+### Some Editing Necessary
+The system I created this on is a Chromebook, and uses a Japanese keymap, so some of the key mappings may not be the same as those on your system. In particular, the Escape key on layer 0 is mapped to KC_LCTL.
+
+### Layouts
+------
+#### English layer - layer 0
+The English layout is a modified Workman layout, and is pictured below:
+
+![English layout](https://i.imgur.com/X1j2Mya.png)
+
+Some of the punctuation keys have been moved to a separate number/symbol layer.
+
+#### Number / Symbol layer - layer 6
+
+The Number / Symbol layer is reachable through a ACTION_LAYER_MOMENTARY function. The blue LED is illuminated when this layer is active. It is accessible from the English or Japanese layers.
+
+![Number layout](https://i.imgur.com/oNSNXPU.png)
+
+#### Japanese layers - layers 1-5
+
+There are 5 layers involved in Japanese input. The TOJPLOUT macro is mapped to the En / 和 button, and switches default layer between layer 0 (English) and 1 (main Japanese layer). When layer 1 is the default layer, the red LED is on. It also outputs the ZKHK button to change the input method language.
+
+On keypress, strings of romaji characters are output by the keyboard using macros, and these simulate the input of individual keys on a latin keyboard.
+
+![Japanese layout](https://i.imgur.com/qMvt92j.png)
+
+Layer 1 is the JP layer. Keys on this layer correspond to singleton keys, or keys on the bottom row where a key is shared. For example, pressing the "ふ や" key outputs `ふ` (or "fu").
+
+Layer 2 is the JPXON layer, and is active while holding the Fn key. This prints keys that are prefaced by "x" when writing in romaji. For example, pressing the "ふ や" key while holding the Fn key outputs `ゃ` (or "xya").
+
+Layer 3 is the JPKAZARI layer, and is active while holding the 飾り key. This provides letters with dakuten. For example, pressing the "ふ や" key while holding the 飾り key outputs `ぶ` (or "bu").
+
+Layer 4 is the JPTOPROW layer, and is active while holding the シフト key. Keys on this line correspond to top row keys on shared keys in the image. For example, pressing the "ふ や" key while holding the シフト key outputs `や` (or "ya").
+
+Layer 5 is the JPTRKZ layer, and is active while holding both the シフト key and the 飾り key. This layer contains handakuten keys. For example, pressing the "ふ や" while holding both the シフト key and the 飾り key outputs `ぷ` (or "pu").
+
+I've also separated out the #define sections and the macros required for kana for easy copying, in case anyone else should wish to make a kana-based layout.
+
+When tapped, the シフト key acts as a space key, and the 飾り key acts as a return key. This allows them to function as 変換 and 無変換, respectively, in many IMEs.
+
+Furthermore the Fn key, when tapped, acts as an F7 key, providing easy switching to katakana in many IMEs.
+
+### Other features
+The cut/copy button gives copy functionality on a short press, and cut functionality on a long press.
+
+The tmux prefix button outputs Control-B.
+
+The Control & Shift key acts as holding the control and shift keys at the same time.
+
+SelAll outputs Control-A.
+
+Undo outputs Control-Z.
diff --git a/layouts/community/ergodox/italian/keymap.c b/layouts/community/ergodox/italian/keymap.c
new file mode 100644 (file)
index 0000000..366f4c9
--- /dev/null
@@ -0,0 +1,223 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
+ * |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Ins  | LGui |       | Win  | Ctrl |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Backsp| Del  |------|       |------|  Enter |Space |
+ *                                 |ace   |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,                      KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
+        KC_TAB,                      KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TT(SYMB),
+        KC_CAPS,                     KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,                     KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LALT, 
+        MT(MOD_LGUI,KC_NONUS_BSLASH),KC_PPLS,      KC_PMNS,KC_PAST,MT(MOD_LCTL,KC_PSLS),
+                                                           KC_INS,  KC_LGUI,
+                                                                    KC_HOME,
+                                                   KC_BSPC,KC_DEL,  KC_END,
+        // right hand
+             TG(MDIA),    KC_6,   KC_7,                 KC_8,   KC_9,   KC_0,      KC_MINS,
+             TT(SYMB),    KC_Y,   KC_U,                 KC_I,   KC_O,   KC_P,      KC_LBRC,
+                          KC_H,   KC_J,                 KC_K,   KC_L,   KC_SCLN,   KC_QUOT,
+             KC_LALT,     KC_N,   KC_M,                 KC_COMM,KC_DOT, KC_BSLASH, MT(MOD_RSFT,KC_SLSH),
+                                  MT(MOD_RALT,KC_EQL), KC_LEFT,KC_DOWN,KC_UP,     KC_RIGHT,
+             KC_LGUI,     KC_RCTL,
+             KC_PGUP,
+             KC_PGDN,     KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   .  |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |  0   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),    KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS, KC_EXLM,                RALT(KC_SCLN), RALT(KC_LCBR), RALT(KC_RCBR), KC_TILD,  KC_TRNS,
+       KC_TRNS, RALT(KC_QUOT),          KC_DLR,        RALT(KC_LBRC), RALT(KC_RBRC), KC_CIRC,
+       KC_TRNS, KC_PERC,                LSFT(KC_EQL),  LSFT(KC_8),    LSFT(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,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_TRNS, KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_TRNS, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_0
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/italian/readme.md b/layouts/community/ergodox/italian/readme.md
new file mode 100644 (file)
index 0000000..215c24a
--- /dev/null
@@ -0,0 +1,72 @@
+# ErgoDox Italian layout
+
+## Layer 0
+```
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |   \    |   1  |   2  |   3  |   4  |   5  | ESC  |           |  T2  |   6  |   7  |   8  |   9  |   0  |   '    |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ | Tab    |   Q  |   W  |   E  |   R  |   T  | TT1  |           |  TT1 |   Y  |   U  |   I  |   O  |   P  |   è    |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ò  |   à    |
+ |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
+ | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   ù  |-/RShift|
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |</Win |   +  |   -  |   *  |//Ctr |                                       |ì/RAlt| Left | Down |  Up  | Right  | ~L1  |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        | Ins  | LGui |       | Win  | Ctrl |
+                                 ,------|------|------|       |------+--------+------.
+                                 |      |      | Home |       | PgUp |        |      |
+                                 |Backsp| Del  |------|       |------|  Enter |Space |
+                                 |ace   |      | End  |       | PgDn |        |      |
+                                 `--------------------'       `----------------------'
+```
+
+## Layer 1
+```
+
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |      |   F12  |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |   #  |   $  |   [  |   ]  |   &  |------|           |------|      |   4  |   5  |   6  |      |        |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |   %  |   ^  |   (  |   )  |      |      |           |      |      |   1  |   2  |   3  |      |        |
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |      |      |      |      |      |                                       |   .  |      |      |      |      |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        |      |      |       |      |      |
+                                 ,------|------|------|       |------+------+------.
+                                 |      |      |      |       |      |      |      |
+                                 |      |      |------|       |------|      |  0   |
+                                 |      |      |      |       |      |      |      |
+                                 `--------------------'       `--------------------'
+```
+
+## Layer 2
+```
+
+ ,--------------------------------------------------.           ,--------------------------------------------------.
+ |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ |        |      |      | MsUp |      |      |      |           |      | Lclk | Rclk |      |      |      |        |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        |      |      |       |      |      |
+                                 ,------|------|------|       |------+------+------.
+                                 |      |      |      |       |      |      |Brwser|
+                                 |      |      |------|       |------|      |Back  |
+                                 |      |      |      |       |      |      |      |
+                                 `--------------------'       `--------------------' 
+```
+
+
diff --git a/layouts/community/ergodox/j3rn/keymap.c b/layouts/community/ergodox/j3rn/keymap.c
new file mode 100644 (file)
index 0000000..443d839
--- /dev/null
@@ -0,0 +1,188 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Grv    |   1  |   2  |   3  |   4  |   5  |  [   |           |  ]   |   6  |   7  |   8  |   9  |   0  |  BkSp  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  -   |           |  =   |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | ~L1  | Alt  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | Home |       | PgUp |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 |Space | LGui |------|       |------|  Tab   |Enter |
+ *                                 |      |      | ~L2  |       | ~L1  |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LBRC,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_MINS,
+        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        MO(SYMB),       KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+
+                                              ALT_T(KC_APP),  KC_HOME,
+                                                              KC_END,
+                                               KC_SPC,KC_LGUI,MO(MDIA),
+        // right hand
+             KC_RBRC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSPC,
+             KC_EQL,      KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          MO(SYMB),
+
+             KC_PGUP,         CTL_T(KC_ESC),
+             KC_PGDN,
+             MO(SYMB),KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Lclk | Rclk |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_F12,
+                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),               // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_LAYER_TAP_TOGGLE(MDIA)                // FN2 - Momentary Layer 2 (Media)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/j3rn/readme.md b/layouts/community/ergodox/j3rn/readme.md
new file mode 100644 (file)
index 0000000..178aba7
--- /dev/null
@@ -0,0 +1,32 @@
+# J3RN's Mac-Centric ErgoDox EZ keymap
+
+## Motivation
+
+Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
+
+## How is it different from the default ErgoDox EZ layout?
+
+This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means:
+
+### Mac-like changes
+
+- **The key to the left of "1" is "~" instead of "=".**
+- **The key to the right of "0" is Backspace instead of "-"** (misleadingly labeled "delete" on the Mac's keyboard). There was no room to fit in "-" and "=" between "0" and Backspace, unfortunately.
+- **The key to the left of "Q" is Tab instead of Delete.**
+- **The rightmost big key on the left thumb is CMD (LGui) instead of Backspace.**
+- **The key to the left of Alt-Shift is an Alt key**. This is close to it's position on the Mac keyboard, though slightly further left.
+
+### Other changes
+
+- **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a  CAPS LOCK key. This is the Ctrl key I find myself using most.
+- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys.
+- **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach.
+- **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better.
+- **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold."
+- **The Home and End buttons have been shifted up on the left thumb, and Shift inserted below them.** This makes doing Shift-5 and other such combinations less painful.
+- **The Page Up and Page Down buttons have been shifted up on the right thumb.** I don't use either of these keys often, and wanted to free up some real estate.
+- **The bottommost-inner keys on the left and right thumb are momentary L2 and momentary L1, respectively**. I have found that both modes are useful, and this seemed like a reasonably accessible place to put these.
+- **Traditional numpad layout.** The base of most numpads is a double-wide "0" key to the left of a "." key. This is reflected in my layout by having two "0" keys to the left of a "." key.
+- **The function keys (F1-F12) have been moved to L2.** They were in the way in L1.
+
+**I'm always open to feedback and/or suggestions!**
diff --git a/layouts/community/ergodox/jack/config.h b/layouts/community/ergodox/jack/config.h
new file mode 100644 (file)
index 0000000..04bbed6
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D7
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 15     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 255
+#define RGBLIGHT_VAL_STEP 12
+
+#define RGB_MIDI
+#define RGBW_BB_TWI
+
+#endif
\ No newline at end of file
diff --git a/layouts/community/ergodox/jack/keymap.c b/layouts/community/ergodox/jack/keymap.c
new file mode 100644 (file)
index 0000000..6a00ffa
--- /dev/null
@@ -0,0 +1,128 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+// TODO: Define layer names that make sense for the ErgoDox EZ.
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_NO,          KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_NO,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_NO,
+        KC_ESC,         KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_NO,
+        KC_NO,          KC_LCTL,      KC_LALT,KC_LGUI, MO(2),
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_SPC,KC_END,
+        // right hand
+             KC_NO,     M(1),   KC_7,   KC_8,   KC_9,   KC_0,             KC_NO,
+             KC_NO,     RGB_TOG,   RGB_MOD,   RGB_HUI,   RGB_HUD,   KC_P,             KC_BSPC,
+                        RGB_SAI,   RGB_SAD,   RGB_VAI,   RGB_VAD,   KC_SCLN,          KC_QUOT,
+             KC_NO,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_ENT,
+                                  MO(1), KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,  
+             RGB_TOG,        RGB_HUI,
+             RGB_MOD,
+             M(2), KC_SPC,KC_SPC
+    ),
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,  KC_TRNS,
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5, 
+       KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC,
+                KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
+       KC_TRNS, KC_F12,  KC_NO,   KC_NO, KC_NO, RESET,   KC_TRNS,
+                         KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, 
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_TRNS,
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  
+       KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+                 KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+       KC_TRNS,  KC_F12,  KC_NO,   KC_NO, KC_NO, RESET,   KC_TRNS,
+                          KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, 
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+        case 2:
+        if (record->event.pressed) { // For resetting EEPROM
+          api_send_unicode(0x0CA0);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/jacobono/keymap.c b/layouts/community/ergodox/jacobono/keymap.c
new file mode 100644 (file)
index 0000000..c0a1c0c
--- /dev/null
@@ -0,0 +1,273 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define COLEMAK 0 // new colemak layout
+#define QWERTY 1 // default layer
+#define SYMB 2 // symbols
+#define NUMPAD 3 // number pad
+#define MDIA 4 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+       /* Keymap 0: Basic COLEMAK layer
+        *
+        * ,--------------------------------------------------.           ,--------------------------------------------------.
+        * |        |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
+        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+        * | Tab    |   Q  |   W  |   F  |   P  |   G  |      |           |      |   J  |   L  |   U  |   Y  |   ;  |  TAB   |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * | BkSp   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |  DEL   |
+        * |--------+------+------+------+------+------|      |          LGUI(TAB)------+------+------+------+------+--------|
+        * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+        *   |  L1  |      |      | UP   |MO(L2)|                                       |MO(L2)| Down |      |  ALT | RGUI   |
+        *   `----------------------------------'                                       `------------------------------------'
+        *                                        ,-------------.       ,---------------.
+        *                                        | LGUI | App  |       |Ctrl/Esc|  Alt |
+        *                                 ,------|------|------|       |--------+--------+------.
+        *                                 |      |      |QUKSL |       |  QUKSL |        |      |
+   *                                 |Space |ENTER |------|       |--------| ENTER  |Space |
+        *                                 |      |      |MO(L3)|       | MO(L3) |        |      |
+        *                                 `--------------------'       `------------------------'
+        */
+
+       // If it accepts an argument (i.e, is a function), it doesn't need KC_.
+       // Otherwise, it needs KC_*
+       [COLEMAK] = LAYOUT_ergodox(  // layer 0 : Colemak layout default layer
+           // left hand
+            KC_TRNS,        KC_1,         KC_2,   KC_3,   KC_4,    KC_5,   KC_LEFT,
+            KC_TAB,         KC_Q,         KC_W,   KC_F,   KC_P,    KC_G,   KC_TRNS,
+            KC_BSPC,        KC_A,         KC_R,   KC_S,   KC_T,    KC_D,
+            KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,    KC_B,   KC_TRNS,
+            TG(QWERTY),     KC_TRNS,      KC_TRNS,KC_UP,  MO(SYMB),
+            KC_LGUI,        KC_APP,
+            LGUI(S(KC_SPC)),
+            KC_SPC,KC_ENT,MO(NUMPAD),
+           // right hand
+            KC_RGHT,      KC_6,    KC_7,    KC_8,    KC_9,   KC_0,              KC_DELT,
+            KC_TRNS,      KC_J,    KC_L,    KC_U,    KC_Y,   KC_SCLN,           KC_TAB,
+            KC_H,         KC_N,    KC_E,    KC_I,    KC_O,   KC_DEL,
+            LGUI(KC_TAB), KC_K,    KC_M,    KC_COMM, KC_DOT, CTL_T(KC_SLSH),    KC_RSFT,
+            MO(SYMB),     KC_DOWN, KC_TRNS, KC_RALT, KC_RGUI,
+            CTL_T(KC_ESC), KC_LALT,
+            LGUI(S(KC_SPC)),
+            MO(NUMPAD), KC_ENT, KC_SPC),
+
+       /* Keymap 1: Basic QWERTY layer
+        *
+        * ,--------------------------------------------------.           ,--------------------------------------------------.
+        * | BkSp   |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   DEL  |
+        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+        * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L0  |           |  L0  |   Y  |   U  |   I  |   O  |   P  |   \    |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+   * | Ctrl   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L4|  CTRL  |
+   * |--------+------+------+------+------+------| Alt  |           | Alt  |------+------+------+------+------+--------|
+   * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+   * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   *   |Grv/L3|  '"  |AltShf| Left |MO(L2)|                                       |MO(L2)| Down |   [  |   ]  | ~L3  |
+   *   `----------------------------------'                                       `----------------------------------'
+   *                                        ,-------------.       ,---------------.
+   *                                        | Tab  | BkSp |       | Alt  |Ctrl/Esc|
+   *                                 ,------|------|------|       |------+--------+------.
+   *                                 |      |      | Home |       | PgUp |        |      |
+   *                                 | Space| LGUI |------|       |------|  RGUI  |Enter |
+   *                                 |      |      | End  |       | PgDn |        |      |
+   *                                `--------------------'       `----------------------'
+   */
+       // If it accepts an argument (i.e, is a function), it doesn't need KC_.
+       // Otherwise, it needs KC_*
+       [QWERTY] = LAYOUT_ergodox(  // layer 1
+           // left hand
+           KC_BSPC,           KC_1,         KC_2,   KC_3,   KC_4,    KC_5,   KC_LEFT,
+           KC_TAB,            KC_Q,         KC_W,   KC_E,   KC_R,    KC_T,   KC_TRNS,
+           KC_LCTRL,          KC_A,         KC_S,   KC_D,   KC_F,    KC_G,
+           KC_LSFT,           CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,    KC_B,   KC_LALT,
+           KC_TRNS, KC_QUOT,  LALT(KC_LSFT),  KC_LEFT, MO(SYMB),
+           KC_TAB,  KC_DELT,
+           KC_HOME,
+           KC_SPC, KC_LGUI, KC_END,
+           // right hand
+           KC_RGHT,      KC_6,    KC_7,    KC_8,    KC_9,              KC_0,           KC_DELT,
+           KC_TRNS,      KC_Y,    KC_U,    KC_I,    KC_O,              KC_P,           KC_BSLS,
+           KC_H,         KC_J,    KC_K,    KC_L,    LT(MDIA, KC_SCLN), KC_RCTRL,
+           KC_RALT,      KC_N,    KC_M,    KC_COMM, KC_DOT,            CTL_T(KC_SLSH), KC_RSFT,
+           MO(SYMB),     KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1,
+           KC_LALT, CTL_T(KC_ESC),
+           KC_PGUP,
+           KC_PGDN, KC_RGUI, KC_ENT),
+
+
+       /* Keymap 2: Symbol Layer
+        *
+        * ,--------------------------------------------------.           ,--------------------------------------------------.
+        * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+        * |        |      |   @  |   *  |   =  |   _  |      |           |      |   ~  |   {  |   }  |   #  |   :  |   F12  |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |   |  |   !  |   +  |   -  |   "  |------|           |------|   "  |   (  |   )  |   '  |   `  |        |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |      |   %  |   ^  |   $  |   &  |      |           |      |   ;  |   [  |   ]  |   \  |   /  |        |
+        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+        *   |      |      |      |      |      |                                       |      |      |      |      |      |
+        *   `----------------------------------'                                       `----------------------------------'
+        *                                        ,-------------.       ,-------------.
+        *                                        |      |      |       |      |      |
+        *                                 ,------|------|------|       |------+------+------.
+        *                                 |      |      |      |       |      |      |      |
+        *                                 |      |      |------|       |------|      |      |
+        *                                 |      |      |      |       |      |      |      |
+        *                                 `--------------------'       `--------------------'
+        */
+       // SYMBOL
+       [SYMB] = LAYOUT_ergodox(
+           // left hand
+           KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_AT,   KC_ASTR, KC_EQL,  KC_UNDS, KC_TRNS,
+           KC_TRNS, KC_PIPE, KC_EXLM, KC_PLUS, KC_MINS, S(KC_QUOTE),
+           KC_TRNS, KC_TRNS, KC_PERC, KC_CIRC, KC_DLR,  KC_AMPR, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS,
+
+           // right hand
+           KC_TRNS, KC_F6,      KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
+           KC_TRNS, KC_TILD,    KC_LCBR, KC_RCBR, KC_HASH, S(KC_SCLN), KC_F12,
+           S(KC_QUOTE),KC_LPRN, KC_RPRN, KC_QUOTE, KC_GRV, KC_TRNS,
+           KC_TRNS, KC_SCLN,    KC_LBRC, KC_RBRC, KC_BSLS, KC_SLSH, KC_TRNS,
+           KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS),
+
+       /* Keymap 3: Numpad Layer
+        *
+        * ,--------------------------------------------------.           ,--------------------------------------------------.
+        * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+        * |        |      |      |  UP  |      |      |      |           |      |   $  |   7  |   8  |   9  |   +  |        |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |      | LEFT | DOWN | RIGHT|      |------|           |------|   =  |   4  |   5  |   6  |   -  |        |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |      |      |      |      |      |      |           |      |      |   1  |   2  |   3  |   *  |        |
+        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+        *   |      |      |      |      |      |                                       |   ,  |   0  |   .  |   /  |      |
+        *   `----------------------------------'                                       `----------------------------------'
+        *                                        ,-------------.       ,-------------.
+        *                                        |      |      |       |      |      |
+        *                                 ,------|------|------|       |------+------+------.
+        *                                 |      |      |      |       |      |      |      |
+        *                                 |      |      |------|       |------|      |      |
+        *                                 |      |      |      |       |      |      |      |
+        *                                 `--------------------'       `--------------------'
+        */
+       // Numpad
+       [NUMPAD] = LAYOUT_ergodox(
+           // left hand
+           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+           KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,
+           KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRNS,
+           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+           KC_TRNS,KC_TRNS,
+           KC_TRNS,
+           KC_TRNS,KC_TRNS,KC_TRNS,
+           // right hand
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,
+           KC_TRNS, KC_DLR,  KC_7,    KC_8,    KC_9,    KC_PLUS,  KC_TRNS,
+                    KC_EQL,  KC_4,    KC_5,    KC_6,    KC_MINS,  KC_TRNS,
+           KC_TRNS, KC_AMPR, KC_1,    KC_2,    KC_3,    KC_ASTR,  KC_TRNS,
+                             KC_COMMA,KC_0,    KC_DOT,  KC_SLSH,  KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS),
+
+       /* Keymap 4: Media and mouse keys
+        *
+        * ,--------------------------------------------------.           ,--------------------------------------------------.
+        * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+        * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+        * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+        * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+        * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+        * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+        *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+        *   `----------------------------------'                                       `----------------------------------'
+        *                                        ,-------------.       ,-------------.
+        *                                        |      |      |       |      |      |
+        *                                 ,------|------|------|       |------+------+------.
+        *                                 |      |      |      |       |      |      |Brwser|
+        *                                 |      |      |------|       |------|      |Back  |
+        *                                 |      |      |      |       |      |      |      |
+        *                                 `--------------------'       `--------------------'
+        */
+       // MEDIA AND MOUSE
+       LAYOUT_ergodox(
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS,
+           // right hand
+           KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+           KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+           KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS, KC_TRNS, KC_WBAK),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+       [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+       // MACRODOWN only works in this function
+       switch(id) {
+               case 0:
+                       if (record->event.pressed) {
+                               register_code(KC_RSFT);
+                       } else {
+                               unregister_code(KC_RSFT);
+                       }
+                       break;
+       }
+       return MACRO_NONE;
+};
+
+// 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);
+
+       ergodox_board_led_off();
+       ergodox_right_led_1_off();
+       ergodox_right_led_2_off();
+       ergodox_right_led_3_off();
+       switch (layer) {
+               // TODO: Make this relevant to the ErgoDox EZ.
+               case 1:
+                       ergodox_right_led_1_on();
+                       break;
+               case 2:
+                       ergodox_right_led_2_on();
+                       break;
+               default:
+                       // none
+                       break;
+       }
+
+};
diff --git a/layouts/community/ergodox/jacobono/readme.md b/layouts/community/ergodox/jacobono/readme.md
new file mode 100644 (file)
index 0000000..f977054
--- /dev/null
@@ -0,0 +1,34 @@
+# Default Layer #
+
+I'm using the colemak layer -- customized a bit to work a bit better when using spacemacs as my editor.
+
+![default-layer](https://i.imgur.com/7uRqlWw.png)
+
+## Special Keys ##
+
+`SC1` => `LGUI + TAB`
+
+`SC2` => `LGUI + SPACE + TAB`
+
+`L1` => Switch to QWERTY Layout
+
+`T(L2)` => Toggle Symbol Layer
+
+`T(L3)` =>  Toggle Number and D-Pad Layer
+
+# QWERTY #
+
+Nothing special here -- just need this layer tucked away for the `WASD`.  Which is literally the only reason I use it.
+Just have the same button to toggle back to colemak.
+
+# Symbol Layer #
+
+![symbol-layer](https://i.imgur.com/ppT0rIU.png)
+
+This is just putting matching closing symbols next to each other -- useful when editing lisp.
+
+# Number and D-Pad Layer #
+
+Just a basic number layer with a D-PAD on the other side.
+
+![number-dpad-layer](https://i.imgur.com/Q0VHfyq.png)
diff --git a/layouts/community/ergodox/jafo/jafo-Notes b/layouts/community/ergodox/jafo/jafo-Notes
new file mode 100644 (file)
index 0000000..33a67d4
--- /dev/null
@@ -0,0 +1,10 @@
+These are notes on how to build and deploy the firmware to Ez, but they are
+from before the qmk restructuring.
+
+cd qmk_firmware/keyboard/ergodox_ez
+make LAYOUT_ergodox=jafo
+cp ergodox_ez.hex keymaps/jafo/
+/tmp/teensy.64bit
+Open hex keymap file
+Program
+Upload
diff --git a/layouts/community/ergodox/jafo/jafo-layout.pdf b/layouts/community/ergodox/jafo/jafo-layout.pdf
new file mode 100644 (file)
index 0000000..760a0ec
Binary files /dev/null and b/layouts/community/ergodox/jafo/jafo-layout.pdf differ
diff --git a/layouts/community/ergodox/jafo/keymap.c b/layouts/community/ergodox/jafo/keymap.c
new file mode 100644 (file)
index 0000000..081f188
--- /dev/null
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Grv    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   =    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Esc/Cmd|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------|  L2  |           |  L2  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  | Del  | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Ctrl/Esc| Alt|       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_EQL,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        GUI_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   TG(MDIA),
+        LT(SYMB,KC_GRV),KC_QUOT,      KC_DELT,  KC_LEFT,KC_RGHT,
+                                              CTL_T(KC_ESC),  KC_LALT,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             TG(MDIA),    KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------| LEFT | DOWN |  UP  | RIGHT|      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      | Lclk | Mclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/jafo/readme.md b/layouts/community/ergodox/jafo/readme.md
new file mode 100644 (file)
index 0000000..219cb06
--- /dev/null
@@ -0,0 +1,20 @@
+# ErgoDox EZ "jafo" Configuration
+
+This is a layout based on the ErgoDox Ez default layout, but with some
+customizations I made for my use-case.  I use Linux, vi and the i3 window
+manager, so I made these changes:
+
+- Arrow keys laid out in vi positions in media layer.
+
+- Esc (tap) and Win (held) to the left of A.  i3 uses Win key for navigation
+  and having that be symmetric on the left and right makes it easier.
+
+- Grave accent below equals, I was having a hard time using ~
+
+- Layer 2 switch below the L1 switch, so I can go into a mode where I get
+  arrow keys under my vi motion fingers.
+
+- Making the Ctrl (held) and Esc (tap) on my thumbs symmetric.  Not sure I
+  need that with the Esc left of A and Ctrl on the Z and / keys when held...
+
+![Jafo](https://i.imgur.com/ISEc630.png)
diff --git a/layouts/community/ergodox/jgarr/keymap.c b/layouts/community/ergodox/jgarr/keymap.c
new file mode 100644 (file)
index 0000000..359b2e1
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,-----------------------------------------------------.
+ * |   Grv  |   1  |   2  |   3  |   4  |   5  | Del  |           |Backspace|   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |---------+------+------+------+------+------+--------|
+ * |   Tab  |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L1     |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |         |------+------+------+------+------+--------|
+ * |Ctrl/Esc|   A  |   O  |   E  |   U  |   I  |------|           |---------|   D  |   H  |   T  |   N  |S / L2|   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh     |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |         |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `----------------+------+------+------+------+--------'
+ *   | Ctrl | LGui |  Alt | Left | Right|                                          |  Up  | Down |   [  |   ]  |  =   |
+ *   `----------------------------------'                                          `----------------------------------'
+ *                                        ,--------------.       ,-------------.
+ *                                        | AltShf| LGui |       | Alt  | ~L1  |
+ *                                 ,------|-------|------|       |------+--------+------.
+ *                                 |      |       | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp |------|       |------|  Enter |Space |
+ *                                 |      |ace    | End  |       | PgDn |        |      |
+ *                                 `---------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_DELT,
+        KC_TAB,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(1),
+        CTL_T(KC_ESC),  KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
+        KC_LCTL,  KC_LGUI,  KC_LALT,  KC_LEFT, KC_RGHT,
+                                              LALT(KC_LSFT),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_BSPC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS,
+             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   LT(MDIA, KC_S),   KC_MINS,
+             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_EQL,
+             KC_LALT,        KC_FN1,
+             KC_PGUP,
+             KC_PGDN,KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/josh/keymap.c b/layouts/community/ergodox/josh/keymap.c
new file mode 100644 (file)
index 0000000..5121fab
--- /dev/null
@@ -0,0 +1,214 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+//macros
+#define CTL_SFT_T 100 // open type
+#define CTL_SFT_G 101 // find references
+#define CTL_ALT_H 102 // open call hierarchy
+#define CTL_SFT_R 103 // open resource
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |           |M100/3|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |TAB /Alt|   Q  |   W  |   E  |   R  |   T  | Meh  |           | Meh  |   Y  |   U  |   I  |   O  |   P  |\ / ALT |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LCTL   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / CTL |
+ * |--------+------+------+------+------+------| ~L1  |           | ~L1  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | WIN  |  `   | M 102| M 101|AltShf|                                       |AltShf| Left | Down |  Up  | Right  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LALT |       | Alt  |  CAPS  |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------| Delete |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        LT(MDIA, KC_EQL),KC_1,        KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
+        ALT_T(KC_TAB),  KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   ALL_T(KC_NO),
+        KC_LCTL,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   MO(SYMB),
+        KC_LGUI,        KC_GRV, M(CTL_ALT_H),M(CTL_SFT_G),LALT(KC_LSFT),
+                                              CTL_T(KC_APP),  KC_LALT,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             LT(M(CTL_SFT_T),
+                M(CTL_SFT_R)),KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   LT(MDIA, KC_MINS),
+             MEH_T(KC_NO),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,                 KC_BSLS,
+                              KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN), CTL_T(KC_QUOT),
+             MO(SYMB),        KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                        LALT(KC_LSFT),KC_LEFT,KC_DOWN,KC_UP,            KC_RIGHT,
+             KC_LALT,        KC_CAPS,
+             KC_PGUP,
+             KC_PGDN,KC_DEL, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  | F11  |           | F12  |  F6  |  F7  |  F8  |  F9  |  F10 |  CALC  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Left | Down |  Up  | Right|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F11,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_F12,  KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_CALC,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                KC_LEFT, KC_DOWN,KC_UP,   KC_RIGHT,KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                         KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |RESET |           |RESET |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       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_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+        case 0:
+            if (record->event.pressed) {
+                SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+            }
+            break;
+        case CTL_SFT_T:
+            if (record->event.pressed) {
+                return MACRO(D(LCTL), D(LSFT), T(T), END);
+            }
+            return MACRO(U(LCTL), U(LSFT), END);
+            break;
+        case CTL_SFT_G:
+            if (record->event.pressed) {
+                return MACRO(D(LCTL), D(LSFT), T(G), END);
+            }
+            return MACRO(U(LCTL), U(LSFT), END);
+            break;
+        case CTL_ALT_H:
+            if (record->event.pressed) {
+                return MACRO(D(LCTL), D(LALT), T(H), END);
+            }
+            return MACRO(U(LCTL), U(LALT), END);
+            break;
+        case CTL_SFT_R:
+            if (record->event.pressed) {
+                return MACRO(D(LCTL), D(LSFT), T(R), END);
+            }
+            return MACRO(U(LCTL), U(LSFT), END);
+            break;
+    }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/josh/readme.md b/layouts/community/ergodox/josh/readme.md
new file mode 100644 (file)
index 0000000..cee19d4
--- /dev/null
@@ -0,0 +1,8 @@
+Layout is based on the default layout that comes on the ergodox infinity. Focused mostly on making ctl and alt easy to reach. I spend most my day working in Eclipse which has just so many 3 key shortcuts.
+
+* Removed numpad keys from symbol layer (I don't use them)
+* Added arrow keys under h, j, k, l on symbol layer. vi movement keys!
+* Added a few macros for eclipse hotkeys that I used all the time
+* Added calc button on symbol layer
+* tap vs hold on tab and \. Gives alt, ctl and shift on both sides of the keyboard
+
diff --git a/layouts/community/ergodox/kastyle/keymap.c b/layouts/community/ergodox/kastyle/keymap.c
new file mode 100644 (file)
index 0000000..9237154
--- /dev/null
@@ -0,0 +1,189 @@
+/* Setup to approximate a Kinesis Advantage with an eye to use in a
+ * Mac/OSX environment 
+ * This version adds a hand swap feature to flip the keyboard */
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LGUI |           | App  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|   \  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  |Grv/L1|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                      ,---------------.       ,---------------.
+ *                                      |  LGUI  |Al/Esc|       |Al/Esc|  RGUI  |
+ *                               ,------|--------|------|       |------+--------+------.
+ *                               |      |        | Home |       | PgUp |        |      |
+ *                               |Backsp|   Del  |------|       |------| Enter  | Space|
+ *                               |      |        | End  |       | PgDn |        |      |
+ *                               `----------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+    // left hand
+    KC_EQL,          KC_1,         KC_2,          KC_3,    KC_4,    KC_5,   KC_LGUI,
+    KC_TAB,          KC_Q,         KC_W,          KC_E,    KC_R,    KC_T,   TG(1),
+    KC_LCTL,         KC_A,         KC_S,          KC_D,    KC_F,    KC_G,
+    KC_LSFT,         CTL_T(KC_Z),  KC_X,          KC_C,    KC_V,    KC_B,   ALL_T(KC_NO),
+    KC_FN1, KC_BSLS,      LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+                                                                    KC_LGUI,         ALT_T(KC_ESC),
+                                                                                     KC_HOME,
+                                                                    KC_BSPC, KC_DEL, KC_END,
+    // right hand
+    KC_APP,       KC_6,    KC_7,    KC_8,    KC_9,    KC_0,              KC_MINS,
+    TG(1),        KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,              KC_BSLS,
+                  KC_H,    KC_J,    KC_K,    KC_L,    LT(MDIA, KC_SCLN), KC_QUOT,
+    MEH_T(KC_NO), KC_N,    KC_M,    KC_COMM, KC_DOT,  CTL_T(KC_SLSH),    KC_RSFT,
+                           KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC,           KC_FN1,
+    ALT_T(KC_ESC),         KC_RGUI,
+    KC_PGUP,
+    KC_PGDN,      KC_ENT,  KC_SPC
+),
+
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | PrScr  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | ScrLk  |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Pause  |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_PSCR, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+       KC_SLCK, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+       KC_PAUS, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
+       KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_SWAP_HANDS_TAP_KEY(KC_GRV)       // FN1 - Tap = Grave/Tilde - Hold Momentary swap hands
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/kastyle/readme.md b/layouts/community/ergodox/kastyle/readme.md
new file mode 100644 (file)
index 0000000..944286a
--- /dev/null
@@ -0,0 +1,14 @@
+The kastyle keymap was originally intended to remap the ErgoDox EZ to more
+closely approximate the layout of a Kinesis Advantage. Notable changes
+over the stock ErgoDox layout include:
+
+  * Re-arragnement of tab, enter, space, and delete to match the Kinesis
+  * Addition of print screen, pause, etc. keys following the kines-ish keymap
+  on L1
+  * GUI keys have replaced Ctrl on the thumb keys (for Mac use), and Alt keys
+  are mapped to allow Esc on tap (good for Vi users)
+  * Most notably, the addition of a momentary one-handed mode for quick and
+  easy access to keys on the other half of the keyboard, e.g. while using a 
+  mouse in one hand, one may add text to a dialogue box with the other without
+  having to reach across the keyboard or remove one's hand from the mouse.
+
diff --git a/layouts/community/ergodox/kines-ish/keymap.c b/layouts/community/ergodox/kines-ish/keymap.c
new file mode 100644 (file)
index 0000000..da39b52
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Esc  | Grv  |Insert| Left | Right|                                       |  Up  | Down |   [  |   ]  |  L2  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Ctrl | Alt  |       | LGui | Ctrl |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Home |       | PgUp |      |      |
+ *                                 |Backsp| Del  |------|       |------| Enter| Space|
+ *                                 |ace   |      | End  |       | PgDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,   KC_1,    KC_2,    KC_3,     KC_4,     KC_5,  KC_LEFT,
+        KC_TAB,   KC_Q,    KC_W,    KC_E,     KC_R,     KC_T,  TG(SYMB),
+        KC_CAPS,  KC_A,    KC_S,    KC_D,     KC_F,     KC_G,
+        KC_LSFT,  KC_Z,    KC_X,    KC_C,     KC_V,     KC_B,  ALL_T(KC_NO),
+        KC_ESC,   KC_GRV,  KC_INS,  KC_LEFT,  KC_RGHT,
+                                               KC_LCTL,KC_LALT,
+                                                       KC_HOME,
+                                         KC_BSPC,KC_DEL,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,     KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,  KC_QUOT,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,  KC_FN2,
+             KC_LGUI, KC_RCTL,
+             KC_PGUP,
+             KC_PGDN, KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | PrScr  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | ScrLk  |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Pause  |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_PSCR,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_SLCK,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_PAUS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/kines-ish/readme.md b/layouts/community/ergodox/kines-ish/readme.md
new file mode 100644 (file)
index 0000000..5d39a05
--- /dev/null
@@ -0,0 +1,19 @@
+This keymap attempts to match the Kinesis Contoured (aka Advantage) default
+layout as closely as possible. See
+http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf
+
+Apart from the obvious mappings, this keymap also:
+
+* removes the dual-purpose momentary layer/normal keys: Z, /, and Grv;
+  because the author--coming from a Kinesis keyboard--finds the delays and
+  accidental modifiers to be more disconcerting than helpful.
+
+* puts Esc in the bottom left since there's no place for it in the top
+  left to match the Kinesis.
+
+* changes the bottom-right key into an L2 toggle since there's otherwise no
+  way to get to L2.
+
+* adds PrScr, ScrLk and Pause to the L1 keymap, down the left side, since
+  they're present on the Kinesis but not available in the default
+  ergodox_ez keymap.
diff --git a/layouts/community/ergodox/kristian/keymap.c b/layouts/community/ergodox/kristian/keymap.c
new file mode 100644 (file)
index 0000000..aeb3112
--- /dev/null
@@ -0,0 +1,79 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "keymap_fr_ch.h"
+#include "keymap_french.h"
+#include "keymap_german.h"
+#include "keymap_german_ch.h"
+#include "keymap_nordic.h"
+#include "keymap_norwegian.h"
+#include "keymap_spanish.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+[0] = LAYOUT_ergodox(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_APOS),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_APOS),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER),
+
+[1] = LAYOUT_ergodox(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER),
+
+[2] = LAYOUT_ergodox(KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LALT,KC_LGUI,KC_MS_BTN1,KC_MS_BTN2,KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_LGUI,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_ESCAPE,KC_MS_WH_UP,KC_MS_WH_DOWN,KC_MS_ACCEL0,KC_MS_ACCEL1),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_TOGGLE(1)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+            break;
+        case 4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case 5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        case 6:
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        case 7:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        default:
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/layout.json b/layouts/community/ergodox/layout.json
new file mode 100644 (file)
index 0000000..5348e91
--- /dev/null
@@ -0,0 +1,26 @@
+[{x:3.5,a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"","",{x:4.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
diff --git a/layouts/community/ergodox/maz/keymap.c b/layouts/community/ergodox/maz/keymap.c
new file mode 100644 (file)
index 0000000..ad425a7
--- /dev/null
@@ -0,0 +1,229 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define ARRW 2 // arrow keys
+#define MDIA 3 // media keys, including mouse
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           | CAPS |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  ESC   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |  Grv |      |*SYMB*|*ARRW*|                                       |*MDIA*|*SYMB*|   [  |  ]   |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 | Space| Bksp |------|       |------|  Tab   |Enter |
+ *                                 | ctrl | gui  | Alt  |       | Alt  |  gui   | ctrl |
+ *                                 `--------------------'       `----------------------'
+ */
+    // TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
+    // not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,                 KC_1,             KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
+        KC_TAB,                 KC_Q,             KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_ESC,                 KC_A,             KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,                KC_Z,             KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        KC_TRNS,                KC_GRV,  KC_TRNS,MO(SYMB),MO(ARRW),
+                                                    KC_TRNS,  KC_TRNS,
+                                                              KC_TRNS,
+                                               CTL_T(KC_SPC),GUI_T(KC_BSPC),KC_LALT,
+        // right hand
+        KC_TRNS,      KC_6,   KC_7,             KC_8,    KC_9,   KC_0,             KC_MINS,
+        KC_CAPSLOCK,     KC_Y,   KC_U,             KC_I,    KC_O,   KC_P,             KC_BSLS,
+                      KC_H,   KC_J,             KC_K,    KC_L,   KC_SCLN,          KC_QUOT,
+        MEH_T(KC_NO), KC_N,   KC_M,             KC_COMM, KC_DOT, KC_SLSH,          KC_RSFT,
+        MO(MDIA),                  MO(SYMB), KC_LBRC,KC_RBRC, KC_TRNS,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_RALT,GUI_T(KC_TAB), CTL_T(KC_ENT)
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   .    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_DOT,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_TRNS,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Arrow keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |PGDOWN| PGUP |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------| LEFT | DOWN |  UP  |RIGHT |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | HOME | END  |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[ARRW] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_PGDOWN, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN,   KC_UP,   KC_RGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_HOME,   KC_END,  KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 3: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |Mute  |VolDn | VolUp|      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      | Prev | Play | Next |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Brwser|      |      |       |      |      |      |
+ *                                 |Back  |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_WBAK, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/maz/readme.md b/layouts/community/ergodox/maz/readme.md
new file mode 100644 (file)
index 0000000..000a8d0
--- /dev/null
@@ -0,0 +1,121 @@
+# Introduction
+
+## Motivation
+I created this keymap in an attempt to optimize my typing experience in text editors (vim and emacs) and the command-line.
+
+More specifically, I wanted to have each modifier key controlled by the thumbs, the most powerful of the digits (I think). This cured me of emacs pinky, which had surprisingly grown quite quickly over the first two weeks of using emacs & emacs-like commands on the command-line.
+
+## Changes
+There are some miscellaneous changes that I kind of forgot I made, such as moving the tilde key, but you can check out the visual layouts below, which I **have** kept up to date.
+### Modifier Keys
+The biggest changes from the ergodox ez default keymap are the modifiers on the thumb cluster. You must hold each key down for a certain amount of time (forgot where this is specified) in order for the modifier key to activate.
+
+### Layers
+* an arrow layer (ARRW) has been created because the default arrow keys suck. Beware, these do use vim bindings because they're the best.
+* the keys in the media layer have been moved around for a better experience (imo), especially with respect to the mouse
+* the three layers (SYMB, MDIA, and ARRW) now have their own dedicated keys accessible by the thumbs in the basic layer
+* caps lock has been put in place of the right-side `L1` toggle key because there was really no need to have two keys to toggle one layer, and caps lock is useful when writing queries
+** unfortunatley, caps lock is not indicated by an LED, so be careful. I use caps lock just like I do insert in vim; for a short burst of text. I always turn off caps lock when I change my focus
+
+### Removal Of Keys
+I also removed a bunch of unnecessary keys that I wasn't going to use anyway. You'll see such keys are blank in the basic layer. I will probably add some more keys in place of these, but I'm fine for now; I just didn't want the distraction of extra keys I barely use.
+
+## Caveats
+### Thumb Cluster Range
+I've heard many complaints about the thumb clusters. I agree that the three outter keys are almost impossible to reach. I am going to try to build [Matt Adereth's keyboard](https://github.com/adereth/dactyl-keyboard), which looks to have a better layout. However, I am able to comfortably use the three modifier keys mainly because:
+* I use DCS keycaps with SA Row 3 keycaps where the Alt keys are
+* I have relatively large hands (I guarantee you there's no problem - I guarantee you)
+
+### Dangerous positioning
+I think it's quite dangerous to put something like control on the same key as enter. Alas, this is a risk I'm willing to accept, and so should you if you decide to use this keymap. I tend to avoid putting myself in situtations in which disaster could occur with one fell swoop of a keypress.
+
+# Keymap
+## Keymap 0: Basic layer
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+|   =    |   1  |   2  |   3  |   4  |   5  |      | |      |   6  |   7  |   8  |   9  |   0  |   -    |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  | | CAPS |   Y  |   U  |   I  |   O  |   P  |   \    |
+|--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+|  ESC   |   A  |   S  |   D  |   F  |   G  |------| |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+|--------+------+------+------+------+------| Hyper| | Meh  |------+------+------+------+------+--------|
+| LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+  |      |  Grv |      |*SYMB*|*ARRW*|                             |*MDIA*|*SYMB*|   [  |  ]   |      |
+  `----------------------------------'                             `----------------------------------'
+                                   ,-------------.     ,-------------.
+                                   |      |      |     |      |      |
+                            ,------|------|------|     |------+--------+------.
+                            |      |      |      |     |      |        |      |
+                            | Space| Bksp |------|     |------|  Tab   |Enter |
+                            | ctrl | gui  | Alt  |     | Alt  |  gui   | ctrl |
+                            `--------------------'     `----------------------'
+
+```
+
+## Keymap 1: Symbol Layer
+The only change here is the *dot* (`.`) character moving from next to `0` next to `+` in order to move the layer keys in the correct position
+```
+  ,--------------------------------------------------.           ,--------------------------------------------------.
+  |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+  |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   .    |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+    |      |      |      |      |      |                                       |      |      |   0  |   =  |      |
+    `----------------------------------'                                       `----------------------------------'
+                                         ,-------------.       ,-------------.
+                                         |      |      |       |      |      |
+                                  ,------|------|------|       |------+------+------.
+                                  |      |      |      |       |      |      |      |
+                                  |      |      |------|       |------|      |      |
+                                  |      |      |      |       |      |      |      |
+                                  `--------------------'       `--------------------'
+```
+
+## Keymap 2: Arrow Layer
+```
+  ,--------------------------------------------------.           ,--------------------------------------------------.
+  |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+  |        |      |      |      |      |      |      |           |      |      |PGDOWN| PGUP |      |      |        |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |      |      |      |      |      |------|           |------| LEFT | DOWN |  UP  |RIGHT |      |        |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |      |      |      |      |      |      |           |      |      | HOME | END  |      |      |        |
+  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+    |      |      |      |      |      |                                       |      |      |      |      |      |
+    `----------------------------------'                                       `----------------------------------'
+                                         ,-------------.       ,-------------.
+                                         |      |      |       |      |      |
+                                  ,------|------|------|       |------+------+------.
+                                  |      |      |      |       |      |      |      |
+                                  |      |      |------|       |------|      |      |
+                                  |      |      |      |       |      |      |      |
+                                  `--------------------'       `--------------------'
+```
+
+## Keymap 3: Media and mouse keys
+``` 
+  ,--------------------------------------------------.           ,--------------------------------------------------.
+  |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+  |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+  |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Lclk | Rclk |      |      |        |
+  |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+  |        |      |Mute  |VolDn | VolUp|      |      |           |      |      |      |      |      |      |        |
+  `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+    |      |      | Prev | Play | Next |                                       |      |      |      |      |      |
+    `----------------------------------'                                       `----------------------------------'
+                                         ,-------------.       ,-------------.
+                                         |      |      |       |      |      |
+                                  ,------|------|------|       |------+------+------.
+                                  |Brwser|      |      |       |      |      |      |
+                                  |Back  |      |------|       |------|      |      |
+                                  |      |      |      |       |      |      |      |
+                                  `--------------------'       `--------------------'
+```
diff --git a/layouts/community/ergodox/mclennon_osx/README.md b/layouts/community/ergodox/mclennon_osx/README.md
new file mode 100644 (file)
index 0000000..28cdb7c
--- /dev/null
@@ -0,0 +1,5 @@
+# Ergodox EZ for OS X
+
+This keymapping is designed to be reasonably familiar to an ordinary Mac keyboard while taking advantage of the Ergodox EZ's features. Caps lock instead enables a layer which allows a user to use HJKL as arrow keys and to control media. Shift and control have additional mappings on S and D to provide easier access while holding down caps lock. 
+
+If you choose to compile this yourself, be sure to compile with `#define PREVENT_STUCK_MODIFIERS` in your `config.h`. Firmware built using [qmk_firmware](https://github.com/qmk/qmk_firmware/).
diff --git a/layouts/community/ergodox/mclennon_osx/keymap.c b/layouts/community/ergodox/mclennon_osx/keymap.c
new file mode 100644 (file)
index 0000000..dd37c5e
--- /dev/null
@@ -0,0 +1,144 @@
+// Media keys work on OSX, but not on Windows.
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0  // Default layer
+#define AUXI 1  // Auxiliary layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ~`   |   1  |   2  |   3  |   4  |   5  |   6  |           |   7  |   8  |   9  |   0  |   -_ |   += |  Bkspc |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   Tab  |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  Del |   Y  |   U  |   I  |   O  |   P  |   |\   |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   L1   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;:  |  Enter |
+ * |--------+------+------+------+------+------| {[   |           | }]   |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   <, |   >. |  ?/  |   "'   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl |      |      |      |  Esc |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |Power |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 | LGui | LAlt |------|       |------|  Bkspc |Space |
+ *                                 |      |      |      |       |  Del |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,     KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
+        KC_TAB,     KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   MO(1),
+        MO(1),      KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSHIFT,  KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_LBRC,
+        KC_LCTL,    KC_TRNS,KC_TRNS,KC_TRNS,KC_ESC,
+                                                    KC_TRNS,KC_TRNS,
+                                                            KC_TRNS,
+                                            KC_LGUI,KC_LALT,KC_TRNS,
+
+        // right hand
+        KC_7,       KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,
+        KC_DELETE,  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_BSLASH,
+                    KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_ENT,
+        KC_RBRC,    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_QUOT,
+                         KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_PWR,    KC_TRNS,
+        KC_TRNS,
+        KC_DELETE,    KC_BSPC, KC_SPC
+    ),
+/* Keymap 1: Auxiliary Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  | F10  | F11  | F12  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      | TRNS |           |      | Mute | VolDn| VolUp| Play |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   TRNS |      |LShift| LCtrl|      |      |------|           |------| LEFT | DOWN | UP   |RIGHT |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LShift |      |      |      |      |      |      |           |      | MPrv | MNxt |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 | LGui | LAlt |------|       |------| Bkspc| Space|
+ *                                 |      |      |      |       |  Del |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// AUXILIARY
+[AUXI] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_LSHIFT,KC_LCTL, KC_TRNS, KC_TRNS,
+       KC_LSHIFT,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_LGUI, KC_LALT, KC_TRNS,
+       // right hand
+       KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS,
+       KC_TRNS,  KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT,KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_PWR, KC_TRNS,
+       KC_TRNS,
+       KC_DELETE, KC_BSPC, KC_SPC
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(AUXI)                // FN1 - Momentary Layer 1 (Auxiliary)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/mpiechotka/keymap.c b/layouts/community/ergodox/mpiechotka/keymap.c
new file mode 100644 (file)
index 0000000..cfd5b19
--- /dev/null
@@ -0,0 +1,276 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_colemak.h"
+
+enum {
+    BASE = 0,
+    BASE_CM,
+    SYMB,
+    MACR
+};
+
+enum {
+    LWIN = 1,
+    PC1,
+    PC2,
+    PC3,
+    PC4,
+    DL_BASE,
+    DL_BASE_CM,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0a: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
+ * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | LAlt | LGui |       | LAlt | RAlt |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |Backsp| Home |       | PgUp |        |      |
+ *                                 | Space|ace/  |------|       |------|  Tab/  |Enter/|
+ *                                 | /Shft|Ctrl  |  1)  |       |  2)  |  Ctrl  |Shift |
+ *                                 `--------------------'       `----------------------'
+ *
+ * 1) End/L1
+ * 2) PgDown/L2
+ */
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,     KC_W,   KC_F,   KC_P,          KC_G,   TG(SYMB),
+        KC_ESC,         KC_A,     KC_R,   KC_S,   KC_T,          KC_D,
+        KC_LSFT,        KC_Z,     KC_X,   KC_C,   KC_V,          KC_B,   KC_EQL,
+        LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
+                                                             KC_LALT,       F(LWIN),
+                                                                            KC_HOME,
+                                               SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END),
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
+                          KC_H,   KC_N,   KC_E,   KC_I,   KC_O,             KC_QUOT,
+             KC_MINS,     KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
+             KC_LALT,         KC_RALT,
+             KC_PGUP,
+             LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT)
+    ),
+/* Keymap 0b: Basic layer (Colemak keycodes or QWERTY)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
+ * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | LAlt | LGui |       | LAlt | RAlt |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |Backsp| Home |       | PgUp |        |      |
+ *                                 | Space|ace/  |------|       |------|  Tab/  |Enter/|
+ *                                 | /Shft|Ctrl  |  1)  |       |  2)  |  Ctrl  |Shift |
+ *                                 `--------------------'       `----------------------'
+ *
+ * 1) End/L1
+ * 2) PgDown/L2
+ */
+[BASE_CM] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
+        KC_DELT,        CM_Q,     CM_W,   CM_F,   CM_P,          CM_G,   TG(SYMB),
+        KC_ESC,         CM_A,     CM_R,   CM_S,   CM_T,          CM_D,
+        KC_LSFT,        CM_Z,     CM_X,   CM_C,   CM_V,          CM_B,   KC_EQL,
+        LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
+                                                             KC_LALT,       F(LWIN),
+                                                                            KC_HOME,
+                                               SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END),
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    CM_J,   CM_L,   CM_U,   CM_Y,   KC_P, /*CM_SCLN*/ KC_BSLS,
+                          CM_H,   CM_N,   CM_E,   CM_I,   CM_O,             KC_QUOT,
+             KC_MINS,     CM_K,   CM_M,   CM_COMM,CM_DOT, CTL_T(CM_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
+             KC_LALT,         KC_RALT,
+             KC_PGUP,
+             LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT)
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Macros
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | DLa  | DLb  |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | PC1  | PC2  | PC3  | PC4  |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MACROS
+[MACR] = LAYOUT_ergodox(
+       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_NO,   F(DL_BASE),F(DL_BASE_CM),KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_NO,   F(PC1),    F(PC2),       F(PC3),  F(PC4),  KC_NO,
+       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_NO,   KC_NO,     KC_NO,        KC_NO,   KC_NO,
+                                           KC_TRNS,KC_TRNS,
+                                                   KC_TRNS,
+                                   KC_TRNS,KC_TRNS,KC_TRNS,
+    // right hand
+       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+                 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,
+       KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+                          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [LWIN] = ACTION_MACRO(LWIN),
+    [PC1] = ACTION_MACRO(PC1),
+    [PC2] = ACTION_MACRO(PC2),
+    [PC3] = ACTION_MACRO(PC3),
+    [PC4] = ACTION_MACRO(PC4),
+    [DL_BASE] = ACTION_DEFAULT_LAYER_SET(BASE),
+    [DL_BASE_CM] = ACTION_DEFAULT_LAYER_SET(BASE_CM)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch(id) {
+    case 0:
+        if (record->event.pressed) {
+            register_code(KC_RSFT);
+        } else {
+            unregister_code(KC_RSFT);
+        }
+        break;
+    case LWIN:
+        if (record->event.pressed) {
+             register_code(KC_RSFT);
+             unregister_code(KC_RSFT);
+             register_code(KC_LGUI);
+        } else {
+             unregister_code(KC_LGUI);
+        }
+        break;
+    case PC1:
+        if (!record->event.pressed) {
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END);
+        }
+        break;
+    case PC2:
+        if (!record->event.pressed) {
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END);
+        }
+        break;
+    case PC3:
+        if (!record->event.pressed) {
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END);
+        }
+        break;
+    case PC4:
+        if (!record->event.pressed) {
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END);
+        }
+        break;
+    }
+    return MACRO_NONE;
+}
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case SYMB:
+            ergodox_right_led_1_on();
+            break;
+        case MACR:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+};
diff --git a/layouts/community/ergodox/mpiechotka/readme.md b/layouts/community/ergodox/mpiechotka/readme.md
new file mode 100644 (file)
index 0000000..785400d
--- /dev/null
@@ -0,0 +1,6 @@
+# ErgoDox EZ mpiechotka Configuration
+
+Modification of ErgoDox EZ Colemak layout with additional QWERTY/software Colemak layer and change of the special keys.
+
+
+
diff --git a/layouts/community/ergodox/msc/keymap.c b/layouts/community/ergodox/msc/keymap.c
new file mode 100644 (file)
index 0000000..5296263
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Cmd  | Alt  |AltShf| Left | Right|                                       | Left | Down |  Up  |Right | L2  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        KC_LGUI,KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_LEFT,  KC_DOWN, KC_UP, KC_RIGHT,       TG(MDIA),
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | Mute |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | Prev |VolDn |VolUp | Next |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 | Lclk | Rclk |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/msc/readme.md b/layouts/community/ergodox/msc/readme.md
new file mode 100644 (file)
index 0000000..ff24d2b
--- /dev/null
@@ -0,0 +1,32 @@
+# MSC Configuration
+
+### Based mostly on the ErgoDox EZ default layout with optimizations for coding on osx.
+
+#### Expecting the user to rely on Coder Layer this keymap removes some of the duplicate symbol keys in the lower portions of the board and replaces them with arrow keys and modifiers. The Media Layer is also updated to match the change in the arrow keys and the left and right click buttons are moved under the thumb position. The Media layer is now reached with toggle button in the lower right.
+
+### Main Layer
+
+![Main Layer](https://i.imgur.com/n1Bl4R3.png)
+
+### Code Layer
+
+![Code Layer](https://i.imgur.com/1B0vfpG.png)
+
+### Media Layer
+
+![Media Layer](https://i.imgur.com/CGPyOfj.png)
+
+## Changelog
+
+Version 1.0
+
+- Changed the temp code layer key in the bottom right to toggle media layer
+- Changed the temp media key to only be ";"
+- Changed right hand bottom row to match vim home row nav directions
+- Changed media keys to match arrow key changes
+- Changed media left and right click to spacebar and backspace locations
+- Changed bottom left to Cmd
+- Changed single quote on left bottom row to alt
+
+#### Coming Soon:
+- A new layer for Blender editing with a focus on left hand shortcut and a righthand num pad to control the view in Blender.
diff --git a/layouts/community/ergodox/naps62/keymap.c b/layouts/community/ergodox/naps62/keymap.c
new file mode 100644 (file)
index 0000000..481b0dd
--- /dev/null
@@ -0,0 +1,187 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Esc   | 1  ! | 2  @ | 3  # | 4  $ | 5  % | Lang |           | Esc  | 6  ^ | 7  & | 8  * | 9  ( | 0  ) | Bckspc |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  | \   |  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Ctrl  |   A  |   S  |  D   |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  | ;  : |  ' "   |
+ * |--------+------+------+------+------+------|  L1  |           |  L1  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  | ,  < | . >  | /  ? |  - _   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  L1  | `  ~ | ' "  | \  | |  L2  |                                       |  {   |  }   | [  { | ]  } |  L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,--------------.       ,---------------.
+ *                                        | Home  | End  |       | PgUp  |Insert |
+ *                                 ,------|-------|------|       |-------+-------+------.
+ *                                 |      |       | LGui |       | Del   |       |      |
+ *                                 | Space|  Alt  |------|       |-------| Enter |Space |
+ *                                 |      |       | LGui |       | Bcsp  |       |      |
+ *                                 `---------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+  // left hand
+  KC_ESC,     KC_1,    KC_2,     KC_3,     KC_4,               KC_5,  LGUI(KC_SPC),
+  KC_TAB,     KC_Q,    KC_W,     KC_E,     KC_R,               KC_T,  MO(2),
+  KC_LCTL,    KC_A,    KC_S,     KC_D,     KC_F,               KC_G,
+  KC_LSFT,    KC_Z,    KC_X,     KC_C,     KC_V,               KC_B,  MO(1),
+  MO(1),      KC_GRV,  KC_QUOT,  KC_BSLS,  MO(2),
+
+                                               KC_HOME,   KC_END,
+                                                          KC_LGUI,
+                                      KC_SPC,  KC_LALT,   KC_LGUI,
+
+  // right hand
+  KC_ESC,  KC_6,     KC_7,     KC_8,     KC_9,     KC_0,      KC_BSPC,
+  MO(2),   KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,      KC_BSLS,
+           KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,   KC_QUOT,
+  MO(1),   KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,   KC_MINS,
+                     KC_LCBR,  KC_RCBR,  KC_LBRC,  KC_RBRC,   MO(1),
+
+  KC_PGUP,  KC_INS,
+  KC_DEL,
+  KC_BSPC,  KC_ENT,    KC_SPC
+),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   =  |    . |   0  |   -  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_EQL,KC_DOT,  KC_0,    KC_MINS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |GuiUp | Expl |      | Term |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |GuiLft|GuiDwn|GuiRgt|      |      |------|           |------| Left | Down |  Up  |Right |      |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |Browsr|      |           |      |      |VolDwn|VolUp | Mute |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       | Play | Prev | Next |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+         RESET, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
+       KC_TRNS, KC_TRNS,        LGUI(KC_W),  LGUI(KC_E),     KC_BTN1, LGUI(KC_T), KC_TRNS,
+       KC_TRNS, LGUI(KC_A),     LGUI(KC_S),  LGUI(KC_D),     KC_MS_D, KC_MS_R,
+       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
+       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,  KC_TRNS, KC_TRNS,
+                          KC_MPLY, KC_MPRV, KC_MNXT,  KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,  KC_WBAK, KC_WFWD
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/naps62/readme.md b/layouts/community/ergodox/naps62/readme.md
new file mode 100644 (file)
index 0000000..14728e4
--- /dev/null
@@ -0,0 +1,29 @@
+# ErgoDox EZ naps62 Configuration
+
+## Motivation
+
+I wanted a layout that suited my Linux & Vim usage. I also didn't like the lack of efficient access to some of the more common special characters used in programming.
+
+## Key features / changes
+
+### Base Layer (L1)
+
+* **No `MT(mod, kc)` keys (modifier when pressed, key when tapped).** Those keys work with a global timeout. When a key press is shorter than the timeout, it's considered a tap, otherwise it's a hold. I couldn't find any particular timeout that would work for me. I need to use mods extremely fast, but also want the confort of using them more slowly in other occasions. So I gave up on this feature altogether.
+* **Direct access to `{}[]`.** When programming, these are used extremely often. I was still getting used to the coder layer, and I prefer the arrows on the home row, so I used the bottom-right keys for this.
+* **Layer keys everywhere.** I either use my little finger or my index finger to go to L1, whichever is more confortable in any given situation. L2 is not used while coding/writing, so I don't need an extremely-optimized access to it.
+* **Lang key.** This is nothing more than `Super-Space` combo, which in my systems (both Linux & Windows) is the shortcut to change the keyboard language. I'm Portuguese, so I often cycle between US layout for coding, and PT layout for writing.
+* **Special chars on the right-most column.** I only use Ctrl & Shift keys on the left side, so I used the right keys to include some of the more useful special characters as well.
+
+### Coder Layer (L2)
+
+* The `=` and `-` signs where nowhere to be found. `-` was already on the base layer, but it's still useful to have a fully-featured NumPad on the coder layer.
+
+### Media Layer (L3)
+
+* **Better media keys**. Why was Play/Pause so far away? And where was Mute? I put all my media keys close to each other, including the missing ones
+* **Arrow keys on home row.** I use vim, so I'm always on my home row. I use this sometimes to get around, but not as often as to need them on the base row. I'm fine with them here
+* I don't use mouse keys. They're still set up, and I made some changes as an experiment, but I mostly forgot they exist by now.
+
+## Author
+
+[Miguel Palhas](https://github.com/naps62)
diff --git a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c
new file mode 100644 (file)
index 0000000..3991350
--- /dev/null
@@ -0,0 +1,408 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+#include "keymap_extras/keymap_german.h"
+
+#define UM 0
+
+#define L0   0      // layer_0
+#define L1   1      // layer_1  
+#define L2   2      // layer_2
+#define L3   3      // layer_3
+#define L4   4      // layer_4
+#define L5   5      // layer_5
+#define L6   6      // layer_6
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+    .------------------------------------.------------------------------------.
+    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |VOL- |VOL+ | !MUTE |PLAY |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     |-----| !-----|     !     !
+                      ! CTL !     ! ALT ! ! CTL !     ! ALT !
+                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
+                      '-----------------' '-----------------'
+ */
+[L0] = LAYOUT_ergodox(
+ KC_ESC,  DE_1,    DE_2,     DE_3,    DE_4,     DE_5,    DE_ACUT,
+ KC_TAB,  DE_X,    DE_V,     DE_L,    DE_C,     DE_W,    KC_PSCR,
+ MO(1),   DE_U,    DE_I,     DE_A,    DE_E,     DE_O,
+ KC_LSFT, DE_UE,   DE_OE,    DE_AE,   DE_P,     DE_Z,    KC_SPACE,
+ KC_LCTL, KC_LGUI, KC_LALT,  MO(3),   MO(2),
+ /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     KC_VOLD, KC_VOLU,
+ /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/     /*-*/    CTL_T(KC_ENTER), MO(1),   ALT_T(KC_TAB),
+ DE_GRV,  DE_6,    DE_7,     DE_8,    DE_9,     DE_0,    DE_CIRC,
+ KC_TRNS, DE_K,    DE_H,     DE_G,    DE_F,     DE_Q,    DE_SS,
+ /*-*/    DE_S,    DE_N,     DE_R,    DE_T,     DE_D,    DE_Y,
+ KC_TRNS, DE_B,    DE_M,     DE_COMM, DE_DOT,   DE_J,    KC_RSFT,
+ /*-*/    /*-*/    MO(2),    MO(3),   KC_APP,   KC_RALT, KC_RCTL,
+ KC_MUTE, KC_MPLY,
+ KC_TRNS,
+ CTL_T(KC_ESC), MO(1),   ALT_T(KC_SPACE)
+),
+/*
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+ */
+[L1] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR,
+ KC_TRNS, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_TRNS,
+ /*-*/    DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT,
+ KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |  0  |
+ *                   '-----------------' '-----------------'
+ */
+[L2] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, DE_7,    DE_8,    DE_9,    KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, DE_4,    DE_5,    DE_6,    KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, DE_1,    DE_2,    DE_3,    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, DE_0
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L3] = LAYOUT_ergodox(
+ KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
+ KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
+ KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L4] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L5] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L6] = LAYOUT_ergodox(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {};
+
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {
+    if (hex == 0x0) {
+        return KC_P0;
+    }
+    if (hex < 0xA) {
+        return KC_P1 + (hex - 0x1);
+    }
+    return KC_A + (hex - 0xA);
+}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {
+    switch (unicode_mode) {
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    if (!record->event.pressed) {
+        return MACRO_NONE;
+    }
+    // MACRODOWN only works in this function
+    switch(id) {
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+
+
+        default:
+            break;
+    }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
diff --git a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.md b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.md
new file mode 100644 (file)
index 0000000..d9fcda9
--- /dev/null
@@ -0,0 +1,194 @@
+# Neo2 for ErgoDox on QWERTZ
+#
+# Description
+This layout is ment to be used on PCs with DE-de with an additional guest keyboard. E.g. on your PC at work you can use your ergodox with neo but a second keybord is plugged in so your coworkers can enter a few signs if necessary. I live in Germany, so this is my usecase.
+# Layers
+[Layer0](#layer-0)
+Letters, modifiers and volume
+
+[Layer1](#layer-1)
+Symbols
+
+[Layer2](#layer-2)
+Motion, digits and next/prev Song
+
+[Layer3](#layer-3)
+F1 to F12 and mouse actions
+
+[Layer4](#layer-4)
+not used
+
+[Layer5](#layer-5)
+not used
+
+[Layer6](#layer-6)
+not used
+
+
+## Layer 0
+
+    .------------------------------------.------------------------------------.
+    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |VOL- |VOL+ | !MUTE |PLAY |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     |-----| !-----|     !     !
+                      ! CTL !     ! ALT ! ! CTL !     ! ALT !
+                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
+                      '-----------------' '-----------------'
+                      
+* Left side ESC, TAB, [SymbolLayer], Shift, Ctr, Gui(Windows key), and Alt like normal QWERTZ with neo2.
+* Space on right side of left half for mous activity so you don't have to leave the mouse for Space.
+* Top row of thumb keys is hard to reach for me, so I put media control on there.
+* Thumb keys make use of modifier/tap. E.g. if you tap the Enter key it will be Enter. If you keep it pressed down it will be Ctr. The hold action is written on top of the tap action.
+* The small middle thumb keys are not used, es well as the 1.5 sized ones on the left side of the right half.
+
+
+## Layer 1
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 2
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |  0  |
+                      '-----------------' '-----------------'
+
+
+
+## Layer 3
+
+    .------------------------------------.------------------------------------.
+    |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+* M_A Mouse acceleration
+* M_B Mouse button
+* M_C Mouse cursor
+* M_W Mouse wheel
+
+## Layer 4
+
+
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 5
+
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 6
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c
new file mode 100644 (file)
index 0000000..afadf13
--- /dev/null
@@ -0,0 +1,180 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_norwegian.h"
+
+#define BASE 0 // default layer
+#define BASE_MAC 1 // default layer mac
+#define NUMB_FUNC 2 // numbers and function keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Keymap 0: Basic layer PC
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |    *   |   [  |   ]  |   {  |   }  |   ~  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |    +   |   Q  |   W  |   E  |   R  |   T  |  "   |           |   '  |   Y  |   U  |   I  |   O  |   P  |   Å    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |    /   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   Ø  |   Æ    |
+ * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
+ * |    -   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  | RIGHT| DOWN |   UP |   _    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Alt/esc|  !  |   ?  |   :  | TAB  |                                       | LEFT |  _  |   &   |   |  |Num/fn|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |   #  |  `   |       |Insert|   %   |
+ *                                 ,------|------|------|       |------+-------+------.
+ *                                 |      |      |  ´   |       |  Del |       |      |
+ *                                 | Shift|Ctrl/.|------|       |------| Enter |Space |
+ *                                 |      |      |GUI/, |       | Bspc |       |      |
+ *                                 `--------------------'       `---------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_PAST,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, KC_FN2,  TG(1),
+        KC_PPLS,         KC_Q,         KC_W,    KC_E,   KC_R,   KC_T,   NO_QUO2,
+        KC_PSLS,         KC_A,         KC_S,    KC_D,   KC_F,   KC_G,
+        KC_PMNS,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
+        ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB,
+                                                      KC_HASH, KC_FN7,
+                                                              KC_FN6,
+                                               KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA),
+        // right hand
+             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
+             NO_APOS,      KC_Y,    KC_U,    KC_I,      KC_O,     KC_P,   NO_AA  ,
+                           KC_H,    KC_J,    KC_K,      KC_L,  NO_OSLH,    NO_AE,
+             NO_EQL,        KC_N,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP,    NO_BSLS,
+                                  KC_LEFT,  NO_UNDS, NO_AMPR,  NO_PIPE,    OSL(2),
+             KC_INSERT,  KC_PERC,
+             KC_DELT,
+             KC_BSPC,KC_ENT,KC_SPC
+    ),
+/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |,/Ctrl|                                       |      |      |  `   |      |Num/fn|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |  `   |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |   ´  |       |      |      |      |
+ *                                 |      |GUI/. |------|       |------|      |      |
+ *                                 |      |      |crtl/,|       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[BASE_MAC] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, 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_GRV_MAC,
+                                                    KC_FN10,
+                                  KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA),
+    // right hand
+       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
+       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 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_BSLS_MAC,
+                          KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2),
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Number ++´ánd Fn layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  8   |  7   |  6   |   5  |  9   |      |           |      |      |  F5  |  F6  |  F7  |  F8  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  4   |  3   |  2   |   1  |  0   |------|           |------|      |  F1  |  F2  |  F3  |  F4  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |  END | PGDWN| PGUP |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMB_FUNC] = LAYOUT_ergodox(
+       NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS,
+       NO_SLSH , KC_4   , KC_3   , KC_2   , KC_1   , KC_0,
+       NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS,
+                 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS,
+       KC_TRNS,  KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
+                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
+
+enum macro_id {
+    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
+    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
+    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
+    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
+    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
+    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
+    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
+    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
+    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
+    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
+};
+
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    keyevent_t event = record->event;
+
+    switch (id) {
+        case TILDE_NO:
+            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
+        case LESS_NO:
+            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
+        case GRTR_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
+        case CIRC_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
+        case ACUT_NO:
+            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
+        case GRV_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
+        case LESS_NO_MAC:
+            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
+        case GRTR_NO_MAC:
+            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
+        case ACUT_NO_MAC:
+            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
+    }
+    return MACRO_NONE;
+};
diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc/readme.md b/layouts/community/ergodox/norwegian_programmer_osx_pc/readme.md
new file mode 100644 (file)
index 0000000..444f2e9
--- /dev/null
@@ -0,0 +1,30 @@
+# Norwegian setup with osx/pc toggle
+
+## Motivation
+I wanted a Norwegian setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup.
+
+## Overview
+The setup is created to be programmer friendly.
+- Most of the symbols used in code can be activated without using layers or shift key.
+- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist.
+- Navigation is prioritized, arrows below the home row.
+
+## PC/Mac toggle
+The default setup is for Norwegian keyboard setting(on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
+
+## Layers
+Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys.
+
+## Tap-shift
+Tap for the next character to be shifted, hold down for regular shift.
+
+## Comma dot and escape
+Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys.
+
+## Numpad symbols
++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0.
+If you really need the norwegian symbols in a program, you can access them using the number toggle button. 
+
+## Layout
+
+![keyboard-layout](https://i.imgur.com/Qz3E9po.png)
diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c
new file mode 100644 (file)
index 0000000..10b7df6
--- /dev/null
@@ -0,0 +1,180 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_norwegian.h"
+
+#define BASE 0 // default layer
+#define BASE_MAC 1 // default layer mac
+#define NUMB_FUNC 2 // numbers and function keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Keymap 0: Basic layer PC
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |    *   |   [  |   ]  |   {  |   }  |   ~  |Mac/PC|           |   ^  |   $  |   (  |   )  |   <  |   >  |   @    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |    +   |   Q  |   W  |   F  |   P  |   G  |  "   |           |   '  |   J  |   L  |   U  |   Y  |   Å  |   Æ    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |    /   |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   Ø    |
+ * |--------+------+------+------+------+------|  ;   |           |   =  |------+------+------+------+------+--------|
+ * |    -   |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  | RIGHT| DOWN |   UP |   _    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Alt/esc|  !  |   ?  |   :  | TAB  |                                       | LEFT |  _  |   &   |   |  |Num/fn|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        |   #  |  `   |       |Insert|   %   |
+ *                                 ,------|------|------|       |------+-------+------.
+ *                                 |      |      |  ´   |       |  Del |       |      |
+ *                                 | Shift|Ctrl/.|------|       |------| Enter |Space |
+ *                                 |      |      |GUI/, |       | Bspc |       |      |
+ *                                 `--------------------'       `---------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+        // left hand
+        KC_PAST,       NO_LBRC, NO_RBRC, NO_LCBR,  NO_RCBR, KC_FN2,  TG(1),
+        KC_PPLS,         KC_Q,         KC_W,    KC_F,   KC_P,   KC_G,   NO_QUO2,
+        KC_PSLS,         KC_A,         KC_R,    KC_S,   KC_T,   KC_D,
+        KC_PMNS,        KC_Z,         KC_X,    KC_C,   KC_V,   KC_B,   NO_SCLN,
+        ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB,
+                                                      KC_HASH, KC_FN7,
+                                                              KC_FN6,
+                                               KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA),
+        // right hand
+             KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT,
+             NO_APOS,      KC_J,    KC_L,    KC_U,      KC_Y,     NO_AA,   NO_AE  ,
+                           KC_H,    KC_N,    KC_E,      KC_I,      KC_O,    NO_OSLH,
+             NO_EQL,        KC_K,    KC_M, KC_RIGHT,  KC_DOWN,   KC_UP,    NO_BSLS,
+                                  KC_LEFT,  NO_UNDS, NO_AMPR,  NO_PIPE,    OSL(2),
+             KC_INSERT,  KC_PERC,
+             KC_DELT,
+             KC_BSPC,KC_ENT,KC_SPC
+    ),
+/* Keymap 1: Basic layer MAC (Same as pc, except for cmd/ctrl, which are swapped)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   \    |      |      |   {  |   }  |      |      |           |      |   $  |      |      |  <   |   >  |    @   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |  '   |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |,/Ctrl|                                       |      |      |  `   |      |Num/fn|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |  `   |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |   ´  |       |      |      |      |
+ *                                 |      |GUI/. |------|       |------|      |      |
+ *                                 |      |      |crtl/,|       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[BASE_MAC] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, 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_GRV_MAC,
+                                                    KC_FN10,
+                                  KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA),
+    // right hand
+       KC_TRNS,  NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC,
+       NO_APOS_MAC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 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_BSLS_MAC,
+                          KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2),
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Number ++´ánd Fn layer pc
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |  F9  |  F10 |  F11 |  F12 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  8   |  7   |  6   |   5  |  9   |      |           |      |      |  F5  |  F6  |  F7  |  F8  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  4   |  3   |  2   |   1  |  0   |------|           |------|      |  F1  |  F2  |  F3  |  F4  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |  END | PGDWN| PGUP |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | HOME |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[NUMB_FUNC] = LAYOUT_ergodox(
+       NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS,
+       NO_SLSH , KC_4   , KC_3   , KC_2   , KC_1   , KC_0,
+       NO_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS,
+                 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS,
+       KC_TRNS,  KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS,
+                          KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
+
+enum macro_id {
+    TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO,  GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
+    [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed.
+    [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first.
+    [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first.
+    [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed.
+    [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed.
+    [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed.
+    [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly
+    [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly
+    [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed
+};
+
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    keyevent_t event = record->event;
+
+    switch (id) {
+        case TILDE_NO:
+            return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE);
+        case LESS_NO:
+            return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE);
+        case GRTR_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE);
+        case CIRC_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE);
+        case ACUT_NO:
+            return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC),  END ) : MACRO_NONE);
+        case GRV_NO:
+            return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT),  END ) : MACRO_NONE);
+        case LESS_NO_MAC:
+            return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE);
+        case GRTR_NO_MAC:
+            return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE);
+        case ACUT_NO_MAC:
+            return (event.pressed ? MACRO( T(EQL), T(SPC),  END ) : MACRO_NONE);
+    }
+    return MACRO_NONE;
+};
diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/readme.md b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/readme.md
new file mode 100644 (file)
index 0000000..ad568ec
--- /dev/null
@@ -0,0 +1,30 @@
+# Norwegian Colemak setup with osx/pc toggle
+
+## Motivation
+I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup.
+
+## Overview
+The setup is created to be programmer friendly.
+- Most of the symbols used in code can be activated without using layers or shift key.
+- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist.
+- Navigation is prioritized, arrows below the home row.
+
+## PC/Mac toggle
+The default setup is for Norwegian keyboard setting(not colemak software variants) on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard.
+
+## Layers
+Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys.
+
+## Tap-shift
+Tap for the next character to be shifted, hold down for regular shift.
+
+## Comma dot and escape
+Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys.
+
+## Numpad symbols
++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0.
+If you really need the norwegian symbols in a program, you can access them using the number toggle button. 
+
+## Layout
+
+![keyboard-layout](https://i.imgur.com/sArgD9S.png)
diff --git a/layouts/community/ergodox/ordinary/keymap.c b/layouts/community/ergodox/ordinary/keymap.c
new file mode 100644 (file)
index 0000000..86ab864
--- /dev/null
@@ -0,0 +1,504 @@
+#include QMK_KEYBOARD_H
+#include "led.h"
+#include "mousekey.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+
+#define BASE   0 // default layer
+#define SYMB   1 // symbols layer
+#define MDIA   2 // media layer
+#define SPEC   3 // special layer
+#define RBASE  4 // reverse default layer
+
+#define LSymb 10 // left symbol-shift key
+#define LMdia 11 // left media-shift key
+#define LSpec 12 // left special-shift key
+#define RSymb 13 // right symbol-shift key
+#define RMdia 14 // right media-shift key
+#define RSpec 15 // right special-shift key
+
+#define NotEq 16 // != macro
+#define GrtEq 17 // >= macro
+#define LesEq 18 // <= macro
+#define DeRef 19 // -> macro
+
+#define MUL   20 // mouse up left
+#define MUR   21 // mouse up right
+#define MDL   22 // mouse down left
+#define MDR   23 // mouse down right
+
+
+
+/*
+ * The Ordinary Layout for the Ergodox EZ keyboard, v5
+ *
+ * Modifications from the default Ergodox EZ layout
+ * by Nicholas Keene ergodoxez@nicholaskeene.com
+ *
+ * No rights reserved. This software is in the public domain.
+ * Credit me if you are friendly but if you're a jerk don't bother.
+ * If you use or modify this layout I would love to hear from you.
+ *
+ * Details: readme.md
+ *          https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/******* Base Layer ****************************************************************************************************
+ *
+ * ,------------------------------------------------------.       ,------------------------------------------------------.
+ * | Special `~ |   1  |   2  |   3  |   4  |   5  | ESC  |       |  -   |   6  |   7  |   8  |   9  |   0  | =+ Special |
+ * |------------+------+------+------+------+-------------|       |------+------+------+------+------+------+------------|
+ * | Media  Tab |   Q  |   W  |   E  |   R  |   T  |   [  |       |  ]   |   Y  |   U  |   I  |   O  |   P  | \|   Media |
+ * |------------+------+------+------+------+------|      |       |      |------+------+------+------+------+------------|
+ * | Symbol     |  ^A  |   S  |   D  |  ^F  |   G  |------|       |------|   H  |  ^J  |   K  |   L  |  ^;  | '"  Symbol |
+ * |------------+------+------+------+------+------|Shift |       | Tab  |------+------+------+------+------+------------|
+ * | Capitals   |   Z  |   X  |   C  |   V  |   B  | -Tab |       |      |   N  |   M  |   ,  |   .  |  /   |   Capitals |
+ * `------------+------+------+------+------+-------------'       `-------------+------+------+------+------+------------'
+ *      | LCtrl | Meh  |Hyper | LAlt | LGui |                                   | RGui | RAlt | Hyper|  Meh | RCtrl |
+ *      `-----------------------------------'                                   `-----------------------------------'
+ *                                          ,-------------.       ,-------------.
+ *                                          | Home | End  |       | Left | Right|
+ *                                   ,------|------|------|       |------+------+------.
+ *                                   |      |      | PgUp |       |  Up  |      |      |
+ *                                   |Backsp| Del  |------|       |------| Enter| Space|
+ *                                   |      |      | PgDn |       | Down |      |      |
+ *                                   `--------------------'       `--------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+// left hand
+ F(LSpec)  ,KC_1           ,KC_2   ,KC_3   ,KC_4  ,KC_5  ,KC_ESC
+,F(LMdia)  ,KC_Q           ,KC_W   ,KC_E   ,KC_R  ,KC_T  ,KC_LBRC
+,M(LSymb)  ,LT(RBASE, KC_A),KC_S   ,KC_D   ,LT(RBASE, KC_F)  ,KC_G
+,KC_LSFT   ,KC_Z           ,KC_X   ,KC_C   ,KC_V  ,KC_B  ,LSFT(KC_TAB)
+,KC_LCTL   ,MEH_T(KC_NO)   ,ALL_T(KC_NO),KC_LALT,KC_LGUI
+                                         ,KC_HOME,KC_END
+                                                 ,KC_PGUP
+                                 ,KC_BSPC,KC_DEL ,KC_PGDN
+                                                                  // right hand
+                                                                 ,KC_MINS ,KC_6 ,KC_7           ,KC_8   ,KC_9   ,KC_0             ,F(RSpec)
+                                                                 ,KC_RBRC ,KC_Y ,KC_U           ,KC_I   ,KC_O   ,KC_P             ,F(RMdia)
+                                                                          ,KC_H ,LT(RBASE, KC_J),KC_K   ,KC_L   ,LT(RBASE,KC_SCLN),F(RSymb)
+                                                                 ,KC_TAB  ,KC_N ,KC_M           ,KC_COMM,KC_DOT ,KC_SLSH          ,KC_RSFT
+                                                                                ,KC_RGUI        ,KC_RALT,KC_HYPR,KC_MEH           ,KC_RCTL
+                                                                 ,KC_LEFT ,KC_RGHT
+                                                                 ,KC_UP
+                                                                 ,KC_DOWN ,KC_ENT ,KC_SPC
+),
+
+/******* Symbols Layer *************************************************************************************************
+ *
+ * ,-----------------------------------------------------.       ,-----------------------------------------------------.
+ * |           |  F1  |  F2  |  F3  |  F4  |  F5  | Esc  |       |  -   |  F6  |  F7  |  F8  |  F9  |  F10 |           |
+ * |-----------+------+------+------+------+-------------|       |------+------+------+------+------+------+-----------|
+ * |           |   !  |   @  |   {  |   }  |   &  |  <   |       |  >   |   |  |   7  |   8  |   9  |   /  |           |
+ * |-----------+------+------+------+------+------|      |       |      |------+------+------+------+------+-----------|
+ * |           |   #  |   $  |   (  |   )  |   `  |------|       |------|   /  |   4  |   5  |   6  |   *  |           |
+ * |-----------+------+------+------+------+------|  '   |       |  "   |------+------+------+------+------+-----------|
+ * |           |   %  |   ^  |   [  |   ]  |   ~  |      |       |      |   \  |   1  |   2  |   3  |   -  |           |
+ * `-----------+------+------+------+------+-------------'       `-------------+------+------+------+------+-----------'
+ *     |   ;   |   &  |   *  |   <  |   >  |                                   |   0  |   .  |   =  |   +  | Enter |
+ *     `-----------------------------------'                                   `-----------------------------------'
+ *                                         ,-------------.       ,-------------.
+ *                                         | |||| | |||| |       | |||| | |||| |
+ *                                  ,------|------|------|       |------+------+------.
+ *                                  | Plus | Equal| |||| |       | |||| | Under| Dash |
+ *                                  |      |      |------|       |------| Score|      |
+ *                                  |  +   |   =  |  !=  |       |  ->  |  _   |  -   |
+ *                                  `--------------------'       `--------------------'
+ */
+[SYMB] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_F1       ,KC_F2        ,KC_F3   ,KC_F4   ,KC_F5   ,KC_ESC
+,KC_TRNS ,KC_EXLM     ,KC_AT        ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
+,KC_TRNS ,KC_HASH     ,KC_DLR       ,KC_LPRN ,KC_RPRN ,KC_GRV
+,KC_TRNS ,KC_PERC     ,KC_CIRC      ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_QUOT
+,KC_SCLN ,KC_AMPR     ,KC_ASTR ,LSFT(KC_COMM),LSFT(KC_DOT)
+                                                      ,M(GrtEq),M(LesEq)
+                                                               ,KC_NO
+                                             ,KC_PLUS ,KC_EQL  ,M(NotEq)
+                                                                 // right hand
+                                                                 ,KC_MINS     ,KC_F6        ,KC_F7 ,KC_F8  ,KC_F9 ,KC_F10  ,KC_TRNS
+                                                                 ,LSFT(KC_DOT),KC_PIPE      ,KC_7  ,KC_8   ,KC_9  ,KC_SLSH ,KC_TRNS
+                                                                              ,KC_SLSH      ,KC_4  ,KC_5   ,KC_6  ,KC_ASTR ,KC_TRNS
+                                                                 ,LSFT(KC_QUOT),KC_BSLS     ,KC_1  ,KC_2   ,KC_3  ,KC_MINS ,KC_TRNS
+                                                                                            ,KC_0  ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT
+                                                                 ,KC_NO       ,KC_NO
+                                                                 ,KC_NO
+                                                                 ,M(DeRef)    ,LSFT(KC_MINS),KC_MINS
+),
+
+/******* Media Layer *******************************************************************************************************
+ *
+ * ,---------------------------------------------------------------.    ,---------------------------------------------------------------.
+ * |      |   F11   |   F12   |   F13   |   F14   |   F15   | Esc  |    | |||| |   F16   |   F17   |   F18   |   F19   |   F20   |      |
+ * |------+---------+---------+---------+---------+----------------|    |------+---------+---------+---------+---------+---------+------|
+ * |      |Shut Down|MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll|    |Scroll|PrintScrn|   Home  |    Up   |   PgUp  |   Mail  |      |
+ * |------+---------+---------+---------+---------+---------|  Up  |    |  Up  |---------+---------+---------+---------+---------+------|
+ * |      |  Sleep  |MouseLeft|MouseDown|MouseRght|Volume Dn|------|    |------| Num Lock|   Left  |   Down  |   Right | MyComp  |      |
+ * |------+---------+---------+---------+---------+---------|Scroll|    |Scroll|---------+---------+---------+---------+---------+------|
+ * |      |  ||||   |MouseDnLf|MouseDown|MouseDnRg|  Mute   | Down |    | Down |  ||||   |   End   |   Down  |   PgDn  |  ||||   |      |
+ * `------+---------+---------+---------+---------+----------------'    `----------------+---------+---------+---------+---------+------'
+ *  | ||| |  ||||   |  MClick | LClick  |  R Click|                                      |  Insert |   Del   |   ||||  |  ||||   | ||| |
+ *  `---------------------------------------------'                                      `---------------------------------------------'
+ *                                                   ,-------------.    ,-------------.
+ *                                                   | Stop |Refrsh|    | Prev | Next |
+ *                                            ,------|------|------|    |------+------+------.
+ *                                            |Brwser|Brwser|Search|    |VolUp |      |      |
+ *                                            |Back  | Fwd  |------|    |------| Stop | Play-|
+ *                                            |      |      | Home |    |VolDn |      | Pause|
+ *                                            `--------------------'    `--------------------'
+ */
+[MDIA] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_F11   ,KC_F12  ,KC_F13   ,KC_F14  ,KC_F15  ,KC_ESC
+,KC_TRNS ,KC_POWER ,M(MUL)  ,KC_MS_U  ,M(MUR)  ,KC_VOLU ,KC_WH_U
+,KC_TRNS ,KC_SLEP  ,KC_MS_L ,KC_MS_D  ,KC_MS_R ,KC_VOLD
+,KC_TRNS ,KC_NO    ,M(MDL)  ,KC_MS_D  ,M(MDR)  ,KC_MUTE ,KC_WH_D
+,KC_NO ,KC_NO   ,KC_BTN3 ,KC_BTN1  ,KC_BTN2
+                                               ,KC_WSTP ,KC_WREF
+                                                        ,KC_WSCH
+                                      ,KC_WBAK ,KC_NO   ,KC_WHOM
+                                                                     // right hand
+                                                                     ,KC_NO    ,KC_F16  ,KC_F17       ,KC_F18       ,KC_F19  ,KC_F20  ,KC_TRNS
+                                                                     ,KC_WH_U  ,KC_PSCR ,KC_HOME      ,KC_UP        ,KC_PGUP ,KC_MAIL ,KC_TRNS
+                                                                               ,KC_NLCK ,KC_LEFT      ,KC_DOWN      ,KC_RIGHT,KC_MYCM ,KC_TRNS
+                                                                     ,KC_WH_D  ,KC_NO   ,KC_END       ,KC_DOWN      ,KC_PGDN ,KC_NO   ,KC_TRNS
+                                                                                        ,KC_INS       ,KC_DEL       ,KC_NO   ,KC_NO   ,KC_NO
+                                                                     ,KC_MPRV  ,KC_MNXT
+                                                                     ,KC_VOLU
+                                                                     ,KC_VOLD  ,KC_MSTP ,KC_MPLY
+),
+
+/******* Special Layer *****************************************************************************************************
+ *
+ * ,-------------------------------------------------------.    ,-------------------------------------------------------.
+ * |             |  Esc |      |      |      |      |      |    |      |      |      |      |   -  | Bspc |             |
+ * |-------------+------+------+------+------+-------------|    |------+------+------+------+------+------+-------------|
+ * | Media Lock  |      |      |      |      |      |      |    |      |      |      |      |  [   |   ]  | Media Lock  |
+ * |-------------+------+------+------+------+------|      |    |      |------+------+------+------+------+-------------|
+ * | Symbol Lock |      |      |      |      |      |------|    |------|      |      |      |      |      | Symbol Lock |
+ * |-------------+------+------+------+------+------|      |    |      |------+------+------+------+------+-------------|
+ * | Caps Lock   |      |      |      |      |      |      |    |      |      |      |      |      |      | Caps Lock   |
+ * `-------------+------+------+------+------+-------------'    `-------------+------+------+------+------+-------------'
+ *      |        |      |      |      |      |                                |      |      |      |      |        |
+ *      `------------------------------------'                                `------------------------------------'
+ *                                         ,-------------.     ,-------------.
+ *                                         |      |      |     |      |      |
+ *                                  ,------|------|------|     |------+------+------.
+ *                                  |      |      |      |     |      |      |      |
+ *                                  |      |      |------|     |------|      |      |
+ *                                  |      |      |      |     |      |      |      |
+ *                                  `--------------------'     `--------------------'
+ */
+[SPEC] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_ESC  ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_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
+                                                             // right hand
+                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_MINS ,KC_BSPC ,KC_TRNS
+                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LBRC ,KC_RBRC ,KC_TRNS
+                                                                      ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                             ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_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
+),
+
+/******* Reverse Base Layer *********************************************************************************************
+ *
+ * ,------------------------------------------------------.       ,------------------------------------------------------.
+ * |    =+      |   0  |   9  |   8  |   7  |   6  |  -   |       |  Esc |   5  |   4  |   3  |   2  |   1  |    `~      |
+ * |------------+------+------+------+------+-------------|       |------+------+------+------+------+------+------------|
+ * |    \|      |   P  |   O  |   I  |   U  |   Y  |   ]  |       |  [   |   T  |   R  |   E  |   W  |   Q  |    Tab     |
+ * |------------+------+------+------+------+------|      |       |      |------+------+------+------+------+------------|
+ * |    '"      |   ;  |   L  |   K  |   J  |   H  |------|       |------|   G  |   F  |   D  |   S  |  A   |            |
+ * |------------+------+------+------+------+------| Tab  |       |Shift |------+------+------+------+------+------------|
+ * | Capitals   |   /  |   .  |   ,  |   M  |   N  |      |       | -Tab |   B  |   V  |   C  |   X  |  Z   |   Capitals |
+ * `------------+------+------+------+------+-------------'       `-------------+------+------+------+------+------------'
+ *      | LCtrl | Meh  |Hyper | LAlt | LGui |                                   | RGui | RAlt | Hyper|  Meh | RCtrl |
+ *      `-----------------------------------'                                   `-----------------------------------'
+ *                                         ,-------------.       ,-------------.
+ *                                         | Left | Right|       | Home | End  |
+ *                                  ,------|------|------|       |------+------+------.
+ *                                  |      |      |  Up  |       | PgUp |      |      |
+ *                                  |Space |Enter |------|       |------|BackSp| Del  |
+ *                                  |      |      | Down |       | PgDn |      |      |
+ *                                  `--------------------'       `--------------------'
+ */
+[RBASE] = LAYOUT_ergodox(
+// left hand
+ KC_EQL    ,KC_0        ,KC_9   ,KC_8   ,KC_7  ,KC_6  ,KC_MINS
+,KC_BSLS   ,KC_P        ,KC_O   ,KC_I   ,KC_U  ,KC_Y  ,KC_RBRC
+,KC_QUOT     ,LT(RBASE, KC_SCLN)     ,KC_L   ,KC_K   ,LT(RBASE, KC_J)  ,KC_H
+,KC_RSFT   ,KC_SLSH     ,KC_DOT ,KC_COMM,KC_M  ,KC_N  ,KC_TAB
+,KC_RCTL   ,MEH_T(KC_NO),ALL_T(KC_NO),KC_RALT,KC_RGUI
+                                             ,KC_LEFT ,KC_RGHT
+                                                      ,KC_UP
+                                    ,KC_SPC  ,KC_ENT  ,KC_DOWN
+                                                                  // right hand
+                                                                 ,KC_ESC      ,KC_5   ,KC_4   ,KC_3   ,KC_2    ,KC_1  ,KC_GRV
+                                                                 ,KC_LBRC     ,KC_T   ,KC_R   ,KC_E   ,KC_W    ,KC_Q  ,KC_TAB
+                                                                              ,KC_G   ,LT(RBASE, KC_F),KC_D   ,KC_S   ,LT(RBASE, KC_A)  ,KC_NO
+                                                                 ,LSFT(KC_TAB),KC_B   ,KC_V   ,KC_C   ,KC_X    ,KC_Z  ,KC_LSFT
+                                                                                      ,KC_LGUI,KC_LALT,KC_HYPR ,KC_MEH,KC_LCTL
+                                                                 ,KC_HOME     ,KC_END
+                                                                 ,KC_PGUP
+                                                                 ,KC_PGDN     ,KC_BSPC ,KC_DEL
+)
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+     // the faux shift keys are implemented as macro taps
+     [LSymb] = ACTION_MACRO_TAP(LSymb)
+    ,[LMdia] = ACTION_MACRO_TAP(LMdia)
+    ,[LSpec] = ACTION_MACRO_TAP(LSpec)
+    ,[RSymb] = ACTION_MACRO_TAP(RSymb)
+    ,[RMdia] = ACTION_MACRO_TAP(RMdia)
+    ,[RSpec] = ACTION_MACRO_TAP(RSpec)
+};
+
+uint16_t symb_shift = 0;
+uint16_t mdia_shift = 0;
+uint16_t spec_shift = 0;
+
+bool mdia_lock = false;
+bool symb_lock = false;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch(id) {
+        // There are two shift keys for each layer so we increment a layer_shift var when one
+        // is pressed and decrement when one is released. The shift counts are bound between 0 and 2
+        // only because sometimes rapid pressing led to irregular events; this way the states
+        // are self healing during use.
+
+        case LSymb:                                               //
+        if (record->event.pressed) {                              // when the LSymb button is pressed
+            if(++symb_shift > 2) symb_shift = 2;                  // increment the symb shift count, max two
+            if(spec_shift) symb_lock = !symb_lock;                // if the Special layer is on, toggle the shift lock
+            layer_on(SYMB);                                       // in any case, turn on the Symbols layer
+        } else {                                                  // when the LSymb button is released
+            if(--symb_shift < 0) symb_shift = 0;                  // decrement the shift count, minimum zero
+            if((!symb_shift) && (!symb_lock)) layer_off(SYMB);    // if both shifts are released and the lock is off, turn off the Symbols layer
+        }
+        break;
+
+        case LMdia:
+        if (record->event.pressed) {
+           if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
+                register_code(KC_TAB);
+            } else {
+                if(spec_shift) mdia_lock = !mdia_lock;
+                if(++mdia_shift > 2) mdia_shift = 2;
+                layer_on(MDIA);
+            }
+        } else {
+            if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
+                unregister_code(KC_TAB);
+            } else {
+                if(--mdia_shift < 0) mdia_shift = 0;
+                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
+            }
+        }
+        break;
+
+        case LSpec:
+        if (record->event.pressed) {                                     // when the LSpec button is pressed
+            if(symb_shift) symb_lock = !symb_lock;                       // if another layer button is engaged, then
+            else if(mdia_shift) mdia_lock = !mdia_lock;                  // lock that layer, be it caps or symb or mdia
+            else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) {
+                register_code(KC_GRV);                                   // otherwise, if it's an uninterrupted tap, emit a char
+            } else {
+                if(++spec_shift > 2) spec_shift = 2;
+                layer_on(SPEC);                                          // otherwise, turn on the Special layer
+            }
+        } else {
+            if(record->tap.count && !record->tap.interrupted && (!spec_shift)) {
+                unregister_code(KC_GRV);
+            } else {
+                if(--spec_shift < 0) spec_shift = 0;
+                if(!spec_shift) layer_off(SPEC);
+            }
+        }
+        break;
+
+        case RSymb:
+        if (record->event.pressed) {
+            if (record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) {
+                register_code(KC_QUOT);
+            } else {
+                if(++symb_shift > 2) symb_shift = 2;
+                if(spec_shift) symb_lock = !symb_lock;
+                layer_on(SYMB);
+            }
+        } else {
+            if(record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) {
+                unregister_code(KC_QUOT);
+            } else {
+                if(--symb_shift < 0) symb_shift = 0;
+                if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
+            }
+        }
+        break;
+
+        case RMdia:
+        if (record->event.pressed) {
+            if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
+                register_code(KC_BSLS);
+            } else {
+                if(++mdia_shift > 2) mdia_shift = 2;
+                if(spec_shift) mdia_lock = !mdia_lock;
+                layer_on(MDIA);
+            }
+        } else {
+            if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) {
+                unregister_code(KC_BSLS);
+            } else {
+                if(--mdia_shift < 0) mdia_shift = 0;
+                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
+            }
+        }
+        break;
+
+        case RSpec:
+        if (record->event.pressed) {
+            if(symb_shift) symb_lock = !symb_lock;
+            else if(mdia_shift) mdia_lock = !mdia_lock;
+            else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) {
+                register_code(KC_EQL);
+            } else {
+                if(++spec_shift > 2) spec_shift = 2;
+                layer_on(SPEC);
+            }
+        } else {
+            if(record->tap.count && !record->tap.interrupted && (!spec_shift)) {
+                unregister_code(KC_EQL);
+            } else {
+                if(--spec_shift < 0) spec_shift = 0;
+                if(!spec_shift) layer_off(SPEC);
+            }
+        }
+        break;
+
+        case NotEq:
+        if (record->event.pressed) {
+            return MACRO( I(10), D(LSFT), T(1), U(LSFT), T(EQL), END  ); // !=
+        }
+        break;
+
+        case GrtEq:
+        if (record->event.pressed) {
+            return MACRO( I(10), D(LSFT), T(COMM), U(LSFT), T(EQL), END  ); // <=
+        }
+        break;
+
+        case LesEq:
+        if (record->event.pressed) {
+            return MACRO( I(10), D(LSFT), T(DOT), U(LSFT), T(EQL), END  ); // >=
+        }
+        break;
+
+        case DeRef:
+        if (record->event.pressed) {
+            return MACRO( I(10), T(MINS), D(LSFT), T(DOT), U(LSFT), END  ); // ->
+        }
+        break;
+
+        // mouse diagonals
+
+        case MUL: // mouse up left
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_UP);
+            mousekey_on(KC_MS_LEFT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_UP);
+            mousekey_off(KC_MS_LEFT);
+            mousekey_send();
+        }
+        break;
+
+        case MUR: // mouse up right
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_UP);
+            mousekey_on(KC_MS_RIGHT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_UP);
+            mousekey_off(KC_MS_RIGHT);
+            mousekey_send();
+        }
+        break;
+
+        case MDL: // mouse down left
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_DOWN);
+            mousekey_on(KC_MS_LEFT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_DOWN);
+            mousekey_off(KC_MS_LEFT);
+            mousekey_send();
+        }
+        break;
+
+        case MDR: // mouse down right
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_DOWN);
+            mousekey_on(KC_MS_RIGHT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_DOWN);
+            mousekey_off(KC_MS_RIGHT);
+            mousekey_send();
+        }
+        break;
+
+        default:
+            // none
+            break;
+    }
+
+    return MACRO_NONE;
+};
+
+// 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) {
+    // shift or caps lock turns on red light
+    if((keyboard_report->mods & MOD_BIT(KC_LSFT))
+    || (keyboard_report->mods & MOD_BIT(KC_RSFT))
+    || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
+        ergodox_right_led_1_on();
+    } else {
+        ergodox_right_led_1_off();
+    }
+
+    // Symbol layer turns on green light
+    if(layer_state & (1UL<<SYMB)) {
+        ergodox_right_led_2_on();
+    } else {
+        ergodox_right_led_2_off();
+    }
+
+    // Media layer turns on blue light
+    if(layer_state & (1UL<<MDIA)) {
+        ergodox_right_led_3_on();
+    } else {
+        ergodox_right_led_3_off();
+    }
+};
diff --git a/layouts/community/ergodox/ordinary/ordinary-base.txt b/layouts/community/ergodox/ordinary/ordinary-base.txt
new file mode 100644 (file)
index 0000000..4fc11fa
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5},"#\n3",{x:10.5},"*\n8"],
+[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
+[{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"],
+[{y:-0.875,c:"#c6c600",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#c6c600",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"],
+[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
+[{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"],
+[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\nTab\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Q",{x:14.5},"P",{c:"#c6c600",t:"#002299",w:1.5},"|\n\\\nMedia\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000"},"D",{x:10.5},"K"],
+[{y:-0.875,x:2.5},"S",{x:1,fa:[0,0,0,1]},"F\n\n\nreverse",{x:8.5},"J\n\n\nreverse",{x:1},"L"],
+[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
+[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"A\n\n\nreverse",{x:14.5},":\n;\n\nreverse",{c:"#c6c600",t:"#007d00",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"],
+[{y:-0.625,x:6.5,c:"#ff8500",t:"#000000",h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"],
+[{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"],
+[{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."],
+[{y:-0.875,x:5.5},"B",{x:6.5},"N"],
+[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Z",{x:14.5},"?\n/",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#dddd77",t:"#000000"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"],
+[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"],
+[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ff8500"},"Home","End"],
+[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"],
+[{x:2},"Page\n\n\n\n\n\nDown"],
+[{r:-30,rx:13,y:-1,x:-3},"Left","Right"],
+[{x:-3},"Up",{h:2},"Enter",{h:2},"Space"],
+[{x:-3},"Down"]
+
diff --git a/layouts/community/ergodox/ordinary/ordinary-media.txt b/layouts/community/ergodox/ordinary/ordinary-media.txt
new file mode 100644 (file)
index 0000000..67b7840
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"],
+[{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"],
+[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"],
+[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
+[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#1e8fff"},"Home",{x:1},"Page\n\n\n\n\n\nUp"],
+[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#1e8fff",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#9977ee"},"Print\n\n\n\n\n\nScreen"],
+[{y:-0.875,c:"#000000",t:"#3f68ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#3f68ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"],
+[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nDown",{x:6.5},"Num\n\n\n\n\n\nLock"],
+[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#c6c600",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"],
+[{y:-0.625,x:6.5,c:"#1e8fff",t:"#000000",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
+[{y:-0.75,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#1e8fff"},"End",{x:1},"Page\n\n\n\n\n\nDown"],
+[{y:-0.875,x:5.5,c:"#9977ee"},"Mute",{x:6.5,c:"#737373",a:7},""],
+[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#1e8fff"},"Delete"],
+[{y:-0.875,x:2.5,c:"#0066cc"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#1e8fff"},"Insert",{x:1,c:"#737373",a:7},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#6633ee",a:4,fa:[0,0,0,1]},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"],
+[{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"],
+[{x:2},"Home\n\n\nBrowser"],
+[{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"],
+[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#6633ee",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"],
+[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nDown"]
+
diff --git a/layouts/community/ergodox/ordinary/ordinary-special.txt b/layouts/community/ergodox/ordinary/ordinary-special.txt
new file mode 100644 (file)
index 0000000..97f40f9
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"_\n\n\n\n\n\n-"],
+[{y:-0.875,x:5.5,a:7},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
+[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#ff8500"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"{\n["],
+[{y:-0.875,x:5.5,a:7},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,c:"#c6c600",t:"#002299",a:4,w:1.5},"Media\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,a:4},"\n\n}\n]",{c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock"],
+[{y:-0.625,x:6.5,c:"#cccccc",t:"#000000",a:7,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
+
diff --git a/layouts/community/ergodox/ordinary/ordinary-symbol.txt b/layouts/community/ergodox/ordinary/ordinary-symbol.txt
new file mode 100644 (file)
index 0000000..65eca9d
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"],
+[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
+[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"F6"],
+[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"],
+[{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"],
+[{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
+[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"!",{x:14.5,c:"#89b087"},"/",{c:"#c6c600",t:"#002299",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#bbddbb",t:"#000000"},"(",{x:10.5,c:"#89b087"},"5"],
+[{y:-0.875,x:2.5,c:"#bbddbb"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"],
+[{y:-0.875,x:5.5,c:"#bbddbb"},"`",{x:6.5},"/"],
+[{y:-0.875,c:"#000000",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"],
+[{y:-0.625,x:6.5,c:"#bbddbb",t:"#000000",a:6,h:1.5},"'",{x:4.5,h:1.5},"\""],
+[{y:-0.75,x:3.5,a:4},"[",{x:10.5,c:"#89b087"},"2"],
+[{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"],
+[{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"],
+[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"%",{x:14.5,c:"#89b087"},"-",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#bbddbb",t:"#000000"},"<",{x:10.5,c:"#89b087"},"."],
+[{y:-0.875,x:2.5,c:"#bbddbb"},"*",{x:1},">",{x:8.5,c:"#89b087"},"0",{x:1},"="],
+[{y:-0.75,x:0.5,c:"#bbddbb"},";","&",{x:14.5,c:"#89b087"},"+","Enter"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bbddbb"},"<=",">="],
+[{a:7,h:2},"+",{h:2},"=",{c:"#737373"},""],
+[{x:2,c:"#bbddbb",a:4},"!="],
+[{r:-30,rx:13,y:-1,x:-3,c:"#737373",a:7},"",""],
+[{x:-3},"",{c:"#bbddbb",h:2},"_",{h:2},"-"],
+[{x:-3,a:4},"->"]
+
diff --git a/layouts/community/ergodox/ordinary/readme.md b/layouts/community/ergodox/ordinary/readme.md
new file mode 100644 (file)
index 0000000..2e8d869
--- /dev/null
@@ -0,0 +1,101 @@
+# The Ordinary Layout, a familiar and powerful layout #
+
+The Ordinary Layout is intended to be unremarkably mundane and remarkably useful. This layout maintains most key positions from common QWERTY keyboards, and it features enhanced Symbol and Media layers compared to the default Ergodox EZ layout.
+
+The Ordinary Layout is supposed to look mostly like a normal keyboard, except in the ways that the Ergodox key arrangement is unique. The thumbs are responsible for space, enter, plus both forward and backward delete; with only a couple exceptions, all other keys are in the same place they are found on traditional keyboards.
+
+Nicholas Keene
+ordinarylayout@nicholaskeene.com
+no rights reserved, use for any purposes, credit me if you are a nice person
+
+## The Base Layout ##
+
+* *White Keys* are all the normal characters and symbols in all the normal locations (except for the brackets, and who touch-types brackets?).
+* *Modifier Keys* are light yellow and in the traditional locationn at the bottom of the keyboard: Control, Option, Command, plus Hyper and Meh. Modifier keys are only found on the base layout.
+* *Shift Keys* are dark yellow, found on the outsides of the keyboard. Capitals Shift (traditional Shift) is found in the usual place and above that are Symbol Shift, Media Shift, and Special Shift (Shift Lock).
+* Several of the shift keys double for entry of characters which would typically be in those locations.
+* *Thumb Keys* shown in orange are for text navigation and manipulation.
+* The keys under pinky fingers and index fingers will *reverse* the keyboard layout.
+* *Escape* is red and it is always found in that location (*except* when the layout is reversed).
+
+![Ordinary base layout](https://i.imgur.com/CA5t9dF.png)
+
+The four big orange keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another.
+
+The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code.
+
+#### Reversing The Base Layout ####
+
+The Ordinary Layout can be used to perform one-handed chorded text input. If you hold down the key under either index finger or either pinky finger (A, F, J and Semicolon), the whole base layout reverses order. Most keys are _mirrored_ but the delete keys, home/end, and left/right arrow keys are merely *translated* to preserve directionality. Pro-tip: This feature is particularly handly for bringing the Enter key to the left hand when the right hand is using the mouse.
+
+## The Symbols Layer ##
+
+* *Symbols* shown in light green. All kinds of brackets are available on this layer. Ampersand and Pipe juxtapose each other. Pipe, slash, and backslash are arranged in a column.
+* *F-Keys* are bright green and overlay the row of numerals. This layer has F1-F10, higher *F-Keys* are on the Symbols layer.
+* *Number pad* in dark green under the right hand includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads so that NumLock is not needed.
+* The dark gray keys do nothing in case you bump them by accident.
+
+![Ordinary symbol layout](https://i.imgur.com/JnX3lV2.png)
+
+The Symbols Layer is based on the Coder Layer from the default Ergodox EZ layout. I slightly rearranged the symbols, added some symbols, expanded the number pad, and straightened out the F-Keys. It's very handy to have the symbols directly underneath the normal typing keys.
+
+## The Media Layer ##
+
+* *Mouse Cursor Keys* are under the left hand, shown in dark blue. Diagonal keys won't automatically repeat unless combined with other keys. Buttons to left- middle- and right-click the mouse are also featured.
+* *Text Cursor Keys* are under the right hand, shown in dark blue. They overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand.
+* *Scrolling and Paging* keys are shown in light blue and have some useful redundancy across the layout.
+* Higher-order *F-Keys* are shown in bright green overylaying the numerals.
+* *Application Keys* to control web browsers and audio players are dark purple but don't get too excited because these have weak support on operating systems I've looked at. Good luck.
+* The light purple keys are various operating system keys such as NumLock and Mute and a button to navigate to My Computer (usually your home dir).
+* The dark gray keys do nothing in case you bump them by accident.
+
+![Ordinary media layout](https://i.imgur.com/1jJnQrG.png)
+
+This layer is a substantial extension of the Media layer on the Ergodox EZ default layout. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents.
+
+Keys to directly interact with the operating system are also found on this layer, such as volume and shutdown.
+
+## Switching Between Layers ##
+
+In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active.
+
+Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock the shift keys using the Shift Lock button, which is the same as the Special Shift button.
+
+Multiple layers can be turned on at once. The Capitals layer will affect characters on other layers to capitalize. Other layers, however, don't 'mix': Symbols blankets the base layout; Media blankets Symbols.
+
+## Special Sequences ##
+
+![Ordinary special layout](https://i.imgur.com/XHXELD5.png)
+
+The Special Shift layer is mostly used to lock the shift keys but in order to make this layout more _ordinary_ there are a few special sequences which put some keys near their most common traditional locations.
+
+#### Escape ####
+
+The One True Location for an Escape key is separated from the rest of the keys, way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location, however, and the nearest one is home to the tilde (er, *grave*) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, which is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape.
+
+The Ordinary layout offers as a consolation prize, a Special sequence for Escape: **Special Shift + 1**. This is natural so you can tap the top left button, then the button next to it and get Escape. This gesture works in all layers.
+
+#### Backspace ####
+
+At the top right corner of the Ergodox EZ you can do **Special Shift + 0** to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times.
+
+#### Other Characters ####
+
+The Escape and Backspace special sequences are so useful why not have a few more? You can find dash under 9, left bracket under o, and right bracket under p. That's pretty much all the characters from the top right corner of the keyboard which moved to make room for the columnar layout.
+
+## Errata ##
+
+Some of the symbols on the Symbols layer are produced by the keyboard by "capitalizing" another character (such as *!* from *1*) so when you type that key you will notice the Capitals Shift red LED turn on.
+
+****
+
+The Ordinary Layout for the Ergodox EZ keyboard, v5
+
+Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
+
+No rights reserved. This software is in the public domain. Credit me if you are friendly but if you're a jerk don't bother.
+
+Keyboard layout images were created with http://www.keyboard-layout-editor.com/ by Ian Prest my thanks to that free service
+
+Details: readme.md
+         https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary
diff --git a/layouts/community/ergodox/osx_de/keymap.c b/layouts/community/ergodox/osx_de/keymap.c
new file mode 100644 (file)
index 0000000..a9a27a8
--- /dev/null
@@ -0,0 +1,364 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german_osx.h"
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define SMLY 3
+#define NUMB 4
+#define EGOS 5
+
+#define M_CTRL_CMDV 0
+#define M_CTRL_CMDC 1
+#define M_MEH_SH_ACUT 2
+#define M_LGUI_SHFT 3
+#define M_CTL_SFT_HASH 4
+#define M_DE_OSX_CIRC_CTRLCMD 5
+#define M_DE_OSX_PLUS_CTRLALT 6
+#define SM_SMILE 7
+#define SM_SMIRK 8
+#define SM_CRY 9
+#define SM_SAD 10
+#define SM_HEART 11
+#define SM_LAUGH 12
+#define SM_KISS 13
+#define SM_FROWN 14
+#define M_TOGGLE_5 15
+
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE]=LAYOUT_ergodox(
+//left half
+    KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH), 
+    KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, 
+    KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, 
+    KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, 
+                  LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN, 
+                                              M(M_MEH_SH_ACUT), TG(MDIA), 
+                                                     KC_HOME, 
+                                       KC_BSPC, KC_DEL, LT(SMLY,KC_END), 
+    //right half
+    M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, 
+    KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, 
+           DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), 
+    KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, 
+                         KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), 
+    TG(NUMB), ALL_T(DE_OSX_ACUT), 
+    KC_PGUP, 
+    KC_PGDN, KC_ENT, KC_SPC),
+[SYMB]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, 
+    KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, 
+    KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, 
+    KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_DEL, KC_TRNS, 
+    //right half
+    M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, 
+           DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH, 
+    KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4), 
+                         DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, 
+    KC_F13, KC_F12, 
+    KC_F14, 
+    KC_F15, KC_TRNS, KC_TRNS),
+[MDIA]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 
+    KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+           KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_WBAK),
+[SMLY]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, 
+           M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+[NUMB]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, 
+           KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS, 
+    KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, 
+                         KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+[EGOS]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_F1, KC_F2, 
+                                                     KC_F3, 
+                                       KC_SPC, KC_LCTL, KC_F4, 
+    //right half
+    M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+static uint16_t start;
+switch(id) {
+case M_TOGGLE_5:
+//Macro: M_TOGGLE_5//-----------------------
+ if (record->event.pressed){
+           layer_state ^= (1<<5);
+           layer_state &= (1<<5);
+        }
+
+break;
+case M_CTRL_CMDC:
+//Macro: M_CTRL_CMDC//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),END);
+                       } else {
+                               return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
+                       }
+               }
+
+break;
+case M_DE_OSX_PLUS_CTRLALT:
+//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),D(LALT),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LALT),END);
+                       } else {
+                               return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
+                       }
+               }
+
+break;
+case SM_KISS:
+//Macro: SM_KISS//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
+               }
+
+break;
+case SM_FROWN:
+//Macro: SM_FROWN//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
+               }
+
+break;
+case SM_CRY:
+//Macro: SM_CRY//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+               }
+
+break;
+case SM_SMILE:
+//Macro: SM_SMILE//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+               }
+
+break;
+case SM_SMIRK:
+//Macro: SM_SMIRK//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+               }
+
+break;
+case M_LGUI_SHFT:
+//Macro: M_LGUI_SHFT//-----------------------
+if (record->event.pressed){
+                       return MACRO(D(LGUI),D(LSFT),END);
+               }else{
+                       return MACRO(U(LGUI),U(LSFT),END);
+               }
+
+break;
+case SM_HEART:
+//Macro: SM_HEART//-----------------------
+if (record->event.pressed) {
+                       return MACRO(T(GRV),T(3),END);
+               }
+
+break;
+case SM_LAUGH:
+//Macro: SM_LAUGH//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
+               }
+
+break;
+case M_CTL_SFT_HASH:
+//Macro: M_CTL_SFT_HASH//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),D(LSFT),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LSFT),END);
+                       } else {
+                               return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
+                       }
+               }
+
+break;
+case SM_SAD:
+//Macro: SM_SAD//-----------------------
+if (record->event.pressed) {
+                       return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+               }
+
+break;
+case M_DE_OSX_CIRC_CTRLCMD:
+//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),D(LGUI),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LGUI),END);
+                       } else {
+                               return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
+                       }
+               }
+
+break;
+case M_CTRL_CMDV:
+//Macro: M_CTRL_CMDV//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),END);
+                       } else {
+                               return MACRO(U(LCTRL),D(LGUI),T(V),U(LGUI),END);
+                       }
+               }
+
+break;
+case M_MEH_SH_ACUT:
+//Macro: M_MEH_SH_ACUT//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+                       } else {
+                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END);
+                       }
+               }
+
+break;
+}
+return MACRO_NONE;
+};
+
+// 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);
+
+ergodox_board_led_off();
+ergodox_right_led_1_off();
+ergodox_right_led_2_off();
+ergodox_right_led_3_off();
+switch (layer) {
+
+    case SYMB:
+        ergodox_right_led_1_on();
+        
+        
+        break;
+    case MDIA:
+        
+        ergodox_right_led_2_on();
+        
+        break;
+    case SMLY:
+        
+        
+        ergodox_right_led_3_on();
+        break;
+    case NUMB:
+        ergodox_right_led_1_on();
+        
+        ergodox_right_led_3_on();
+        break;
+    case EGOS:
+        ergodox_right_led_1_on();
+        ergodox_right_led_2_on();
+        ergodox_right_led_3_on();
+        break;
+default:
+// none
+break;
+}
+
+};
+
diff --git a/layouts/community/ergodox/osx_de/osx_de_highres.png.md b/layouts/community/ergodox/osx_de/osx_de_highres.png.md
new file mode 100644 (file)
index 0000000..ee3dc53
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/kvSzkXK.png
diff --git a/layouts/community/ergodox/osx_de/readme.md b/layouts/community/ergodox/osx_de/readme.md
new file mode 100644 (file)
index 0000000..5011a9d
--- /dev/null
@@ -0,0 +1,41 @@
+#Ergodox EZ für OSX 
+
+Dies ist nur ein kleiner Tweak der bestehenden firmware für das ErgoDox-EZ-Keyboard. Leider passte das layout nicht wirklich für OSX, deswegen habe ich einige Anpassungen gemacht. Dabei wurden folgende features umgesetzt:
+
+- Die Umlaute sollten an einigermassen sinnvollen Plätzen liegen
+- der Umstieg sollte dadurch erleichtert werden, dass einige Tasten an ihren "normalen" Platz zurückgewandert sind. Z.B. ESC, Tab,...
+- die Leertaste ist jetzt auf der rechten seite, neben Enter. Dafür hat der linke Daumen nun Backspace und Delete. 
+- die CMD- und Alt-Tasten sind in der Mitte einfach erreichbar.
+- es gibt eine neue Layer die für Spiele genutzt werden kann (egosooter wie Counter Strike). Dort liegen die wichtigsten Tasten auf der linken Seite, im Daumenblock z.B. space und ctrl sowie die F-Tasten 1-4. Diese Layer ist über die Symbollayer erreichbar.
+- Die Symbollayer wurde dahingehend angepasst, dass die klammern, etc nun auf beiden hälften der Tastatur zu finden sind
+- der Zehnerblock wurde in eine eigene Layer umgezogen
+- die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen
+
+# Erstellt Mit Dem ErgodoxLayoutGenerator
+
+Der ErgodoxLayoutGenerator ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
+Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
+
+
+
+------------------------------   
+
+# ErgoDox EZ for OSX
+
+This is  only a little tweak of the existing default layout for the ErgoDox keyboard. Unfortunately the default layout did not work well with german OSX, so I created som adjustments. These were the features added and changed:
+
+- the umlaut-keys should be at their useful place more or less
+- the switching should be made more easy so some other keys (like tab, esc) were moved to their default place
+- the space key can now be used with both hands
+- the CMD- and ALT-Keys moved to the middle, can be reached more easily.
+- there is a new layer for using the cursor-keys, placed like on the default keyboard. This makes them useable for games also
+- the symbollayer now has only symbols
+- the number block was moved to a special layer
+- meh and hyper went down to the thumb block
+
+# Created Using the ErgodoxLayoutGenerator
+
+The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded  [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
+
+The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
+
diff --git a/layouts/community/ergodox/osx_de_adnw_koy/keymap.c b/layouts/community/ergodox/osx_de_adnw_koy/keymap.c
new file mode 100644 (file)
index 0000000..9d2e117
--- /dev/null
@@ -0,0 +1,174 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#include "keymap_neo2.h"
+#include "keymap_uk.h"
+#include "keymap_colemak.h"
+#include "keymap_french_osx.h"
+#include "keymap_nordic.h"
+#include "keymap_dvorak.h"
+#include "keymap_german.h"
+#include "keymap_norwegian.h"
+#include "keymap_fr_ch.h"
+#include "keymap_german_osx.h"
+#include "keymap_spanish.h"
+#include "keymap_bepo.h"
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define QWERTZ 3
+#define NUMB 4
+
+#define UNUSED 0
+
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE]=LAYOUT_ergodox(
+//left half
+    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL, 
+    KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI, 
+    TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U, 
+    KC_LSFT, CTL_T(KC_X), KC_Q, DE_AE, DE_UE, DE_OE, KC_LALT, 
+                  LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, 
+                                              TG(MDIA), MEH_T(LSFT(DE_ACUT)), 
+                                                     KC_HOME, 
+                                       KC_BSPC, KC_DEL, KC_END, 
+    //right half
+    KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_OSX_MINS, 
+    KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y, 
+           KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F), 
+    KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, 
+                         KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS), 
+    ALL_T(DE_ACUT), TG(NUMB), 
+    KC_PGUP, 
+    KC_PGDN, KC_ENT, KC_SPC),
+[SYMB]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, 
+    KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QST, KC_TRNS, KC_TRNS, 
+    KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT, 
+    KC_TRNS, KC_TRNS, DE_LESS, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_DEL, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, 
+           DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS, 
+    KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, 
+                         KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+[MDIA]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, 
+    KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, 
+                         KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_WBAK),
+[QWERTZ]=LAYOUT_ergodox(
+//left half
+    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V), 
+    KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI, 
+    KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, 
+    KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, 
+                  LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, 
+                                              KC_TRNS, MEH_T(LSFT(DE_ACUT)), 
+                                                     KC_HOME, 
+                                       KC_BSPC, KC_DEL, KC_END, 
+    //right half
+    LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 
+    KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE, 
+           KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_AE), 
+    KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, 
+                         KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS), 
+    ALL_T(DE_ACUT), KC_TRNS, 
+    KC_PGUP, 
+    KC_PGDN, KC_ENT, KC_SPC),
+[NUMB]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, 
+           KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS, 
+    KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, 
+                         KC_0, KC_DOT, KC_0, KC_EQL, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+switch(id) {
+case UNUSED:
+//Macro: UNUSED//-----------------------
+
+
+
+
+
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        
+
+
+break;
+}
+return MACRO_NONE;
+};
+
+// 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);
+
+ergodox_board_led_off();
+ergodox_right_led_1_off();
+ergodox_right_led_2_off();
+ergodox_right_led_3_off();
+switch (layer) {
+
+default:
+// none
+break;
+}
+
+};
+
diff --git a/layouts/community/ergodox/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md b/layouts/community/ergodox/osx_de_adnw_koy/osx_de_adnw_koy_highres.png.md
new file mode 100644 (file)
index 0000000..4d4b777
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/5s9UKyc.png
diff --git a/layouts/community/ergodox/osx_de_experimental/keymap.c b/layouts/community/ergodox/osx_de_experimental/keymap.c
new file mode 100644 (file)
index 0000000..15c700a
--- /dev/null
@@ -0,0 +1,597 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_neo2.h"
+#include "keymap_uk.h"
+#include "keymap_colemak.h"
+#include "keymap_nordic.h"
+#include "keymap_dvorak.h"
+#include "keymap_german.h"
+#include "keymap_norwegian.h"
+#include "keymap_fr_ch.h"
+#include "keymap_german_osx.h"
+#include "keymap_spanish.h"
+#include "keymap_bepo.h"
+
+
+/**
+* This layout was generated using the ErgodoxLayoutGenerator (ELG). You can download it from https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases
+* documentation about it can be found here https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/
+* Thanks to the team of Erez Zukerman for building the great Ergodox-EZ!
+*
+* use at own risk!
+**/
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define SMLY 3
+#define NUMB 4
+#define EGOS 5
+
+#define SMLY_TOG_QUOT 0
+
+#define M_TOGGLE_5 1
+
+#define TGH_NUM 2
+
+#define M_DE_OSX_PLUS_CTRLALT 3
+
+#define SM_KISS 4
+
+#define SM_FROWN 5
+
+#define SM_CRY 6
+
+#define SM_SMILE 7
+
+#define SM_SMIRK 8
+
+#define M_LGUI_SHFT 9
+
+#define SM_HEART 10
+
+#define TOG_HLD_MDIA 11
+
+#define SM_LAUGH 12
+
+#define SM_SAD 13
+
+#define M_DE_OSX_CIRC_CTRLCMD 14
+
+#define M_MEH_SH_ACUT 15
+
+
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/**
+* Layer: BASE
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
+* | ESC                | 1                  | 2                  | 3                  | 4                  | 5                  | Hold or toggle     |                       | Hold or toggle     | 6                  | 7                  | 8                  | 9                  | 0                  | ß                  |                      
+* |                    |                    |                    |                    |                    |                    | Layer NUMB         |                       | Layer MDIA         |                    |                    |                    |                    |                    |                    |                      
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
+* | TAB                | Q                  | W                  | E                  | R                  | T                  | Cmd                |                       | Cmd                | Z                  | U                  | I                  | O                  | P                  | Ü                  |                      
+* |                    |                    |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    |                    |                    |                      
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\                        \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
+* | Alt                | A                  | S                  | D                  | F                  | G                  |                                                                 | H                  | J                  | K                  | L                  | Ö                  | Ä                  |                      
+* |                    |                    |                    |                    |                    |                    |                                                                 |                    |                    |                    |                    |                    | ALT                |                      
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
+* | Shift              | Y                  | X                  | C                  | V                  | B                  | Alt                |                       | Alt                | N                  | M                  | ,                  | .                  | -                  | Shift              |                      
+* |                    | Ctrl               |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    | Ctrl               |                    |                      
+* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                        \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                       
+*                                                                                                                                                                                                                                                                                                                                                      
+*                                                                                                                                                                                                                                                                                                                                                      
+*                                           /-------------------//-------------------//-------------------//-------------------//-------------------/                                                                                       /-------------------//-------------------//-------------------//-------------------//-------------------/  
+*                                           | <                  | LongPress / Type   | LongPress / Type   | Shift+Ctrl         | Type               |                                                                                      | #                  | ACUT               | CMD+Shift          | ALT+Shift          | +                  | 
+*                                           | SYMB               | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt |                    | Toggle SMLY        |                                                                                      | Meh                | Hyper              |                    |                    | SYMB               | 
+*                                           \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/   /-------------------//-------------------/                     \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\  
+*                                                                                                                               | HOME               | END                |  | LEFT               | RIGHT              |                                                                                                                               
+*                                                                                                                               |                    |                    |  |                    |                    |                                                                                                                               
+*                                                                                                                               \-------------------\/-------------------/   /-------------------/\-------------------\                                                                                                                                
+*                                                                                                                                                    | PGUP               |  | UP                 |                                                                                                                                                    
+*                                                                                                                                                    |                    |  |                    |                                                                                                                                                    
+*                                                                                                          /-------------------//-------------------//-------------------/   /-------------------//-------------------//-------------------/                                                                                                           
+*                                                                                                          | BSPC               | DEL                | PGDN               |  | DOWN               | ENT                | SPC                |                                                                                                          
+*                                                                                                          |                    |                    |                    |  |                    |                    |                    |                                                                                                          
+*                                                                                                          \-------------------\\-------------------\\-------------------\   \-------------------\\-------------------\\-------------------\                                                                                                           
+*                                                                                                                                                                                                                                                                                                                                                      
+* 
+**/
+[BASE]=LAYOUT_ergodox(
+//left half
+    KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM), 
+    KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, 
+    KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, 
+    KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, 
+                  LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT), 
+                                              KC_HOME, KC_END, 
+                                                     KC_PGUP, 
+                                       KC_BSPC, KC_DEL, KC_PGDN, 
+    //right half
+    M(TOG_HLD_MDIA), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, 
+    KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, 
+           DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), 
+    KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, 
+                         MEH_T(DE_OSX_HASH), ALL_T(DE_OSX_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), 
+    KC_LEFT, KC_RIGHT, 
+    KC_UP, 
+    KC_DOWN, KC_ENT, KC_SPC),
+/**
+* Layer: SYMB
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
+* | APPLICATION| F1         | F2         | F3         | F4         | F5         | F5         |               | F6         | F6         | F7         | F8         | F9         | F10        | F11        |              
+* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
+* |            | <          | >          | !          | ?          |            |            |               |            | \          | [          | ]          | <          | >          | !          |              
+* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
+* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\                \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/               
+* |            | #          | $          | \          | /          | .          |                                         | /          | (          | )          | {          | }          | #          |              
+* |            |            |            |            |            |            |                                         |            |            |            |            |            |            |              
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
+* |            |            | <          | %          | |          | ~          |            |               |            | |          | ~          |            |            |            |            |              
+* |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
+* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\                \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\               
+*                                                                                                                                                                                                                      
+*                                                                                                                                                                                                                      
+*                           /-----------//-----------//-----------//-----------//-----------/                                                       /-----------//-----------//-----------//-----------//-----------/  
+*                           |            |            |            |            |            |                                                      | '          | DQOT       |            | Toggle 5   |            | 
+*                           |            |            |            |            |            |                                                      |            |            |            |            |            | 
+*                           \-----------\\-----------\\-----------\\-----------\/-----------//-----------/   /-----------//-----------/             \-----------\\-----------\\-----------\\-----------\\-----------\  
+*                                                                               |            |            |  | F13        | F12        |                                                                               
+*                                                                               |            |            |  |            |            |                                                                               
+*                                                                               \-----------\/-----------/   /-----------/\-----------\                                                                                
+*                                                                                            |            |  | F14        |                                                                                            
+*                                                                                            |            |  |            |                                                                                            
+*                                                                  /-----------//-----------//-----------/   /-----------//-----------//-----------/                                                                   
+*                                                                  |            | DEL        |            |  | F15        |            |            |                                                                  
+*                                                                  |            |            |            |  |            |            |            |                                                                  
+*                                                                  \-----------\\-----------\\-----------\   \-----------\\-----------\\-----------\                                                                   
+*                                                                                                                                                                                                                      
+* 
+**/
+[SYMB]=LAYOUT_ergodox(
+//left half
+    KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5, 
+    KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, 
+    KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, 
+    KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_DEL, KC_TRNS, 
+    //right half
+    KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, DE_OSX_BSLS, DE_OSX_LBRC, DE_OSX_RBRC, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, 
+           DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, DE_OSX_LCBR, DE_OSX_RCBR, DE_OSX_HASH, 
+    KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         DE_OSX_QUOT, DE_OSX_DQOT, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
+    KC_F13, KC_F12, 
+    KC_F14, 
+    KC_F15, KC_TRNS, KC_TRNS),
+/**
+* Layer: MDIA
+* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
+* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
+* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
+* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
+* |      |      | BTN1 | U    | BTN2 | U    |      |         |      |      |      |      |      |      |      |        
+* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
+* /-----//-----//-----//-----//-----//-----/\-----\          \-----\/-----//-----//-----//-----//-----//-----/         
+* |      |      | L    | D    | R    | D    |                       |      |      |      |      |      |      |        
+* |      |      |      |      |      |      |                       |      |      |      |      |      |      |        
+* /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
+* |      |      | L    | D    | R    | BTN3 |      |         |      |      |      |      |      | UP   |      |        
+* |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
+* \-----\\-----\\-----\\-----\\-----\\-----\\-----\          \-----\\-----\\-----\\-----\\-----\\-----\\-----\         
+*                                                                                                                      
+*                                                                                                                      
+*               /-----//-----//-----//-----//-----/                               /-----//-----//-----//-----//-----/  
+*               |      |      |      |      |      |                              |      |      | LEFT | DOWN | RIGHT| 
+*               |      |      |      |      |      |                              |      |      |      |      |      | 
+*               \-----\\-----\\-----\\-----\/-----//-----/   /-----//-----/       \-----\\-----\\-----\\-----\\-----\  
+*                                           |      |      |  | MPRV | MNXT |                                           
+*                                           |      |      |  |      |      |                                           
+*                                           \-----\/-----/   /-----/\-----\                                            
+*                                                  |      |  | VOLU |                                                  
+*                                                  |      |  |      |                                                  
+*                                    /-----//-----//-----/   /-----//-----//-----/                                     
+*                                    |      |      |      |  | VOLD | MUTE | MPLY |                                    
+*                                    |      |      |      |  |      |      |      |                                    
+*                                    \-----\\-----\\-----\   \-----\\-----\\-----\                                     
+*                                                                                                                      
+* 
+**/
+[MDIA]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 
+    KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 
+    KC_MPRV, KC_MNXT, 
+    KC_VOLU, 
+    KC_VOLD, KC_MUTE, KC_MPLY),
+/**
+* Layer: SMLY
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            | Typing  | Typing  | Typing  |         |         |         |         |           
+* |         |         |         |         |         |         |         |            | SM_SMILE| SM_SMIRK| SM_LAUGH|         |         |         |         |           
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            |         | Typing  | Typing  | Typing  |         |         |         |           
+* |         |         |         |         |         |         |         |            |         | SM_FROWN| SM_SAD  | SM_CRY  |         |         |         |           
+* /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |                                | Typing  | Typing  |         |         |         |         |           
+* |         |         |         |         |         |         |                                | SM_HEART| SM_KISS |         |         |         |         |           
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
+*                                                                                                                                                                      
+*                                                                                                                                                                      
+*                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
+*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
+*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
+*                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
+*                                                             |         |         |  |         |         |                                                             
+*                                                             |         |         |  |         |         |                                                             
+*                                                             \--------\/--------/   /--------/\--------\                                                              
+*                                                                       |         |  |         |                                                                       
+*                                                                       |         |  |         |                                                                       
+*                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
+*                                                   |         |         |         |  |         |         |         |                                                   
+*                                                   |         |         |         |  |         |         |         |                                                   
+*                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
+*                                                                                                                                                                      
+* 
+**/
+[SMLY]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, 
+           M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+/**
+* Layer: NUMB
+* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
+* |     |     |     |     |     |     |     |        |     | F6  | F7  | F8  | F9  | F10 | F11 |       
+* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
+* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
+* |     |     |     | UP  |     |     |     |        |     | /   | 7   | 8   | 9   | *   | F12 |       
+* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
+* /----//----//----//----//----//----/\----\         \----\/----//----//----//----//----//----/        
+* |     |     | LEFT| DOWN| RGHT|     |                    | /   | 4   | 5   | 6   | +   | -   |       
+* |     |     |     |     |     |     |                    |     |     |     |     |     |     |       
+* /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
+* |     |     |     |     |     |     |     |        |     | %   | 1   | 2   | 3   |     |     |       
+* |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
+* \----\\----\\----\\----\\----\\----\\----\         \----\\----\\----\\----\\----\\----\\----\        
+*                                                                                                      
+*                                                                                                      
+*             /----//----//----//----//----/                           /----//----//----//----//----/  
+*             |     |     |     |     |     |                          | 0   | .   | ,   | =   |     | 
+*             |     |     |     |     |     |                          |     |     |     |     |     | 
+*             \----\\----\\----\\----\/----//----/   /----//----/      \----\\----\\----\\----\\----\  
+*                                     |     |     |  |     |     |                                     
+*                                     |     |     |  |     |     |                                     
+*                                     \----\/----/   /----/\----\                                      
+*                                           |     |  |     |                                           
+*                                           |     |  |     |                                           
+*                               /----//----//----/   /----//----//----/                                
+*                               |     |     |     |  |     |     |     |                               
+*                               |     |     |     |  |     |     |     |                               
+*                               \----\\----\\----\   \----\\----\\----\                                
+*                                                                                                      
+* 
+**/
+[NUMB]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_TRNS, KC_TRNS, 
+                                                     KC_TRNS, 
+                                       KC_TRNS, KC_TRNS, KC_TRNS, 
+    //right half
+    KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
+    KC_TRNS, DE_OSX_SLSH, KC_7, KC_8, KC_9, DE_OSX_ASTR, KC_F12, 
+           DE_OSX_SLSH, KC_4, KC_5, KC_6, DE_OSX_PLUS, DE_OSX_MINS, 
+    KC_TRNS, DE_OSX_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, 
+                         KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+/**
+* Layer: EGOS
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
+* | Shift   |         |         |         |         |         |                                |         |         |         |         |         |         |           
+* |         |         |         |         |         |         |                                |         |         |         |         |         |         |           
+* /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
+*                                                                                                                                                                      
+*                                                                                                                                                                      
+*                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
+*                     | Ctrl    |         |         |         |         |                                          |         |         |         | Toggle 5|         | 
+*                     |         |         |         |         |         |                                          |         |         |         |         |         | 
+*                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
+*                                                             | F1      | F2      |  |         |         |                                                             
+*                                                             |         |         |  |         |         |                                                             
+*                                                             \--------\/--------/   /--------/\--------\                                                              
+*                                                                       | F3      |  |         |                                                                       
+*                                                                       |         |  |         |                                                                       
+*                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
+*                                                   | SPC     | Ctrl    | F4      |  |         |         |         |                                                   
+*                                                   |         |         |         |  |         |         |         |                                                   
+*                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
+*                                                                                                                                                                      
+* 
+**/
+[EGOS]=LAYOUT_ergodox(
+//left half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                  KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                                              KC_F1, KC_F2, 
+                                                     KC_F3, 
+                                       KC_SPC, KC_LCTL, KC_F4, 
+    //right half
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+                         KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
+    KC_TRNS, KC_TRNS, 
+    KC_TRNS, 
+    KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+static uint16_t start;
+switch(id) {
+case SMLY_TOG_QUOT:
+//Macro: SMLY_TOG_QUOT//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+           layer_state ^= (1<<SMLY);
+           layer_state &= (1<<SMLY);
+                       return MACRO_NONE;              } else {
+           layer_state ^= (1<<SMLY);
+           layer_state &= (1<<SMLY);
+                       if (timer_elapsed(start) >150) {
+                               return MACRO_NONE;
+                       } else {
+                               return MACRO(DOWN(KC_LSFT),TYPE(DE_OSX_HASH),UP(KC_LSFT),END);
+                       }
+               }
+
+break;
+case M_TOGGLE_5:
+//Macro: M_TOGGLE_5//-----------------------
+ if (record->event.pressed){
+           layer_state ^= (1<<5);
+           layer_state &= (1<<5);
+        }
+
+break;
+case TGH_NUM:
+//Macro: TGH_NUM//-----------------------
+if (record->event.pressed){
+         start = timer_read();
+         layer_state ^=(1<<NUMB);
+         layer_state &=(1<<NUMB);
+ } else {
+         if (timer_elapsed(start) > 150) {
+                 layer_state^=(1<<NUMB);
+                 layer_state&=(1<<NUMB);
+         }
+ }
+return MACRO_NONE;
+
+break;
+case M_DE_OSX_PLUS_CTRLALT:
+//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LALT),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LALT),END);
+                       } else {
+                               return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(KC_RBRC),END);
+                       }
+               }
+
+break;
+case SM_KISS:
+//Macro: SM_KISS//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_RBRC),UP(KC_LSFT),END);
+               }
+
+break;
+case SM_FROWN:
+//Macro: SM_FROWN//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LALT),TYPE(KC_8),UP(KC_LALT),END);
+               }
+
+break;
+case SM_CRY:
+//Macro: SM_CRY//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
+               }
+
+break;
+case SM_SMILE:
+//Macro: SM_SMILE//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
+               }
+
+break;
+case SM_SMIRK:
+//Macro: SM_SMIRK//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
+               }
+
+break;
+case M_LGUI_SHFT:
+//Macro: M_LGUI_SHFT//-----------------------
+if (record->event.pressed){
+                       return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END);
+               }else{
+                       return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
+               }
+
+break;
+case SM_HEART:
+//Macro: SM_HEART//-----------------------
+if (record->event.pressed) {
+                       return MACRO(TYPE(KC_GRV),TYPE(KC_3),END);
+               }
+
+break;
+case TOG_HLD_MDIA:
+//Macro: TOG_HLD_MDIA//-----------------------
+if (record->event.pressed){
+         start = timer_read();
+         layer_state ^=(1<<MDIA);
+         layer_state &=(1<<MDIA);
+ } else {
+         if (timer_elapsed(start) > 150) {
+                 layer_state^=(1<<MDIA);
+                 layer_state&=(1<<MDIA);
+         }
+ }
+return MACRO_NONE;
+
+break;
+case SM_LAUGH:
+//Macro: SM_LAUGH//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_D),UP(KC_LSFT),END);
+               }
+
+break;
+case SM_SAD:
+//Macro: SM_SAD//-----------------------
+if (record->event.pressed) {
+                       return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
+               }
+
+break;
+case M_DE_OSX_CIRC_CTRLCMD:
+//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LGUI),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LGUI),END);
+                       } else {
+                               return MACRO(UP(KC_LCTRL),UP(KC_LGUI),TYPE(KC_NUBS),END);
+                       }
+               }
+
+break;
+case M_MEH_SH_ACUT:
+//Macro: M_MEH_SH_ACUT//-----------------------
+if (record->event.pressed) {
+                       start = timer_read();
+                       return MACRO(DOWN(KC_LCTRL),DOWN(KC_LSFT),DOWN(KC_LALT),END);
+               } else {
+                       if (timer_elapsed(start) >150) {
+                               return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+                       } else {
+                               return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_OSX_ACUT),UP(KC_LSFT),END);
+                       }
+               }
+
+break;
+}
+return MACRO_NONE;
+};
+
+// 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);
+
+ergodox_board_led_off();
+ergodox_right_led_1_off();
+ergodox_right_led_2_off();
+ergodox_right_led_3_off();
+switch (layer) {
+
+    case SYMB:
+        ergodox_right_led_1_on();
+        
+        
+    break;
+    case MDIA:
+        
+        ergodox_right_led_2_on();
+        
+    break;
+    case NUMB:
+        
+        
+        ergodox_right_led_3_on();
+    break;
+    case EGOS:
+        ergodox_right_led_1_on();
+        ergodox_right_led_2_on();
+        ergodox_right_led_3_on();
+    break;
+default:
+// none
+break;
+}
+
+};
+
diff --git a/layouts/community/ergodox/osx_de_experimental/osx_de_experimental_highres.png.md b/layouts/community/ergodox/osx_de_experimental/osx_de_experimental_highres.png.md
new file mode 100644 (file)
index 0000000..1fca8a5
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/GIkRdX3.png
diff --git a/layouts/community/ergodox/osx_de_experimental/readme.md b/layouts/community/ergodox/osx_de_experimental/readme.md
new file mode 100644 (file)
index 0000000..e6a1018
--- /dev/null
@@ -0,0 +1,22 @@
+
+# Ergodox und Ergodox-EZ experimentelles Layout
+
+dieses layout ist experimentell und wird im Lufe der Zeit viele Änderungen und Verbesserungen durchlaufen. Falls diese sich als vorteilhaft erweisen, werden sie evtl. auch in das `osx_de` layout übernommen.
+
+
+
+# Erstellt Mit Dem ErgodoxLayoutGenerator
+
+Der ErgodoxLayoutGenerator (ELG) ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
+Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
+---------------------------------------------------------------------------------------------------------------------
+
+# Ergodox and Ergodox-EZ experimental layout
+
+This is an experimental layout which will undergo heavy changes over time. If changes prove to be good, they might also move into the `osx_de` layout.
+
+Created Using the ErgodoxLayoutGenerator
+
+The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded  [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
+
+The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
\ No newline at end of file
diff --git a/layouts/community/ergodox/osx_fr/keymap.c b/layouts/community/ergodox/osx_fr/keymap.c
new file mode 100644 (file)
index 0000000..f899b8b
--- /dev/null
@@ -0,0 +1,187 @@
+// French AZERTY version of the default_osx file
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_french_osx.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   -    |   &  |   é  |   "  |   '  |   (  | LEFT |           | RIGHT|   §  |   è  |   !  |   ç  |   à  |   )    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   A  |   Z  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   `    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   Q  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   M  |  LGui  |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |W/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   ,  |; / L2|   :  |=/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | ù /L1|  <   |AltShf| Left | Right|                                       |  Up  | Down |   ^  |   $  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        FR_MINS,          FR_AMP,      FR_EACU,       FR_QUOT, FR_APOS, FR_LPRN, KC_LEFT,
+        KC_DELT,          FR_A,        FR_Z,          KC_E,    KC_R,    KC_T,    TG(1),
+        KC_BSPC,          FR_Q,        KC_S,          KC_D,    KC_F,    KC_G,
+        KC_LSFT,          CTL_T(FR_W), KC_X,          KC_C,    KC_V,    KC_B,    ALL_T(KC_NO),
+        LT(SYMB,FR_UGRV), FR_LESS,     LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+            ALT_T(KC_APP), KC_LGUI,
+            KC_HOME,
+            KC_SPC, KC_BSPC, KC_END,
+            
+        // right hand
+        KC_RGHT,      FR_SECT, FR_EGRV, FR_EXLM,           FR_CCED, FR_AGRV,         FR_RPRN,
+        TG(1),        KC_Y,    KC_U,    KC_I,              KC_O,    KC_P,            FR_GRV,
+        KC_H,         KC_J,    KC_K,    KC_L,              FR_M,    KC_LGUI,
+        MEH_T(KC_NO), KC_N,    FR_COMM, LT(MDIA, FR_SCLN), FR_COLN, CTL_T(FR_EQL),   KC_RSFT,
+        KC_UP,        KC_DOWN, KC_LBRC, KC_RBRC,           KC_FN1,
+            KC_LALT, CTL_T(KC_ESC),
+            KC_PGUP,
+            KC_PGDN, KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    , |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,FR_EXLM,FR_AT,  FR_LCBR,FR_RCBR,FR_PIPE,KC_TRNS,
+       KC_TRNS,FR_HASH,FR_DLR, FR_LPRN,FR_RPRN,FR_GRV,
+       KC_TRNS,FR_PERC,FR_CIRC,FR_LBRC,FR_RBRC,FR_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   FR_7,   FR_8,    FR_9,    FR_ASTR, KC_F12,
+                KC_DOWN, FR_4,   FR_5,    FR_6,    FR_PLUS, KC_TRNS,
+       KC_TRNS, FR_AMP,  FR_1,   FR_2,    FR_3,    FR_BSLS, KC_TRNS,
+                         KC_TRNS,FR_COMM, FR_0,    FR_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/osx_kinesis_pnut/keymap.c b/layouts/community/ergodox/osx_kinesis_pnut/keymap.c
new file mode 100644 (file)
index 0000000..59ffe4f
--- /dev/null
@@ -0,0 +1,191 @@
+// Netable differences vs. the default firmware for the ErgoDox EZ:
+// 1. The Cmd key is now on the right side, making Cmd+Space easier.
+// 2. The media keys work on OSX (But not on Windows).
+// Wanted to map default layer of my EZ to my existing Kinesis Mapping.
+// Only default layer was remapped all others layers are standard Ergodox EZ
+// Very personal mapping of-course, but who knows a starting point for others.
+
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | CapsL  |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | TAB    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | ESC    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '"   |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |AltShf|Grv/L1|  '"  | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | LGui | App  |       | Ctrl/Esc | RGui |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       |   =  |        |      |
+ *                                 | Backs|Delete|------|       |------|  Enter |Space |
+ *                                 | pace |      | End  |       | TAB  |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_CAPSLOCK,    KC_1,           KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_TAB,         KC_Q,           KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
+        KC_ESC,         KC_A,           KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),    KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LALT(KC_LSFT),  LT(SYMB,KC_GRV),KC_QUOT,KC_LEFT,KC_RGHT,
+                                              KC_LGUI,  ALT_T(KC_APP),
+                                                              KC_HOME,
+                                               KC_BSPC,KC_DELT,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(1),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOTE,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             CTL_T(KC_ESC),        KC_LGUI,
+             KC_EQL,
+             KC_TAB, KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c
new file mode 100644 (file)
index 0000000..dcf2dc1
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * This is built out of frustration with OSX / Sierra caps lock delay.
+ * Fake it till you make it!
+ */
+
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "timer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+#define BLINK_BASE  150U // timer threshold for blinking on MDIA layer
+
+typedef enum onoff_t {OFF, ON} onoff;
+
+#define caps_led_on  ergodox_right_led_2_on
+#define caps_led_off ergodox_right_led_2_off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |   6  |           |   `  |   7  |   8  |   9  |   0  |   -  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | CapsL  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   "    |
+ * |--------+------+------+------+------+------| ~L1  |           |  ~L1 |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Ctrl | Opt  | Cmd  | Left | Right|                                       | Down | Up   | Ctrl | Cmd  | Opt  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      | L1   |       | Alt  | Ctrl   ]
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Backsp| Del  |------|       |------|  Enter | Spc  |
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+
+    [BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,     KC_1,     KC_2,    KC_3,    KC_4,    KC_5,    KC_6,
+        KC_TAB,     M(KC_Q),  M(KC_W), M(KC_E), M(KC_R), M(KC_T), KC_LBRC,
+        M(KC_CAPS), M(KC_A),  M(KC_S), M(KC_D), M(KC_F), M(KC_G),
+        KC_LSFT,    M(KC_Z),  M(KC_X), M(KC_C), M(KC_V), M(KC_B), KC_FN0,
+        KC_LCTL,    KC_LALT,  KC_LGUI, KC_LEFT, KC_RGHT,
+                                                         KC_TRNS, KC_FN1,
+                                                                  KC_HOME,
+                                                KC_BSPC, KC_DEL,  KC_END,
+        // right hand
+        KC_GRV,     KC_7,     KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,
+        KC_RBRC,    M(KC_Y),  M(KC_U), M(KC_I), M(KC_O), M(KC_P), KC_BSLS,
+                    M(KC_H),  M(KC_J), M(KC_K), M(KC_L), KC_SCLN, KC_QUOT,
+        KC_FN0,     M(KC_N),  M(KC_M), KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                              KC_DOWN, KC_UP,   KC_RCTL, KC_RGUI, KC_RALT,
+        KC_RALT,    KC_RCTL,
+        KC_PGUP,
+        KC_PGDN,    KC_ENT,   KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |      |  F7  |  F8  |  F9  |  F10 |  F11 |   F12  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |   L0 |  L2  |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+    [SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_GRV ,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                               KC_FN3, KC_FN2,
+                                                       KC_TRNS,
+                                       KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F7,   KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                         KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+/* Keymap 2: Media and tenkey
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  BOOTL |      | Mute | Vol- | Vol+ | F14  | F15  |           |      |      | NumLk|   /  |  *   |  -   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |  7   |  8   |  9   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+-----+-------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |  4   |  5   |  6   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |  1   |  2   |  3   | Enter|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  0   |  0   |  .   | Enter|      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  L1  |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+    // MEDIA AND TENKEY
+    [MDIA] = LAYOUT_ergodox(
+       KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_F14,  KC_F15,
+       KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
+                                                    KC_FN4,  KC_NO,
+                                                             KC_TRNS,
+                                           KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_NO,   KC_NO,   KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_NO,
+       KC_NO,   KC_NO,   KC_P7,   KC_P8,   KC_P9,   KC_PPLS, KC_NO,
+                KC_NO,   KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_NO,
+       KC_NO,   KC_NO,   KC_P1,   KC_P2,   KC_P3,   KC_PENT, KC_NO,
+                         KC_P0,   KC_P0,   KC_PDOT, KC_PENT, KC_NO,
+       KC_NO,   KC_NO,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_LAYER_MOMENTARY(SYMB),               // FN0 - Momentary Layer 1 (Symbols)
+    ACTION_LAYER_ON(SYMB,ON_RELEASE),           // FN1 - Enable Layer 1 (Symbols)
+    ACTION_LAYER_ON(MDIA,ON_RELEASE),           // FN2 - Enable Layer 2 (Media)
+    ACTION_LAYER_OFF(SYMB,ON_RELEASE),          // FN3 - Disable Layer 1 (Symbols)
+    ACTION_LAYER_OFF(MDIA,ON_RELEASE),          // FN4 - Disable Layer 2 (MMedia)
+    ACTION_LAYER_MOMENTARY(MDIA)                // FN5 - Momentary Layer 2 (Mdia)
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    static onoff caps_state = OFF;
+    switch(id) {
+    case KC_CAPS:
+        if (record->event.pressed) {
+            // Toggle caps state;
+            if (caps_state == OFF) {
+                // Turn it on then!
+                caps_led_on();
+                caps_state = ON;
+            } else {
+                caps_led_off();
+                caps_state = OFF;
+            }
+        }
+        break;
+    default:
+        if (record->event.pressed) {
+            bool shifted = false;
+            if (caps_state == ON && get_mods() == 0) {
+                register_code(KC_LSFT);
+                shifted = true;
+            }
+            register_code(id);
+            if(shifted) {
+                unregister_code(KC_LSFT);
+            }
+        } else {
+            unregister_code(id);
+        }
+        break;
+    }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    static onoff board_led_state = OFF;
+    static uint16_t dt = 0;
+    static uint8_t oldlayer = 0;
+
+    if(oldlayer != layer) {
+        // Layer was just toggled.
+        if(layer == BASE) {
+            ergodox_board_led_off();
+            board_led_state = OFF;
+        } else {
+            ergodox_board_led_on();
+            board_led_state = ON;
+        }
+    } else if (layer >= MDIA) {
+        // We need to do blinking.
+        if(timer_elapsed(dt) > BLINK_BASE) {
+            // toggle
+            dt = timer_read();
+            if(board_led_state == OFF) {
+                ergodox_board_led_on();
+                board_led_state = ON;
+            } else {
+                ergodox_board_led_off();
+                board_led_state = OFF;
+            }
+        }
+    }
+    oldlayer = layer;
+}
diff --git a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/readme.md b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/readme.md
new file mode 100644 (file)
index 0000000..42cb195
--- /dev/null
@@ -0,0 +1,38 @@
+# The extra special ergodox build for MacOS Sierra caps lock users
+
+###Do you
+- Hate the OSX / MacOS caps lock delay?
+- Have an ergodox?
+
+###Then this might just be for you!
+
+[This](http://apple.stackexchange.com/questions/81234/how-to-remove-caps-lock-delay-on-apple-macbook-pro-aluminum-keyboard)
+and [this](http://sleepycow.org/2014/07/removing-the-caps-lock-delay-on-a-macbook/)
+are good workarounds for the caps lock delay, however none of these
+work on Sierra.  This abomination of a keymap simulates capslock to the best
+of its abilities.
+This means that it keeps track of caps lock state internally rather than
+sending a caps lock keypress to the OS.  It is smart enough to check for
+modifiers, such as Control being held down, and stop it with the hanky panky
+and just send on the key event unmolested even if FakeCaps is enabled.  And
+since the macro isn't even registered on the non-alphas, it will not affect
+them regardless.  Only in the event that FakeCaps is enabled and an alpha key
+is pressed will it sneak in a shift keydown before the alpha keydown and
+immediately afterward sneaks in a shift keyup.  Generally this works well,
+however there is one known issue:
+
+- Holding down a key will only have the first character in caps.  For instance,
+  with caps lock on, if you hold down the 'a' key, you get:
+
+  ```
+  Aaaaaaaaaaaaaaaaaa
+  ```
+
+I have only tested this on an original Ergodox with a Teensy 2.0.
+
+####Some other small tweaks
+ - Layer 0 board light is off
+ - Layer 1 board light is on solid
+ - Layer 2 board light blinks at speed controlled by BLINK_BASE
+
+![osx whiskey tango foxtrot](https://i.imgur.com/yQl1DFe.png)
diff --git a/layouts/community/ergodox/phoenix/keymap.c b/layouts/community/ergodox/phoenix/keymap.c
new file mode 100644 (file)
index 0000000..7ebdeae
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |  _   |           | Del  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | =      |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       | Down |  UP  |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | Home |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | End  |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Enter |Space |
+ *                                 |      |ace   | LGui |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LSFT(KC_MINS),
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_EQL,         KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_HOME,
+                                                              KC_END,
+                                               KC_SPC,KC_BSPC,KC_LGUI,
+        // right hand
+             KC_DELT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_DOWN,KC_UP  ,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  F11 |  F12 |      |      |      |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0  |   0  |   .  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_F11, KC_F12, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/phoenix/readme.md b/layouts/community/ergodox/phoenix/readme.md
new file mode 100644 (file)
index 0000000..b1053bf
--- /dev/null
@@ -0,0 +1,10 @@
+# ErgoDox EZ Phoenix Configuration
+
+I started working using the default layout.  The changes that I made are largely things that I consistely do wrong.
+
+As a programmer I hit tab a lot for autocomplete so that muscle memory is very difficult to re-write.  The stragest change might be all the keys that I cleared in the Code layer.  This is mainly to facilitate quickly typing uuids, as sometimes it is quite tedious to copy/paste them from one window to the other.
+
+## Changelog
+
+* April 25, 2016 (V1.0): 
+  * Initial submission.
diff --git a/layouts/community/ergodox/plover/keymap.c b/layouts/community/ergodox/plover/keymap.c
new file mode 100644 (file)
index 0000000..d3e3547
--- /dev/null
@@ -0,0 +1,228 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define PLVR 3 // Plover layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LGui |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |Plover|   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Esc    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|   '    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | Home |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | End  |       | PgUp |        |      |
+ *                                 |Backsp|Delete|------|       |------| Enter  |Space |
+ *                                 | ace  |      | LAlt |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LGUI,
+        KC_TAB,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
+        KC_ESC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_HOME,
+                                                               KC_END,
+                                               KC_BSPC,KC_DELT,KC_LALT,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(3),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOT,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_WBAK, KC_WFWD
+),
+
+/* Keymap 4: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |  6   |  7   |   8  |   9  |  0   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |   c  |   v  |------|       |------|  n   |  m   |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+
+[PLVR] = LAYOUT_ergodox(  // layout: layer 4: Steno for Plover
+        // left hand
+        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS,
+        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,
+        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO,
+        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
+                                      KC_FN4, KC_NO,
+                                           KC_NO,
+                                 KC_C,   KC_V,   KC_NO,
+        // right hand
+             KC_TRNS,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS,
+             KC_TRNS,   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS,
+                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC,
+               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT,
+                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_NO,  KC_N,   KC_M
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/plums/keymap.c b/layouts/community/ergodox/plums/keymap.c
new file mode 100644 (file)
index 0000000..c75ce0f
--- /dev/null
@@ -0,0 +1,229 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  |  F5  |           |Hypr+M|   6  |   7  |   8  |   9  |   0  | Mute   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  [   |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LGui   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| SYMB |           | MDIA |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Ca/Ctl|   {  |   (  |   |  |   :  |                                       |   -  |   =  |   )  |   }  |C`/Ctl|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | LGA  | LAlt |       | RAlt | Play |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Home |       | PgUp |      |      |
+ *                                 |Backsp| Esc  |------|       |------|Enter |Space |
+ *                                 |ace   |      | End  |       | PgDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,           KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_F5,
+        KC_TAB,           KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
+        KC_LGUI,          KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,          KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   TG(SYMB),
+        F(0),             KC_LCBR,      KC_LPRN,KC_PIPE,KC_COLN,
+                                               LGUI(KC_LALT), KC_LALT,
+                                                              KC_HOME,
+                                     KC_BSPC,         KC_ESC,  KC_END,
+        // right hand
+             HYPR(KC_M),     KC_6,   KC_7,    KC_8,     KC_9,      KC_0,      KC_MUTE,
+             KC_RBRC,    KC_Y,   KC_U,    KC_I,     KC_O,      KC_P,      KC_BSLS,
+                         KC_H,   KC_J,    KC_K,     KC_L,      KC_SCLN,   KC_QUOT,
+             TG(MDIA),   KC_N,   KC_M,    KC_COMM,  KC_DOT,    KC_SLSH,   KC_RSFT,
+                                 KC_MINS, KC_EQL,   KC_RPRN,   KC_RCBR,   F(1),
+             KC_RALT, KC_MPLY,
+             KC_PGUP,
+             KC_PGDN, KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |      |      |      |      |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Left | Down |  Up  | Right|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,    KC_F8,   KC_F9,    KC_F10,  KC_F11,
+       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_F12,
+                KC_LEFT, KC_DOWN,  KC_UP,   KC_RIGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+                         KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|MsLeft|MsDown| MsUp |MsRght|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |VolUp |VolDn | Prev | Next |      |                                       | LClk | RClk |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0] = ACTION_MACRO_TAP(0),                // FN0 - Ctrl + a (For screen/tmux)
+  [1] = ACTION_MACRO_TAP(1)                 // FN1 - Ctrl + ` (For quake style console)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
+{
+  switch(id) {
+    case 0:
+      if (record->event.pressed) {
+        if (record->tap.count) {
+          if (record->tap.interrupted) {
+            record->tap.count = 0;
+            // hold press action
+            register_code(KC_LCTL);
+          } else {
+            // tap press action
+            return MACRO( D(LCTL), T(A), U(LCTL), END  );
+          }
+        } else {
+          // hold press action
+          register_code(KC_LCTL);
+        }
+      } else {
+        if (record->tap.count) {
+          // tap release action
+        } else {
+          // hold release action
+          unregister_code(KC_LCTL);
+        }
+        record->tap.count = 0;
+      }
+      break;
+    case 1:
+      if (record->event.pressed) {
+        if (record->tap.count) {
+          if (record->tap.interrupted) {
+            record->tap.count = 0;
+            // hold press action
+            register_code(KC_RCTL);
+          } else {
+            // tap press action
+            return MACRO( DOWN(KC_RCTL), TYPE(KC_GRV), UP(KC_RCTL), END  );
+          }
+        } else {
+          // hold press action
+          register_code(KC_RCTL);
+        }
+      } else {
+        if (record->tap.count) {
+          // tap release action
+        } else {
+          // hold release action
+          unregister_code(KC_RCTL);
+        }
+        record->tap.count = 0;
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
+
+
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/plums/readme.md b/layouts/community/ergodox/plums/readme.md
new file mode 100644 (file)
index 0000000..32930e0
--- /dev/null
@@ -0,0 +1,11 @@
+# ErgoDox EZ Plums Configuration
+
+## Changelog
+
+* Apr 23, 2016 (v0.1.0): 
+  * Shortcut for iTerm2 quake style dropdown (Ctrl+`)
+  * Shortcut for screen/tmux (Ctrl+a)
+  * Shortcut for shush (Hyper+m)
+  * Combo modifier for LGUI + LALT
+
+![Plums](https://i.imgur.com/0HkgLvb.png)
diff --git a/layouts/community/ergodox/pvinis/Changelog.md b/layouts/community/ergodox/pvinis/Changelog.md
new file mode 100644 (file)
index 0000000..e581620
--- /dev/null
@@ -0,0 +1,7 @@
+## v0.3
+
+*2016-10-11*
+
+### Starting point
+
+* The starting point of this keymap. A beginner layout, and a couple placeholders.
diff --git a/layouts/community/ergodox/pvinis/Readme.md b/layouts/community/ergodox/pvinis/Readme.md
new file mode 100644 (file)
index 0000000..af27210
--- /dev/null
@@ -0,0 +1,65 @@
+pvinis' keymap
+==============
+
+This is a getting-used-to keymap for the [ErgoDox EZ][ez]. It's very much a work in progress.
+
+[ez]: https://ergodox-ez.com/
+
+## Table of Contents
+
+* [Todo](#todo)
+* [Layouts](#layouts)
+  - [Base layer](#base-layer)
+  - [Beginner layer](#beginner-layer)
+  - [QWERTY layer](#qwerty-layer)
+  - [CARPALX layer](#carpalx-layer)
+  - [System Control layer](#system-control-layer)
+  - [Template layers](#template-layers)
+* [Building](#building)
+
+# Todo
+
+- [ ] Generate images from keymap
+- [ ] Implement algernon's heatmap
+- [ ] Implement `KC_POP`
+
+# Layouts
+
+## Base layer
+
+This is the base layer that contains the common buttons of all keymaps. Right now, it has the top left button as a `flash` button when it's tapped 4 times, and the two thumb islands. The islands contain the `space` and `enter` keys on the right, the `backspace` and `shift` on the left, and all the 1x1 keys are just layer switches.
+Every time I connect the keyboard, I press the `BEGIN` layer switch, and then start typing.
+Recently, I added a few application "shortcuts", that basically call `ctrl`+`alt`+`cmd`+`<key>`, and `<key>` is `S` for Slack, `X` for Xcode, `M` for Messenger. Using [Hammerspoon][hammerspoon], I show/hide the application.
+
+[hammerspoon]: http://www.hammerspoon.org/
+
+## Beginner layer
+
+This is a basic keymap I use right now until I'm comfortable typing on the Ergodox. Currently uses a QWERTY layout, and the `([{}])` on the middle keys. Not a perfect layout, and its going to go away at some point, but for now thats my daily driver.
+
+## QWERTY layer
+
+This is basically the same as the `BEGIN` layer, but it might go away. I'm not using it, but I should have a QWERTY layout on the keyboard, in case someone else wants to try it out, or if I completely forget how keyboards work! At some point, this and the `BEGIN` layer will become one.
+
+## CARPALX layer
+
+This is here as a placeholder. I want to transition to [Carpalx QGMLWY][carpalx] or [White][white] at some point. They both look very interesting and more comfortable to type on, but after I'm confident with typing on the Ergodox.
+
+[carpalx]: http://mkweb.bcgsc.ca/carpalx/?full_optimization
+[white]: https://github.com/mw8/white_keyboard_layout
+
+## System Control layer
+
+This one is a layer that, in time, will have controls like mouse movement, volume up/down, mute, sleep, restart, shutdown, etc.
+
+## Template layers
+
+I have two commented out layers that are just templates, so I can easily create a new layer.
+
+# Building
+
+```
+$ git clone https://github.com/qmk/qmk_firmware.git
+$ cd qmk_firmware/keyboards/ergodox/keymaps/pvinis
+$ make
+```
diff --git a/layouts/community/ergodox/pvinis/keymap.c b/layouts/community/ergodox/pvinis/keymap.c
new file mode 100644 (file)
index 0000000..1bca039
--- /dev/null
@@ -0,0 +1,475 @@
+// pvinis' ergodox keymap
+
+#include QMK_KEYBOARD_H
+#include "mousekey.h"
+
+// easier name for left ctrl-alt-gui
+#define ALLM(kc) LCAG(kc)
+
+// layers
+enum {
+  BASE = 0,
+  BEGIN,
+  QWERTY,
+  CARPALX,
+  SYSCTL,
+  MOUSE,
+};
+
+// extra keys
+enum {
+  NONE = 0,
+
+  // tap dance
+  TD_FLSH, // flash keyboard
+  TD_LAYR, // SYSCTL and MOUSE layer switch
+};
+
+// application selection
+// this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
+#define AP_SLCK ALLM(KC_S)
+#define AP_XCOD ALLM(KC_X)
+#define AP_MSGR ALLM(KC_M)
+
+// keymaps
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* BASE
+ * the base of the keyboard.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |4x FLASH|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |SYSCTL|      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |BEGIN |QWERTY|       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |CARPAL|       |Slack |        |      |
+ *                                 |Backsp|LShift|------|       |------| Enter  |Space |
+ *                                 |      |      |SYSCTL|       |Msngr |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+ TD(TD_FLSH)    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                          ,TG(BEGIN)  ,TD(TD_LAYR)
+                                                                      ,TG(MOUSE)
+                                                  ,KC_BSPC  ,KC_LSFT  ,TD(TD_LAYR)
+
+                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                          ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO       ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                                  ,MO(SYSCTL)  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+
+   ,TG(SYSCTL)  ,KC_NO
+   ,AP_SLCK
+   ,AP_MSGR     ,KC_ENT  ,KC_SPC
+),
+
+/* BEGIN
+ * a beginner's keymap i currently use.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  | opt  |           |   6  |   7  |   8  |   9  |   0  |   -  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
+ * |--------+------+------+------+------+------|   (  |           |   )  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |   `  |  Cmd |      | Cmd  |                                       |      |      |      |   '  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[BEGIN] = LAYOUT_ergodox(
+ KC_TRNS          ,KC_1    ,KC_2     ,KC_3     ,KC_4      ,KC_5    ,KC_LALT
+,KC_TAB           ,KC_Q    ,KC_W     ,KC_E     ,KC_R      ,KC_T    ,KC_LBRC
+,CTL_T(KC_ESC)    ,KC_A    ,KC_S     ,KC_D     ,KC_F      ,KC_G
+,KC_LSFT          ,KC_Z    ,KC_X     ,KC_C     ,KC_V      ,KC_B    ,KC_LPRN
+,KC_TRNS          ,KC_GRV  ,KC_LGUI  ,KC_LEFT  ,KC_RIGHT
+
+                                                                   ,KC_TRNS  ,KC_TRNS
+                                                                             ,KC_TRNS
+                                                         ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_6       ,KC_7  ,KC_8     ,KC_9     ,KC_0     ,KC_MINS    ,KC_EQL
+                ,KC_RBRC    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_BSLS
+                            ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_ENT
+                ,KC_RPRN    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_RSFT
+                                   ,KC_TRNS  ,KC_DOWN  ,KC_TRNS  ,KC_QUOT    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+/* QWERTY
+ * the default qwerty keymap. not really used, but i'll keep it here for now.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[QWERTY] = LAYOUT_ergodox(
+ KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
+,KC_TRNS    ,KC_Q     ,KC_W     ,KC_E     ,KC_R     ,KC_T    ,KC_TRNS
+,KC_TRNS    ,KC_A     ,KC_S     ,KC_D     ,KC_F     ,KC_G
+,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_B    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                             ,KC_TRNS  ,KC_TRNS
+                                                                       ,KC_TRNS
+                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
+                ,KC_TRNS    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_TRNS
+                            ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_TRNS
+                ,KC_TRNS    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
+                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+/* CARPALX
+ * the keymap i would like to transition to.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   G  |   M  |   L  |   W  |      |           |  L1  |   Y  |   F  |   U  |   B  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   D  |   S  |   T  |   N  |   R  |------|           |------|   I  |   A  |   E  |   O  |   H  |        |
+ * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
+ * |        |   Z  |   X  |   C  |   V  |   J  |      |           |      |   K  |   P  |   ,  |   .  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  Up  |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[CARPALX] = LAYOUT_ergodox(
+ KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
+,KC_TRNS    ,KC_Q     ,KC_G     ,KC_M     ,KC_L     ,KC_W    ,KC_TRNS
+,KC_TRNS    ,KC_D     ,KC_S     ,KC_T     ,KC_N     ,KC_R
+,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_J    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                             ,KC_TRNS  ,KC_TRNS
+                                                                       ,KC_TRNS
+                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
+                ,KC_TRNS    ,KC_Y  ,KC_F     ,KC_U     ,KC_B     ,KC_SCLN    ,KC_TRNS
+                            ,KC_I  ,KC_A     ,KC_E     ,KC_O     ,KC_H       ,KC_TRNS
+                ,KC_TRNS    ,KC_K  ,KC_P     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
+                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+/* SYSCTL
+ * a keymap to control my system.
+ *
+ * ,--------------------------------------------------.           ,------------------------------------------------------.
+ * |   ^    |      |      |      |      |      |      |           |      |      |      |          |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+----------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      | Mute | Home |    Up    | End  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+----------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|VolUp | Left |   Down   |Right |      | Lock   |
+ * |--------+------+------+------+------+------|      |           |      |------+------+----------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |VolDn | Prev |Play/Pause| Next |      | Sleep  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+----------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |          |      |      | Power|
+ *   `----------------------------------'                                       `--------------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |  ^   |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[SYSCTL] = LAYOUT_ergodox(
+ KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                      ,KC_NO  ,KC_NO
+                                                              ,KC_NO
+                                              ,KC_NO  ,KC_NO  ,KC_TRNS
+
+ /*,KC_POP ///  */,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
+ /* /// ,KC_PTRN*/,KC_NO    ,KC_MUTE  ,KC_HOME  ,KC_UP    ,KC_END   ,KC_NO    ,KC_NO
+                            ,KC_VOLU  ,KC_LEFT  ,KC_DOWN  ,KC_RGHT  ,KC_NO    ,LCTL(LSFT(KC_PWR))
+                  ,KC_NO    ,KC_VOLD  ,KC_MPRV  ,KC_MPLY  ,KC_MNXT  ,KC_NO    ,KC_SLEP
+                                      ,KC_TRNS  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_PWR
+
+          ,KC_NO  ,KC_NO
+          ,KC_NO
+          ,KC_NO  ,KC_NO  ,KC_NO
+),
+
+/* MOUSE
+ * a keymap to control my system.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ^    |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | MsUp |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |MsLeft| MsDn |MsRght|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |MidClk|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Left  |Right |
+ *                                 |      |      |------|       |------| Click| Click|
+ *                                 |      |      |  ^   |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[MOUSE] = LAYOUT_ergodox(
+ KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                      ,KC_NO  ,KC_NO
+                                                              ,KC_NO
+                                              ,KC_NO  ,KC_NO  ,KC_TRNS
+
+                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
+                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_MS_U  ,KC_NO    ,KC_NO    ,KC_NO
+                            ,KC_NO  ,KC_MS_L  ,KC_MS_D  ,KC_MS_R  ,KC_NO    ,KC_NO
+                  ,KC_NO    ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
+                                    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO    ,KC_NO
+
+          ,KC_NO  ,KC_NO
+          ,KC_NO
+          ,KC_NO  ,KC_NO  ,KC_NO
+),
+
+/* TEMPLATE
+ * keymap template with transparent and non-transparent keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+/*
+[TEMPLATE] = LAYOUT_ergodox(
+ KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                                ,KC_TRNS  ,KC_TRNS
+                                                                          ,KC_TRNS
+                                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                            ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+[TEMPLATE] = LAYOUT_ergodox(
+ KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                    ,KC_NO  ,KC_NO
+                                                            ,KC_NO
+                                            ,KC_NO  ,KC_NO  ,KC_NO
+
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                                  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+
+        ,KC_NO  ,KC_NO
+        ,KC_NO
+        ,KC_NO  ,KC_NO  ,KC_NO
+),
+*/
+};
+
+// keyboard initialization
+void matrix_init_user() {
+  ergodox_led_all_on();
+  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
+    ergodox_led_all_set(i);
+    wait_ms(5);
+  }
+  wait_ms(1000);
+  for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
+    ergodox_led_all_set(i);
+    wait_ms(10);
+  }
+  ergodox_led_all_off();
+}
+
+// light up leds based on the layer
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+
+  switch(layer) {
+  case SYSCTL:
+    ergodox_right_led_3_on();
+    break;
+  case MOUSE:
+    ergodox_right_led_2_on();
+    break;
+  default:
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    break;
+  }
+}
+
+// extra keys
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch (id) {
+  }
+  return MACRO_NONE;
+}
+
+// tap dances
+
+// flash keyboard on 4x tap, with leds
+void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
+  switch (state->count) {
+  case 1:
+    ergodox_right_led_3_on();
+    break;
+  case 2:
+    ergodox_right_led_2_on();
+    break;
+  case 3:
+    ergodox_right_led_1_on();
+    break;
+  case 4:
+    ergodox_right_led_3_off();
+    wait_ms(50);
+    ergodox_right_led_2_off();
+    wait_ms(50);
+    ergodox_right_led_1_off();
+    break;
+  }
+}
+
+void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count >= 4) {
+    reset_keyboard();
+    reset_tap_dance(state);
+  }
+}
+
+void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
+  ergodox_right_led_1_off();
+  wait_ms(50);
+  ergodox_right_led_2_off();
+  wait_ms(50);
+  ergodox_right_led_3_off();
+}
+
+// SYSCTL on first tap, MOUSE ON second tap
+void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
+  uint8_t layer = biton32(layer_state);
+
+  switch(state->count) {
+  case 1:
+    switch(layer) {
+    case SYSCTL:
+      layer_off(SYSCTL);
+      break;
+    case MOUSE:
+      layer_off(MOUSE);
+      break;
+    default:
+      layer_on(SYSCTL);
+      break;
+    }
+    break;
+  case 2:
+    layer_on(MOUSE);
+    break;
+  }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
+  [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
+};
diff --git a/layouts/community/ergodox/pvinis/rules.mk b/layouts/community/ergodox/pvinis/rules.mk
new file mode 100644 (file)
index 0000000..87cbd93
--- /dev/null
@@ -0,0 +1,7 @@
+CONSOLE_ENABLE = no    # for debugging
+
+SLEEP_LED_ENABLE = no  # no led blinking while sleeping
+NKRO_ENABLE = yes      # disable for windows
+TAP_DANCE_ENABLE = yes # tap-tap-tap
+
+
diff --git a/layouts/community/ergodox/readme.md b/layouts/community/ergodox/readme.md
new file mode 100644 (file)
index 0000000..ddbe193
--- /dev/null
@@ -0,0 +1,3 @@
+# ergodox
+
+    LAYOUT_ergodox
\ No newline at end of file
diff --git a/layouts/community/ergodox/replicaJunction/config.h b/layouts/community/ergodox/replicaJunction/config.h
new file mode 100644 (file)
index 0000000..c69ce8c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+Config file - Ergodox QMK with replicaJunction layout
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 KEYBOARDS_ERGODOX_CONFIG_H_
+#define KEYBOARDS_ERGODOX_CONFIG_H_
+
+#include QMK_KEYBOARD_CONFIG_H
+
+
+#undef MOUSEKEY_DELAY          
+#undef MOUSEKEY_INTERVAL       
+#undef MOUSEKEY_MAX_SPEED      
+#undef MOUSEKEY_TIME_TO_MAX    
+
+#define MOUSEKEY_DELAY          100
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_MAX_SPEED      3
+#define MOUSEKEY_TIME_TO_MAX    10
+
+#define TAPPING_TOGGLE  1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+// MS the button needs to be held before a tap becomes a hold (default: 200)
+#define TAPPING_TERM    200
+
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+// I don't have any locking keys, so I don't need these features
+
+
+/* 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
+
+/* Prevent modifiers from sticking when switching layers */
+/* Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers */
+#define PREVENT_STUCK_MODIFIERS
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+
+#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/layouts/community/ergodox/replicaJunction/keymap.c b/layouts/community/ergodox/replicaJunction/keymap.c
new file mode 100644 (file)
index 0000000..fc80059
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ * Keyboard: Ergodox
+ * Keymap:   replicaJunction
+ * Version:  1.2
+ *
+ * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus.
+ * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now
+ * have both keyboards, so I've designed these layouts in an effort to make switching between the
+ * two as easy as possible.
+ *
+ * I've also tried to make use of the extra keys on the Ergodox in as logical of a manner as possible,
+ * adding to the layers in the Atreus config without disturbing what's there already. This allows for
+ * things like F11-F20, the Application (Menu) key, and better media key placement.
+ *
+ * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
+ * here: https://colemakmods.github.io/mod-dh/
+ */
+
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define _CO 0 // Colemak
+#define _QW 1 // QWERTY
+#define _ME 2 // media keys
+#define _NU 3 // numpad
+#define _EX 4 // extend
+#define _GA 5 // mouse overlay for gaming
+
+// Some quick aliases, just to make it look pretty
+#define _______ KC_TRNS
+#define KCX_CGR LCTL(KC_GRV)
+#define KX_STAB LSFT(KC_TAB)
+#define KX_COPY LCTL(KC_C)
+#define KX_CUT  LCTL(KC_X)
+#define KX_PAST LCTL(KC_V)
+#define KX_UNDO LCTL(KC_Z)
+
+; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+     * Keymap: Colemak-ModDH
+     *
+     * ,--------------------------------------------------.           ,--------------------------------------------------.
+     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
+     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+     * |  LCtrl |   Q  |   W  |   F  |   P  |   B  | Home |           | BkSp |   J  |   L  |   U  |   Y  |   ;  |   -    |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * |  Tab   |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  |   '    |
+     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
+     * | LShft  |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   ,  |   /  | RShft  |
+     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+     *   | LGui |   [  |   ]  |CtlShf| LAlt |                                       | _EX  |   -  |   '  |   =  |   \  |
+     *   `----------------------------------'                                       `----------------------------------'
+     *                                        ,-------------.       ,-------------.
+     *                                        | LCtrl|  ~GA |       | Left | Right|
+     *                                 ,------|------|------|       |------+------+------.
+     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
+     *                                 | BkSp |  Del |------|       |------| Enter| Space|
+     *                                 |      |      | _NU  |       | Down |      |      |
+     *                                 `--------------------'       `--------------------'
+     */
+[_CO] = LAYOUT_ergodox(
+        // left hand
+        KC_GRV, KC_1,   KC_2,      KC_3,            KC_4,   KC_5,   KC_ESC,
+        KC_LCTL,KC_Q,   KC_W,      KC_F,            KC_P,   KC_B,   KC_HOME,
+        KC_TAB, KC_A,   KC_R,      KC_S,            KC_T,   KC_G,
+        KC_LSFT,KC_Z,   KC_X,      KC_C,            KC_D,   KC_V,   ALL_T(KC_NO),
+        KC_LGUI,KC_LBRC,KC_RBRC,   LCTL(KC_LSFT),   KC_LALT,
+
+                                                                KC_LCTL,        TG(_GA),
+                                                                                KC_HOME,
+                                                CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
+        // right hand
+             KC_ESC,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
+             KC_BSPC,  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_MINS,
+                       KC_M,   KC_N,   KC_E,   KC_I,   KC_O,   KC_QUOT,
+             KC_BSLS,  KC_K,   KC_H,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
+                               MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
+
+        KC_LEFT, KC_RGHT,
+        KC_UP,
+        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
+    ),
+
+    /*
+     * Keymap: QWERTY layout.
+     *
+     * This is optimized for gaming, not typing, so there aren't as many macros
+     * as the Dvorak layer. Some of the keys have also been moved to "game-
+     * like" locations, such as making the spacebar available to the left thumb,
+     * and repositioning the arrow keys at the bottom right corner.
+     *
+     * ,--------------------------------------------------.           ,--------------------------------------------------.
+     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
+     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+     * | LCtrl  |   Q  |   W  |   E  |   R  |   T  | Home |           | BkSp |   Y  |   U  |   I  |   O  |   P  |   -    |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * | Tab    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
+     * | LShft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShft  |
+     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+     *   | LGui |   `  |  \   |CtlShf| _NU  |                                       |  _EX |   -  |  '   |   =  |   \   |
+     *   `----------------------------------'                                       `----------------------------------'
+     *                                        ,-------------.       ,-------------.
+     *                                        | LCtrl| ~GA  |       | Left | Right|
+     *                                 ,------|------|------|       |------+------+------.
+     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
+     *                                 | BkSp |  Del |------|       |------| Enter| Space|
+     *                                 |      |      | _NU  |       | Down |      |      |
+     *                                 `--------------------'       `--------------------'
+     */
+[_QW] = LAYOUT_ergodox(  // Layer1: QWERTY
+        // left hand
+        KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
+        KC_LCTL,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
+        KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        KC_LGUI,KC_GRV, KC_SLSH,LCTL(KC_LSFT),  MO(_NU),
+
+                                                                KC_LCTL,TG(_GA),
+                                                                        KC_HOME,
+                                        CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
+        // right hand
+        KC_ESC,  KC_6,  KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
+        KC_BSPC, KC_Y,  KC_U,   KC_I,   KC_O,   KC_P,   KC_MINS,
+                 KC_H,  KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
+        KC_BSLS, KC_N,  KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
+                        MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
+
+        KC_LEFT, KC_RGHT,
+        KC_UP,
+        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
+    ),
+
+    /*
+     * Keymap: Numbers and symbols
+     *
+     * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases.
+     * That's why the Num Lock key exists on this layer - just in case.
+     *
+     * This layer also contains the layout switches.
+     *
+     * ,--------------------------------------------------.           ,--------------------------------------------------.
+     * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+     * |        |   !  |   @  |   {  |   }  |   &  |      |           |      |   /  |   7  |   8  |   9  |   *  |        |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * |        |   #  |   $  |   (  |   )  |   ~  |------|           |------|   |  |   4  |   5  |   6  |   -  |        |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * |        |   %  |   ^  |   [  |   ]  |   `  |      |           |      |   \  |   1  |   2  |   3  |   +  |        |
+     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+     *   |      |QWERTY|Colemk|      |      |                                       |   0  |   .  |   =  |      |      |
+     *   `----------------------------------'                                       `----------------------------------'
+     *                                        ,-------------.       ,-------------.
+     *                                        |NumLck| RESET|       |      |      |
+     *                                 ,------|------|------|       |------+------+------.
+     *                                 |      |      |      |       |      |      |      |
+     *                                 |      |      |------|       |------|      |      |
+     *                                 |      |      |      |       |      |      |      |
+     *                                 `--------------------'       `--------------------'
+     */
+[_NU] = LAYOUT_ergodox(
+        // left hand
+        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______,
+        _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_AMPR, _______,
+        _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_TILD,
+        _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV,  _______,
+        _______, DF(_QW), DF(_CO), _______, _______,
+
+                                                KC_NLCK,RESET,
+                                                        _______,
+                                        _______,_______,_______,
+        // right hand
+        _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
+        _______, KC_SLSH, KC_P7,   KC_P8,   KC_P9,   KC_PAST, _______,
+                 KC_PIPE, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, _______,
+        _______, KC_BSLS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, _______,
+                          KC_P0,   KC_PDOT, KC_EQL,  _______, _______,
+
+       _______, _______,
+       _______,
+       _______, _______, _______
+    ),
+
+    /*
+     * Keymap: Extend
+     *
+     * ,--------------------------------------------------.           ,--------------------------------------------------.
+     * |        |  F11 |  F12 |  F13 |  F14 |  F15 | Mute |           |      |  F16 |  F17 |  F18 |  F19 |  F20 |        |
+     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+     * |        |      |      |      |      | Ctrl`|  Vol |           |      | PgUp | Home |  Up  |  End |  Del |        |
+     * |--------+------+------+------+------+------|  Up  |           |      |------+------+------+------+------+--------|
+     * |        |      |  Gui |  Alt | Ctrl |      |------|           |------| PgDn | Left | Down | Right| BkSp |  Menu  |
+     * |--------+------+------+------+------+------|  Vol |           |      |------+------+------+------+------+--------|
+     * |        | Undo |  Cut | Copy |      | Paste| Down |           |      |      | ^Tab |  Tab |      |Insert| PrntScr|
+     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+     *   |      |      |      |      |      |                                       |      |      |      |      |      |
+     *   `----------------------------------'                                       `----------------------------------'
+     *                                        ,-------------.       ,-------------.
+     *                                        |      |      |       |      |      |
+     *                                 ,------|------|------|       |------+------+------.
+     *                                 |      |      |      |       |      |      |      |
+     *                                 |      |      |------|       |------|      |      |
+     *                                 |      |      |      |       |      |      |      |
+     *                                 `--------------------'       `--------------------'
+     *
+     * Ctrl+` is a keyboard shortcut for the program ConEmu, which provides a Quake-style drop-down command prompt.
+     *
+     */
+[_EX] = LAYOUT_ergodox(
+        // left hand
+        _______, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_MUTE,
+        _______, _______, _______, _______, _______, KCX_CGR, KC_VOLU,
+        _______, _______, KC_LGUI, KC_LALT, KC_LCTL, _______,
+        _______, KX_UNDO, KX_CUT,  KX_COPY, _______, KX_PAST, KC_VOLD,
+        _______, _______, _______, _______, _______,
+
+                                                _______,_______,
+                                                        _______,
+                                        _______,_______,_______,
+        // right hand
+        _______,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  _______,
+        _______,  KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,  _______,
+                  KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU,
+        _______,  _______, KX_STAB, KC_TAB,  _______, KC_INS,  KC_PSCR,
+                           _______, _______, _______, _______, _______,
+        _______, _______,
+        _______,
+        _______, _______, _______
+    ),
+
+    /*
+     * Keymap: Gaming
+     *
+     * Provides a mouse overlay for the right hand, and also moves some "gamer friendly" keys to the left, such as space.
+     * This layer also removes a lot of dual-role keys, as when gaming, it's nicer not to need to keep track of those.
+     *
+     * ,--------------------------------------------------.           ,--------------------------------------------------.
+     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+     * |        |      |      |      |      |      |      |           |      |      |WhlUp | MsUp |WhlDn |      |        |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * |        |      |      |      |      |      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
+     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+     *   | LCtrl|      |      |      |      |                                       |      |      |      |      |      |
+     *   `----------------------------------'                                       `----------------------------------'
+     *                                        ,-------------.       ,-------------.
+     *                                        |      | ~_GA |       |      |MClick|
+     *                                 ,------|------|------|       |------+------+------.
+     *                                 |      |      |      |       |      |      |      |
+     *                                 | Space|      |------|       |------|RClick|LClick|
+     *                                 |      |      |      |       |      |      |      |
+     *                                 `--------------------'       `--------------------'
+     */
+[_GA] = LAYOUT_ergodox(
+        // left hand
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        KC_LCTL, _______, _______, _______, _______,
+
+                                        _______,_______,
+                                                _______,
+                                        KC_SPC, _______,_______,
+
+        // right hand
+        _______,  _______, _______, _______, _______, _______, _______,
+        _______,  _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
+                  _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
+        _______,  _______, _______, _______, _______, _______, _______,
+                           _______, _______, _______, _______, _______,
+        _______, KC_BTN3,
+        _______,
+        _______, KC_BTN2, KC_BTN1
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(_NU)                // FN1 - Momentary Layer 1 (Numbers and symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+    // uint8_t default_layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+
+    switch (layer) {
+        case _CO:
+            ergodox_right_led_1_on();
+            break;
+        case _QW:
+            ergodox_right_led_2_on();
+            break;
+        case _NU:
+            ergodox_right_led_3_on();
+            break;
+        case _GA:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/replicaJunction/readme.md b/layouts/community/ergodox/replicaJunction/readme.md
new file mode 100644 (file)
index 0000000..8c4c033
--- /dev/null
@@ -0,0 +1,5 @@
+# replicaJunction - Ergodox (EZ) Layout
+
+I designed this layout, along with my complimentary Atreus layout, to address the challenge of having an Ergodox as my primary home keyboard and an Atreus as my primary work board. I wanted a layout that provided symbols in comfortable locations on both keyboards - but didn't require me to learn two separate sets of symbols for the two keyboards.
+
+I had originally used several keys as dual-role keys, where a tap would send a keypress and a long press and hold would trigger a different layer. However, after several months of experimenting with those ideas, I've begun moving away from that design due to performance. It's very hard to strike a balance between the time it takes to press a key normally while typing and the "delay" in the typing motion needed to trigger the alternate layer. I was frequently getting strange characters and artifacts because I pressed the function key + the symbol key too quickly, and the layer never shifted.
\ No newline at end of file
diff --git a/layouts/community/ergodox/reset_eeprom/keymap.c b/layouts/community/ergodox/reset_eeprom/keymap.c
new file mode 100644 (file)
index 0000000..c960af9
--- /dev/null
@@ -0,0 +1,140 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        EPRM,         EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
+        EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
+        EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM,
+        EPRM,        EPRM,  EPRM,   EPRM,   EPRM,   EPRM,   EPRM,
+        EPRM,        EPRM,      EPRM,  EPRM,EPRM,
+                                              EPRM,  EPRM,
+                                                              EPRM,
+                                               EPRM,EPRM,EPRM,
+        // right hand
+             EPRM,     EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM,
+             EPRM,    EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM,
+                          EPRM,   EPRM,  EPRM,   EPRM,   EPRM,EPRM,
+             EPRM,EPRM,   EPRM,  EPRM,EPRM, EPRM,   EPRM,
+                                  EPRM, EPRM,EPRM,EPRM,          EPRM,
+             EPRM,        EPRM,
+             EPRM,
+             EPRM,EPRM, EPRM
+    )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  eeconfig_init();
+};
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/robot_test_layout/keymap.c b/layouts/community/ergodox/robot_test_layout/keymap.c
new file mode 100644 (file)
index 0000000..5d672de
--- /dev/null
@@ -0,0 +1,151 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  RGB_FF0000,
+  RGB_00FF00,
+  RGB_0000FF,
+  RGB_FFFFFF,
+  RGB_TOGGLE,
+  LED1,
+  LED2,
+  LED3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_ergodox(
+        RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN,
+        KC_GRAVE,   KC_A,       KC_B,       KC_C,       KC_D,       KC_E, KC_EXLM,
+        KC_HASH,    KC_J,       KC_K,       KC_L,       KC_M,       KC_N,
+        KC_AMPR,    KC_T,       KC_U,       KC_V,       KC_W,       KC_X, KC_DLR,
+        KC_PIPE,    KC_R,       KC_PLUS,    KC_LCBR,    KC_RCBR,
+
+                                            KC_F, KC_G,
+                                                  KC_H,
+                                     KC_P,  KC_O, KC_I,
+
+
+
+                                               // RIGHT HAND
+                                               KC_RPRN,       KC_6, KC_7, KC_8,    KC_9,   KC_0,    KC_MINS,
+                                               KC_AT,         KC_F, KC_G, KC_H,    KC_I,   KC_COLN, KC_BSLS,
+                                                              KC_O, KC_P, KC_Q,    KC_R,   KC_S,    KC_QUOT,
+                                               LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR,
+                                                              KC_A, KC_B, KC_C,    KC_D,   KC_PIPE,
+
+                                               LED1, KC_E,
+                                               LED2,
+                                               LED3, KC_J, KC_K
+    )
+};
+
+
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_TOGGLE(1)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool status_led1_on = false, status_led2_on = false, status_led3_on = false;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case RGB_FF0000:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          EZ_RGB(0xff0000UL);
+          register_code(KC_1); unregister_code(KC_1);
+        #endif
+      }
+      return false;
+      break;
+    case RGB_00FF00:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          EZ_RGB(0x00ff00UL);
+          register_code(KC_2); unregister_code(KC_2);
+        #endif
+      }
+      return false;
+      break;
+    case RGB_0000FF:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          EZ_RGB(0x0000ffUL);
+          register_code(KC_3); unregister_code(KC_3);
+        #endif
+      }
+      return false;
+      break;
+    case RGB_FFFFFF:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          EZ_RGB(0xffffffUL);
+          register_code(KC_4); unregister_code(KC_4);
+        #endif
+      }
+      return false;
+      break;
+    case RGB_TOGGLE:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_toggle();
+          register_code(KC_EQL); unregister_code(KC_EQL);
+        #endif
+      }
+      return false;
+      break;
+    case LED1:
+      if (record->event.pressed) {
+        if(status_led1_on) {
+        ergodox_right_led_1_off();
+        status_led1_on = false;
+        } else {
+        ergodox_right_led_1_on();
+        status_led1_on = true;
+        }
+      }
+      return false;
+      break;
+    case LED2:
+      if (record->event.pressed) {
+        if(status_led2_on) {
+        ergodox_right_led_2_off();
+        status_led2_on = false;
+        } else {
+        ergodox_right_led_2_on();
+        status_led2_on = true;
+        }
+      }
+      return false;
+      break;
+    case LED3:
+      if (record->event.pressed) {
+        if(status_led3_on) {
+        ergodox_right_led_3_off();
+        status_led3_on = false;
+        } else {
+        ergodox_right_led_3_on();
+        status_led3_on = true;
+        }
+      }
+      return false;
+      break;
+  }
+  return true;
+}
diff --git a/layouts/community/ergodox/robot_test_layout/readme.md b/layouts/community/ergodox/robot_test_layout/readme.md
new file mode 100644 (file)
index 0000000..45dc2aa
--- /dev/null
@@ -0,0 +1,5 @@
+# Robot test layout
+
+Use this layout if you like to pretend you're [Norman](https://www.youtube.com/watch?v=-sbxFBay-tg), the ErgoDox EZ manufacturing robot.
+
+It's really meant just for internal use, but we're posting it on GitHub anyway, because hurray to open source. :)
diff --git a/layouts/community/ergodox/romanzolotarev-norman-osx/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-osx/keymap.c
new file mode 100644 (file)
index 0000000..e024d5f
--- /dev/null
@@ -0,0 +1,46 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = LAYOUT_ergodox(
+    KC_GRV,   KC_1,    KC_2,  KC_3,    KC_4,    KC_5,    KC_F5,
+    KC_TAB,   KC_Q,    KC_W,  KC_D,    KC_F,    KC_K,    KC_BSLS,
+    KC_LCTRL, KC_A,    KC_S,  KC_E,    KC_T,    KC_G,
+    KC_LSFT,  KC_Z,    KC_X,  KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,    KC_F2,   KC_F3, KC_F4,   KC_LGUI,
+    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/     /*-*/    /*-*/  /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_LALT,
+    //
+    /*-*/     KC_F6,   KC_6,  KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/     KC_NO,   KC_J,  KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/     /*-*/    KC_Y,  KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/     KC_RBRC, KC_P,  KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/     /*-*/    /*-*/  KC_RGUI, KC_LEFT, KC_DOWN, KC_UP,         KC_RGHT,
+    KC_MPLY,  KC_MNXT,
+    KC_MPRV,
+    KC_RALT,  KC_QUOT, KC_SPC
+    )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+};
diff --git a/layouts/community/ergodox/romanzolotarev-norman-osx/readme.md b/layouts/community/ergodox/romanzolotarev-norman-osx/readme.md
new file mode 100644 (file)
index 0000000..5e7d0eb
--- /dev/null
@@ -0,0 +1,41 @@
+# Roman's Layout
+
+There is only one layer, and it is  based on [Norman
+layout](https://normanlayout.info/).
+
+Looking for multiple-layer layouts?
+
+- [Symbols, arrows, plover, HJKL
+  arrows](../romanzolotarev-norman-plover-osx-hjkl/)
+- [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/)
+
+[![keyboard-layout](https://i.imgur.com/U14664K.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195)
+
+## How to use Vim key
+
+It is `CTL_T(KC_ESC)` and it works this way:
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## How to activate N-rollover
+
+- Hold left `SHIFT` and right `SHIFT` and then tap `N`.
+
+## How to make and flash on OS X
+
+First you need to install few brew packages.
+
+```bash
+brew tap osx-cross/avr
+brew install dfu-programmer avr-libc teensy_loader_cli
+```
+
+Then you can clone this repository, make and flash your ErgoDox.
+
+```bash
+git clone https://github.com/romanzolotarev/qmk_firmware
+cd qmk_firmware/keyboards/ergodox
+# Optionally tweak ./keymaps/romanzolotarev-norman-osx/keymap.c
+SLEEP_LED_ENABLED=no LAYOUT_ergodox=romanzolotarev-norman-osx make teensy
+```
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c
new file mode 100644 (file)
index 0000000..1dd956b
--- /dev/null
@@ -0,0 +1,134 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = LAYOUT_ergodox(
+    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
+    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
+    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
+    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+    //
+    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
+    KC_MPLY,       KC_MNXT,
+    KC_MPRV,
+    KC_FN3,        KC_QUOT, KC_SPC
+  ),
+  [SYMB] = LAYOUT_ergodox(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+    //
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
+    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS
+  ),
+  [PLVR] = LAYOUT_ergodox(
+    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
+    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
+    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
+    //
+    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
+    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
+    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
+    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_NO,         KC_N,    KC_M
+  ),
+  [ARRW] = LAYOUT_ergodox(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+    //
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+  switch(id) {
+    case 0:
+      if (record->event.pressed) {
+        register_code(KC_RSFT);
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
+
+// 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);
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+  switch (layer) {
+    case SYMB:
+      ergodox_right_led_1_on();
+      break;
+    case PLVR:
+      ergodox_right_led_2_on();
+      break;
+    case ARRW:
+      ergodox_right_led_3_on();
+      break;
+    default:
+      break;
+  }
+};
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/readme.md b/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/readme.md
new file mode 100644 (file)
index 0000000..577d574
--- /dev/null
@@ -0,0 +1,50 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation (same fingers for arrows as HJKL on QWERTY).
+
+Looking for IJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx/).
+
+[![keyboard-layout](https://i.imgur.com/uvMxLuJ.png)](http://www.keyboard-layout-editor.com/#/gists/56ffedceb0668dda47c993e7271563e0)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c
new file mode 100644 (file)
index 0000000..f8ae8a5
--- /dev/null
@@ -0,0 +1,134 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = LAYOUT_ergodox(
+    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
+    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
+    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
+    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+    //
+    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
+    KC_MPLY,       KC_MNXT,
+    KC_MPRV,
+    KC_FN3,        KC_QUOT, KC_SPC
+  ),
+  [SYMB] = LAYOUT_ergodox(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+    //
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
+    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS
+  ),
+  [PLVR] = LAYOUT_ergodox(
+    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
+    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
+    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
+    //
+    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
+    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
+    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
+    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_NO,         KC_N,    KC_M
+  ),
+  [ARRW] = LAYOUT_ergodox(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+    //
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_TRNS
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+  switch(id) {
+    case 0:
+      if (record->event.pressed) {
+        register_code(KC_RSFT);
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
+
+// 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);
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+  switch (layer) {
+    case SYMB:
+      ergodox_right_led_1_on();
+      break;
+    case PLVR:
+      ergodox_right_led_2_on();
+      break;
+    case ARRW:
+      ergodox_right_led_3_on();
+      break;
+    default:
+      break;
+  }
+};
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx/readme.md b/layouts/community/ergodox/romanzolotarev-norman-plover-osx/readme.md
new file mode 100644 (file)
index 0000000..6703bb8
--- /dev/null
@@ -0,0 +1,50 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation (same fingers for arrows as IJKL on QWERTY).
+
+Looking for HJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx-hjkl/).
+
+[![keyboard-layout](https://i.imgur.com/kseXR4Z.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c
new file mode 100644 (file)
index 0000000..d0b7520
--- /dev/null
@@ -0,0 +1,74 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define QWRT 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = LAYOUT_ergodox(
+    KC_GRV,  KC_1,     KC_2,  KC_3,    KC_4,    KC_5,    KC_F5,
+    KC_TAB,  KC_Q,     KC_W,  KC_D,    KC_F,    KC_K,    KC_BSLS,
+    KC_LCTL, KC_A,     KC_S,  KC_E,    KC_T,    KC_G,
+    KC_LSFT, KC_Z,     KC_X,  KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,   KC_F2,    KC_F3, KC_F4,   KC_LGUI,
+    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/    /*-*/     /*-*/  /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_LALT,
+    //
+    /*-*/    KC_F6,    KC_6,  KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/    TG(QWRT), KC_J,  KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/    /*-*/     KC_Y,  KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/    KC_RBRC,  KC_P,  KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/    /*-*/     /*-*/  KC_RGUI, KC_LEFT, KC_DOWN, KC_UP,         KC_RGHT,
+    KC_MPLY, KC_MNXT,
+    KC_MPRV,
+    KC_RALT, KC_QUOT,  KC_SPC
+  ),
+  [QWRT] = LAYOUT_ergodox(
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_E,    KC_R,    KC_T,    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_D,    KC_F,    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+    //
+    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/    KC_TRNS, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_TRNS,
+    /*-*/    /*-*/    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_TRNS,
+    /*-*/    KC_TRNS, KC_N,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS,
+    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  return MACRO_NONE;
+};
+
+// 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);
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+  switch (layer) {
+    case QWRT:
+      ergodox_right_led_1_on();
+      break;
+    default:
+      break;
+  }
+};
diff --git a/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/readme.md b/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/readme.md
new file mode 100644 (file)
index 0000000..41859f1
--- /dev/null
@@ -0,0 +1,34 @@
+# Roman's Layout
+
+There are two layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **QWRT** is QWERTY.
+
+[![keyboard-layout](https://i.imgur.com/jfKBznw.png)](http://www.keyboard-layout-editor.com/#/gists/3b236f450da474dc506a5a80390c3cc7)
+
+## Switching
+
+- Tap `QWRT` to toggle **QWRT**.
+
+## LEDs
+
+- Red: QWRT is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+
+## CTRL/ESC
+
+Both CTRL and ESC are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- Hold left `SHIFT` and right `SHIRT` and then tap `N`.
diff --git a/layouts/community/ergodox/sethbc/keymap.c b/layouts/community/ergodox/sethbc/keymap.c
new file mode 100644 (file)
index 0000000..7f142a9
--- /dev/null
@@ -0,0 +1,102 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define FN1 1 // symbols
+#define FN2 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
+        KC_BSLS, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    MO(FN2),
+        KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
+        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(FN1),
+        KC_LGUI, KC_GRV,  KC_BSLS, KC_LEFT, KC_RGHT,
+                                                     KC_LCTL, KC_LALT,
+                                                              KC_HOME,
+                                            KC_BSPC,  KC_DEL, KC_END,
+        // right hand
+        MO(FN2), KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
+        KC_LBRC, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_RBRC,
+                 KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
+        MO(FN1), KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                          KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_RGUI,
+        KC_RALT, KC_RCTL,
+        KC_PGUP,
+        KC_PGDN, KC_ENT, KC_SPC
+    ),
+// FN1
+[FN1] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,   KC_F1,  KC_F2,  KC_F3,   KC_F4,   KC_F5,   KC_F11,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                    KC_TRNS, KC_TRNS,
+                                                             KC_TRNS,
+                                           KC_TRNS, KC_TRNS, KC_TRNS,
+       // right hand
+       KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+[FN2] = LAYOUT_ergodox(
+       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,
+    // right hand
+       KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAST, KC_PMNS, KC_BSPC,
+       KC_TRNS, KC_NO,   KC_P7,   KC_P8,   KC_P9,   KC_PMNS, KC_BSPC,
+                KC_NO,   KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_PENT,
+       KC_TRNS, KC_NO,   KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PENT,
+                         KC_P0,   KC_PDOT, KC_SLSH, KC_PENT, KC_PENT,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/sethbc/readme.md b/layouts/community/ergodox/sethbc/readme.md
new file mode 100644 (file)
index 0000000..57b5d0e
--- /dev/null
@@ -0,0 +1,4 @@
+# sethbc's Ergodox EZ keymap
+
+Largely based on the Ergodox Infinity default keymap, but layer locking has been
+removed in favor of momentary layer activation
diff --git a/layouts/community/ergodox/sethbc/rules.mk b/layouts/community/ergodox/sethbc/rules.mk
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/layouts/community/ergodox/siroken3/default.png.md b/layouts/community/ergodox/siroken3/default.png.md
new file mode 100644 (file)
index 0000000..440b424
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/9xDhYOd.png
diff --git a/layouts/community/ergodox/siroken3/default_highres.png.md b/layouts/community/ergodox/siroken3/default_highres.png.md
new file mode 100644 (file)
index 0000000..2245330
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/E5oJXz5.jpg
diff --git a/layouts/community/ergodox/siroken3/keymap.c b/layouts/community/ergodox/siroken3/keymap.c
new file mode 100644 (file)
index 0000000..e8e1223
--- /dev/null
@@ -0,0 +1,187 @@
+// Netable differences vs. the default firmware for the ErgoDox EZ:
+// 1. The Cmd key is now on the right side, making Cmd+Space easier.
+// 2. The media keys work on OSX (But not on Windows).
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | LCtl   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
+ * |--------+------+------+------+------+------| BkSp |           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | BkSp | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|LANG1 |------|       |------|LANG2   |Enter |
+ *                                 | /LGui|      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_LCTRL,       KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_BSPC,
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                                    KC_BSPC,  KC_LGUI,
+                                                              KC_HOME,
+                                 MT(MOD_LGUI, KC_SPC),KC_LANG1,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_LGUI,
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_LANG2, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/siroken3/readme.md b/layouts/community/ergodox/siroken3/readme.md
new file mode 100644 (file)
index 0000000..ed085eb
--- /dev/null
@@ -0,0 +1,15 @@
+# ErgoDox EZ Default Configuration
+
+## Changelog
+
+* Dec 2016:
+  * Added LED keys
+  * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
+* Sep 22, 2016:
+  * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
+* Feb 2, 2016 (V1.1): 
+  * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
+
+This is what we ship with out of the factory. :) The image says it all:
+
+![Default](https://i.imgur.com/h8k5P0l.png)
diff --git a/layouts/community/ergodox/sneako/keymap.c b/layouts/community/ergodox/sneako/keymap.c
new file mode 100644 (file)
index 0000000..98f3469
--- /dev/null
@@ -0,0 +1,187 @@
+// Based on `default_osx`
+// Replace left Bksp with Ctrl/Esc
+// Remove the Ctrl from Z and /
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(1),
+        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(1),       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/sneako/readme.md b/layouts/community/ergodox/sneako/readme.md
new file mode 100644 (file)
index 0000000..8dd110e
--- /dev/null
@@ -0,0 +1,6 @@
+# ergodox_keymap
+
+Based on the default Ergodox EZ firmware
+
+Replaced the left side Bksp with a Crtl/Esc, this really helps in vim.
+Removed the Ctrls from the Z and / keys.
diff --git a/layouts/community/ergodox/software_neo2/keymap.c b/layouts/community/ergodox/software_neo2/keymap.c
new file mode 100644 (file)
index 0000000..925caa0
--- /dev/null
@@ -0,0 +1,143 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "led.h"
+#include "action_layer.h"
+#include "keymap_extras/keymap_neo2.h"
+
+// Layer names
+#define BASE 0 // default layer
+#define MDIA 1 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Del   |   1  |   2  |   3  |   4  |   5  | Play |           | Next |   6  |   7  |   8  |   9  |   0  |   ß    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   X  |   V  |   L  |   C  |   W  | Esc  |           | Esc  |   K  |   H  |   G  |   F  |   Q  |   Y    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | NeoL1  |   U  |   I  |   A  |   E  |   O  |------|           |------|   S  |   N  |   R  |   T  |   D  | NeoR1  |
+ * |--------+------+------+------+------+------| L1   |           | L1   |------+------+------+------+------+--------|
+ * | LShift |Ü/Ctrl| Ö/Win| Ä/Alt|   P  |   Z  |      |           |      |   B  |   M  |   ,  |   .  |   J  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |NeoL2 | Home | PgDn | PgUp | End  |                                       | Right| Down |  Up  | Left | NeoR2|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------+------+------|       |------+--------+------.
+ *                                 |      |      | Enter|       |Delete|        |      |
+ *                                 | Space|Backsp|------|       |------|  Enter |Space |
+ *                                 |      |ace   | Tab  |       | Esc  |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_DELT,         NEO_1,         NEO_2,         NEO_3,         NEO_4,   NEO_5,   KC_MPLY,
+        KC_TAB,          NEO_X,         NEO_V,         NEO_L,         NEO_C,   NEO_W,   KC_ESC,
+        NEO_L1_L,        NEO_U,         NEO_I,         NEO_A,         NEO_E,   NEO_O,
+        KC_LSFT,         CTL_T(NEO_UE), GUI_T(NEO_OE), ALT_T(NEO_AE), NEO_P,   NEO_Z,   TG(1),
+        NEO_L2_L,        KC_HOME,       KC_PGDN,       KC_PGUP,       KC_END,
+                                                C_S_T(KC_ESC),KC_LGUI,
+                                                              KC_ENT,
+                                               KC_SPC,KC_BSPC,KC_TAB,
+        // right hand
+        KC_MNXT,     NEO_6,   NEO_7,   NEO_8,   NEO_9,   NEO_0,   NEO_SS,
+        KC_ESC,      NEO_K,   NEO_H,   NEO_G,   NEO_F,   NEO_Q,   NEO_Y,
+                     NEO_S,   NEO_N,   NEO_R,   NEO_T,   NEO_D,   NEO_L1_R,
+        TG(1),       NEO_B,   NEO_M,   NEO_COMM, NEO_DOT, NEO_J,   KC_RSFT,
+                              KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, NEO_L2_R,
+        KC_LALT,KC_RGUI,
+        KC_DELT,
+        KC_ESC,KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      | Lclk | MsUp | Rclk |      |      |           |      |      |VolDwn| Mute |VolUp |      |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------|           |------|      | Prev | Stop | Play | Next |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |WhRght|WhDown| WhUp |WhLeft|WhClk |      |           |      |BwSrch|BwBack|BwHome|BwRefr|BwFwd |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |MsAcl0|MsAcl1|MsAcl2|                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Back  |Forwd |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
+       KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS, KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11,
+       KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12,
+                KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS,
+                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_WBAK, KC_WFWD
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    /* [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols) */
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    ergodox_board_led_off();
+
+    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+        ergodox_right_led_3_on();
+    }
+
+    switch (layer) {
+        case MDIA:
+            ergodox_right_led_2_on();
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/supercoder/config.h b/layouts/community/ergodox/supercoder/config.h
new file mode 100644 (file)
index 0000000..8c191a8
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H 1
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+#endif
diff --git a/layouts/community/ergodox/supercoder/keymap.c b/layouts/community/ergodox/supercoder/keymap.c
new file mode 100644 (file)
index 0000000..a42937b
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * SuperCoder 2000 layout
+ */
+
+#include QMK_KEYBOARD_H
+
+/* Layers */
+
+#define SC2K    0 // default layer
+
+/* The Keymap */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  /* Keymap 0: Base Layer
+   *
+   * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+   * |         0 |   0  |   0  |   0  |   0  |   0  |   0  |           |  1   |   1  |   1  |   1  |   1  |  1   | 1         |
+   * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+   * |         0 |   0  |   0  |   0  |   0  |   0  |   0  |           |  1   |   1  |   1  |   1  |   1  |  1   | 1         |
+   * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+   * |         0 |   0  |   0  |   0  |   0  |   0  |------|           |------|   1  |   1  |   1  |   1  |  1   | 1         |
+   * |-----------+------+------+------+------+------|   0  |           |  1   |------+------+------+------+------+-----------|
+   * |         0 |   0  |   0  |   0  |   0  |   0  |      |           |      |   1  |   1  |   1  |   1  |  1   | 1         |
+   * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+   *     |     0 |   0  |   0  |   0  |   0  |                                       |   1  |   1  |   1  |  1   | 1     |
+   *     `-----------------------------------'                                       `-----------------------------------'
+   *                                         ,-------------.           ,-------------.
+   *                                         | DONE | DONE |           | DONE | DONE |
+   *                                  ,------|------|------|           |------+------+------.
+   *                                  |      |      | DONE |           | DONE |      |      |
+   *                                  | DONE | DONE |------|           |------| DONE | DONE |
+   *                                  |      |      | DONE |           | DONE |      |      |
+   *                                  `--------------------'           `--------------------'
+   */
+[SC2K] = LAYOUT_ergodox(
+ // left hand
+ KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
+,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
+,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
+,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
+,KC_0    ,KC_0    ,KC_0    ,KC_0    ,KC_0
+
+                                             ,KC_ENT  ,KC_ENT
+                                                      ,KC_ENT
+                                    ,KC_ENT  ,KC_ENT  ,KC_ENT
+
+                                                                // right hand
+                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
+                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
+                                                                        ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
+                                                               ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
+                                                                                 ,KC_1    ,KC_1    ,KC_1    ,KC_1    ,KC_1
+
+                                                               ,KC_ENT  ,KC_ENT
+                                                               ,KC_ENT
+                                                               ,KC_ENT  ,KC_ENT   ,KC_ENT
+                  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  return MACRO_NONE;
+};
+
+// 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) {
+}
diff --git a/layouts/community/ergodox/supercoder/makefile.mk b/layouts/community/ergodox/supercoder/makefile.mk
new file mode 100644 (file)
index 0000000..41a195d
--- /dev/null
@@ -0,0 +1,6 @@
+BOOTMAGIC_ENABLE=no
+COMMAND_ENABLE=no
+SLEEP_LED_ENABLE=no
+UNICODE_ENABLE=no
+MOUSEKEY_ENABLE=no
+EXTRAKEY_ENABLE=no
diff --git a/layouts/community/ergodox/supercoder/readme.md b/layouts/community/ergodox/supercoder/readme.md
new file mode 100644 (file)
index 0000000..7f2c9ef
--- /dev/null
@@ -0,0 +1,29 @@
+SuperCoder 2000 layout for the ErgoDox
+==================================================
+
+![SuperCoder 2000](https://i.imgur.com/6dcU9VY.jpg)
+
+Ever found yourself in need of entering binary codes rapidly? Ever wanted to use
+all ten fingers to do so? Ever felt your SuperCoder 2000 too limiting, by only
+having three buttons? We heard you! With this layout for the ErgoDox EZ, you
+will be able to tap in binary at an unparalleled speed and accuracy! Efficiency
+never seen before!
+
+Behold the Ultimate SuperCoder 2000 layout!
+
+![SuperCoder layout](https://i.imgur.com/Ymzlr9G.png)
+
+### To use it...
+
+To use this piece of top quality engineering, you can either
+[download the hex file][hex] we have prepared for you, or you can compile it on
+your own:
+
+ [hex]: https://raw.githubusercontent.com/algernon/ergodox-supercoder/master/supercoder.hex
+
+```
+$ git clone https://github.com/qmk/qmk_firmware.git
+$ cd qmk_firmware/keyboards/ergodox
+$ git clone https://github.com/algernon/ergodox-supercoder.git keymaps/supercoder
+$ make LAYOUT_ergodox=supercoder
+```
diff --git a/layouts/community/ergodox/swedish-lindhe/keymap.c b/layouts/community/ergodox/swedish-lindhe/keymap.c
new file mode 100644 (file)
index 0000000..e977ab9
--- /dev/null
@@ -0,0 +1,199 @@
+/* Copyright 2017 Andreas Lindhé
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "debug.h"
+#include "action_layer.h"
+#include "keymap_swedish.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Print  |   !  |  "   |  #   |  #   |  %   |      |           |Middle|   &  |  /   |  (   |  )   |  =   |  ?     |
+ * | Screen |   1  |  2 @ |  3 £ |  4 $ |  5   | F11  |           |Mouse |   6  |  7 { |  8 [ |  9 ] |  0 } |  + \   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    | Q    | W    | E    | R    | T    | ~L1  |           |  L1  | Y    | U    | I    | O    | P    | Å      |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | CapsLk | A    | S    | D    | F    | G    |------|           |------| H    | J    | K    | L    | Ö    | Ä      |
+ * |--------+------+------+------+------+------| `    |           | Del  |------+------+------+------+------+--------|
+ * | LShft  | Z    | X    | C    | V    | B    |  '   |           |      | N    | M    | ,    | .    | -    | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | LCtl |  ^   | *    | LAlt | LGui |                                       | AltGr| Down |  Up  | Left | Right|
+ *   | (')  |  " ~ | '  ´ |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,--------------.
+ *                                        | LCtl | LAlt |       | Home |   End  |
+ *                                 ,------|------|------|       |------+-------+------.
+ *                                 |      |      |  ~   |       | PgUp |       |      |
+ *                                 | Space|Back- |------|       |------|  Tab  |Enter |
+ *                                 |      |space | Esc  |       | PgDn |       | L2   |
+ *                                 `--------------------'       `---------------------'
+ */
+
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+    // left hand
+    KC_PSCR,         KC_1,     KC_2,     KC_3,    KC_4,    KC_5,   KC_F11,
+    KC_TAB,          KC_Q,     KC_W,     KC_E,    KC_R,    KC_T,   MO(SYMB),
+    KC_CAPS,         KC_A,     KC_S,     KC_D,    KC_F,    KC_G,
+    KC_LSFT,         KC_Z,     KC_X,     KC_C,    KC_V,    KC_B,   NO_ACUT,
+    CTL_T(NO_APOS),  NO_CIRC,  NO_ASTR,  KC_LALT, KC_LGUI,
+                                               KC_LCTRL,  KC_LALT,
+                                                          NO_TILD,
+                                         KC_SPC, KC_BSPC, KC_ESC,
+    // right hand
+         KC_MS_BTN3,   KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     NO_PLUS,
+         TG(SYMB),  KC_Y,   KC_U,    KC_I,    KC_O,    KC_P,     NO_AA,
+                    KC_H,   KC_J,    KC_K,    KC_L,    NO_OSLH,  NO_AE,
+         KC_DELT,   KC_N,   KC_M,    KC_COMM, KC_DOT,  NO_MINS,  KC_RSFT,
+                            NO_ALGR, KC_DOWN, KC_UP,   KC_LEFT,  KC_RGHT,
+         KC_HOME,        KC_END,
+         KC_PGUP,
+         KC_PGDN, KC_TAB, LT(MDIA, KC_ENT)
+),
+
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |  /   |   *  |  -   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |  7   |  8   |  9   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F5  |  F6  |  F7  |  F8  |      |------|           |------|      |  4   |  5   |  6   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |  1   |  2   |  3   | Enter|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  0   | ,    | .    | Enter|      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_TRNS,
+       KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_7,    KC_8,    KC_9,    KC_PPLS, KC_TRNS,
+                KC_TRNS, KC_4,    KC_5,    KC_6,    KC_PPLS, KC_TRNS,
+       RESET,   KC_TRNS, KC_1,    KC_2,    KC_3,    KC_PENT, KC_TRNS,
+                         KC_0,    KC_COMM, KC_DOT,  KC_PENT, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Play | Pause| Prev | Next |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      | Lclk | Rclk |      |      |           |      |      |VolDn |VolUp | Mute |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |LeClk |RiClk |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, 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,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_3_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+        // if capslk is on, set led 1 on
+        ergodox_right_led_1_on();
+    } else {
+        ergodox_right_led_1_off();
+    }
+
+};
diff --git a/layouts/community/ergodox/swedish-lindhe/readme.md b/layouts/community/ergodox/swedish-lindhe/readme.md
new file mode 100644 (file)
index 0000000..ef62d94
--- /dev/null
@@ -0,0 +1,50 @@
+# swedish-lindhe ErgoDox (EZ) keymap
+
+This is a setup that is very useful for me. It may or may not be for
+you. I will use it in conjunction with the A5 overlayed sv_SE layout.
+
+The layout is subject to change (in particular I'm thinking about adding
+a macro recording feature), but it have not changed much the past year
+or two so you can expect it to be stable enough to learn it.
+
+A5: http://aoeu.info/s/dvorak/svorak
+My xkb map: https://github.com/lindhe/dotfiles/blob/master/usr/share/X11/xkb/symbols/se-A5
+
+The most major points:
+======================
+
+I think the layout image can be found on
+[www.keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/#/gists/d84bc5915707cb30a4f9f754e06ecea3)
+
+L0:
+---
+
+* Easily accessible F11 key for fullscreening
+* Print screen
+* Middle mouse button for X-paste
+* Improved reachability of meta buttons (LCtrl, LALt, AltGr, LGui etc.)
+* Cluster Page Up/Down + Home/End by the right thumb
+* Vim-like arrow layout in right bottom row
+
+* Set media layer toggle to right thumb (Enter)
+* Set apostrophe on LCtl (putting it next to some other small
+  characters)
+
+L1:
+---
+
+* Full function key layout
+* Teensy button
+
+L2:
+---
+
+* Improved media buttons layout (close by the jkl; Vim binding)
+* Improved layout of emulated mouse buttons
+
+LED behaviour to binary+CAPS
+============================
+
+The ErgoDox LEDs on this layout is using the two rightmost LEDs as the
+two LSB in a two digit binary number, representing layer 0, 1, 2 and 3.
+The leftmost byte/LED indicates CAPS status.
diff --git a/layouts/community/ergodox/swedish/keymap.c b/layouts/community/ergodox/swedish/keymap.c
new file mode 100644 (file)
index 0000000..d2b9b40
--- /dev/null
@@ -0,0 +1,247 @@
+/* Copyright 2017 Andreas Lindhé
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "keymap_swedish.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+enum custom_keycodes {
+  PLACEHOLDER = SAFE_RANGE, // can always be here
+  EPRM,
+  VRSN,
+  RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ½    |   !  |  "   |  #   |  #   |  %   | LEFT |           | RIGHT|   &  |  /   |  (   |  )   |  =   |  ?     |
+ * |   §    |   1  |  2 @ |  3 £ |  4 $ |  5   |      |           |      |   6  |  7 { |  8 [ |  9 ] |  0 } |  + \   |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Delete |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   Å    |
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Caps   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |Ö / L2|Ä / Cmd |
+ * | Lock   |      |      |      |      |      | Hyper|           | Meh  |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Left   |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ;  |   :  |_/Ctrl| RShift |
+ * | Shift  |      |      |      |      |      |      |           |      |      |      |   ,  |   .  |-     |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | '/L1 |  `   |AltShf| Left | Right|                                       |  Up  | Down |  ^   |  *   | ~L1  |
+ *   |      |  '   |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | LGui |       | AltGr|Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Back- |------|       |------|  Tab   |Enter |
+ *                                 |      |space | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+    // left hand
+    NO_HALF,          KC_1,           KC_2,          KC_3,    KC_4,    KC_5,   KC_LEFT,
+    KC_DELT,          KC_Q,           KC_W,          KC_E,    KC_R,    KC_T,   TG(SYMB),
+    KC_BSPC,          KC_A,           KC_S,          KC_D,    KC_F,    KC_G,
+    KC_LSFT,          CTL_T(KC_Z),    KC_X,          KC_C,    KC_V,    KC_B,   ALL_T(KC_NO),
+    LT(SYMB,NO_APOS), NO_ACUT,        LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+                                          ALT_T(KC_APP),  KC_LGUI,
+                                                          KC_HOME,
+                                           KC_SPC,KC_BSPC,KC_END,
+    // right hand
+         KC_RGHT,      KC_6,   KC_7,   KC_8,    KC_9,    KC_0,              NO_PLUS,
+         TG(SYMB),     KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,              NO_AA,
+                       KC_H,   KC_J,   KC_K,    KC_L,    LT(MDIA, NO_OSLH), GUI_T(NO_AE),
+         MEH_T(KC_NO), KC_N,   KC_M,   KC_COMM, KC_DOT,  CTL_T(NO_MINS),    KC_RSFT,
+                               KC_UP,  KC_DOWN, NO_CIRC, NO_ASTR,           KC_FN1,
+         NO_ALGR,        CTL_T(KC_ESC),
+         KC_PGUP,
+         KC_PGDN,KC_TAB, KC_ENT
+),
+
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |Animat|      |       |Toggle|Solid |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
+ *                                 |ness- |ness+ |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       VRSN,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,NO_AT,  NO_LCBR,NO_RCBR,NO_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV,
+       KC_TRNS,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_TILD,KC_TRNS,
+          EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       RGB_MOD,KC_TRNS,
+                                               KC_TRNS,
+                               RGB_VAD,RGB_VAI,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    NO_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    NO_PLUS, KC_TRNS,
+       KC_TRNS, NO_AMPR, KC_1,   KC_2,    KC_3,    NO_MINS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    NO_EQL,  KC_TRNS,
+       RGB_TOG, RGB_SLD,
+       KC_TRNS,
+       KC_TRNS, RGB_HUD, RGB_HUI
+),
+
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+        case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    // dynamically generate these.
+    case EPRM:
+      if (record->event.pressed) {
+        eeconfig_init();
+      }
+      return false;
+      break;
+    case VRSN:
+      if (record->event.pressed) {
+        SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+      }
+      return false;
+      break;
+    case RGB_SLD:
+      if (record->event.pressed) {
+        #ifdef RGBLIGHT_ENABLE
+          rgblight_mode(1);
+        #endif
+      }
+      return false;
+      break;
+  }
+  return true;
+}
+
+// Runs 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/swedish/readme.md b/layouts/community/ergodox/swedish/readme.md
new file mode 100644 (file)
index 0000000..b5b859b
--- /dev/null
@@ -0,0 +1,36 @@
+# Swedish (sv_SE) Qwerty layout for ErgoDox EZ, based on the Default configuration
+
+*NOTE:* it might still be desirable to set the software layout to sv_SE in your
+OS.
+
+Remind me and I'll provide a picture of the layout.
+
+I have tried making this as close of a match I could between the [default
+ErgoDox EZ configuration](https://ergodox-ez.com/pages/our-firmware) and a
+standard Swedish Qwerty layout.
+
+## Notable differences from default:
+
+* There are three special character buttons (acute accent, circumflex/tilde and
+  apostrophe/asterisk) that don't have any buttons to map to naturally. I've put
+  these at other places:
+
+    * Acute accent (´) can be found in the lower left corner, conveniently
+      placed to reach for making an é.
+
+    * Apostrophe (') was put in the lower left corner, close to acute accent.
+
+    * Circumflex (^) and asterisk (*) was placed in the lower right corner.
+
+    * Tilde (~) and diaeresis (¨) I couldn't find a good place for, so I left
+      those out. I could only get the buttons to produce a single one of the
+      characters. How can I get it to work properly?
+
+* The Alt button on right thumb was exchanged for AltGr (RAlt).
+
+* I changed the backslash in the numpad (layer 1) for a minus. Thought it was
+  more sensible.
+
+* I didn't find a good place for the "<>|" button, so that one was left out.
+  That is a problem that really needs to be resolved. Pipe can be found on layer
+  one, however.
diff --git a/layouts/community/ergodox/swissgerman/keyboard-layout.json b/layouts/community/ergodox/swissgerman/keyboard-layout.json
new file mode 100644 (file)
index 0000000..6958952
--- /dev/null
@@ -0,0 +1,419 @@
+[
+  {
+    "backcolor": "#ffffff",
+    "name": "Ergodox Swiss German Layout - Base Layer",
+    "author": "Andreas Schmidt (https://github.com/remigius42)"
+  },
+  [
+    {
+      "x": 3.5
+    },
+    "#\n3",
+    {
+      "x": 10.5
+    },
+    "*\n8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n2",
+    {
+      "x": 1
+    },
+    "$\n4",
+    {
+      "x": 8.5
+    },
+    "&\n7",
+    {
+      "x": 1
+    },
+    "(\n9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "%\n5",
+    {
+      "a": 7
+    },
+    "<i class='fa fa-arrow-left'></i>",
+    {
+      "x": 4.5
+    },
+    "<i class='fa fa-arrow-right'></i>",
+    {
+      "a": 4
+    },
+    "^\n6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "w": 1.5
+    },
+    "°\n§",
+    "!\n1",
+    {
+      "x": 14.5
+    },
+    ")\n0",
+    {
+      "w": 1.5
+    },
+    "?\n'\n\n'"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "I"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "W",
+    {
+      "x": 1
+    },
+    "R",
+    {
+      "x": 8.5
+    },
+    "U",
+    {
+      "x": 1
+    },
+    "O"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "T",
+    {
+      "c": "#b56b6b",
+      "a": 6,
+      "h": 1.5
+    },
+    "Toggle Code Layer",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Toggle Code Layer",
+    {
+      "c": "#cccccc",
+      "a": 4
+    },
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Delete",
+    {
+      "a": 4
+    },
+    "Q",
+    {
+      "x": 14.5
+    },
+    "P",
+    {
+      "w": 1.5
+    },
+    "è\nü\n\n["
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "D",
+    {
+      "x": 10.5
+    },
+    "K"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "S",
+    {
+      "x": 1
+    },
+    "F",
+    {
+      "x": 8.5
+    },
+    "J",
+    {
+      "x": 1
+    },
+    "L"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "G",
+    {
+      "x": 6.5
+    },
+    "H"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Backspace",
+    {
+      "c": "#79c777",
+      "a": 4
+    },
+    "A\n\nLyr3",
+    {
+      "x": 14.5
+    },
+    "é\nö\nLyr3",
+    {
+      "c": "#748adb",
+      "w": 1.5
+    },
+    "à\nä\nCmd\n{"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "c": "#cccccc",
+      "a": 6,
+      "h": 1.5
+    },
+    "Hyper",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Meh"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "a": 4
+    },
+    "C",
+    {
+      "x": 10.5
+    },
+    ";\n,"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#748adb"
+    },
+    "X\n\nAlt",
+    {
+      "x": 1,
+      "c": "#cccccc"
+    },
+    "V",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1,
+      "c": "#748adb"
+    },
+    ":\n.\nAlt"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#cccccc"
+    },
+    "B",
+    {
+      "x": 6.5
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Shift",
+    {
+      "c": "#748adb",
+      "a": 4
+    },
+    "Z\n\nCtrl",
+    {
+      "x": 14.5
+    },
+    "_\n-\nCtrl",
+    {
+      "c": "#cccccc",
+      "a": 6,
+      "w": 1.5
+    },
+    "Shift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-left'></i>",
+    {
+      "x": 10.5
+    },
+    "<i class='fa fa-arrow-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 4
+    },
+    "£\n$\n\n}",
+    {
+      "x": 1,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-right'></i>",
+    {
+      "x": 10.5,
+      "a": 6
+    },
+    "AltGr"
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "x": 14,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-up'></i>"
+  ],
+  [
+    {
+      "y": -0.7549999999999999,
+      "x": 0.5,
+      "c": "#b56b6b",
+      "a": 4
+    },
+    ">\n<\nCode Layer\n\\",
+    {
+      "c": "#cccccc"
+    },
+    "`\n^\n\n~",
+    {
+      "x": 14.5
+    },
+    "!\n¨\n\n]",
+    {
+      "c": "#b56b6b"
+    },
+    "\n\nCode Layer"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "c": "#748adb"
+    },
+    "Apps\nAlt",
+    {
+      "c": "#cccccc",
+      "a": 6
+    },
+    "Win / Cmd"
+  ],
+  [
+    {
+      "h": 2
+    },
+    "Space",
+    {
+      "h": 2
+    },
+    "Back Space",
+    "Home"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "End"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "Alt",
+    {
+      "c": "#748adb",
+      "a": 4
+    },
+    "Esc\nCtrl"
+  ],
+  [
+    {
+      "x": -3,
+      "c": "#cccccc",
+      "a": 6
+    },
+    "Pg Up",
+    {
+      "h": 2
+    },
+    "Tab",
+    {
+      "h": 2
+    },
+    "Enter"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Pg Dn"
+  ]
+]
diff --git a/layouts/community/ergodox/swissgerman/keyboard-layout_1_2.json b/layouts/community/ergodox/swissgerman/keyboard-layout_1_2.json
new file mode 100644 (file)
index 0000000..38a7285
--- /dev/null
@@ -0,0 +1,436 @@
+[
+  {
+    "backcolor": "#ffffff",
+    "name": "Ergodox Swiss German Layout - Symbol & Media Layer",
+    "author": "Andreas Schmidt (https://github.com/remigius42)"
+  },
+  [
+    {
+      "x": 3.5,
+      "t": "#b81c1c"
+    },
+    "F3",
+    {
+      "x": 10.5
+    },
+    "F8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "F2",
+    {
+      "x": 1
+    },
+    "F4",
+    {
+      "x": 8.5
+    },
+    "F7",
+    {
+      "x": 1
+    },
+    "F9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "F5",
+    {
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "x": 4.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "F6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000\n\n\n#529151",
+      "w": 1.5
+    },
+    "\n\n\nFlash",
+    {
+      "t": "#b81c1c"
+    },
+    "F1",
+    {
+      "x": 14.5
+    },
+    "F10",
+    {
+      "t": "#b81c1c\n\n\n#529151",
+      "w": 1.5
+    },
+    "F11\n\n\nFlash"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "{\n\n\n<i class='fa fa-arrow-circle-up'></i>",
+    {
+      "x": 10.5,
+      "t": "#b81c1c"
+    },
+    "8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@",
+    {
+      "x": 1
+    },
+    "}",
+    {
+      "x": 8.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "7\n\n\nHTML ul",
+    {
+      "x": 1
+    },
+    "9\n\n\nHTML ol"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#b81c1c"
+    },
+    "|",
+    {
+      "t": "#000000",
+      "a": 7,
+      "h": 1.5
+    },
+    "",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "<i class='fa fa-arrow-up'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "!",
+    {
+      "x": 14.5
+    },
+    "*",
+    {
+      "w": 1.5
+    },
+    "F12"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "(\n\n\n<i class='fa fa-arrow-circle-down'></i>",
+    {
+      "x": 10.5
+    },
+    "5\n\n\nHTML li"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "$\n\n\n<i class='fa fa-arrow-circle-left'></i>",
+    {
+      "x": 1
+    },
+    ")\n\n\n<i class='fa fa-arrow-circle-right'></i>",
+    {
+      "x": 8.5,
+      "t": "#b81c1c"
+    },
+    "4",
+    {
+      "x": 1
+    },
+    "6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "`",
+    {
+      "x": 6.5
+    },
+    "<i class='fa fa-arrow-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "#",
+    {
+      "x": 14.5
+    },
+    "+",
+    {
+      "t": "#000000\n\n\n#529151",
+      "w": 1.5
+    },
+    "\n\n\n<i class='fa fa-play'></i><i class='fa fa-pause'></i>"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "t": "#000000",
+      "a": 7,
+      "h": 1.5
+    },
+    "",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "t": "#b81c1c\n\n\n#529151",
+      "a": 4
+    },
+    "[\n\n\nHTML code",
+    {
+      "x": 10.5
+    },
+    "2\n\n\n<i class='fa fa-fast-backward'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#b81c1c"
+    },
+    "^",
+    {
+      "x": 1,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "]\n\n\nHTML br",
+    {
+      "x": 8.5,
+      "t": "#b81c1c"
+    },
+    "1",
+    {
+      "x": 1,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "3\n\n\n<i class='fa fa-fast-forward'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#b81c1c"
+    },
+    "~",
+    {
+      "x": 6.5
+    },
+    "&"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "%",
+    {
+      "x": 14.5
+    },
+    "\\",
+    {
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#000000\n\n\n#529151",
+      "a": 4
+    },
+    "\n\n\nleft click",
+    {
+      "x": 10.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    ".\n\n\n<i class='fa fa-volume-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "x": 1,
+      "t": "#000000\n\n\n#529151",
+      "a": 4
+    },
+    "\n\n\nright click",
+    {
+      "x": 8.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "?\n\n\n<i class='fa fa-volume-up'></i>",
+    {
+      "x": 1,
+      "t": "#b81c1c"
+    },
+    "0"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "EPRM RST",
+    {
+      "x": 14.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "t": "#000000\n\n\n#529151",
+      "a": 4,
+      "h": 2
+    },
+    "\n\n\nEnter",
+    {
+      "t": "#000000",
+      "a": 7,
+      "h": 2
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "x": 2
+    },
+    ""
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "x": -3
+    },
+    "",
+    {
+      "h": 2
+    },
+    "",
+    {
+      "t": "#000000\n\n\n#529151",
+      "a": 4,
+      "h": 2
+    },
+    "\n\n\nWeb back"
+  ],
+  [
+    {
+      "x": -3,
+      "t": "#000000",
+      "a": 7
+    },
+    ""
+  ]
+]
diff --git a/layouts/community/ergodox/swissgerman/keymap.c b/layouts/community/ergodox/swissgerman/keymap.c
new file mode 100644 (file)
index 0000000..0288c95
--- /dev/null
@@ -0,0 +1,287 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "string.h"
+
+#ifdef SUBPROJECT_infinity
+#include "visualizer/lcd_backlight.h"
+#endif
+
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+#define EPRM M(1) // Macro 1: Reset EEPROM
+#define HTML_LI M(10)
+#define HTML_UL M(11)
+#define HTML_OL M(12)
+#define HTML_CODE M(13)
+#define HTML_BR M(14)
+
+#define SEND_TAG(TAG) do {\
+    send_key(KC_NONUS_BSLASH); \
+    SEND_STRING(TAG); \
+    send_larger_than(); \
+    send_key(KC_NONUS_BSLASH); \
+    SEND_STRING("&"); \
+    SEND_STRING(TAG); \
+    send_larger_than(); \
+    go_back_based_on_tag(TAG); \
+  } while (0)
+
+#define SEND_SHORT_TAG(TAG) do {\
+    send_key(KC_NONUS_BSLASH); \
+    SEND_STRING(TAG); \
+    SEND_STRING("&"); \
+    send_larger_than();               \
+  } while (0)
+
+void send_key(uint16_t keycode);
+void go_back_based_on_tag(char* tag);
+void send_larger_than(void);
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   §    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Z  |   U  |   I  |   O  |   P  |   ü    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   | A /L2|   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |ö / L2|ä / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Y/Ctrl|X/Alt |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |./Alt |-/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |< / L1|   ^  |   $  | Left | Right|                                       |  Up  | Down |AltGr |   ¨  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        LT(MDIA, KC_A),KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  ALT_T(KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_NONUS_BSLASH), KC_EQL, KC_BSLS,  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+       KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+       TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_LBRC,
+       KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+       MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,ALT_T(KC_DOT), CTL_T(KC_SLSH),   KC_RSFT,
+                             KC_UP,  KC_DOWN,KC_RALT,KC_RBRC, KC_FN1,
+             KC_LALT,CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      | EPRM |      |      |      |                                       |   ?  |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), ACTION_MODS_KEY(MOD_RALT, KC_2),  ACTION_MODS_KEY(MOD_RALT, KC_QUOT), ACTION_MODS_KEY(MOD_RALT, KC_BSLS),ACTION_MODS_KEY(MOD_RALT,KC_7),KC_TRNS,
+       KC_TRNS,ACTION_MODS_KEY(MOD_RALT,KC_3),KC_BSLS, ACTION_MODS_KEY(MOD_LSFT, KC_8), ACTION_MODS_KEY(MOD_RSFT, KC_9),ACTION_MODS_KEY(MOD_LSFT,KC_EQL),
+       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT,KC_5),KC_EQL, ACTION_MODS_KEY(MOD_RALT, KC_LBRC), ACTION_MODS_KEY(MOD_RALT, KC_RBRC),ACTION_MODS_KEY(MOD_RALT,KC_EQL),KC_TRNS,
+          KC_TRNS,EPRM,KC_TRNS,KC_NONUS_BSLASH, ACTION_MODS_KEY(MOD_LSFT, KC_NONUS_BSLASH)/*KC_TRNS,KC_TRNS*/,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    ACTION_MODS_KEY(MOD_RSFT,KC_3), KC_F12,
+       KC_DOWN, KC_4,   KC_5,    KC_6,    ACTION_MODS_KEY(MOD_RSFT,KC_1), KC_TRNS,
+       KC_TRNS, ACTION_MODS_KEY(MOD_RSFT,KC_6), KC_1,   KC_2,    KC_3,  ACTION_MODS_KEY(MOD_RALT,KC_NONUS_BSLASH), KC_TRNS,
+       ACTION_MODS_KEY(MOD_RSFT,KC_MINS),KC_DOT,  KC_0,   KC_EQL, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      | RESET  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |H_UL  |      |H_OL  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |H_LI  |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |H_CODE|      |H_BR  |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |Enter |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, HTML_CODE, KC_TRNS, HTML_BR, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_ENT, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+       KC_TRNS,  KC_TRNS, HTML_UL, KC_TRNS, HTML_OL, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, HTML_LI, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      case 10:
+       if (record->event.pressed) {
+         SEND_TAG("li");
+       }
+       break;
+      case 11:
+       if (record->event.pressed) {
+         SEND_TAG("ul");
+       }
+       break;
+      case 12:
+       if (record->event.pressed) {
+         SEND_TAG("ol");
+       }
+       break;
+      case 13:
+       if (record->event.pressed) {
+         SEND_TAG("code");
+       }
+       break;
+      case 14:
+       if (record->event.pressed) {
+         SEND_SHORT_TAG("br");
+       }
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+    case 0:
+      ergodox_board_led_off();
+      ergodox_right_led_1_off();
+      ergodox_right_led_2_off();
+      ergodox_right_led_3_off();
+
+      #ifdef SUBPROJECT_infinity
+      lcd_backlight_hal_color(0, 0, 0);
+      #endif
+      break;
+    case 1:
+      ergodox_right_led_1_on();
+
+      ergodox_board_led_off();
+      ergodox_right_led_2_off();
+      ergodox_right_led_3_off();
+      #ifdef SUBPROJECT_infinity
+      lcd_backlight_hal_color(5000, 0, 0);
+      #endif
+      break;
+    case 2:
+      ergodox_right_led_2_on();
+
+      ergodox_board_led_off();
+      ergodox_right_led_1_off();
+      ergodox_right_led_3_off();
+      #ifdef SUBPROJECT_infinity
+      lcd_backlight_hal_color(0, 5000, 0);
+      #endif
+      break;
+    default:
+            // none
+            break;
+    }
+
+};
+
+void send_key(uint16_t keycode) {
+  register_code(keycode);
+  unregister_code(keycode);
+}
+
+void go_back_based_on_tag(char* tag) {
+  const int BRACKETS_AND_SLASH_LENGTH = 3;
+  
+  for (int i=0; i < strlen(tag) + BRACKETS_AND_SLASH_LENGTH; i++) {
+    send_key(KC_LEFT);
+  }
+}
+
+void send_larger_than() {
+  register_code(KC_LSFT);
+  send_key(KC_NONUS_BSLASH);
+  unregister_code(KC_LSFT);
+}
diff --git a/layouts/community/ergodox/swissgerman/readme.md b/layouts/community/ergodox/swissgerman/readme.md
new file mode 100644 (file)
index 0000000..fa7fc16
--- /dev/null
@@ -0,0 +1,15 @@
+# ErgoDox Swiss German Configuration
+
+Swiss German keyboard layout based on the Ergodox EZ default layout.
+
+Keyboard diagrams created with the [keyboard layout editor](http://www.keyboard-layout-editor.com).
+
+Diagram sources: [default layer](keyboard-layout.json), [layer 1 & 2](keyboard-layout_1_2.json)
+
+![Layout Layer 0](https://i.imgur.com/yf4HNXV.png)
+![Layout Layer 1&2](https://i.imgur.com/Q814cKa.png)
+
+## Changelog
+* Jan 21, 2017:
+  * Initial version based on default layout.
+
diff --git a/layouts/community/ergodox/techtomas/keymap.c b/layouts/community/ergodox/techtomas/keymap.c
new file mode 100644 (file)
index 0000000..361583a
--- /dev/null
@@ -0,0 +1,231 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define APP 2 // app layer
+#define CNTL 3 // control layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  L2/`  |   1  |   2  |   3  |   4  |   5  |CmdSpc|           | -    |   6  |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | MEH/Tab|   Q  |   W  |   E  |   R  |   T  | [    |           | ]    |  Y   |   U  |   I  |   O  |   P  | MEH/\  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Hyp/Esc |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  | L2/; | Hyp/'  |
+ * |--------+------+------+------+------+------| Tab  |           | STab |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | L2// | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |L1/Lft|L3/Rht| LCtl | LAlt | LGui |                                       | Rgui |  Up  |  Dn  |  L3  |  L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.       ,-------------.
+ *                                         | LCtl | LGui |       |AltGui|ShfGui|
+ *                                 ,-------|------|------|       |------+--------+------.
+ *                                 |       |      |L1/Hom|       |L2/PUp|       |       |
+ *                                 | Backsp|Delete|------|       |------| Enter | Space |
+ *                                 |       |      |L3/End|       |L1/PDn|       |       |
+ *                                 `--------------------'       `-----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        LT(APP,KC_GRV),   KC_1,                KC_2,    KC_3,    KC_4,    KC_5,   LGUI(KC_SPC),
+        MEH_T(KC_TAB),    KC_Q,                KC_W,    KC_E,    KC_R,    KC_T,   KC_LBRC,
+        ALL_T(KC_ESC),    KC_A,                KC_S,    KC_D,    KC_F,    KC_G,
+        KC_LSFT,          KC_Z,                KC_X,    KC_C,    KC_V,    KC_B,   KC_TAB,
+        LT(SYMB,KC_LEFT), LT(CNTL,KC_RIGHT),   KC_LCTL, KC_LALT, KC_LGUI,
+                                                                    KC_LCTL,   KC_LGUI,
+                                                                               LT(SYMB,KC_HOME),
+                                                           KC_BSPC, KC_DELETE, LT(CNTL,KC_END),
+        // right hand
+       KC_MINS,          KC_6,    KC_7,    KC_8,     KC_9,      KC_0,             KC_EQL,
+       KC_RBRC,          KC_Y,    KC_U,    KC_I,     KC_O,      KC_P,             MEH_T(KC_BSLS),
+                         KC_H,    KC_J,    KC_K,     KC_L,      LT(APP,KC_SCLN),  ALL_T(KC_QUOT),
+       S(KC_TAB),        KC_N,    KC_M,    KC_COMM,  KC_DOT,    LT(APP,KC_SLSH),  KC_RSFT,
+                                  KC_RGUI, KC_UP,    KC_DOWN,   KC_FN3,           KC_FN1,
+       LALT(KC_LGUI),    S(KC_LGUI),
+       LT(APP,KC_PGUP),
+       LT(SYMB,KC_PGDN), KC_ENT, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           | Tab  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |  <   |           |  >   |   :  |   7  |   8  |   9  |   /  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------|   ;  |   4  |   5  |   6  |   *  |        |
+ * |--------+------+------+------+------+------|  F14 |           | F15  |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   -  |  Entr  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0   |   . |  =   |   +  |       |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,S(KC_COMM),
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_F14,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TAB,    KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       S(KC_DOT), KC_COLN, KC_7,   KC_8,    KC_9,    KC_BSLS, KC_F12,
+                  KC_SCLN, KC_4,   KC_5,    KC_6,    KC_ASTR, KC_TRNS,
+       KC_F15,    KC_AMPR, KC_1,   KC_2,    KC_3,    KC_MINS, KC_ENT,
+                           KC_0,   KC_DOT,  KC_EQL,  KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: App Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | CmdQ | CmdW |      |      |      | Stab |           | Play | Prev | Next |      |      |PrtSc |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------| VolDn|VolUp |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           | Mute |------+------+------+------+------+--------|
+ * |        | CmdZ | CmdX | CmdC | CmdY | CtrlC|      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Control
+[APP] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS, LGUI(KC_Q), LGUI(KC_W), KC_TRNS,    KC_TRNS,    KC_TRNS,    S(KC_TAB),
+       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LCTL(KC_C), KC_TRNS,
+       KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
+                                              KC_TRNS,  KC_TRNS,
+                                                        KC_TRNS,
+                                      KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_MPLY,  KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS,
+                 KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_MUTE,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 3: Control Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Pwr   |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght| Lclk |------|           |------|  Lft | Down | Up   | Right|      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      | Rclk |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Shift|      |       | Home | End  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | LAtl |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// Control
+[CNTL] = LAYOUT_ergodox(
+       KC_PWR,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_LSFT, KC_TRNS,
+                                                    KC_LALT,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_HOME, KC_END,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
+    [2] = ACTION_LAYER_TAP_TOGGLE(APP),
+    [3] = ACTION_LAYER_TAP_TOGGLE(CNTL)             // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+          ergodox_right_led_3_on();
+          break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/techtomas/readme.md b/layouts/community/ergodox/techtomas/readme.md
new file mode 100644 (file)
index 0000000..36e0591
--- /dev/null
@@ -0,0 +1,57 @@
+# Techtomas Configuration
+
+## Base Layer
+
+The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac.
+
+* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
+* The Tab key toggles MEH.
+* The top vertical mods on the left and right are [ and ].
+* The bottom vertical mods on the left and right are tab and shift+tab
+* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy.
+* Layer switching is focused around the thumb clusters plus some additional locations for convience.
+
+## Symbol Layer
+The symbol layer can be tap/toggled with the bottom right key and also toggled on the thumb clusters.
+
+The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac
+
+## App Layer
+The app layer is used to control media playback and also some application shortcuts (OS X Focused).
+It can be toggled on the left board in the top left corner (tilde/grave) or using your pinky on the right side of the board using either ; or /.
+There is one additional toggle on the right thumb cluster for quick access to play and mute key combos.
+
+### Current App shortcuts defined
+* Q = CMD+Q
+* W = CMD+W
+* Z = CMD+Z
+* X = CMD+X
+* C = CMD+C
+* V = CMD+V
+* B = CTRL+C
+* P = Print Screen
+
+## Control Layer
+The control layer is meant to help easily navigate and select text. It can also be stacked ontop of the Symbol layer when needed.
+
+The right arrow key and End key toggle the control layer on the left board. There is also a tap toggle for the layer in the same position on the right side of the board.
+
+On the left board you have mouse control with left & right click in the location of the G and B keys.
+On the right board you have vim-style arrow keys using hjkl
+
+The left thumb cluster moves shift and alt within easy reach while holding the toggle (end). So far I've found this convient to navigate and  skip around text when using the hjkl arrow keys. I found that it was easy to get the alt key stuck on depending on what key you released first so I added the PREVENT_STUCK_MODIFIERS to the config.h to help with that.
+
+## Changelog
+
+* May 4th, 2016 (v1.2):
+  * Moved layer toggles around to match my habbits of typing
+  * Enabled Prevent Stuck Modifers in my config.h (L3 + Alt on cluster would get stuck)
+  * Changed media layer to be more like an app layer with some quick shortcuts (mac centric)
+  * Moved around the base layer arrow keys so mod keys were more accesible
+
+* Apr 29, 2016 (V1.1):
+  * Added F14 and F15 to symbol layer
+  * Added control layer toggle to A key.
+
+* Apr 28, 2016 (V1.0):
+  * Modified config based on the default layout plus inspiration from the ordinary layout
diff --git a/layouts/community/ergodox/teckinesis/keymap.c b/layouts/community/ergodox/teckinesis/keymap.c
new file mode 100644 (file)
index 0000000..0b65572
--- /dev/null
@@ -0,0 +1,455 @@
+#include QMK_KEYBOARD_H
+#include "led.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+#include "mousekey.h"
+
+#define BASE   0 // default layer
+#define SYMB   1 // symbols layer
+#define MDIA   2 // media layer
+#define SPEC   3 // special layer
+
+#define LCaps 10 // left caps-shift key
+#define LSymb 11 // left symbol-shift key
+#define LMdia 12 // left media-shift key
+#define LSpec 13 // left special-shift key
+#define RCaps 14 // right caps-shift key
+#define RSymb 15 // right symbol-shift key
+#define RMdia 16 // right media-shift key
+#define RSpec 17 // right special-shift key
+
+#define MUL   20 // mouse up left
+#define MUR   21 // mouse up right
+#define MDL   22 // mouse down left
+#define MDR   23 // mouse down right
+
+/*
+ * teckinesis layout for ErgoDox (EZ)
+ * 
+ * Modifications from The Ordinary Layout v4 by Will Wolff-Myren willwm@gmail.com
+ * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
+ *
+ * No rights reserved. This software is in the public domain.
+ * Credit me if you are friendly but if you're a jerk don't bother.
+ * 
+ * Details: readme.md
+ *          https://github.com/willwm/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/teckinesis
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/******* Base Layer ********************************************************************************************************
+ *
+ * ,------------------------------------------------------.           ,------------------------------------------------------.
+ * | Special =+ |   1  |   2  |   3  |   4  |   5  | ESC  |           |  `   |   6  |   7  |   8  |   9  |   0  | -_ Special |
+ * |------------+------+------+------+------+-------------|           |------+------+------+------+------+------+------------|
+ * | Media  Tab |   Q  |   W  |   E  |   R  |   T  |   [  |           |  ]   |   Y  |   U  |   I  |   O  |   P  | \|   Media |
+ * |------------+------+------+------+------+------|      |           |      |------+------+------+------+------+------------|
+ * | Symbol     |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;   | '"  Symbol |
+ * |------------+------+------+------+------+------|Shift |           | Tab  |------+------+------+------+------+------------|
+ * | Capitals   |   Z  |   X  |   C  |   V  |   B  | -Tab |           |      |   N  |   M  |   ,  |   .  |  /   |   Capitals |
+ * `------------+------+------+------+------+-------------'           `-------------+------+------+------+------+------------'
+ *      | LCtrl |Meh/\ |Hypr//| LAlt | LGui |                                       | RGui | RAlt |Hypr/[|Meh/] | RCtrl |
+ *      `-----------------------------------'                                       `-----------------------------------'
+ *                                          ,-------------.           ,-------------.
+ *                                          | Home | End  |           | Left | Right|
+ *                                   ,------|------|------|           |------+------+------.
+ *                                   |      |      | PgUp |           |  Up  |      |      |
+ *                                   |Backsp| Del  |------|           |------| Enter| Space|
+ *                                   |      |      | PgDn |           | Down |      |      |
+ *                                   `--------------------'           `--------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+// left hand
+ F(LSpec),KC_1,KC_2,KC_3   ,KC_4  ,KC_5  ,KC_ESC
+,F(LMdia)  ,KC_Q   ,KC_W   ,KC_E   ,KC_R  ,KC_T  ,KC_LBRC
+,M(LSymb)  ,KC_A   ,KC_S   ,KC_D   ,KC_F  ,KC_G
+,M(LCaps)  ,KC_Z   ,KC_X   ,KC_C   ,KC_V  ,KC_B  ,LSFT(KC_TAB)
+,KC_LCTL,MEH_T(KC_BSLS),ALL_T(KC_SLSH),KC_LALT,KC_LGUI
+                                         ,KC_HOME,KC_END
+                                                 ,KC_PGUP
+                                 ,KC_BSPC,KC_DEL ,KC_PGDN
+                                                                      // right hand
+                                                                     ,KC_GRV  ,KC_6   ,KC_7   ,KC_8   ,KC_9    ,KC_0     ,F(RSpec)
+                                                                     ,KC_RBRC ,KC_Y   ,KC_U   ,KC_I   ,KC_O    ,KC_P     ,F(RMdia)
+                                                                              ,KC_H   ,KC_J   ,KC_K   ,KC_L    ,KC_SCLN  ,F(RSymb)
+                                                                     ,KC_TAB  ,KC_N   ,KC_M   ,KC_COMM,KC_DOT  ,KC_SLSH  ,M(RCaps)
+                                                                                      ,KC_RGUI,KC_RALT,ALL_T(KC_LBRC),MEH_T(KC_RBRC),KC_RCTL
+                                                                     ,KC_LEFT ,KC_RGHT
+                                                                     ,KC_UP
+                                                                     ,KC_DOWN ,KC_ENT ,KC_SPC
+    ),
+
+/******* Symbols Layer *****************************************************************************************************
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |  F1  |  F2  |  F3  |  F4  |  F5  | Esc  |           |  -   |  F6  |  F7  |  F8  |  F9  |  F10 |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |   !  |   @  |   {  |   }  |   &  |  <   |           |  >   |   |  |   7  |   8  |   9  |   /  |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |   #  |   $  |   (  |   )  |   `  |------|           |------|   /  |   4  |   5  |   6  |   *  |           |
+ * |-----------+------+------+------+------+------| Tab  |           | Shift|------+------+------+------+------+-----------|
+ * |           |   %  |   ^  |   [  |   ]  |   ~  |      |           |  -Tab|   \  |   1  |   2  |   3  |   -  |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     | LCtrl | Meh  |Hyper | LAlt | LGui |                                       |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent|
+ *     `-----------------------------------'                                       `-------------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | Left | Right|           | Home | End  |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |  Up  |           | PgUp |      |      |
+ *                                  |Space |Enter |------|           |------|BackSp| Del  |
+ *                                  |      |      | Down |           | PgDn |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[SYMB] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_F1   ,KC_F2   ,KC_F3   ,KC_F4   ,KC_F5   ,KC_ESC
+,KC_TRNS ,KC_EXLM ,KC_AT   ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
+,KC_TRNS ,KC_HASH ,KC_DLR  ,KC_LPRN ,KC_RPRN ,KC_GRV 
+,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
+,KC_LCTL ,KC_MEH  ,KC_HYPR ,KC_LALT ,KC_LGUI
+                                             ,KC_LEFT ,KC_RGHT
+                                                      ,KC_UP
+                                    ,KC_SPC  ,KC_ENT  ,KC_DOWN
+                                                                     // right hand
+                                                                     ,KC_MINS     ,KC_F6   ,KC_F7 ,KC_F8  ,KC_F9 ,KC_F10  ,KC_TRNS
+                                                                     ,LSFT(KC_DOT),KC_PIPE ,KC_7  ,KC_8   ,KC_9  ,KC_SLSH ,KC_TRNS
+                                                                                  ,KC_SLSH ,KC_4  ,KC_5   ,KC_6  ,KC_ASTR ,KC_TRNS
+                                                                     ,LSFT(KC_TAB),KC_BSLS ,KC_1  ,KC_2   ,KC_3  ,KC_MINS ,KC_TRNS
+                                                                                           ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT)
+                                                                     ,KC_HOME     ,KC_END
+                                                                     ,KC_PGUP
+                                                                     ,KC_PGDN     ,KC_BSPC ,KC_DEL
+),
+
+/******* Media Layer *******************************************************************************************************
+ *
+ * ,---------------------------------------------------------------.           ,---------------------------------------------------------------.
+ * |      |   F11   |   F12   |   F13   |   F14   |   F15   | Esc  |           |      |   F16   |   F17   |   F18   |   F19   |   F20   |      |
+ * |------+---------+---------+---------+---------+----------------|           |------+---------+---------+---------+---------+---------+------|
+ * |      |         |MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll|           |Scroll|PrintScrn|   Home  |    Up   |   PgUp  |         |      |
+ * |------+---------+---------+---------+---------+---------|  Up  |           |  Up  |---------+---------+---------+---------+---------+------|
+ * |      |         |MouseLeft|MouseDown|MouseRght|Volume Dn|------|           |------| Num Lock|   Left  |   Down  |   Right |         |      |
+ * |------+---------+---------+---------+---------+---------|Scroll|           |Scroll|---------+---------+---------+---------+---------+------|
+ * |      |         |MouseDnLf|MouseDown|MouseDnRg|  Mute   | Down |           | Down |         |   End   |   Down  |   PgDn  |         |      |
+ * `------+---------+---------+---------+---------+----------------'           `----------------+---------+---------+---------+---------+------'
+ *  |LCtrl|   Meh   |  MClick | LClick  |  R Click|                                             |Cmd/Insrt|Optn/Del | Hyper   |  Meh    |RCtrl|
+ *  `---------------------------------------------'                                             `---------------------------------------------'
+ *                                                   ,-------------.           ,-------------.
+ *                                                   | Stop |Refrsh|           | Prev | Next |
+ *                                            ,------|------|------|           |------+------+------.
+ *                                            |Brwser|Brwser|Search|           |VolUp |      |      |
+ *                                            |Back  | Fwd  |------|           |------| Stop | Play-|
+ *                                            |      |      | Home |           |VolDn |      | Pause|
+ *                                            `--------------------'           `--------------------'
+ */
+[MDIA] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_F11   ,KC_F12  ,KC_F13   ,KC_F14  ,KC_F15  ,KC_ESC
+,KC_TRNS ,KC_NO    ,M(MUL)  ,KC_MS_U  ,M(MUR)  ,KC_VOLU ,KC_WH_U
+,KC_TRNS ,KC_NO    ,KC_MS_L ,KC_MS_D  ,KC_MS_R ,KC_VOLD
+,KC_TRNS ,KC_NO    ,M(MDL)  ,KC_MS_D  ,M(MDR)  ,KC_MUTE ,KC_WH_D
+,KC_LCTL ,KC_MEH   ,KC_BTN3 ,KC_BTN1  ,KC_BTN2
+                                               ,KC_WSTP ,KC_WREF
+                                                        ,KC_WSCH
+                                      ,KC_WBAK ,KC_NO   ,KC_WHOM
+                                                                     // right hand
+                                                                     ,KC_NO    ,KC_F16  ,KC_F17       ,KC_F18       ,KC_F19  ,KC_F20  ,KC_TRNS
+                                                                     ,KC_WH_U  ,KC_PSCR ,KC_HOME      ,KC_UP        ,KC_PGUP ,KC_NO   ,KC_TRNS
+                                                                               ,KC_NLCK ,KC_LEFT      ,KC_DOWN      ,KC_RIGHT,KC_NO   ,KC_TRNS
+                                                                     ,KC_WH_D  ,KC_NO   ,KC_END       ,KC_DOWN      ,KC_PGDN ,KC_NO   ,KC_TRNS
+                                                                                        ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH  ,KC_RCTL
+                                                                     ,KC_MPRV  ,KC_MNXT
+                                                                     ,KC_VOLU
+                                                                     ,KC_VOLD  ,KC_MSTP ,KC_MPLY
+),
+
+/******* Special Layer *****************************************************************************************************
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |  Esc |      |      |      |      |      |           |      |      |      |      |      | Bspc |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      | RShift    |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  |      |      |------|           |------|      |      |
+ *                                  |      |      |      |           |      |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[SPEC] = LAYOUT_ergodox(
+// left hand
+ KC_TRNS ,KC_ESC  ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+                                             ,KC_TRNS ,KC_TRNS
+                                                      ,KC_TRNS
+                                     ,KC_TRNS,KC_TRNS ,KC_TRNS
+                                                                     // right hand
+                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS
+                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                                              ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT
+                                                                                       ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+                                                                     ,KC_TRNS ,KC_TRNS
+                                                                     ,KC_TRNS
+                                                                     ,KC_TRNS ,KC_TRNS ,KC_TRNS
+    )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+     // the faux shift keys are implemented as macro taps
+     [LCaps] = ACTION_MACRO_TAP(LCaps)
+    ,[LSymb] = ACTION_MACRO_TAP(LSymb)
+    ,[LMdia] = ACTION_MACRO_TAP(LMdia)
+    ,[LSpec] = ACTION_MACRO_TAP(LSpec)
+    ,[RCaps] = ACTION_MACRO_TAP(RCaps)
+    ,[RSymb] = ACTION_MACRO_TAP(RSymb)
+    ,[RMdia] = ACTION_MACRO_TAP(RMdia)
+    ,[RSpec] = ACTION_MACRO_TAP(RSpec)
+};
+
+uint16_t caps_shift = 0;
+uint16_t symb_shift = 0;
+uint16_t mdia_shift = 0;
+
+bool symb_lock = false;
+bool mdia_lock = false;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch(id) {
+        // There are two shift keys for each layer so we increment a layer_shift var when one
+        // is pressed and decrement when one is released. If both are pressed at the same time
+        // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
+        // only because sometimes rapid pressing led to irregular events; this way the states
+        // are self healing during use.
+
+        case LCaps: // both caps-shift keys trigger Left Shift
+        case RCaps: // so they don't interfere with the magic combo
+        if (record->event.pressed && !record->tap.count) {
+            if(++caps_shift > 2) caps_shift = 2;
+            if(caps_shift == 2)  {
+                register_code(KC_CAPS);
+                unregister_code(KC_CAPS);
+            } else if(caps_shift == 1) {
+                register_code(KC_LSFT);
+            }
+        } else {
+            if(--caps_shift < 0) caps_shift = 0;
+            if(caps_shift == 0) unregister_code(KC_LSFT);
+        }
+        break;
+
+        case LSymb:
+        if (record->event.pressed) {
+            if(++symb_shift > 2) symb_shift = 2;
+            if(symb_shift == 2)  {
+                symb_lock = !symb_lock;
+            } else if(symb_shift == 1) {
+                layer_on(SYMB);
+            }
+        } else {
+            if(--symb_shift < 0) symb_shift = 0;
+            if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
+        }
+        break;
+
+        case LMdia:
+        if (record->event.pressed) {
+            if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
+                register_code(KC_TAB);
+            } else {
+                if(++mdia_shift > 2) mdia_shift = 2;
+                if(mdia_shift == 2)  {
+                    mdia_lock = !mdia_lock;
+                } else if(mdia_shift == 1) {
+                    layer_on(MDIA);
+                }
+            }
+        } else {
+            if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
+                unregister_code(KC_TAB);
+            } else {
+                if(--mdia_shift < 0) mdia_shift = 0;
+                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
+            }
+        }
+        break;
+
+        case LSpec:
+        if (record->event.pressed) {
+            if (record->tap.count && !record->tap.interrupted) {
+                register_code(KC_EQL);
+            } else {
+                layer_on(SPEC);
+            }
+        } else {
+            if(record->tap.count && !record->tap.interrupted) {
+                unregister_code(KC_EQL);
+            } else {
+                layer_off(SPEC);
+            }
+        }
+        break;
+
+        case RSymb:
+        if (record->event.pressed) {
+            if (record->tap.count && (!symb_shift) && (!symb_lock)) {
+                register_code(KC_QUOT);
+            } else {
+                if(++symb_shift > 2) symb_shift = 2;
+                if(symb_shift == 2)  {
+                    symb_lock = !symb_lock;
+                } else if(symb_shift == 1) {
+                    layer_on(SYMB);
+                }
+            }
+        } else {
+            if(record->tap.count && symb_shift == 0) {
+                unregister_code(KC_QUOT);
+            } else {
+                if(--symb_shift < 0) symb_shift = 0;
+                if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
+            }
+        }
+        break;
+
+        case RMdia:
+        if (record->event.pressed) {
+            if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
+                register_code(KC_BSLS);
+            } else {
+                if(++mdia_shift > 2) mdia_shift = 2;
+                if(mdia_shift == 2)  {
+                    mdia_lock = !mdia_lock;
+                } else if(mdia_shift == 1) {
+                    layer_on(MDIA);
+                }
+            }
+        } else {
+            if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
+                unregister_code(KC_BSLS);
+            } else {
+                if(--mdia_shift < 0) mdia_shift = 0;
+                if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
+            }
+        }
+        break;
+
+        case RSpec:
+        if (record->event.pressed) {
+            if (record->tap.count && !record->tap.interrupted) {
+                register_code(KC_MINS);
+            } else {
+                layer_on(SPEC);
+            }
+        } else {
+            if(record->tap.count && !record->tap.interrupted) {
+                unregister_code(KC_MINS);
+            } else {
+                layer_off(SPEC);
+            }
+        }
+        break;
+
+        // mouse diagonals
+
+        case MUL: // mouse up left
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_UP);
+            mousekey_on(KC_MS_LEFT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_UP);
+            mousekey_off(KC_MS_LEFT);
+            mousekey_send();
+        }
+        break;
+
+        case MUR: // mouse up right
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_UP);
+            mousekey_on(KC_MS_RIGHT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_UP);
+            mousekey_off(KC_MS_RIGHT);
+            mousekey_send();
+        }
+        break;
+
+        case MDL: // mouse down left
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_DOWN);
+            mousekey_on(KC_MS_LEFT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_DOWN);
+            mousekey_off(KC_MS_LEFT);
+            mousekey_send();
+        }
+        break;
+
+        case MDR: // mouse down right
+        if (record->event.pressed) {
+            mousekey_on(KC_MS_DOWN);
+            mousekey_on(KC_MS_RIGHT);
+            mousekey_send();
+        } else {
+            mousekey_off(KC_MS_DOWN);
+            mousekey_off(KC_MS_RIGHT);
+            mousekey_send();
+        }
+        break;
+
+        default:
+            // none
+            break;
+    }
+    
+    return MACRO_NONE;
+};
+
+// 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) {
+    // shift or caps lock turns on red light
+    if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
+        ergodox_right_led_1_on();
+    } else {
+        ergodox_right_led_1_off();
+    }
+
+    // Symbol layer turns on green light
+    if(layer_state & (1UL<<SYMB)) {
+        ergodox_right_led_2_on();
+    } else {
+        ergodox_right_led_2_off();
+    }
+
+    // Media layer turns on blue light
+    if(layer_state & (1UL<<MDIA)) {
+        ergodox_right_led_3_on();
+    } else {
+        ergodox_right_led_3_off();
+    }
+};
+
diff --git a/layouts/community/ergodox/teckinesis/ordinary-special.png.md b/layouts/community/ergodox/teckinesis/ordinary-special.png.md
new file mode 100644 (file)
index 0000000..20b8761
--- /dev/null
@@ -0,0 +1 @@
+https://i.imgur.com/p3y6E8F.png
diff --git a/layouts/community/ergodox/teckinesis/ordinary-special.txt b/layouts/community/ergodox/teckinesis/ordinary-special.txt
new file mode 100644 (file)
index 0000000..a08827c
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
+[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
+[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
+
diff --git a/layouts/community/ergodox/teckinesis/readme.md b/layouts/community/ergodox/teckinesis/readme.md
new file mode 100644 (file)
index 0000000..6804bb0
--- /dev/null
@@ -0,0 +1,45 @@
+# teckinesis Layout
+
+*A blend of TECK and Kinesis layouts, based on ["The Ordinary Layout" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*
+
+I love "The Ordinary Layout", but I still use a [TECK](https://www.trulyergonomic.com/store/index.php)
+at the office, and I found the transition back and forth to be a bit more difficult than I expected.
+
+This layout consists of only slight changes to "The Ordinary Layout" based on the layouts of the 
+[(original) TECK Model 209](https://www.trulyergonomic.com/store/layout-designer--configurator--reprogrammable--truly-ergonomic-mechanical-keyboard/#KTo7PD0+P0BBQkNERUw5394rNR4fICEi4yMkJSYnLS4xOBQaCBUXTBwYDBITLzDhBBYHCQorCw0ODzPl4B0bBhkFKhEQNjc05OPiSktOTSwoLFBSUU/mZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX2BhAFZXAAAAAAAAAAAAXF1eVAAAAAAAAAAAAABZWltVAAAAAAAAAAAAYgBjAAAAAAAAAAAAWFcAAAAAAACTAQAMAiMBAAwBigEADAIhAQAMAZQBAAwBkgEADAGDAQAMALYBAAwAzQEADAC1AQAMAOIBAAwA6gEADADpAQAMALhJAEYAAAAAAEitR64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk6Ozw9Pj9AQUJDREVMOd/eKzUeHyAhIuMjJCUmJy0uMTgUGggVF0wcGAwSEy8w4QQWBwkKKwsNDg8z5eMdGwYZBSoREDY3NOfg4kpLTk0sKCxQUlFP5uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9gYQBWVwAAAAAAAAAAAFxdXlQAAAAAAAAAAAAAWVpbVQAAAAAAAAAAAGIAYwAAAAAAAAAAAFhXAAAAAAAAkwEADAIjAQAMAYoBAAwCIQEADAGUAQAMAZIBAAwBgwEADAC2AQAMAM0BAAwAtQEADADiAQAMAOoBAAwA6QEADAC4SQBGAAAAAABIrUeuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) and 
+the [Kinesis Advantage](http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf)
+
+## The Base Layout ##
+
+[teckinesis (Base Layer)](http://www.keyboard-layout-editor.com/#/gists/befd4c5800d92114aa9e50d4f7c0dfb0)
+![teckinesis base layout](https://i.imgur.com/DeehOSY.png)
+
+### Changes from The Ordinary Layout ###
+
+* Moved KC_MINS from the key left of the 6 to the RSpec key.
+* Moved KC_EQL from RSpec to LSpec.
+* Moved KC_GRV from LSpec to the key left of the 6.
+* Mdded KC_BSLS to the left Meh key.
+* Added KC_SLSH to the left Hyper key.
+* Added KC_LBRC to the right Hyper key.
+* Added KC_RBRC to the right Meh key.
+
+## The Symbols Layer ##
+
+[teckinesis (Symbols Layer)](http://www.keyboard-layout-editor.com/#/gists/e6ddc4e9e0d194b3e52ac0616238ab61)
+![teckinesis symbols layout](https://i.imgur.com/u8faqMq.png)
+
+### Changes from The Ordinary Layout ###
+
+* None.
+
+## The Media Layer ##
+
+[teckinesis (Media Layer)](http://www.keyboard-layout-editor.com/#/gists/41ff65e6a7c490211fd6702fb34d9908)
+![teckinesis media layout](https://i.imgur.com/NgdJkuh.png)
+
+### Changes from The Ordinary Layout ###
+
+* Removed Power, Sleep, Mail, My Computer keys.
+(I kept hitting these while using the mouse/cursor. =P)
+
diff --git a/layouts/community/ergodox/teckinesis/teckinesis-base.json b/layouts/community/ergodox/teckinesis/teckinesis-base.json
new file mode 100644 (file)
index 0000000..69fe28c
--- /dev/null
@@ -0,0 +1,434 @@
+[
+  {
+    "name": "teckinesis (Base Layer)",
+    "author": "Will Wolff-Myren",
+    "notes": "# teckinesis Layout # \r\n\r\n*A blend of TECK and Kinesis layouts, based on [\"The Ordinary Layout\" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*\r\n\r\n## The Base Layout ##\r\n\r\n![teckinesis base layout](teckinesis-base.png)\r\n\r\n## The Symbols Layer ##\r\n\r\n![teckinesis symbols layout](teckinesis-symbol.png)\r\n\r\n## The Media Layer ##\r\n\r\n(placeholder)\r\n",
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Tea"
+  },
+  [
+    {
+      "x": 3.5
+    },
+    "#\n3",
+    {
+      "x": 10.5
+    },
+    "*\n8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n2",
+    {
+      "x": 1
+    },
+    "$\n4",
+    {
+      "x": 8.5
+    },
+    "&\n7",
+    {
+      "x": 1
+    },
+    "(\n9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "%\n5",
+    {
+      "c": "#ff4444"
+    },
+    "Esc",
+    {
+      "x": 4.5,
+      "c": "#cccccc"
+    },
+    "~\n`",
+    "^\n6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Special\n\n+\n\n\n\nShift\n=",
+    {
+      "c": "#cccccc"
+    },
+    "!\n1",
+    {
+      "x": 14.5
+    },
+    ")\n0",
+    {
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "_\n\nSpecial\n\n\n\n-\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#cccccc"
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "I"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "W",
+    {
+      "x": 1
+    },
+    "R",
+    {
+      "x": 8.5
+    },
+    "U",
+    {
+      "x": 1
+    },
+    "O"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "T",
+    {
+      "h": 1.5
+    },
+    "{\n\n\n\n\n\n[",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "}\n\n\n\n\n\n]",
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "fa": [
+        0,
+        0,
+        4
+      ],
+      "w": 1.5
+    },
+    "Media\n\n<i class='kb kb-Line-Start-End'></i>\n\n\n\nShift",
+    {
+      "c": "#cccccc"
+    },
+    "Q",
+    {
+      "x": 14.5
+    },
+    "P",
+    {
+      "c": "#2277ff",
+      "f": 3,
+      "w": 1.5
+    },
+    "|\n\\\nMedia\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#cccccc"
+    },
+    "D",
+    {
+      "x": 10.5
+    },
+    "K"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "S",
+    {
+      "x": 1
+    },
+    "F",
+    {
+      "x": 8.5
+    },
+    "J",
+    {
+      "x": 1
+    },
+    "L"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "G",
+    {
+      "x": 6.5
+    },
+    "H"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Symbols\n\n\n\n\n\nShift",
+    {
+      "c": "#cccccc"
+    },
+    "A",
+    {
+      "x": 14.5
+    },
+    ":\n;",
+    {
+      "c": "#2277ff",
+      "f": 3,
+      "w": 1.5
+    },
+    "\"\n'\nSymbols\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "c": "#54d6de",
+      "fa": [
+        0,
+        0,
+        4,
+        1
+      ],
+      "h": 1.5
+    },
+    "< Tab\n\n\nShift Tab",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Tab >\n\n\nTab"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "c": "#cccccc"
+    },
+    "C",
+    {
+      "x": 10.5
+    },
+    "<\n,"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "X",
+    {
+      "x": 1
+    },
+    "V",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1
+    },
+    ">\n."
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "B",
+    {
+      "x": 6.5
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Capitals\n\n\n\n\n\nShift",
+    {
+      "c": "#cccccc"
+    },
+    "Z",
+    {
+      "x": 14.5
+    },
+    "?\n/",
+    {
+      "c": "#2277ff",
+      "f": 3,
+      "w": 1.5
+    },
+    "\n\nCapitals\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#77aaff",
+      "fa": [
+        5,
+        0,
+        4,
+        1
+      ]
+    },
+    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
+    {
+      "x": 10.5
+    },
+    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nRAlt"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "fa": [
+        5,
+        1
+      ]
+    },
+    "\nHyper\n?\n/",
+    {
+      "x": 1,
+      "fa": [
+        5,
+        1,
+        0,
+        1
+      ]
+    },
+    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
+    {
+      "x": 8.5
+    },
+    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
+    {
+      "x": 1,
+      "fa": [
+        0,
+        0,
+        0,
+        1
+      ]
+    },
+    "{\n[\n\nHyper"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5
+    },
+    "Ctrl\n\n\nLCtrl",
+    {
+      "f2": 1
+    },
+    "\nMeh\n|\n\\",
+    {
+      "x": 14.5,
+      "fa": [
+        0,
+        0,
+        1,
+        1
+      ]
+    },
+    "}\n]\n\nMeh",
+    "Ctrl\n\n\nRCtrl"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "c": "#54d6de"
+    },
+    "Home",
+    "End"
+  ],
+  [
+    {
+      "h": 2
+    },
+    "< Del\n\n\nBackspace",
+    {
+      "h": 2
+    },
+    "Del >\n\n\nDelete",
+    "Page\n\n\n\n\n\nUp"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "Page\n\n\n\n\n\nDown"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "Left",
+    "Right"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Up",
+    {
+      "h": 2
+    },
+    "Enter",
+    {
+      "h": 2
+    },
+    "Space"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Down"
+  ]
+]
\ No newline at end of file
diff --git a/layouts/community/ergodox/teckinesis/teckinesis-media.json b/layouts/community/ergodox/teckinesis/teckinesis-media.json
new file mode 100644 (file)
index 0000000..65fe394
--- /dev/null
@@ -0,0 +1,436 @@
+[
+  {
+    "name": "teckinesis (MediaLayer)",
+    "author": "Will Wolff-Myren",
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Tea"
+  },
+  [
+    {
+      "x": 3.5,
+      "c": "#99de2a"
+    },
+    "F13",
+    {
+      "x": 10.5
+    },
+    "F18"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "F12",
+    {
+      "x": 1
+    },
+    "F14",
+    {
+      "x": 8.5
+    },
+    "F17",
+    {
+      "x": 1
+    },
+    "F19"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "F15",
+    {
+      "c": "#ff4444"
+    },
+    "Esc",
+    {
+      "x": 4.5
+    },
+    "Esc",
+    {
+      "c": "#99de2a"
+    },
+    "F16"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 1.5
+    },
+    "F11",
+    {
+      "x": 14.5
+    },
+    "F20"
+  ],
+  [
+    {
+      "y": -0.995,
+      "c": "#000000",
+      "t": "#ff0000",
+      "w": 1.5
+    },
+    "Media\n\n\n\n\n\nShift",
+    {
+      "x": 16.5,
+      "w": 1.5
+    },
+    "\n\nMedia\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.3799999999999999,
+      "x": 3.5,
+      "c": "#ff8500",
+      "t": "#000000"
+    },
+    "Mouse\n\n\n\n\n\nUp",
+    {
+      "x": 10.5
+    },
+    "Cursor\n\n\n\n\n\nUp"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "Mouse\n\n\n\n\n\nUpLeft",
+    {
+      "x": 1
+    },
+    "Mouse\n\n\n\n\n\nUpRgt",
+    {
+      "x": 8.5,
+      "c": "#ffb063"
+    },
+    "Home",
+    {
+      "x": 1
+    },
+    "Page\n\n\n\n\n\nUp"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#e6e067"
+    },
+    "Vol\n\n\n\n\n\nUp",
+    {
+      "c": "#ffb063",
+      "h": 1.5
+    },
+    "Scroll\n\n\n\n\n\nUp",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Scroll\n\n\n\n\n\nUp",
+    {
+      "c": "#e6e067"
+    },
+    "Print\n\n\n\n\n\nScreen"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 1.5,
+      "c": "#737373",
+      "a": 7
+    },
+    "",
+    {
+      "x": 14.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "c": "#2277ff",
+      "a": 4,
+      "w": 1.5
+    },
+    "Symbols\n\n\n\n\n\nShift",
+    {
+      "x": 16.5,
+      "w": 1.5
+    },
+    "\n\nSymbols\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.3799999999999999,
+      "x": 3.5,
+      "c": "#ff8500"
+    },
+    "Mouse\n\n\n\n\n\nDown",
+    {
+      "x": 10.5
+    },
+    "Cursor\n\n\n\n\n\nDown"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "Mouse\n\n\n\n\n\nLeft",
+    {
+      "x": 1
+    },
+    "Mouse\n\n\n\n\n\nRight",
+    {
+      "x": 8.5
+    },
+    "Cursor\n\n\n\n\n\nLeft",
+    {
+      "x": 1
+    },
+    "Cursor\n\n\n\n\n\nRight"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#e6e067"
+    },
+    "Vol\n\n\n\n\n\nDown",
+    {
+      "x": 6.5
+    },
+    "Num\n\n\n\n\n\nLock"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 1.5,
+      "c": "#737373",
+      "a": 7
+    },
+    "",
+    {
+      "x": 14.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "c": "#2277ff",
+      "a": 4,
+      "w": 1.5
+    },
+    "Capitals\n\n\n\n\n\nShift",
+    {
+      "x": 16.5,
+      "w": 1.5
+    },
+    "\n\nCapitals\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.6299999999999999,
+      "x": 6.5,
+      "c": "#ffb063",
+      "h": 1.5
+    },
+    "Scroll\n\n\n\n\n\nDown",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Scroll\n\n\n\n\n\nDown"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "c": "#ff8500"
+    },
+    "Mouse\n\n\n\n\n\nDown",
+    {
+      "x": 10.5
+    },
+    "Cursor\n\n\n\n\n\nDown"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "Mouse\n\n\n\n\n\nDnLeft",
+    {
+      "x": 1
+    },
+    "Mouse\n\n\n\n\n\nDnRgt",
+    {
+      "x": 8.5,
+      "c": "#ffb063"
+    },
+    "End",
+    {
+      "x": 1
+    },
+    "Page\n\n\n\n\n\nDown"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#e6e067"
+    },
+    "Mute",
+    {
+      "x": 6.5,
+      "c": "#737373",
+      "a": 7
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 1.5
+    },
+    "",
+    {
+      "x": 14.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "c": "#2277ff",
+      "a": 4,
+      "w": 1.5
+    },
+    "Ctrl",
+    {
+      "x": 16.5,
+      "w": 1.5
+    },
+    "Ctrl"
+  ],
+  [
+    {
+      "y": -0.3799999999999999,
+      "x": 3.5,
+      "c": "#ff8500"
+    },
+    "Middle\n\n\n\n\n\nClick",
+    {
+      "x": 10.5,
+      "c": "#ffb063",
+      "fa": [
+        0,
+        0,
+        0,
+        1
+      ]
+    },
+    "Delete\n\n\nOption"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#ff8500"
+    },
+    "Left\n\n\n\n\n\nClick",
+    {
+      "x": 1
+    },
+    "Right\n\n\n\n\n\nClick",
+    {
+      "x": 8.5,
+      "c": "#ffb063"
+    },
+    "Insert\n\n\nCmd",
+    {
+      "x": 1,
+      "c": "#77aaff"
+    },
+    "Hyper"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5
+    },
+    "Alt\n\n\nLAlt",
+    "Meh",
+    {
+      "x": 14.5
+    },
+    "Meh",
+    "Alt\n\n\nRAlt"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "c": "#ccbb00"
+    },
+    "Stop\n\n\nBrowser",
+    "Reload\n\n\nBrowser"
+  ],
+  [
+    {
+      "h": 2
+    },
+    "< Web\n\n\nBrowser",
+    {
+      "h": 2
+    },
+    "Web >\n\n\nBrowser",
+    "Search\n\n\nBrowser"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "Home\n\n\nBrowser"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "Prev\n\n\nAudio\n\n\nTrack",
+    "Next\n\n\nAudio\n\n\nTrack"
+  ],
+  [
+    {
+      "x": -3,
+      "c": "#e6e067"
+    },
+    "Vol\n\n\n\n\n\nUp",
+    {
+      "c": "#ccbb00",
+      "h": 2
+    },
+    "Stop\n\n\nAudio",
+    {
+      "h": 2
+    },
+    "Play\n\n\nAudio\n\n\nPause"
+  ],
+  [
+    {
+      "x": -3,
+      "c": "#e6e067"
+    },
+    "Vol\n\n\n\n\n\nDown"
+  ]
+]
\ No newline at end of file
diff --git a/layouts/community/ergodox/teckinesis/teckinesis-symbol.json b/layouts/community/ergodox/teckinesis/teckinesis-symbol.json
new file mode 100644 (file)
index 0000000..439d012
--- /dev/null
@@ -0,0 +1,422 @@
+[
+  {
+    "name": "teckinesis (Symbol Layer)",
+    "author": "Will Wolff-Myren",
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Tea"
+  },
+  [
+    {
+      "x": 3.5,
+      "c": "#99de2a"
+    },
+    "F3",
+    {
+      "x": 10.5
+    },
+    "F8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "F2",
+    {
+      "x": 1
+    },
+    "F4",
+    {
+      "x": 8.5
+    },
+    "F7",
+    {
+      "x": 1
+    },
+    "F9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "F5",
+    {
+      "c": "#ff4444"
+    },
+    "Esc",
+    {
+      "x": 4.5,
+      "c": "#bbddbb"
+    },
+    "_\n\n\n\n\n\n-",
+    {
+      "c": "#99de2a"
+    },
+    "F6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Special\n\n\n\n\n\nShift",
+    {
+      "c": "#99de2a"
+    },
+    "F1",
+    {
+      "x": 14.5
+    },
+    "F10",
+    {
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "\n\nSpecial\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#bbddbb"
+    },
+    "{",
+    {
+      "x": 10.5,
+      "c": "#89b087"
+    },
+    "8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#bbddbb"
+    },
+    "@",
+    {
+      "x": 1
+    },
+    "}",
+    {
+      "x": 8.5,
+      "c": "#89b087"
+    },
+    "7",
+    {
+      "x": 1
+    },
+    "9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#bbddbb"
+    },
+    "&",
+    {
+      "h": 1.5
+    },
+    "<",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    ">",
+    "|"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Media\n\n\n\n\n\nShift",
+    {
+      "c": "#bbddbb"
+    },
+    "!",
+    {
+      "x": 14.5,
+      "c": "#89b087"
+    },
+    "/",
+    {
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "\n\nMedia\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#bbddbb"
+    },
+    "(",
+    {
+      "x": 10.5,
+      "c": "#89b087"
+    },
+    "5"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#bbddbb"
+    },
+    "$",
+    {
+      "x": 1
+    },
+    ")",
+    {
+      "x": 8.5,
+      "c": "#89b087"
+    },
+    "4",
+    {
+      "x": 1
+    },
+    "6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#bbddbb"
+    },
+    "`",
+    {
+      "x": 6.5
+    },
+    "/"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#000000",
+      "t": "#ff0000",
+      "w": 1.5
+    },
+    "Symbols\n\n\n\n\n\nShift",
+    {
+      "c": "#bbddbb",
+      "t": "#000000"
+    },
+    "#",
+    {
+      "x": 14.5,
+      "c": "#89b087"
+    },
+    "*",
+    {
+      "c": "#000000",
+      "t": "#ff0000",
+      "w": 1.5
+    },
+    "\n\nSymbols\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "c": "#54d6de",
+      "t": "#000000",
+      "fa": [
+        0,
+        0,
+        0,
+        1
+      ],
+      "h": 1.5
+    },
+    "Tab >\n\n\nTab",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "< Tab\n\n\nShift Tab"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "c": "#bbddbb"
+    },
+    "[",
+    {
+      "x": 10.5,
+      "c": "#89b087"
+    },
+    "2"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#bbddbb"
+    },
+    "^",
+    {
+      "x": 1
+    },
+    "]",
+    {
+      "x": 8.5,
+      "c": "#89b087"
+    },
+    "1",
+    {
+      "x": 1
+    },
+    "3"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#bbddbb"
+    },
+    "~",
+    {
+      "x": 6.5
+    },
+    "\\"
+  ],
+  [
+    {
+      "y": -0.875,
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "Capitals\n\n\n\n\n\nShift",
+    {
+      "c": "#bbddbb"
+    },
+    "%",
+    {
+      "x": 14.5,
+      "c": "#89b087"
+    },
+    "-",
+    {
+      "c": "#2277ff",
+      "w": 1.5
+    },
+    "\n\nCapitals\n\n\n\n\nShift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "c": "#77aaff"
+    },
+    "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
+    {
+      "x": 10.5,
+      "c": "#89b087"
+    },
+    ".\n\n\nOption"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#77aaff"
+    },
+    "Hyper",
+    {
+      "x": 1
+    },
+    "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
+    {
+      "x": 8.5,
+      "c": "#89b087"
+    },
+    "0\n\n\nCmd",
+    {
+      "x": 1
+    },
+    "=\n\n\nHyper"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5,
+      "c": "#77aaff"
+    },
+    "Ctrl\n\n\nLCtrl",
+    "Meh",
+    {
+      "x": 14.5,
+      "c": "#89b087"
+    },
+    "+\n\n\nMeh",
+    "Enter\n\n\nCtrl"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "c": "#54d6de"
+    },
+    "Left",
+    "Right"
+  ],
+  [
+    {
+      "h": 2
+    },
+    "Space",
+    {
+      "h": 2
+    },
+    "Enter",
+    "Up"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "Down"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "Home",
+    "End"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Page\n\n\n\n\n\nUp",
+    {
+      "h": 2
+    },
+    "< Del\n\n\nBackspace",
+    {
+      "h": 2
+    },
+    "Del >\n\n\nDelete"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Page\n\n\n\n\n\nDown"
+  ]
+]
\ No newline at end of file
diff --git a/layouts/community/ergodox/tkuichooseyou/README.md b/layouts/community/ergodox/tkuichooseyou/README.md
new file mode 100644 (file)
index 0000000..ab02fac
--- /dev/null
@@ -0,0 +1,13 @@
+# Based on Default OSX
+I'm a vim and OSX user
+
+- Moved Hyper and Meh up, replaced with CMD
+  - Because I'm used to having symmetrical CMD keys on both hands
+- Changed left delete to Tab to match OSX
+- Changed left Backspace to CTRL/ESC for vim
+- Changed top left and top right arrow to `CMD+{` and `CMD+}`
+  - Useful for switching tabs in Safari, Xcode, etc.
+- Remove the Ctrl from Z and /
+- Remove CMD from right quote
+- Changed right Alt to Delete
+
diff --git a/layouts/community/ergodox/tkuichooseyou/keymap.c b/layouts/community/ergodox/tkuichooseyou/keymap.c
new file mode 100644 (file)
index 0000000..0a94b52
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  |CMD+{ |           | CMD+}|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  | Hyper|           |  Meh |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Ctrl/Esc|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  LGui  |
+ * |--------+------+------+------+------+------| LGui |           | LGui |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Del  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   LGUI(LSFT(KC_LBRC)),
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   ALL_T(KC_NO),
+        CTL_T(KC_ESC),  KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
+        LT(SYMB,KC_GRV),KC_QUOT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             LGUI(LSFT(KC_RBRC)),   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             MEH_T(KC_NO),          KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                                    KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_QUOT,
+             KC_LGUI,               KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                            KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_DELT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/tm2030/keymap.c b/layouts/community/ergodox/tm2030/keymap.c
new file mode 100644 (file)
index 0000000..fa919b5
--- /dev/null
@@ -0,0 +1,242 @@
+/* TypeMatrix-2030-like keymap  */
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "led.h"
+
+#define BASE 0 // default layer
+#define DVRK 1 // Dvorak layer
+#define NUMR 8 // numeric layer
+#define FNLR 9 // fn layer
+
+#define MDBL0 1
+#define MFNLR 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   ]    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |Backsp|           |Backsp|   Y  |   U  |   I  |   O  |   P  |   [    |
+ * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+ * | LShift |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '/Shift|
+ * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | \/Shift|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   -  | Home |   =  |End/Ctl|
+ *   `-----------------------------------'                                      `-----------------------------------'
+ *                                       ,--------------.       ,-------------.
+ *                                       |Esc/Alt| num  |       | Left |Right |
+ *                                ,------+-------+------|       |------+------+------.
+ *                                |      |       | PgUp |       |  Up  |      |      |
+ *                                |Space |LShift |------|       |------|RShift|Space |
+ *                                |      |       | PgDn |       | Down |      |      |
+ *                                `---------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_DELT,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_BSPC,
+        KC_LSFT,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_ENT,
+        KC_LCTL,        M(MFNLR),     KC_LGUI,KC_MPLY,ALT_T(KC_APP),
+
+                                              ALT_T(KC_ESC),  TG(NUMR),
+                                                              KC_PGUP,
+                                            KC_SPC, KC_LSFT,  KC_PGDN,
+
+        // right hand
+             KC_DELT,     KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     KC_RBRC,
+             KC_BSPC,     KC_Y,   KC_U,    KC_I,    KC_O,    KC_P,     KC_LBRC,
+                          KC_H,   KC_J,    KC_K,    KC_L,    KC_SCLN,  SFT_T(KC_QUOT),
+             KC_ENT,      KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH,  SFT_T(KC_BSLS),
+                                  KC_RALT, KC_MINS, KC_HOME, KC_EQL,   CTL_T(KC_END),
+
+             KC_LEFT, KC_RGHT,
+             KC_UP,
+             KC_DOWN, KC_RSFT,  KC_SPC
+    ),
+/* Dvorak layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   '  |   ,  |   .  |   P  |   Y  |Backsp|           |Backsp|   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+ * | LShift |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  | -/Shift|
+ * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+ * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | \/Shift|
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   [  | Home |   ]  |End/Ctl|
+ *   `-----------------------------------'                                      `-----------------------------------'
+ *                                       ,--------------.       ,-------------.
+ *                                       |Esc/Alt| num  |       | Left |Right |
+ *                                ,------+-------+------|       |------+------+------.
+ *                                |      |       | PgUp |       |  Up  |      |      |
+ *                                |Space |LShift |------|       |------|RShift|Space |
+ *                                |      |       | PgDn |       | Down |      |      |
+ *                                `---------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[DVRK] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,   KC_1,      KC_2,    KC_3,    KC_4,   KC_5,   KC_DELT,
+        KC_TAB,   KC_QUOT,   KC_COMM, KC_DOT,  KC_P,   KC_Y,   KC_BSPC,
+        KC_LSFT,  KC_A,      KC_O,    KC_E,    KC_U,   KC_I,
+        KC_LSFT,  KC_SCLN,   KC_Q,    KC_J,    KC_K,   KC_X,   KC_ENT,
+        KC_LCTL,  M(MFNLR),  KC_LGUI, KC_MPLY, ALT_T(KC_APP),
+
+                                              ALT_T(KC_ESC),  TG(NUMR),
+                                                              KC_PGUP,
+                                            KC_SPC, KC_LSFT,  KC_PGDN,
+
+        // right hand
+             KC_DELT,     KC_6,   KC_7,    KC_8,    KC_9,    KC_0,     KC_EQL,
+             KC_BSPC,     KC_F,   KC_G,    KC_C,    KC_R,    KC_L,     KC_SLSH,
+                          KC_D,   KC_H,    KC_T,    KC_N,    KC_S,     SFT_T(KC_MINS),
+             KC_ENT,      KC_B,   KC_M,    KC_W,    KC_V,    KC_Z,     SFT_T(KC_BSLS),
+                                  KC_RALT, KC_LBRC, KC_HOME, KC_RBRC,  CTL_T(KC_END),
+
+             KC_LEFT, KC_RGHT,
+             KC_UP,
+             KC_DOWN, KC_RSFT,  KC_SPC
+    ),
+/* Numeric Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
+ *   `----------------------------------'                                       `-----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |n.lock|c.lock|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[NUMR] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+       KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
+       KC_TRNS, KC_F11,  KC_F12,  KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                                               KC_TRNS, KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,   KC_TAB,  KC_PSLS, KC_PAST, KC_PMNS,
+       KC_TRNS, KC_TRNS, KC_HOME, KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+                KC_UP,   KC_END,  KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+       KC_LEFT, KC_DOWN, KC_RGHT, KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+                         KC_TRNS, KC_P0,   M(MDBL0),KC_PDOT, CTL_T(KC_PENT),
+
+       KC_NLCK, KC_CAPS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* fn layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       | Next |      |      |
+ *                                 | Mute |      |------|       |------|      |      |
+ *                                 |      |      |      |       | Prev |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[FNLR] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_INS,
+       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,      KC_TRNS, KC_VOLU,
+       KC_TRNS, KC_TRNS, KC_TRNS,      KC_CALC,     KC_MAIL,      KC_WHOM,
+       KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD,
+       KC_TRNS, KC_TRNS, KC_TRNS,      KC_TRNS,     KC_TRNS,
+
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_MUTE, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_INS,   KC_EJCT, KC_PWR,  KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+       KC_TRNS, KC_TRNS,
+       KC_MPRV,
+       KC_MNXT, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+        case MDBL0:
+            if (record->event.pressed) {
+              return MACRO( I(25), T(P0), T(P0), END );
+            }
+        break;
+        case MFNLR:
+            layer_invert(NUMR);
+            layer_invert(FNLR);
+            break;
+    }
+    return MACRO_NONE;
+};
+
+// 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) {
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    // led 1: numeric layer
+    if (layer_state & (1 << NUMR)) {
+        ergodox_right_led_1_on();
+    }
+    // led 2: Dvorak layer
+    if (default_layer_state == 1 << DVRK) {
+        ergodox_right_led_2_on();
+    }
+    // led 3: caps lock
+    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+      ergodox_right_led_3_on();
+    }
+
+};
diff --git a/layouts/community/ergodox/tm2030/readme.md b/layouts/community/ergodox/tm2030/readme.md
new file mode 100644 (file)
index 0000000..6cd7947
--- /dev/null
@@ -0,0 +1,136 @@
+# TypeMatrix™ 2030 inspired layout
+
+This is a [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) inspired layout for the ErgoDox EZ. The _TypeMatrix_ is a nice small ergonomic keyboard with a matrix layout, and it provides several nice features like `enter`, `backspace` and `delete` at the center, bigger `shift` keys and international `cut`, `copy` and `paste` keys.
+
+The idea in this ErgoDox layout is to make it is as close as possible to the TM2030, such that it would be easy to switch between the TM and the ErgoDox. No _fancy_ features have been implemented, as this is intended to be a base for further customization if desired. Some keys have been duplicated in order to accomodate for most people.
+
+Most of the TM2030 features are supported except
+* automatic window switching (alt-tab key, at the left of the space key)
+* show desktop key (at the right of the space key)
+* 102/106 modes
+
+Dvorak mode is even supported by pressing [`Magic`](/TMK_readme.md#magic-commands)+`1` (`Magic` is by default `LShift`+`RShift`)
+
+Some keys had to be moved around to fit into the ErgoDox, especially the `F1`-`F12` keys and the arrow keys.
+
+## Base Layer
+This is the default layer, close to the TM with the following differences:
+
+ - Top row (with the `F`-keys) and rightmost column (with application shortcuts) are removed, the corresponding keys are displaced elsewhere.
+ - Bottom-left keys are reorganized on a single row as: `Ctrl`, `fn`, `Gui`, `Play`, `App`/`Alt`.
+ - `shuffle` and `desktop` are not supported.
+ - `right-shift` is moved on `'`, `\` and on the right thumb (the latter is actually the only _true_ `right-shift`, and must be used in the `Magic` key combination).
+ - `right-ctrl` is moved on `End`.
+ - `]` is moved in place of the dash (`-`).
+ - Dash (`-`) and `=` are moved on bottom right row.
+ - Arrows and `PgUp`/`PgDn` are moved on the thumbs.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   ]    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| Tab    |   Q  |   W  |   E  |   R  |   T  |Backsp|           |Backsp|   Y  |   U  |   I  |   O  |   P  |   [    |
+|--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+| LShift |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | '/Shift|
+|--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+| LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | \/Shift|
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   -  | Home |   =  |End/Ctl|
+  `-----------------------------------'                                      `-----------------------------------'
+                                      ,--------------.       ,-------------.
+                                      |Esc/Alt| num  |       | Left |Right |
+                               ,------+-------+------|       |------+------+------.
+                               |      |       | PgUp |       |  Up  |      |      |
+                               |Space |LShift |------|       |------|RShift|Space |
+                               |      |       | PgDn |       | Down |      |      |
+                               `---------------------'       `--------------------'
+```
+
+### Layer Switching
+- Use `num` to toggle the Numeric Layer.
+- Hold `fn` to temporarily activate the Numeric & Fn Layers.
+
+As on the original TM 2030, when `num` layer is activated, holding `fn` disables it but enables the other `fn` keys.
+
+## Dvorak Layer
+Same as Layer 0 but with _Dvorak_ layout, to use with QWERTY OS layout.
+
+Enable Dvorak layout with [`Magic`](/TMK_readme.md#magic-commands)+`1` (`LShift`+`RShift`+`1`), disable with `Magic`-`0`.
+
+The middle (green) led indicates when the Dvorak layer is activated.
+
+    ,--------------------------------------------------.           ,--------------------------------------------------.
+    |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   =    |
+    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+    | Tab    |   '  |   ,  |   .  |   P  |   Y  |Backsp|           |Backsp|   F  |   G  |   C  |   R  |   L  |   /    |
+    |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
+    | LShift |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  | -/Shift|
+    |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
+    | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | \/Shift|
+    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+      |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   [  | Home |   ]  |End/Ctl|
+      `-----------------------------------'                                      `-----------------------------------'
+                                          ,--------------.       ,-------------.
+                                          |Esc/Alt| num  |       | Left |Right |
+                                   ,------+-------+------|       |------+------+------.
+                                   |      |       | PgUp |       |  Up  |      |      |
+                                   |Space |LShift |------|       |------|RShift|Space |
+                                   |      |       | PgDn |       | Down |      |      |
+                                   `---------------------'       `--------------------'
+
+## Numeric Layer
+Numeric layer close to the TM when toggling `num`, with the following differences:
+
+- Numpad is displaced by 1 to the top left.
+- Arrows are displaced by 1 to the left.
+- Provides access to `F1`-`F12`, `caps-lock` and `num-lock`.
+
+The numeric layer is indicated with the left (red) led. Caps-lock is indicated with the right (blue) led.
+
+    ,--------------------------------------------------.           ,--------------------------------------------------.
+    |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
+    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+    |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
+    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+    |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
+    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+    |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
+    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+      |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
+      `----------------------------------'                                       `-----------------------------------'
+                                           ,-------------.       ,-------------.
+                                           |      |      |       |n.lock|c.lock|
+                                    ,------|------|------|       |------+------+------.
+                                    |      |      |      |       |      |      |      |
+                                    |      |      |------|       |------|      |      |
+                                    |      |      |      |       |      |      |      |
+                                    `--------------------'       `--------------------'
+
+## Fn Layer
+Activated simultaneously with the Numeric layer when holding the `fn` key. As on the TM, it provides access to the following features:
+- `cut`, `copy` and `paste`
+- `volume up`, `volume down` and `mute` — as opposed to the TM, these are only on left hand
+- `previous track` and `next track`
+- `calculator`, `mail` and `browser home`
+- `insert`, `power`, `sleep`, `wake`, `print screen`, `scroll-lock` and `pause`
+
+Note: the `eject` key does not work due to jackhumbert/qmk_firmware#82
+
+    ,--------------------------------------------------.           ,--------------------------------------------------.
+    |        |      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
+    |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+    |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
+    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+    |        |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
+    |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+    |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
+    `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+      |      |      |      |      |      |                                       |      |      |      |      |      |
+      `----------------------------------'                                       `----------------------------------'
+                                           ,-------------.       ,-------------.
+                                           |      |      |       |      |      |
+                                    ,------|------|------|       |------+------+------.
+                                    |      |      |      |       | Next |      |      |
+                                    | Mute |      |------|       |------|      |      |
+                                    |      |      |      |       | Prev |      |      |
+                                    `--------------------'       `--------------------'
diff --git a/layouts/community/ergodox/tonyabra_osx/keymap.c b/layouts/community/ergodox/tonyabra_osx/keymap.c
new file mode 100644 (file)
index 0000000..d0b5c5d
--- /dev/null
@@ -0,0 +1,184 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Esc    |   1  |   2  |   3  |   4  |   5  |   =  |           |   -  |   6  |   7  |   8  |   9  |   0  |  Enter |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '"   |
+ * |--------+------+------+------+------+------| LGui |           | LGui |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  L1  |   `  |  {   |   }  |  '"  |                                       | Left |  Up  | Down | Right|  L2  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |  Del | Alt  |       | Alt  | Ctrl |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_EQL,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
+        TG(SYMB),       KC_GRV,       KC_LBRC,        KC_RBRC,KC_QUOT,
+                                                      KC_DELT,KC_LALT,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_MINS,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_ENT,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT,
+             KC_LGUI,     KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,
+                                  KC_LEFT,KC_UP,  KC_DOWN,KC_RIGHT,          TG(MDIA),
+             KC_RALT,     KC_RCTL,
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/tonyabra_osx/readme.md b/layouts/community/ergodox/tonyabra_osx/readme.md
new file mode 100644 (file)
index 0000000..f9d76ef
--- /dev/null
@@ -0,0 +1,5 @@
+# ErgoDox EZ OS X Simplified Configuration
+
+This keyboard configuration replaces the hyper and meh keys with the command key. It also removes all of the meta keys that require a "hold" because I found that I hesitate when I type, which can accidentally fire those combinations. On the upper left of the left hand, I mimicked the Mac placement of tab and escape, and on the upper right of the right hand, I placed an additional enter key for convenience when breezing through prompts.
+
+This is my standard working configuration for now, but I can see myself tweaking it as I use it more. I highly recommend you do the same.
\ No newline at end of file
diff --git a/layouts/community/ergodox/townk_osx/config.h b/layouts/community/ergodox/townk_osx/config.h
new file mode 100644 (file)
index 0000000..59b3188
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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
+
+#include QMK_KEYBOARD_CONFIG_H
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+//#define DEBUG_MATRIX_SCAN_RATE
+#define ONESHOT_TAP_TOGGLE 2
+#define ONESHOT_TIMEOUT 3000
+
+#endif
diff --git a/layouts/community/ergodox/townk_osx/keymap.c b/layouts/community/ergodox/townk_osx/keymap.c
new file mode 100644 (file)
index 0000000..a6097d9
--- /dev/null
@@ -0,0 +1,285 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+#include "led.h"
+#include "keymap.h"
+#include "timer.h"
+
+/*
+
+# Why this Layout
+
+This layout was based on Kinesis layout and other ErgoDox user layouts
+available. It's target to be used on a MacOS but I'm pretty sure it can be
+addapted to Windows and/or Linux easily.
+
+## Function Key
+
+The `fn` key work almost like it would in any other keyboard with the exception
+it has a semi-sticky behavior. What does that mean?
+
+Well, if you press the `fn` and release it, the keyboard will be put on the
+_function layout_ and the next key stroke will be processed as if the `fn` key
+was pressed. Aftwards, the leyout get back to _normal_. If you hold `fn` and
+press any other key, when you release them, the keyboard leyout is back to
+_normal_.
+
+While pressing the `fn` with the left hand and strikeing the other keys on the
+right hand is farly easy, the same cannot being said for the other keys on the
+left side. So, instead of trying to do contorcionism with my left hand, I
+decided to do a semi-sticky version of `fn`. This way, I can press the  `fn`
+key with my pinky, release it and press the `1` key to issue an `F1` to the
+operating system.
+
+## Key-Pad Key
+
+The `key pad` key is a layout switch key. If pressed, it will put the keyboard
+on the _key pad layout_ and stay there until key is pressed again.
+
+This is used to make the keyboard behave mostly like a **num pad keyboard**.
+
+## Notes
+- Regardless in which layout you are, keys from other layouts are not
+  accessible. This means that if you are on the _key pad layout_, the left hand
+  will be pretty much unusable.
+  Of course that like anything else, there are exceptions to this rule.
+  Modifiers should remain accessible throughout the layers.
+- The _shift key_ is, like the _function key_, also configured to have a sticky
+  behavior.
+- All sticky keys have a timeout of 3 seconds.
+
+*/
+#define BASE   0
+#define KEYPAD 1
+#define FN     2
+
+#define MACRO_TMUX_ESC        10
+#define MACRO_TMUX_PASTE      11
+#define MACRO_OSX_COPY        12
+#define MACRO_OSX_PASTE       13
+
+#define M_TESC   M(MACRO_TMUX_ESC)
+#define M_TPASTE M(MACRO_TMUX_PASTE)
+#define M_OSXCPY M(MACRO_OSX_COPY)
+#define M_OSXPST M(MACRO_OSX_PASTE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Base Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |        `~ |   1  |   2  |   3  |   4  |   5  | ESC  |           | Pwr  |   6  |   7  |   8  |   9  |   0  | - _       |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * | Tab       |   Q  |   W  |   E  |   R  |   T  | F16  |           | F17  |   Y  |   U  |   I  |   O  |   P  | = +       |
+ * |-----------+------+------+------+------+------| Meh  |           | Meh  |------+------+------+------+------+-----------|
+ * | \ (Ctrl)  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | ' " (Ctrl)|
+ * |-----------+------+------+------+------+------| F18  |           | F19  |------+------+------+------+------+-----------|
+ * |  LShift   |   Z  |   X  |   C  |   V  |   B  | Hyper|           | Hyper|   N  |   M  |   ,  |   .  |   /  |   RShift  |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     | FN    | KPAD |LCtrl | LAlt | LGui |                                       | RGui | RAlt | RCtrl| KPAD |    FN |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | M(0) | M(1) |           | M(2) | M(3) |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | Home |           | PgUp |      |      |
+ *                                  |Backsp| Del  |------|           |------| Enter| Space|
+ *                                  |      |      | End  |           | PgDn |      |      |
+ *                                  `--------------------'           `--------------------'
+ *
+ * M(0) = Ctrk+A Esc
+ *        (this is used to issue the Esc key to the Tmux application)
+ * M(1) = Ctrk+A P
+ *        (this is used to issue the Paste key to the Tmux application)
+ * M(2) = Cmd+C
+ * M(3) = Cmd+V
+ */
+[BASE]=LAYOUT_ergodox(//left half
+              KC_GRV,         KC_1,       KC_2,     KC_3,           KC_4,       KC_5,     KC_ESC,
+              KC_TAB,         KC_Q,       KC_W,     KC_E,           KC_R,       KC_T,     MEH_T(KC_F16),
+              CTL_T(KC_BSLS), KC_A,       KC_S,     KC_D,           KC_F,       KC_G,
+              KC_FN2,         KC_Z,       KC_X,     KC_C,           KC_V,       KC_B,     ALL_T(KC_F18),
+              KC_FN1,         TG(KEYPAD), KC_LCTRL, KC_LALT,        KC_LGUI,
+                                                                                M_TESC,   M_TPASTE,
+                                                                                          KC_HOME,
+                                                                    KC_BSPC,    KC_DELT,  KC_END,
+              //right half
+              KC_POWER,       KC_6,       KC_7,     KC_8,           KC_9,       KC_0,     KC_MINS,
+              MEH_T(KC_F17),  KC_Y,       KC_U,     KC_I,           KC_O,       KC_P,     KC_EQL,
+                              KC_H,       KC_J,     KC_K,           KC_L,       KC_SCLN,  CTL_T(KC_QUOT),
+              ALL_T(KC_F19),  KC_N,       KC_M,     KC_COMM,        KC_DOT,     KC_SLSH,  KC_FN2,
+                              KC_RGUI,    KC_RALT,  CTL_T(KC_LBRC), KC_FN3,     KC_FN1,
+              M_OSXCPY,       M_OSXPST,
+              KC_PGUP,
+              KC_PGDN,        KC_ENT,     KC_SPC),
+
+/* Keymap 1: KeyPad Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |      | LClk | RClk | MClk |      |      |           | BTab | Clear|   /  |   *  |   ^  |   (  |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * | M.Accel 2 |      |ScrlUp|  U   |ScrlDn|      |      |           | Tab  |   7  |   8  |   9  |   +  |   )  |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * | M.Accel 1 |      |   L  |  D   |  R   |      |------|           |------|   4  |   5  |   6  |   -  |      |           |
+ * |-----------+------+------+------+------+------|      |           |Return|------+------+------+------+------+-----------|
+ * | M.Accel 0 |      |ScrlL |      |ScrlR |      |      |           |      |   1  |   2  |   3  |   =  |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     |       | XXXX |      |      |      |                                       |   0  |   .  |   ,  | XXXX |       |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      | XXXX |      |
+ *                                  |      |      |------|           |------| XXXX |      |
+ *                                  |      |      |      |           |      | XXXX |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[KEYPAD]=LAYOUT_ergodox(//left half
+                KC_NO,        KC_NO,    KC_MS_BTN1,    KC_MS_BTN2,     KC_MS_BTN3,     KC_NO,   KC_NO,
+                KC_MS_ACCEL2, KC_NO,    KC_MS_WH_UP,   KC_MS_U,        KC_MS_WH_DOWN,  KC_NO,   KC_NO,
+                KC_MS_ACCEL1, KC_NO,    KC_MS_L,       KC_MS_D,        KC_MS_R,        KC_NO,
+                KC_MS_ACCEL0, KC_NO,    KC_MS_WH_LEFT, KC_NO,          KC_MS_WH_RIGHT, KC_NO,   KC_NO,
+                KC_NO,        KC_TRNS,  KC_NO,         KC_NO,          KC_NO,
+                                                                                       KC_NO,   KC_NO,
+                                                                                                KC_NO,
+                                                                       KC_NO,          KC_NO,   KC_NO,
+                //right half
+                LSFT(KC_TAB), KC_CLEAR, KC_KP_SLASH,   KC_KP_ASTERISK, KC_CIRCUMFLEX,  KC_LPRN, KC_NO,
+                KC_TAB,       KC_KP_7,  KC_KP_8,       KC_KP_9,        KC_KP_PLUS,     KC_RPRN, KC_NO,
+                              KC_KP_4,  KC_KP_5,       KC_KP_6,        KC_KP_MINUS,    KC_NO,   KC_NO,
+                KC_KP_ENTER,  KC_KP_1,  KC_KP_2,       KC_KP_3,        KC_KP_EQUAL,    KC_NO,   KC_NO,
+                                        KC_KP_0,       KC_KP_DOT,      KC_KP_COMMA,    KC_TRNS, KC_NO,
+                KC_NO,        KC_NO,
+                KC_NO,
+                KC_NO,        KC_TRNS,  KC_NO),
+
+/* Keymap 2: Functions Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |  Vol. Up  |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           | Stop |  Rw  |  Rec |  FF  |      | XXXX |           | XXXX |      |      |      |      |      | Vol. Down |
+ * |-----------+------+------+------+------+------| XXXX |           | XXXX |------+------+------+------+------+-----------|
+ * |  CapsLock | Eject| Prev | Play | Next |      |------|           |------| Left | Down |  Up  | Right|      |   Mute    |
+ * |-----------+------+------+------+------+------| XXXX |           | XXXX |------+------+------+------+------+-----------|
+ * |  L Shift  |      |      |      |      |      | XXXX |           | XXXX |      |      |      |      |      |  R Shift  |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     | XXXXX |      | XXXX | XXXX | XXXX |                                       | XXXX | XXXX | XXXX |      | XXXXX |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  |      |      |------|           |------|      |      |
+ *                                  |      |      |      |           |      |      |      |
+ *                                  `--------------------'           `--------------------'
+ *
+ * XXX = These keys are transparent keys that, when pressed, they issue the key from the previous layer.
+ */
+[FN]=LAYOUT_ergodox(//left half
+            KC_NO,   KC_F1,          KC_F2,               KC_F3,               KC_F4,                 KC_F5,  KC_F6,
+            KC_NO,   KC_MEDIA_STOP,  KC_MEDIA_REWIND,     KC_MEDIA_SELECT,     KC_MEDIA_FAST_FORWARD, KC_NO,  KC_TRNS,
+            KC_CAPS, KC_MEDIA_EJECT, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,   KC_NO,
+            KC_LSFT, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_TRNS,
+            KC_TRNS, KC_NO,          KC_TRNS,             KC_TRNS,             KC_TRNS,
+                                                                                                      KC_NO,  KC_NO,
+                                                                                                              KC_NO,
+                                                                               KC_NO,                 KC_NO,  KC_NO,
+            //right half
+            KC_F7,   KC_F8,          KC_F9,               KC_F10,              KC_F11,                KC_F12, KC_VOLU,
+            KC_TRNS, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_VOLD,
+                     KC_LEFT,        KC_DOWN,             KC_UP,               KC_RIGHT,              KC_NO,  KC_MUTE,
+            KC_TRNS, KC_NO,          KC_NO,               KC_NO,               KC_NO,                 KC_NO,  KC_RSFT,
+                                     KC_TRNS,             KC_TRNS,             KC_TRNS,               KC_NO,  KC_TRNS,
+            KC_NO,   KC_NO,
+            KC_NO,
+            KC_NO,   KC_NO,          KC_NO)};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_ONESHOT(FN),
+  [2] = ACTION_MODS_ONESHOT(MOD_LSFT),  // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift.
+  [3] = ACTION_LAYER_TAP_KEY(KEYPAD, KC_RBRC),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  // MACRODOWN only works in this function
+  switch(id) {
+    case MACRO_TMUX_ESC:
+      if (record->event.pressed) {
+        return MACRO(D(LCTRL), T(A), U(LCTRL), D(ESC), END);
+      }
+      return MACRO(U(ESC), END);
+    case MACRO_TMUX_PASTE:
+      if (record->event.pressed) {
+        return MACRO(D(LCTRL), T(A), U(LCTRL), D(P), END);
+      }
+      return MACRO(U(P), END);
+    case MACRO_OSX_COPY:
+      if (record->event.pressed) {
+        return MACRO(D(LGUI), D(C), END);
+      }
+      return MACRO(U(C), U(LGUI), END);
+    case MACRO_OSX_PASTE:
+      if (record->event.pressed) {
+        return MACRO(D(LGUI), D(V), END);
+      }
+      return MACRO(U(V), U(LGUI), END);
+  }
+  return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+};
+
+uint8_t current_layer = BASE;
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+
+  ergodox_led_all_off();
+  ergodox_led_all_set(LED_BRIGHTNESS_LO);
+
+  switch (layer) {
+  case BASE:
+    current_layer = BASE;
+    break;
+  case KEYPAD:
+    current_layer = KEYPAD;
+    break;
+  default:
+    // none
+    break;
+  }
+
+  // layer leds
+  if (current_layer == KEYPAD) {
+    ergodox_right_led_3_on();
+  }
+
+  // capslock
+  if (host_keyboard_leds() & (3<<USB_LED_CAPS_LOCK)) {
+    ergodox_right_led_1_on();
+  }
+
+  // Temporary leds
+
+  // The function layer takes over other layers and we need to reflect that on the leds.
+  // If the current layer is the BASE, we simply turn on the FN led, but if the current
+  // layer is the KEYPAD, than we must turn it off before turning on the FN led.
+  if (layer == FN && !has_oneshot_layer_timed_out()) {
+    ergodox_right_led_3_off();
+    ergodox_right_led_2_on();
+  }
+
+  // if the shifted is pressed I show the case led in a brighter color. This is nice to
+  // differenciate the shift from the capslock.
+  // Notice that I make sure that we're not using the shift on a chord shortcut (pressing
+  // shift togather with other modifiers).
+  if((keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) &&                                 // is shift pressed and there is no other
+      !(keyboard_report->mods & (~MOD_BIT(KC_LSFT) & ~MOD_BIT(KC_RSFT)))) ||                           //    modifier being pressed as well
+     (get_oneshot_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) && !has_oneshot_mods_timed_out())) {  // or the one shot shift didn't timed out
+    ergodox_right_led_1_set(LED_BRIGHTNESS_HI);
+    ergodox_right_led_1_on();
+  }
+};
diff --git a/layouts/community/ergodox/townk_osx/makefile.mk b/layouts/community/ergodox/townk_osx/makefile.mk
new file mode 100644 (file)
index 0000000..c06021b
--- /dev/null
@@ -0,0 +1,2 @@
+# I don't want my keyboard blinking lights when is suppose to be asleep.
+SLEEP_LED_ENABLE = no
\ No newline at end of file
diff --git a/layouts/community/ergodox/townk_osx/readme.md b/layouts/community/ergodox/townk_osx/readme.md
new file mode 100644 (file)
index 0000000..a2dcd35
--- /dev/null
@@ -0,0 +1,77 @@
+# Townk's Keymap
+
+Trying to take care of an enjury on my arm I borrow an ergonomic keyboard from
+a frient ([Kinesis Advantage](http://www.kinesis-ergo.com/shop/advantage-pro-for-pc-mac/)).
+
+I really enjoyed my time with it but there were some anoyancies:
+
+* The curvature on the keys bothered me since I'm a Vim user and using the
+  motion keys on my editor was awkard.
+* I had to spend too much time remapping the keyboard to make some symbol keys
+  more accessible to me.
+* The fact that my hands had to stay close to each other was a bit stressfull
+  to my sholders.
+
+After a long research I find out that Ergodox EZ would be perfect for my needs
+and purchase one. Before the keyboard even got in my hands I started to think
+on the layout I would use on it and soon enough I planed couple adjustments
+from the Kinesis I was using so far.
+
+## The layout
+
+Here are the layout mapping in images so you can have a glimpse on it:
+
+![Base Layout](https://i.imgur.com/m1yyQvU.png)
+![fn Layout](https://i.imgur.com/AJIzrjq.png)
+![Keypad & Mouse Layout](https://i.imgur.com/9I6Qr0e.png)
+
+Notice that, differently from the default behavior, my layer keys are not transparent
+by default, which means that if you press any non-labeled white key, nothing will be
+handled to the OS.
+
+### One shot keys
+
+It all started with the access to the function keys (F1, F2, F3...), since
+those keys are located on a different layer I needed a way to press them with
+minimal effort without disrupting my flow.
+
+For me, togglihg a layer to press a button and than toggle it back is a waste
+of time (although I admit it's a single tap from what I have), so I decided to
+do it as a one shot key. I could press it and the next pressed key would be
+handled by the target layer which just after it delivers the key to the OS it
+would get back to the previous layer.
+
+After setting up my layout to do just that I realized that occasionally I
+would stop myseld on the middle of the process and the one shot layer would be
+still triggered until I press any other key. So to prevent me from tapping
+keys I don't want I added a timeout of 3 seconds for the one shot actions.
+
+Ultimately I tested the shift key as a one shot one and really like it, so
+here you have it, all the one shot keys on my layout.
+
+## Glossary
+
+If you're not familiar with the Mac symbols used on some keys, here is a
+reference to them:
+
+| Symbol | Description         |
+| :----: | ------------------- |
+|   ⌘    | Command             |
+|   ⇪    | Caps Lock           |
+|   ⇧    | Shift               |
+|   ⌥    | Option (alt)        |
+|   ⎋    | Esc                 |
+|   ⇥    | Tab forward         |
+|   ⇤    | Tab backward        |
+|   ⌃    | Control             |
+|   ␣    | Space               |
+|   ⌫    | Backspace           |
+|   ⌦    | Delete              |
+|   ⏎    | Enter               |
+|   ⌤    | Return              |
+|   ⌽    | Power on/off button |
+|   ↖    | Home                |
+|   ↘    | End                 |
+|   ⇞    | Page up             |
+|   ⇟    | Page down           |
+|   ⌧    | Clear               |
diff --git a/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c b/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c
new file mode 100644 (file)
index 0000000..909127a
--- /dev/null
@@ -0,0 +1,213 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+/* Keymap 0: Basic Dvorak layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | Hebrew |   1  |   2  |   3  |   4  |   5  |ALT+S |           |B.tick|  6   |   7  |   8  |   9  |   0  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | TAB    |   '  |   ,  |   .  |   P  |   Y  | LCK2 |           |      |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | ESC    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| LCK1 |           |      |------+------+------+------+------+--------|
+ * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RSHIFT |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |FN2   | COPY | CUT  | PASTE| FN1  |                                       |   [  |   ]  |   \  | UNDO | CTRL+A |
+ *   `----------------------------------'                                       `------------------------------------'
+ *                                        ,-------------.       ,-------------.
+*                                         | DEL  |      |       | END  | HOME   |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | SUPER|       | PgUp |        |      |
+ *                                 | BACK | CTRL |------|       |------|  Enter |SPACE |
+ *                                 | SPACE|      | ALT  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[0] = LAYOUT_ergodox(
+       TG(1),     KC_1,       KC_2,       KC_3,       KC_4,  KC_5, LALT(KC_LSHIFT),
+       KC_TAB,    KC_QUOTE,   KC_COMMA,   KC_DOT,     KC_P,  KC_Y, TG(3),
+       KC_ESCAPE, KC_A,       KC_O,       KC_E,       KC_U,  KC_I,
+       KC_LSHIFT, KC_SCOLON,  KC_Q,       KC_J,       KC_K,  KC_X, TG(2),
+       MO(3),     LCTL(KC_C), LCTL(KC_X), LCTL(KC_V), MO(2),
+                                                 KC_DELETE, KC_TRNS,
+                                                            KC_LGUI,
+                                     KC_BSPACE,CTL_T(KC_NO),KC_LALT,
+       
+       KC_TILD,   KC_6,    KC_7,        KC_8,        KC_9,      KC_0,     KC_EQUAL,
+       KC_TRNS,   KC_F,    KC_G,        KC_C,        KC_R,      KC_L,     KC_SLASH,
+       KC_D,      KC_H,    KC_T,        KC_N,        KC_S,      KC_MINUS,
+       KC_TRNS,   KC_B,    KC_M,        KC_W,        KC_V,      KC_Z,     KC_LSHIFT,
+                           KC_LBRACKET, KC_RBRACKET, KC_BSLASH, KC_UNDO,  LCTL(KC_A),
+       KC_END,    KC_HOME,
+       KC_PGUP,
+       KC_PGDOWN, KC_ENTER, KC_SPACE
+),
+
+ /* Keymap 1: Hebrew layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[1] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_W,    KC_QUOTE, KC_SLASH, KC_R,    KC_T,    KC_TRNS,
+       KC_TRNS, KC_A,    KC_S,     KC_D,     KC_F,    KC_G,
+       KC_TRNS, KC_Z,    KC_X,     KC_C,     KC_V,    KC_B,    KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS,
+                                                      KC_TRNS, KC_TRNS,
+                                                               KC_TRNS,
+                                             KC_TRNS, KC_TRNS, KC_TRNS,
+       
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,
+       KC_TRNS, KC_Y,    KC_U,    KC_E,     KC_O,      KC_P,      KC_TRNS,
+                KC_H,    KC_J,    KC_K,     KC_L,      KC_SCOLON, KC_TRNS,
+       KC_TRNS, KC_N,    KC_M,    KC_COMMA, KC_DOT,    KC_I,      KC_TRNS,
+                    KC_TRNS, KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+/* Keymap 2: Arrows ,Mouse Navigation and F Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |  F11 |      |      |  UP  |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | LEFT | DOWN | RIGHT|      |        |
+ * |--------+------+------+------+------+------|      |           |  F12 |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | Lclk | Rclk |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[2] = LAYOUT_ergodox(
+       KC_TRNS, KC_F1,   KC_F2,      KC_F3,      KC_F4,       KC_F5,   KC_TRNS, 
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_MS_UP,   KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, 
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,
+                                                              KC_TRNS, KC_TRNS,
+                                                                       KC_TRNS,
+                                                     KC_TRNS, KC_TRNS, KC_TRNS,
+
+       KC_TRNS,    KC_F6,      KC_F7,      KC_F8,      KC_F9,   KC_F10,  KC_TRNS,
+       KC_F11,     KC_TRNS,    KC_TRNS,    KC_UP,      KC_TRNS, KC_TRNS, KC_TRNS, 
+       KC_TRNS,    KC_LEFT,    KC_DOWN,    KC_RIGHT,   KC_TRNS, KC_TRNS,
+       KC_F12,     KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,
+                               KC_MS_BTN1, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,    KC_TRNS,
+       KC_TRNS, 
+       KC_TRNS,    KC_TRNS,    KC_TRNS
+),
+
+ /* Keymap 3: Numpad Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      | NMLK |  P/  |  P*  |  P-  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |  7   |   8  |  9   |  P+  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |  4   |   5  |  6   |  P+  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |  1   |   2  |  3   | ENTER|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  0   |   0  |  .   | ENTER|      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[3] = LAYOUT_ergodox(
+       // Left Hand
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, 
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,     KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,
+       KC_TRNS,KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,
+       // Right Hand
+       KC_TRNS, KC_TRNS,  KC_LOCKING_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_TRNS, 
+       KC_TRNS, KC_TRNS,  KC_KP_7,        KC_KP_8,     KC_KP_9,        KC_KP_PLUS,  KC_TRNS,
+                KC_TRNS,  KC_KP_4,        KC_KP_5,     KC_KP_6,        KC_KP_PLUS,  KC_TRNS,     
+       KC_TRNS, KC_TRNS,  KC_KP_1,        KC_KP_2,     KC_KP_3,        KC_ENTER,    KC_TRNS,
+                          KC_KP_0,        KC_KP_0,     KC_KP_DOT,      KC_ENTER,    KC_TRNS,
+       KC_TRNS,  KC_TRNS, 
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_TOGGLE(1)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+        default:
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/twentylives_dvorak_with_hebrew/readme.md b/layouts/community/ergodox/twentylives_dvorak_with_hebrew/readme.md
new file mode 100644 (file)
index 0000000..fbd54fd
--- /dev/null
@@ -0,0 +1,10 @@
+#Dvorak-Hebrew
+
+* This layout solves the problem of Dvorak Keyboard with OS QWERTY, which when you change to hebrew all the letters scrumble, the second layer is the Hebrew (top left button), which you can use on any computer, Plug and play.
+
+* The Hebrew layout itself solve another problem with the different locations of punctuation on Dvorak/Hebrew with few minor changes, it's based on Yuval Rabinovich's layout which you can find here : http://heboard.wordpress.com for regular QWERTY keyboards and for other operation systems.
+
+* these are only good when using a public computer or one you can't change settings on, because you need to change both keyboard layout and os layout each time you change language. A better solution is to use [hebrew-hw-dvorak](https://github.com/20lives/hebrew-hw-dvorak) as os layout.
+
+![layout image](https://i.imgur.com/wp2ouhf.png)
+![layout image](https://i.imgur.com/Z9XCgPW.png)
diff --git a/layouts/community/ergodox/twey/keymap.c b/layouts/community/ergodox/twey/keymap.c
new file mode 100644 (file)
index 0000000..7015286
--- /dev/null
@@ -0,0 +1,222 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_plover.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define STEN 2 // steno
+#define MDIA 3 // media keys
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,---------------------------------------------------.           ,---------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4   |   5  | STEN |           | NONE  |   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+-------+-------------|           |-------+------+------+------+------+------+--------|
+ * | Del    |   '  |   ,  |   .  |   P   |   Y  |  Esc |           | Caps  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+-------+------|      |           |       |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U   |   I  |------|           |-------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+-------+------|  Tab |           | Enter |------+------+------+------+------+--------|
+ * | LShift |   ;  |   Q  |   J  |   K   |   X  |      |           |       |   B  |   M  |   W  |   V  |   Z  | RShift |
+ * `--------+------+------+------+-------+-------------'           `--------------+------+------+------+------+--------'
+ *   |  L1  | NONE |  Grv | Left | Right |                                        |  Up  | Down |   [  |   ]  |  L1  |
+ *   `-----------------------------------'                                        `----------------------------------'
+ *                                        ,--------------.         ,---------------.
+ *                                        |  PgUp | PgDn |         | Home  |  End  |
+ *                                 ,------|-------|------|         |-------+-------+------.
+ *                                 |      |       | NONE |         | AltGr |       |      |
+ *                                 | Alt  | Enter |------|         |-------| Space | Ctrl |
+ *                                 |      |       | Supr |         | ~MDIA |       |      |
+ *                                 `---------------------'         `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   M(0),
+        KC_DELT,        KC_QUOT,      KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_ESC,
+        KC_BSPC,        KC_A,         KC_O,   KC_E,   KC_U,   KC_I,
+        KC_LSFT,        KC_SCLN,      KC_Q,   KC_J,   KC_K,   KC_X,   KC_TAB,
+        MO(SYMB),       KC_NO,        KC_GRV, KC_LEFT,KC_RGHT,
+                                                      KC_PGUP,KC_PGDN,
+                                                              KC_NO,
+                                              KC_LALT,KC_ENT ,KC_LGUI,
+        // right hand
+             KC_NO,       KC_6,   KC_7,   KC_8,   KC_9,   KC_0,    KC_BSLS,
+             KC_CAPS,     KC_F,   KC_G,   KC_C,   KC_R,   KC_L,    KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,    KC_MINS,
+             KC_ENT,      KC_B,   KC_M,   KC_W,   KC_V,   KC_Z   , KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB),
+             KC_HOME, KC_END,
+             KC_RALT,
+             MO(MDIA),KC_SPC,KC_RCTL
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[STEN] = LAYOUT_ergodox(  // layout: layer 2: Steno for Plover
+        // left hand
+        KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  KC_NO,   KC_TRNS,
+        KC_NO,  PV_NUM, PV_NUM, PV_NUM,  PV_NUM, PV_NUM,  PV_STAR,
+        KC_NO,  PV_LS,  PV_LT,  PV_LP,   PV_LH,  PV_STAR,
+        KC_NO,  PV_LS,  PV_LK,  PV_LW,   PV_LR,  PV_STAR, PV_STAR,
+        KC_TRNS,KC_NO,  KC_NO,  KC_TRNS, KC_TRNS,
+                                          KC_NO, KC_NO,
+                                                 KC_NO,
+                                   PV_A,  PV_O,  KC_NO,
+        // right hand
+          KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
+        PV_STAR,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,  PV_NUM,
+                 PV_STAR,   PV_RF,   PV_RP,   PV_RL,   PV_RT,   PV_RD,
+        PV_STAR, PV_STAR,   PV_RR,   PV_RB,   PV_RG,   PV_RS,   PV_RZ,
+                          KC_TRNS, KC_TRNS,   KC_NO,   KC_NO, KC_TRNS,
+        KC_NO,  KC_NO,
+        KC_NO,
+        KC_TRNS,PV_E,    PV_U
+),
+
+/* Keymap 3: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      | Back |      | Frwd |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Prev | Play | Next |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_WBAK, KC_TRNS, KC_WFWD, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(MDIA)                // FN1 - Momentary Layer 3 (Media)
+};
+
+void toggle_steno(int pressed)
+{
+  uint8_t layer = biton32(layer_state);
+  
+  if (pressed) {
+    if (layer != STEN) layer_on(STEN); else layer_off(STEN);
+
+    register_code(PV_LP);
+    register_code(PV_LH);
+    register_code(PV_LR);
+    register_code(PV_O);
+    register_code(PV_RL);
+    register_code(PV_RG);
+  } else {
+    unregister_code(PV_LP);
+    unregister_code(PV_LH);
+    unregister_code(PV_LR);
+    unregister_code(PV_O);
+    unregister_code(PV_RL);
+    unregister_code(PV_RG);
+  }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        toggle_steno(record->event.pressed);
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// 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) {
+    __attribute__ ((unused))
+    uint32_t layer0 = layer_state & (1UL << 0),
+             layer1 = layer_state & (1UL << 1),
+             layer2 = layer_state & (1UL << 2),
+             layer3 = layer_state & (1UL << 3);    
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+
+    if (layer1) ergodox_right_led_1_on();
+    if (layer2) ergodox_right_led_2_on();
+    if (layer3) ergodox_right_led_3_on();
+};
diff --git a/layouts/community/ergodox/twey/readme.md b/layouts/community/ergodox/twey/readme.md
new file mode 100644 (file)
index 0000000..979e426
--- /dev/null
@@ -0,0 +1,17 @@
+# Twey's Home Configuration
+## Layers
+- Layer 0: Non-ANSI Dvorak layout, with modified modifiers — all
+  modifiers on thumb keys, as well as return and space.
+- Layer 1: Default symbol layout.
+- Layer 2: Plover-oriented stenography layer.
+- Layer 3: Extended media/mouse layout.
+
+## Unusual features
+The Plover key (top right key on the left half) also sends my Plover
+‘toggle’ chord (SH-FT) when pressed, as well as toggling the steno
+layer, so you can toggle between steno and typing modes with a single
+keypress.
+
+If you want to use this feature, you'll need to add the
+`commands.json` dictionary to your Plover dictionaries, or define the
+toggle stroke (`PHROLG`) yourself.
diff --git a/layouts/community/ergodox/videck/config.h b/layouts/community/ergodox/videck/config.h
new file mode 100644 (file)
index 0000000..b18b7fa
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#ifndef NO_DEBUG
+  #define NO_DEBUG
+#endif
+#ifndef NO_PRINT
+  #define NO_PRINT
+#endif
+
+#endif
diff --git a/layouts/community/ergodox/videck/keymap.c b/layouts/community/ergodox/videck/keymap.c
new file mode 100644 (file)
index 0000000..1229469
--- /dev/null
@@ -0,0 +1,179 @@
+#include <stdbool.h>
+
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+
+enum {
+  BASE = 0,     // Default layer
+  ARROWS = 1,   // Arrows and Fx keys layer
+  MOUSE = 2,    // Mouse movement and buttons layer
+  PARENS = 3,   // Parenthesis easy access layer
+
+  TD_L = 0,     // Tap dance index for left shift
+  TD_R = 1      // Tap dance index for right shift
+};
+
+// See the videck.png image for a visualization of the layout.
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = LAYOUT_ergodox(
+    // left hand
+    KC_GRV,     KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_HOME,
+    KC_EQL,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_END,
+    MO(PARENS), KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
+    TD(TD_L),   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_BSPC,
+    KC_LCTL,    KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
+                                                    KC_ESC,  KC_LGUI,
+                                                             TG(MOUSE),
+                                           KC_SPC,  KC_TAB,  TG(ARROWS),
+    // right hand
+    KC_PGUP, KC_6,   KC_7,    KC_8,    KC_9,   KC_0,    KC_MINS,
+    KC_PGDN, KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_BSLS,
+             KC_H,   KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT,
+    KC_DELT, KC_N,   KC_M,    KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
+                     KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
+    KC_APP,  KC_ESC,
+    KC_INS,
+    KC_SLCK, KC_ENT, KC_SPC
+  ),
+  [ARROWS] = LAYOUT_ergodox(
+    // left hand
+    KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                 KC_TRNS, KC_TRNS,
+                                                          KC_NO,
+                                        KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+    KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
+             KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS,
+    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS
+  ),
+  [MOUSE] = LAYOUT_ergodox(
+    // left hand
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                 KC_BTN3, KC_TRNS,
+                                                          KC_TRNS,
+                                        KC_BTN1, KC_BTN2, KC_NO,
+    // right hand
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+             KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS,
+    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS
+  ),
+  [PARENS] = LAYOUT_ergodox(
+    // left hand
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                 KC_TRNS, KC_TRNS,
+                                                          KC_NO,
+                                        KC_TRNS, KC_TRNS, KC_NO,
+    // right hand
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
+             KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
+                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS,
+    KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS
+  )
+};
+
+typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
+
+typedef struct
+{
+  uint16_t kc1;
+  uint16_t kc2;
+  videck_tap_dance_trigger_t trigger;
+} videck_tap_dance_tuple_t;
+
+static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
+  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
+
+  if (state->count == 1) {
+    register_code16 (tuple->kc1);
+  } else if (state->count == 2) {
+    register_code16 (tuple->kc2);
+  }
+}
+
+static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
+  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
+
+  if (state->count == 1) {
+    unregister_code16 (tuple->kc1);
+  } else if (state->count == 2) {
+    unregister_code16 (tuple->kc2);
+    tuple->trigger(tuple->kc2);
+  }
+}
+
+static bool caps_lock_is_on;
+
+// Toggles caps lock status.
+static void videck_caps_trigger (const uint16_t kc) {
+  caps_lock_is_on ^= true;
+}
+
+#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
+    .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
+    .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }),  \
+  }
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
+  [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  ergodox_led_all_set(LED_BRIGHTNESS_LO);
+  caps_lock_is_on = false;
+};
+
+static void indicate_using_led(const uint8_t led, const bool enabled) {
+  if (enabled) {
+    ergodox_right_led_on(led);
+  } else {
+    ergodox_right_led_off(led);
+  }
+}
+
+static inline void indicate_caps_lock_state(const bool enabled) {
+  indicate_using_led(1, enabled);
+}
+
+static inline void indicate_arrows_layer_state(const bool enabled) {
+  indicate_using_led(2, enabled);
+}
+
+static inline void indicate_mouse_layer_state(const bool enabled) {
+  indicate_using_led(3, enabled);
+}
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+  // Check if we have shift locked.
+  indicate_caps_lock_state(caps_lock_is_on);
+  indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
+  indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
+};
diff --git a/layouts/community/ergodox/videck/readme.md b/layouts/community/ergodox/videck/readme.md
new file mode 100644 (file)
index 0000000..35d20b6
--- /dev/null
@@ -0,0 +1,26 @@
+ViDeck keymap for ErgoDox
+=========================
+
+This is a QWERTY layout based on the US layout, where Vi functionality has been
+especially considered.
+
+# Features
+* Mouse movements using the Vi movement keys.
+* Vi movement keys doubling as arrow keys.
+* Shift lock using double tap.
+* A coder's modifier key for easy input of parenthesis.
+* Acess to the escape key using either thumb.
+* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
+  to a non-US layout once in a while in X).
+
+# Missing keys
+* Caps Lock (shift lock is used instead).
+* Pause/Break.
+* Print Screen.
+
+# LEDs
+* Shift lock is indicated using first LED.
+* Arrow keys layer is indicated using second LED.
+* Mouse keys layer is indicated using third LED.
+
+![videck.png](https://i.imgur.com/kw0CwuB.png)
\ No newline at end of file
diff --git a/layouts/community/ergodox/videck/rules.mk b/layouts/community/ergodox/videck/rules.mk
new file mode 100644 (file)
index 0000000..62cf81e
--- /dev/null
@@ -0,0 +1,17 @@
+AUDIO_ENABLE:=no
+BACKLIGHT_ENABLE:=no
+BLUETOOTH_ENABLE:=no
+BOOTMAGIC_ENABLE:=no
+COMMAND_ENABLE:=no
+CONSOLE_ENABLE:=no
+EXTRAKEY_ENABLE:=yes
+MIDI_ENABLE:=no
+MOUSEKEY_ENABLE:=yes
+NKRO_ENABLE:=no
+RGBLIGHT_ENABLE:=no
+SLEEP_LED_ENABLE:=no
+TAP_DANCE_ENABLE:=yes
+UNICODEMAP_ENABLE:=no
+UNICODE_ENABLE:=no
+
+
diff --git a/layouts/community/ergodox/videck/videck.json b/layouts/community/ergodox/videck/videck.json
new file mode 100644 (file)
index 0000000..7068cf5
--- /dev/null
@@ -0,0 +1,443 @@
+[
+  {
+    "backcolor": "#333333",
+    "background": {
+      "name": "PBT Black",
+      "style": "background-image: url('/bg/plastic/pbt-black.png');"
+    },
+    "switchMount": "cherry",
+    "switchBrand": "gateron",
+    "switchType": "KS-3-Red"
+  },
+  [
+    {
+      "x": 3.5,
+      "c": "#323232",
+      "t": "#ffffff\n\n\n#ac97d8"
+    },
+    "#\n3\n\nF3",
+    {
+      "x": 10.5
+    },
+    "*\n8\n\nF8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n2\n\nF2",
+    {
+      "x": 1
+    },
+    "$\n4\n\nF4",
+    {
+      "x": 8.5
+    },
+    "&\n7\n\nF7",
+    {
+      "x": 1,
+      "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
+    },
+    "(\n9\n\nF9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#ffffff\n\n\n#ac97d8"
+    },
+    "%\n5\n\nF5",
+    {
+      "t": "#ffffff"
+    },
+    "home",
+    {
+      "x": 4.5
+    },
+    "pgup",
+    {
+      "t": "#ffffff\n\n\n#ac97d8"
+    },
+    "^\n6\n\nF6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#ffffff",
+      "w": 1.5
+    },
+    "~\n`",
+    {
+      "t": "#ffffff\n\n\n#ac97d8"
+    },
+    "!\n1\n\nF1",
+    {
+      "x": 14.5
+    },
+    ")\n0\n\nF10",
+    {
+      "w": 1.5
+    },
+    "_\n-\n\nF11"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#ffffff"
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "I"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "W",
+    {
+      "x": 1
+    },
+    "R",
+    {
+      "x": 8.5
+    },
+    "U",
+    {
+      "x": 1,
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
+    },
+    "O\n\n\n\n\n\n\n\n\n{"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#ffffff"
+    },
+    "T",
+    {
+      "h": 1.5
+    },
+    "end",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "pgdn",
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "w": 1.5
+    },
+    "+\n=",
+    "Q",
+    {
+      "x": 14.5,
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
+    },
+    "P\n\n\n\n\n\n\n\n\n}",
+    {
+      "t": "#ffffff\n\n\n#ac97d8",
+      "w": 1.5
+    },
+    "|\n\\\n\nF12"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#ffffff"
+    },
+    "D",
+    {
+      "x": 10.5,
+      "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
+    },
+    "K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#ffffff"
+    },
+    "S",
+    {
+      "x": 1,
+      "n": true
+    },
+    "F",
+    {
+      "x": 8.5,
+      "t": "#ffffff\n\n#5eb1e7\n#ac97d8",
+      "n": true
+    },
+    "J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
+    {
+      "x": 1,
+      "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
+    },
+    "L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#ffffff"
+    },
+    "G",
+    {
+      "x": 6.5,
+      "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
+    },
+    "H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#f8d615",
+      "a": 6,
+      "w": 1.5
+    },
+    "( ) [ ] { }",
+    {
+      "t": "#ffffff",
+      "a": 4
+    },
+    "A",
+    {
+      "x": 14.5,
+      "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
+    },
+    ":\n;\n\n\n\n\n\n&Ouml;\n\n)",
+    {
+      "t": "#ffffff\n\n\n\n\n\n\n#60605b",
+      "w": 1.5
+    },
+    "\"\n'\n\n\n\n\n\n&Auml;"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "t": "#ffffff",
+      "h": 1.5
+    },
+    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "<i class='kb kb-Unicode-DeleteRight-Big'></i>"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5
+    },
+    "C",
+    {
+      "x": 10.5
+    },
+    "<\n,"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "X",
+    {
+      "x": 1
+    },
+    "V",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1,
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
+    },
+    ">\n.\n\n\n\n\n\n\n\n["
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#ffffff"
+    },
+    "B",
+    {
+      "x": 6.5
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#ffffff\n\n#f67f00",
+      "a": 6,
+      "fa": [
+        5
+      ],
+      "w": 1.5
+    },
+    "&uArr;\n\n2-tap<br/>locks",
+    {
+      "t": "#ffffff",
+      "a": 4,
+      "f": 3
+    },
+    "Z",
+    {
+      "x": 14.5,
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
+      "f": 3
+    },
+    "?\n/\n\n\n\n\n\n\n\n]",
+    {
+      "t": "#ffffff\n\n#f67f00",
+      "a": 6,
+      "f": 3,
+      "w": 1.5
+    },
+    "&uArr;\n\n2-tap<br/>locks"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#ffffff",
+      "a": 4
+    },
+    "\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
+    {
+      "x": 10.5,
+      "f": 3
+    },
+    "}\n]"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
+    {
+      "x": 1
+    },
+    "\n<i class='kb kb-Multimedia-Mute-1'></i>",
+    {
+      "x": 8.5,
+      "t": "#ffffff\n\n\n\n\n\n\n#60605b",
+      "f": 3
+    },
+    "{\n[\n\n\n\n\n\n&Aring;",
+    {
+      "x": 1,
+      "t": "#ffffff",
+      "f": 3
+    },
+    "+\n="
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5,
+      "f": 3
+    },
+    "ctrl",
+    {
+      "f": 3
+    },
+    "alt",
+    {
+      "x": 14.5,
+      "f": 3
+    },
+    "altgr",
+    {
+      "f": 3
+    },
+    "ctrl"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
+      "f": 3
+    },
+    "esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
+    {
+      "t": "#ffffff",
+      "f": 7
+    },
+    "<i class='kb kb-logo-linux-tux'></i>"
+  ],
+  [
+    {
+      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
+      "f": 3,
+      "h": 2
+    },
+    "space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
+    {
+      "h": 2
+    },
+    "<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
+    {
+      "t": "#5eb1e7"
+    },
+    "<i class='fa fa-mouse-pointer'></i>"
+  ],
+  [
+    {
+      "x": 2,
+      "t": "#ac97d8"
+    },
+    "<i class='fa fa-arrows'></i>"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3,
+      "t": "#ffffff"
+    },
+    "<i class='kb kb-Hamburger-Menu'></i>",
+    "esc"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "ins",
+    {
+      "h": 2
+    },
+    "<i class='kb kb-Return-2'></i>",
+    {
+      "h": 2
+    },
+    "space"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "scroll<br/>lock"
+  ]
+]
\ No newline at end of file
diff --git a/layouts/community/ergodox/win10_writers-block/config.h b/layouts/community/ergodox/win10_writers-block/config.h
new file mode 100644 (file)
index 0000000..ed61703
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
+#define KEYBOARDS_ERGODOX_CONFIG_H_
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#undef MOUSEKEY_DELAY          
+#undef MOUSEKEY_INTERVAL       
+#undef MOUSEKEY_MAX_SPEED      
+#undef MOUSEKEY_TIME_TO_MAX    
+
+#define MOUSEKEY_DELAY          100
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_MAX_SPEED      3
+#define MOUSEKEY_TIME_TO_MAX    10
+
+#define TAPPING_TOGGLE  1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+#undef TAPPING_TERM
+#define TAPPING_TERM    300
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/layouts/community/ergodox/win10_writers-block/keymap.c b/layouts/community/ergodox/win10_writers-block/keymap.c
new file mode 100644 (file)
index 0000000..05adaed
--- /dev/null
@@ -0,0 +1,324 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "wait.h"
+
+#define BASE 0 // default layer  -  helpful for writing in Office-style word processors. 
+#define SYMB 1 // symbol layer   -  NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key 
+#define RIMW 2 // rimworld layer -  made for the game RimWorld, by Tynan Sylvester | feel free to remap for your favorite game!
+#define MDIA 3 // media layer    -  mouse and music - close to Ergodox EZ default media layer
+
+#define CO_PA M(0)                  // hold copy, tap paste
+
+#define W_CUT    LCTL(KC_X)         // C-x Cut
+#define W_COPY   LCTL(KC_C)         // C-c Copy
+#define W_PASTE  LCTL(KC_V)         // C-v Paste
+#define W_UNDO   LCTL(KC_Z)         // C-z Undo
+#define W_FIND   LCTL(KC_F)         // C-v Find
+#define W_CAD    LCTL(LALT(KC_DEL)) // one-tap ctrl-alt-del
+
+
+
+//Tap Dance Declarations
+enum {
+  CAKEWARP,
+  CTRLALTMDIA,
+};
+
+void cake_count (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 2) {         
+    layer_on (SYMB);        //define double tap here
+    layer_off (MDIA);
+  } 
+  else {    
+    layer_off (SYMB);       //define single tap or hold here
+    layer_off (MDIA);
+  }
+  if (state->count == 3) {         
+     layer_on (RIMW);       //define triple tap here
+     layer_off (MDIA);
+  } 
+  else {    
+       layer_off (RIMW);       //define single tap or hold here
+       layer_off (MDIA);
+    reset_tap_dance (state);
+  }
+}
+
+void dance_cad_mdia_fin (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    register_code (KC_LCTL);
+    register_code (KC_LALT);
+       register_code (KC_DEL);
+  } else {
+    layer_on (MDIA);
+  }
+}
+
+void dance_cad_mdia_reset (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    unregister_code (KC_DEL);
+    unregister_code (KC_LALT);
+       unregister_code (KC_LCTL);
+  } else {
+    ;
+  }
+}
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+  // tap for Layer 0, tap twice to switch to symbol layer, and tap three times to switch to rimworld layer.
+  [CAKEWARP] = ACTION_TAP_DANCE_FN(cake_count)
+  // tap for ctrl-alt-del, tap twice for media layer
+  ,[CTRLALTMDIA] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cad_mdia_fin, dance_cad_mdia_reset)
+  // Other declarations would go here, separated by commas, if you have them
+};
+
+//In Layer declaration, add tap dance item in place of a key code
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer - TD(one_tap, two_taps, three_taps...)
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  | 6    |           |  7   |   7  |   8  |   9  |   0  |   -  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | F12/L1 |   Q  |   W  |   E  |   R  |   T  |  {/[ |           |TD(L0 |   Y  |   U  |   I  |   O  |   P  |   \    | 
+ * |--------+------+------+------+------+------|      |           |L1 L2)|------+------+------+------+------+--------|
+ * |Caps/Win|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------|  }/] |           TD(ctrl|------+------+------+------+------+--------|
+ * |LShift/(|Z/Ctrl|   X  |   C  |   V  |   B  |      |           |altdel|   N  |   M  |   ,  |   .  |  /   |RShift/)|
+ * `--------+------+------+------+------+-------------'           |L3)   |------+------+------+------+------+--------'
+ * |  Undo  |  Cut |CopyPa| Meh  | LGui |                         '------|      | Enter| Left | Up   | Down | Right  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | Esc  | VolUp|       | F4   | Mute |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | VolDn|       | F5   |        |      |
+ *                                 |Backsp|Delete|------|       |------|  Tab / |Space |
+ *                                 |ace   |      | Find |       | Alt  |  CTRL  |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+          KC_GRV,         KC_1,         KC_2,         KC_3,        KC_4,   KC_5,   KC_6,
+LT(SYMB, KC_F12),         KC_Q,         KC_W,         KC_E,        KC_R,   KC_T,   KC_LBRC,
+  GUI_T(KC_CAPS),         KC_A,         KC_S,         KC_D,        KC_F,   KC_G,
+         KC_LSPO,  CTL_T(KC_Z),         KC_X,         KC_C,        KC_V,   KC_B,   KC_RBRC,
+          W_UNDO,        W_CUT,        CO_PA, MEH_T(KC_NO),     KC_LGUI,
+                                                                         KC_ESC, KC_VOLU,
+                                                                                 KC_VOLD,
+                                                             KC_BSPC, KC_DELETE,  W_FIND,
+        // right hand
+                       KC_7,   KC_7,   KC_8,   KC_9,    KC_0,   KC_MINS,          KC_EQL,
+               TD(CAKEWARP),   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,            KC_BSLS,
+                               KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN,         KC_QUOT,
+            TD(CTRLALTMDIA),   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,         KC_RSPC,
+                                       KC_ENT, KC_LEFT, KC_UP,  KC_DOWN,        KC_RIGHT,
+                      KC_F4,        KC_MUTE,
+                      KC_F5,
+                    KC_RALT, CTL_T(KC_TAB), KC_SPC
+    ),
+
+/* Keymap 1: Symbol Layer | No EEPROM Or Version keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |   xx |           | xx   |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |TD(L0 |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |L1 L2)|------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |   -    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,  KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_NO,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+         KC_NO, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_MINS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,    KC_NO,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),     
+       
+/* Keymap 2: RimWorld Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  ESC   |   1  |   2  |   3  |   4  |   5  |  6   |           |   7  |   7  |   8  |   9  |   0  |   -  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  TAB   |   C  |  ,<  |   W  |   >. |   R  |      |           |TD(L0 |  U   |  B   |   N  |  J   |  M   |   PGUP |
+ * |--------+------+------+------+------+------| F10  |           |L1 L2)|------+------+------+------+------+--------|
+ * |   I    |   F  |   A  |   S  |   D  |   8  |------|           |------|  X   |  L   |   P  |  Y   |  H   |  ENTER |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   K    |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 | F12  |   PGDN |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  F   |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |SPACE |  C   |------|       |------|  E   |SPACE |
+ *                                 |      |      |  Q   |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// RIMWORLD 
+[RIMW] = LAYOUT_ergodox(
+       // left hand
+        KC_ESC,   KC_1,    KC_2,     KC_3,    KC_4,    KC_5,    KC_6,
+        KC_TAB,   KC_C, KC_COMM,     KC_W,  KC_DOT,    KC_R,  KC_F10,
+          KC_I,   KC_F,    KC_A,     KC_S,    KC_D,    KC_8,
+          KC_K,  KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,
+       KC_TRNS,KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                                     KC_C,KC_Q,KC_TRNS,
+       // right hand
+          KC_7,    KC_7,    KC_8,        KC_9,    KC_0,    KC_MINS,  KC_EQL,
+       KC_TRNS,    KC_U,    KC_B,        KC_N,    KC_J,       KC_M, KC_PGUP,
+                   KC_X,    KC_L, SFT_T(KC_P),    KC_Y,       KC_H,  KC_ENT,
+         KC_F7,   KC_F8,   KC_F9,      KC_F10,  KC_F11,     KC_F12, KC_PGDN,
+                            KC_F,     KC_LEFT,   KC_UP,    KC_DOWN,KC_RIGHT,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,    KC_E, KC_TRNS
+),
+/* Keymap 3: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 | Lclk | Rclk |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+static uint16_t key_timer;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case 0: {
+            if (record->event.pressed) {
+                key_timer = timer_read(); // if the key is being pressed, we start the timer.
+            }
+            else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
+                if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
+                    return MACRO( D(LCTL), T(C), U(LCTL), END  );
+                }
+                else {
+                    return MACRO( D(LCTL), T(V), U(LCTL), END  );
+                }
+            }
+            break;
+        }
+      }
+    return MACRO_NONE;
+};
+
+// Anything you want to do once when the keyboard initializes.
+// Tests LED function when the keyboard initializes.
+void matrix_init_user(void) {
+
+  wait_ms(500);
+  ergodox_board_led_on();
+  wait_ms(200);
+  ergodox_right_led_1_on();
+  wait_ms(200);
+  ergodox_right_led_2_on();
+  wait_ms(200);
+  ergodox_right_led_3_on();
+  wait_ms(200);
+  ergodox_board_led_off();
+  wait_ms(200);
+  ergodox_right_led_1_off();
+  wait_ms(200);
+  ergodox_right_led_2_off();
+  wait_ms(200);
+  ergodox_right_led_3_off();
+
+};
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        case 3:
+            ergodox_right_led_3_on();
+            break;                     
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/win10_writers-block/readme.md b/layouts/community/ergodox/win10_writers-block/readme.md
new file mode 100644 (file)
index 0000000..cb135b4
--- /dev/null
@@ -0,0 +1,113 @@
+<!-- -*- mode: markdown; fill-column: 8192 -*- -->
+
+Win10 Writer's Block ErgoDox - v1.0
+
+=======================
+
+This is a QWERTY layout for QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10.
+
+Professional writers may find this layout useful -- copywriters, technical writers, novelists, etc.  
+
+I use my ErgoDox with this keymap as a daily driver at my office.
+
+A gaming layer is unobtrusively built into this layout. I use that layer to play RimWorld. 
+
+Feel free to modify the gaming layer to your personal taste.
+
+## Table of Contents
+
+* [Layouts](#layouts)
+    - [Base layer](#base-layer)
+    - [Symbol layer](#symbol-layer)
+    - [Gaming layer](#rimworld-layer)
+    - [Media layer](#media-layer)
+* [Tools](#tools)
+    - [Layer notification](#layer-notification)
+* [Building](#building)
+    - [Using on Windows](#using-on-windows)
+* [License](#license)
+* [Special Thanks](#special-thanks)
+
+# Layouts
+
+* TapDance will teleport you to the layer you want: 
+* One Tap for the Base layer
+* Two Taps for the Symbol layer
+* Three Taps for the Rimworld/Gaming layer
+
+* Where the "Meh" key is located on the Ergodox EZ default layout, I've changed it to another tap dance key:
+* One Tap for CTRL-ALT-DEL
+* Two Taps for the Media/Mouse layer
+
+## Base layer
+
+[![Base layer](https://i.imgur.com/1PTR0SG.png)](http://www.keyboard-layout-editor.com/#/gists/8fd9bbdd3a23bbb5a8779de3624a3be1)
+
+This is a QWERTY layout with some quirks. 
+
+* Enter is located on a key that won't cause as much thumb fatigue.  
+* Copy and Paste work from the same key. Just hold the key to copy and tap the key to paste!
+* Undo, Find and Cut are also one-touch keys. 
+* F12 is where you would normally find TAB on standard layouts. Quickly save in Word, safely.
+* You'll find bracket keys below the "6" key.
+
+* The Meh Key is a single-button CTRL+ALT+SHIFT modifier.
+
+* Space Cadet Shift: Tap L Shift for "(" and R Shift for ")" -- holding either shift works like a normal shift.
+* Tap "Z" or Tab to use either normally. Hold them for CTRL. 
+* Tap Caps Lock to use it normally. Hold it for Win key combinations (Win+D to minimize all programs, etc).
+
+## Symbol layer
+
+[![Symbol layer](https://i.imgur.com/8nEzpcp.png)](http://www.keyboard-layout-editor.com/#/gists/04eb6458b8b17882e472f64d482f12b4)
+
+Your standard Ergodox EZ symbol + numpad layout, minus the Version and EEPROM keys.
+
+* From the base layer, hold the F12 Key to temporarily access this layer (use for quick access to numpad)
+* Release F12 to return to the base layer.
+
+## Rimworld layer
+
+[![Rimworld / Gaming Layer](https://i.imgur.com/Yh3eBjJ.png)](http://www.keyboard-layout-editor.com/#/gists/d53af8391e6e443ed0a98ccfbdb4eace)
+
+This layer was made to play RimWorld, a Sci-Fi Colony Survival Game by Tynan Sylvester and Ludeon Studios, available on Steam. 
+
+* Have fun!
+
+## Media layer
+
+[![Media layer](https://i.imgur.com/r5ysFy1.png)](http://www.keyboard-layout-editor.com/#/gists/3209d09ed4bd997e4f49f28c6ada2ab3)
+
+This is the standard Ergodox EZ media layout with more options for mouseclick buttons. 
+
+* In this layer, your "space" key changes into a back button for your browser.
+
+## LED states
+
+Your LEDs will change to indicate your layer. You'll know you are in the base layer if all LEDs are off.
+
+# Building
+
+To build, you will need the [QMK][qmk] firmware checked out. from there, dive into `keyboards/ergodox/keymaps/win10_writers-block/`
+
+[qmk]: https://github.com/qmk/qmk_firmware
+
+```
+$ make keyboard=ergodox keymap=win10_writers-block
+```
+
+## Using on Windows
+
+This layout is tested in Windows 7 Pro and Windows 10 Home environments. 
+
+# License
+
+GPL 3+
+
+# Special Thanks
+
+* To algernon for his coding help. I'm a novice but I still made this work (and figured out tap dance) with his help.
+
+* To /r/MechanicalKeyboards for being an all-around great community.
+
+* To /u/profet23 for his amazing custom Ergodox boards.
\ No newline at end of file
diff --git a/layouts/community/ergodox/win10_writers-block/rules.mk b/layouts/community/ergodox/win10_writers-block/rules.mk
new file mode 100644 (file)
index 0000000..83c5090
--- /dev/null
@@ -0,0 +1,7 @@
+# Having a file like this allows you to override Makefile definitions
+# for your own particular keymap
+
+TAP_DANCE_ENABLE=yes
+
+
+
diff --git a/layouts/community/ergodox/workman_osx_mdw/keymap.c b/layouts/community/ergodox/workman_osx_mdw/keymap.c
new file mode 100644 (file)
index 0000000..d0f3882
--- /dev/null
@@ -0,0 +1,366 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+// readme
+// This keyboard layout is based on the [Workman Dead layout](https://github.com/ojbucao/Workman/tree/master/mac#workman-dead-for-programmers), which uses the comma as a dead key to trigger a second layer.
+// Since I have more keys at my disposal on the ErgoDox, I moved the dead key to the bottom right. There are still a lot of
+// blanks so still discovering what I like.
+// If you aren't familiar with a dead key, the idea is that you tap the dead key which switches the layout. the next key you hit
+// triggers the key you pressed AND switches the layout back to the original. For now I do this with a super kludgey macro and I
+// look forward to learning about a more elegant way to do the same thing. Until then, this will have to do.
+
+
+// TODO: Define layer names that make sense for the ErgoDox EZ.
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define DEAD 3 // dead version of the symbols layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   `    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   D  |   R  |   W  |   B  |  L1  |           |  L1  |   J  |   F  |   U  |   P  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | Hyper  |   A  |   S  |   H  |   T  |   G  |------|           |------|   Y  |   N  |   E  |   O  |   I  |   '    |
+ * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   M  |   C  |   V  |      |           |      |   K  |   L  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      | CTRL |  OPT |  CMD |                                       | Left | Down |  Up  | Right|  L3  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |        |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 |Bckspc| Space|------|       |------| Space  |Enter |
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_TAB,         KC_Q,         KC_D,   KC_R,   KC_W,   KC_B,   TG(1),
+        ALL_T(KC_ESC),  KC_A,         KC_S,   KC_H,   KC_T,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_M,   KC_C,   KC_V,   KC_NO,
+        KC_NO,          KC_NO,        KC_LCTL,KC_LALT,KC_LGUI,
+                                              KC_NO,  KC_NO,
+                                                              KC_HOME,
+                                               KC_BSPC,KC_SPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(1),       KC_J,   KC_F,   KC_U,   KC_P,   KC_SCLN,          KC_BSLS,
+                          KC_Y,   KC_N,   KC_E,   KC_O,   KC_I,             KC_QUOT,
+             MEH_T(KC_NO),KC_K,   KC_L,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT,          KC_FN4,
+             KC_NO,        KC_NO,
+             KC_PGUP,
+             KC_PGDN,KC_SPC,KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   %  |   &  |   ?  |   +  |   @  |      |           |      |   $  |   _  |   [  |   ]  |   !  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   /  |   (  |   =  |   0  |   {  |------|           |------|   }  |   1  |   *  |   )  |   -  |   "    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   6  |   7  |   8  |   9  |   |  |      |           |      |   \  |   2  |   3  |   4  |   5  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,   KC_F1,    KC_F2,    KC_F3,          KC_F4,        KC_F5,          KC_TRNS,
+       KC_TRNS,   KC_PERC,  KC_AMPR,  LSFT(KC_SLSH),  LSFT(KC_EQL), KC_AT,          KC_TRNS,
+       KC_TRNS,   KC_SLSH,  KC_LPRN,  KC_EQL,         KC_0,     LSFT(KC_LBRC),
+       KC_TRNS,   KC_6,     KC_7,     KC_8,           KC_9,     KC_PIPE,        KC_TRNS,
+       KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,        KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,          KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,
+       KC_TRNS, KC_DLR,         KC_UNDERSCORE,  KC_LBRC,  KC_RBRC,  KC_EXLM,  KC_F12,
+                KC_RCBR,        KC_1,     KC_ASTR,  KC_RPRN,  KC_MINS,  KC_QUOT,
+       KC_TRNS, KC_SLSH,        KC_2,     KC_3,     KC_4,     KC_5,     KC_TRNS,
+                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+/* Keymap 4: Dead Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |  %   |   &  |   ?  |   +  |   @  |      |           |      |   $  |   _  |   [  |   ]  |   !  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   /  |   (  |   =  |   0  |   {  |------|           |------|   }  |   1  |   *  |   )  |   -  |   "    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   6  |   7  |   8  |   9  |   |  |      |           |      |   \  |   2  |   3  |   4  |   5  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[DEAD] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,   KC_F1,    KC_F2,    KC_F3,      KC_F4,    KC_F5,          KC_TRNS,
+       KC_TRNS,   M(100),   M(101),   M(102),     M(103),   M(104),         KC_TRNS,
+       KC_TRNS,   M(109),  M(110),  M(111),       M(112),   M(113),
+       KC_TRNS,   M(120),     M(121),     M(122),           M(123),     M(124),        KC_TRNS,
+       KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS,        KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,
+       KC_TRNS, M(105),   M(106),   M(107),   M(108),   M(130),   KC_F12,
+                M(114),   M(115),   M(116),   M(117),   M(118),   M(119),
+       KC_TRNS, M(125),   M(126),   M(127),   M(128),   M(129),   KC_TRNS,
+                          KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),                // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_LAYER_ON(BASE,0),                       // FN2 - Go back to the base layer
+    [3] = ACTION_LAYER_ON(DEAD,0),
+    [4] = ACTION_LAYER_TOGGLE(DEAD),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+          break;
+        case 100:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(5), U(LSFT), T(FN4), END);
+          break;
+        case 101:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(7), U(LSFT), T(FN4), END);
+          break;
+        case 102:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(SLSH), U(LSFT), T(FN4), END);
+          break;
+        case 103:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(EQL), U(LSFT), T(FN4), END);
+          break;
+        case 104:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(2), U(LSFT), T(FN4), END);
+          break;
+        case 105:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(4), U(LSFT), T(FN4), END);
+          break;
+        case 106:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(MINS), U(LSFT), T(FN4), END);
+          break;
+        case 107:
+          layer_clear();
+          return MACRODOWN(T(LBRC), T(FN4), END);
+          break;
+        case 108:
+          layer_clear();
+          return MACRODOWN(T(RBRC), T(FN4), END);
+          break;
+        case 130:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(1), U(LSFT), T(FN4), END);
+          break;
+        case 109:
+          layer_clear();
+          return MACRODOWN(T(SLSH), T(FN4), END);
+          break;
+        case 110:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(9), U(LSFT), T(FN4), END);
+          break;
+        case 111:
+          layer_clear();
+          return MACRODOWN(T(EQL), T(FN4), END);
+          break;
+        case 112:
+          layer_clear();
+          return MACRODOWN(T(0), T(FN4), END);
+          break;
+        case 113:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(LBRC), U(LSFT), T(FN4), END);
+          break;
+        case 114:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(RBRC), U(LSFT), T(FN4), END);
+          break;
+        case 115:
+          layer_clear();
+          return MACRODOWN(T(1), T(FN4), END);
+          break;
+        case 116:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(8), U(LSFT), T(FN4), END);
+          break;
+        case 117:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(0), U(LSFT), T(FN4), END);
+          break;
+        case 118:
+          layer_clear();
+          return MACRODOWN(T(MINS), T(FN4), END);
+          break;
+        case 119:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(QUOT), U(LSFT), T(FN4), END);
+          break;
+        case 120:
+          layer_clear();
+          return MACRODOWN(T(6), T(FN4), END);
+          break;
+        case 121:
+          layer_clear();
+          return MACRODOWN(T(7), T(FN4), END);
+          break;
+        case 122:
+          layer_clear();
+          return MACRODOWN(T(8), T(FN4), END);
+          break;
+        case 123:
+          layer_clear();
+          return MACRODOWN(T(9), T(FN4), END);
+          break;
+        case 124:
+          layer_clear();
+          return MACRODOWN(D(LSFT), T(BSLS), U(LSFT), T(FN4), END);
+          break;
+        case 125:
+          layer_clear();
+          return MACRODOWN(T(BSLS), T(FN4), END);
+          break;
+        case 126:
+          layer_clear();
+          return MACRODOWN(T(2), T(FN4), END);
+          break;
+        case 127:
+          layer_clear();
+          return MACRODOWN(T(3), T(FN4), END);
+          break;
+        case 128:
+          layer_clear();
+          return MACRODOWN(T(4), T(FN4), END);
+          break;
+        case 129:
+          layer_clear();
+          return MACRODOWN(T(5), T(FN4), END);
+          break;
+
+        default:
+        return MACRO_NONE;
+      }
+  return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/xyverz/keymap.c b/layouts/community/ergodox/xyverz/keymap.c
new file mode 100644 (file)
index 0000000..2e4b1e7
--- /dev/null
@@ -0,0 +1,312 @@
+/*
+ * About this keymap:
+ * 
+ * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak
+ * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner
+ * keys. I've decided to continue using this layout with my ErgoDox.
+ *
+ * The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional
+ * keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
+ *
+ * I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck
+ * layouts.
+ *
+ */
+
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+#define _DV 0 // Dvorak layer
+#define _QW 1 // Qwerty layer
+#define _CM 2 // Colemak layer
+#define _MD 3 // Media Layer
+#define _KP 4 // Keypad Layer
+
+// Macro name shortcuts
+#define DVORAK M(_DV)
+#define QWERTY M(_QW)
+#define COLEMAK M(_CM)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Layer 0 : Dvorak
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab    |   '  |   ,  |   .  |   P  |   Y  |      | |      |   F  |   G  |   C  |   R  |   L  |   \    |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * | CapsLk |   A  |   O  |   E  |   U  |   I  |------| |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
+ * | LShift |   ;  |   Q  |   J  |   K  |   X  |      | |      |   B  |   M  |   W  |   V  |   Z  | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
+ *   `----------------------------------'                             `----------------------------------'
+ *                                      ,-------------. ,-------------.
+ *                                      | LCTL | LALT | | RALT | RCTL |
+ *                               ,------|------|------| |------+------+------.
+ *                               |      |      | Home | | PgUp |      |      |
+ *                               | BkSp | Del  |------| |------| Enter| Space|
+ *                               |      |      | End  | | PgDn |      |      |
+ *                               `--------------------' `--------------------'
+ *
+ */
+[_DV] = LAYOUT_ergodox(
+        // left hand
+        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_ESC,
+        KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    XXXXXXX,
+        KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,
+        KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    MO(_MD),
+        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+                                            KC_LCTL, KC_LALT,
+                                                     KC_HOME,
+                                   KC_BSPC, KC_DEL,  KC_END,
+        // right hand
+        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_SLSH,
+        XXXXXXX, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSLS,
+                 KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS,
+        MO(_KP), KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,
+                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
+        KC_RALT, KC_RCTL,
+        KC_PGUP,
+        KC_PGDN, KC_ENT,  KC_SPC
+  ),
+
+
+/* Layer 1: QWERTY
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |      | |      |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * | CapsLk |   A  |   S  |   D  |   F  |   G  |------| |------|   H  |   J  |   K  |   L  |   ;  |   '    |
+ * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
+ *   `----------------------------------'                             `----------------------------------'
+ *                                      ,-------------. ,-------------.
+ *                                      | LCTL | LALT | | RALT | RCTL |
+ *                               ,------|------|------| |------+------+------.
+ *                               |      |      | Home | | PgUp |      |      |
+ *                               | BkSp | Del  |------| |------| Enter| Space|
+ *                               |      |      | End  | | PgDn |      |      |
+ *                               `--------------------' `--------------------'
+ */
+[_QW] = LAYOUT_ergodox(
+        // left hand
+        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_LEFT,
+        KC_DELT, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    XXXXXXX,
+        KC_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
+        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(_MD),
+        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+                                            KC_LCTL, KC_LALT,
+                                                     KC_HOME,
+                                   KC_BSPC, KC_DEL,  KC_END,
+        // right hand
+        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
+        XXXXXXX, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS,
+                 KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
+        MO(_KP), KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
+        KC_LALT, KC_LCTL,
+        KC_PGUP,
+        KC_PGDN, KC_ENT, KC_SPC
+  ),
+
+
+/* Layer 2 : Colemak
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  | | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   F  |   P  |   G  |      | |      |   J  |   L  |   U  |   Y  |   ;  |   \    |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * | BkSpc  |   A  |   R  |   S  |   T  |   D  |------| |------|   H  |   N  |   E  |   I  |   O  |   '    |
+ * |--------+------+------+------+------+------| _MD  | | _KP  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      | |      |   K  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ *   | LGUI |   `  |  INS | Left | Rght |                             |  Up  |  Dn  |   [  |   ]  | RGUI |
+ *   `----------------------------------'                             `----------------------------------'
+ *                                      ,-------------. ,-------------.
+ *                                      | LCTL | LALT | | RALT | RCTL |
+ *                               ,------|------|------| |------+------+------.
+ *                               |      |      | Home | | PgUp |      |      |
+ *                               | BkSp | Del  |------| |------| Enter| Space|
+ *                               |      |      | End  | | PgDn |      |      |
+ *                               `--------------------' `--------------------'
+ */
+[_CM] = LAYOUT_ergodox( 
+        // left hand
+        KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_LEFT,
+        KC_DELT, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    XXXXXXX,
+        KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,
+        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    MO(_MD),
+        KC_LGUI, KC_GRV,  KC_INS,  KC_LEFT, KC_RGHT,
+                                            KC_LCTL, KC_LALT,
+                                                     KC_HOME,
+                                   KC_BSPC, KC_DEL,  KC_END,
+        // right hand
+        KC_ESC,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
+        XXXXXXX, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSLS,
+                 KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT,
+        MO(_KP), KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+                          KC_UP,   KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI,
+        KC_LALT, KC_LCTL,
+        KC_PGUP,
+        KC_PGDN, KC_ENT, KC_SPC
+  ),
+
+
+/* Layer 3 : Media layer
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  | |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * |        |      | PrSc | ScLk | Paus |      |      | |      |      | Mute | Vol- | Vol+ |      |        |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------| |------| Stop | Prev | Play | Next | Sel  |        |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * |        |      |Dvorak|Qwerty|Colemk|      |      | |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                             |      |      |      |      |      |
+ *   `----------------------------------'                             `----------------------------------'
+ *                                      ,-------------. ,-------------.
+ *                                      |      |      | |      |      |
+ *                               ,------|------|------| |------+------+------.
+ *                               |      |      |      | |      |      |      |
+ *                               |      |      |------| |------|      |      |
+ *                               |      |      |      | |      |      |      |
+ *                               `--------------------' `--------------------'
+ */
+[_MD] = LAYOUT_ergodox(
+        // left hand
+        RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
+        _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+        _______, _______, _______, _______, _______, _______,
+        _______, _______, DVORAK,  QWERTY,  COLEMAK, _______, _______,
+        _______, _______, _______, _______, _______,
+                                            _______, _______,
+                                                     _______,
+                                   _______, _______, _______,
+        // right hand
+        KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
+        _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+                 KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+                          _______, _______, _______, _______, _______,
+        _______, _______,
+        _______,
+        _______, _______, _______
+  ),
+
+
+/* Layer 4 : Keypad layer
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Power  |      |      |      |      |      |      | |      |      | NmLk | KP = | KP / | KP * |        |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Sleep  |      |      |      |      |      |      | |      |      | KP 7 | KP 8 | KP 9 | KP - |        |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * | Wake   |      |      |      |      |      |------| |------|      | KP 4 | KP 5 | KP 6 | KP + |        |
+ * |--------+------+------+------+------+------|      | |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      | |      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                             | KP 0 |      | KP . |KP Ent|      |
+ *   `----------------------------------'                             `----------------------------------'
+ *                                      ,-------------. ,-------------.
+ *                                      |      |      | |      |      |
+ *                               ,------|------|------| |------+------+------.
+ *                               |      |      |      | |      |      |      |
+ *                               |      |      |------| |------|      |      |
+ *                               |      |      |      | |      |      |      |
+ *                               `--------------------' `--------------------'
+ */
+[_KP] = LAYOUT_ergodox(
+        // left hand
+        KC_PWR,  _______, _______, _______, _______, _______, _______,
+        KC_SLEP, _______, _______, _______, _______, _______, _______,
+        KC_WAKE, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______,
+                                            _______, _______,
+                                                     _______,
+                                   _______, _______, _______,
+        // right hand
+        _______, _______, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, _______,
+        _______, _______, KC_P7,   KC_P8,   KC_P9,   KC_PMNS, _______,
+                 _______, KC_P4,   KC_P5,   KC_P6,   KC_PPLS, _______,
+        _______, _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, _______,
+                          KC_P0,   _______, KC_PDOT, KC_PENT, _______,
+        _______, _______,
+        _______,
+        _______, _______, _______
+  ),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _DV:
+          if (record->event.pressed) {
+            persistent_default_layer_set(1UL<<_DV);
+          }
+          break;
+        case _QW:
+          if (record->event.pressed) {
+            persistent_default_layer_set(1UL<<_QW);
+          }
+          break;
+        case _CM:
+          if (record->event.pressed) {
+            persistent_default_layer_set(1UL<<_CM);
+          }
+          break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/xyverz/readme.md b/layouts/community/ergodox/xyverz/readme.md
new file mode 100644 (file)
index 0000000..134fb50
--- /dev/null
@@ -0,0 +1,122 @@
+# Xyverz's ErgoDox EZ Keymap
+
+## About this keymap:
+
+The Dvorak layout shown here stems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. ~~Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox.~~ I've decided do give the normal placing of the SLSH, EQL, and xBRC keys a try, after using a different keyboard for a while...
+
+The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
+
+I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts.
+
+## Still to do:
+
+ * Need to figure out a better position for the ESC key.
+ * Come up with a function for the empty keys shown in the alpha layers below.
+ * Fix the CapsLock, NumLock, and ScrLck LEDs.
+
+### Layer 0: Dvorak layer
+
+       ,--------------------------------------------------.,--------------------------------------------------.
+       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   /    |
+       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
+       | Tab    |   '  |   ,  |   .  |   P  |   Y  |      ||      |   F  |   G  |   C  |   R  |   L  |   \    |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       | CapsLk |   A  |   O  |   E  |   U  |   I  |------||------|   D  |   H  |   T  |   N  |   S  |   -    |
+       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
+       | LShift |   Z  |   X  |   C  |   V  |   X  |      ||      |   B  |   M  |   W  |   V  |   Z  | RShift |
+       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
+         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
+         `----------------------------------'                            `----------------------------------'
+                                            ,-------------.,-------------.
+                                            | LCtr | LAlt || Ralt | RCtr |
+                                     ,------|------|------||------+------+------.
+                                     |      |      | Home || PgUp |      |      |
+                                     | BkSp | Del  |------||------| Enter| Space|
+                                     |      |      | End  || PgDn |      |      |
+                                     `--------------------'`--------------------'
+
+### Layer 1: QWERTY layer
+
+       ,--------------------------------------------------.,--------------------------------------------------.
+       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
+       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
+       | Tab    |   Q  |   W  |   E  |   R  |   T  |      ||      |   Y  |   U  |   I  |   O  |   P  |   \    |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       | CapsLk |   A  |   S  |   D  |   F  |   G  |------||------|   H  |   J  |   K  |   L  |   ;  |   '    |
+       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
+       | LShift |   Z  |   X  |   C  |   V  |   B  |      ||      |   N  |   M  |   ,  |   .  |   /  | RShift |
+       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
+         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
+         `----------------------------------'                            `----------------------------------'
+                                            ,-------------.,-------------.
+                                            | LCtr | LAlt || Ralt | RCtr |
+                                     ,------|------|------||------+------+------.
+                                     |      |      | Home || PgUp |      |      |
+                                     | BkSp | Del  |------||------| Enter| Space|
+                                     |      |      | End  || PgDn |      |      |
+                                     `--------------------'`--------------------'
+        
+### Keymap 2: Colemak layer
+
+       ,--------------------------------------------------.,--------------------------------------------------.
+       |   =    |   1  |   2  |   3  |   4  |   5  | ESC  || ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
+       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
+       | Tab    |   Q  |   W  |   F  |   P  |   G  |      ||      |   J  |   L  |   U  |   Y  |   ;  |   \    |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       | BkSpc  |   A  |   R  |   S  |   T  |   D  |------||------|   H  |   N  |   E  |   I  |   O  |   '    |
+       |--------+------+------+------+------+------| _MD  || _KP  |------+------+------+------+------+--------|
+       | LShift |   Z  |   X  |   C  |   V  |   B  |      ||      |   K  |   M  |   ,  |   .  |   /  | RShift |
+       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
+         | LGUI |   `  |  INS | Left | Rght |                            |  Up  |  Dn  |   [  |   ]  | RGUI |
+         `----------------------------------'                            `----------------------------------'
+                                            ,-------------.,-------------.
+                                            | LCtr | LAlt || Ralt | RCtr |
+                                     ,------|------|------||------+------+------.
+                                     |      |      | Home || PgUp |      |      |
+                                     | BkSp | Del  |------||------| Enter| Space|
+                                     |      |      | End  || PgDn |      |      |
+                                     `--------------------'`--------------------'
+
+### layer 3 : Media layer
+
+       ,--------------------------------------------------.,--------------------------------------------------.
+       | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  ||  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
+       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
+       |        |      | PrSc | ScLk | Paus |      |      ||      |      | Mute | Vol- | Vol+ |      |        |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       |        |      |      |      |      |      |------||------| Stop | Prev | Play | Next | Sel  |        |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       |        |      |Dvorak|Qwerty|Colemk|      |      ||      |      |      |      |      |      |        |
+       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
+         |      |      |      |      |      |                            |      |      |      |      |      |
+         `----------------------------------'                            `----------------------------------'
+                                            ,-------------.,-------------.
+                                            |      |      ||      |      |
+                                     ,------|------|------||------+------+------.
+                                     |      |      |      ||      |      |      |
+                                     |      |      |------||------|      |      |
+                                     |      |      |      ||      |      |      |
+                                     `--------------------'`--------------------'
+
+
+
+### Keymap 4: Keypad layer
+
+       ,--------------------------------------------------.,--------------------------------------------------.
+       | Power  |      |      |      |      |      |      ||      |      | NmLk | KP = | KP / | KP * |        |
+       |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------|
+       | Sleep  |      |      |      |      |      |      ||      |      | KP 7 | KP 8 | KP 9 | KP - |        |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       | Wake   |      |      |      |      |      |------||------|      | KP 4 | KP 5 | KP 6 | KP + |        |
+       |--------+------+------+------+------+------|      ||      |------+------+------+------+------+--------|
+       |        |      |      |      |      |      |      ||      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
+       `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------'
+         |      |      |      |      |      |                            | KP 0 |      | KP . |KP Ent|      |
+         `----------------------------------'                            `----------------------------------'
+                                            ,-------------.,-------------.
+                                            |      |      ||      |      |
+                                     ,------|------|------||------+------+------.
+                                     |      |      |      ||      |      |      |
+                                     |      |      |------||------|      |      |
+                                     |      |      |      ||      |      |      |
+                                     `--------------------'`--------------------'
diff --git a/layouts/community/ergodox/yoruian/90-ergodox-yoruian.conf b/layouts/community/ergodox/yoruian/90-ergodox-yoruian.conf
new file mode 100644 (file)
index 0000000..ce4fce3
--- /dev/null
@@ -0,0 +1,6 @@
+Section "InputClass"
+       Identifier      "ErgoDox EZ"
+       MatchIsKeyboard "on"
+       MatchProduct    "ErgoDox EZ ErgoDox EZ"
+       Option          "XkbLayout"     "ergodox_yoruian"
+EndSection
diff --git a/layouts/community/ergodox/yoruian/README b/layouts/community/ergodox/yoruian/README
new file mode 100644 (file)
index 0000000..99b4143
--- /dev/null
@@ -0,0 +1,102 @@
+          Snarfangel's YORUIAN for the ErgoDox EZ
+          ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
+DEFAULT
+┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
+┃ ` │ ; │ : │ - │ / │ ( │ < ┃ ┃ > │ ) │ ^ │ * │ ~ │ Γ │ σ ┃
+┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
+┃ ⎋ │ . │ y │ o │ r │ ? │ ✦ ┃ ┃ ✦ │ j │ v │ d │ f │ w │ q ┃
+┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
+┃ ⎈ │ u │ i │ a │ n │ ! ├───┨ ┠───┤ m │ h │ t │ s │ c │ ⎈ ┃
+┠───┼───┼───┼───┼───┼───┤ ❖ ┃ ┃ ❖ ├───┼───┼───┼───┼───┼───┨
+┃ λ │ ' │ " │ , │ _ │ = │   ┃ ┃   │ k │ l │ p │ g │ b │ x ┃
+┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
+┃ ⎀ │ E │   │   │ ◆ ┃                 ┃ ◆ │   │   │ z │ ⎙ ┃
+┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
+                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
+                    ┃ ⌫ │ ⌥ ┃ ┃ ⎄ │ ↹ ┃
+                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┃ e │ ⇧ ├───┨ ┠───┤ ⏎ │ ␣ ┃
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
+SHIFTED
+┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
+┃ 9 │ 7 │ 5 │ 3 │ 1 │ [ │ { ┃ ┃ } │ ] │ 0 │ 2 │ 4 │ 6 │ 8 ┃
+┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
+┃   │ * │ Y │ O │ R │ \ │   ┃ ┃   │ J │ V │ D │ F │ W │ Q ┃
+┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
+┃   │ U │ I │ A │ N │ | ├───┨ ┠───┤ M │ H │ T │ S │ C │   ┃
+┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
+┃   │ # │ $ │ @ │ & │ + │   ┃ ┃   │ K │ L │ P │ G │ B │ X ┃
+┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
+┃   │   │   │   │   ┃                 ┃   │   │   │ Z │   ┃
+┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
+                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
+                    ┃   │   ┃ ┃   │   ┃
+                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┃   │   ├───┨ ┠───┤   │   ┃
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
+λ LAYER
+┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
+┃   │   │   │   │   │   │   ┃ ┃   │   │ ⑤ │ ⑥ │ ⑦ │ ⑧ │ ⑨ ┃
+┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
+┃   │   │   │   │   │   │   ┃ ┃   │   │ ① │ ② │ ③ │ ④ │ ⑩ ┃
+┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
+┃   │   │   │   │   │   ├───┨ ┠───┤ ⎉ │ ← │ ↓ │ ↑ │ → │ ⑪ ┃
+┠───┼───┼───┼───┼───┼───┤   ┃ ┃   ├───┼───┼───┼───┼───┼───┨
+┃ λ │   │   │   │   │   │   ┃ ┃   │   │ ⇱ │ ⎘ │ ⎗ │ ⇲ │ ⑫ ┃
+┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
+┃   │   │   │   │   ┃                 ┃   │   │   │   │   ┃
+┗━━━┷━━━┷━━━┷━━━┷━━━┛                 ┗━━━┷━━━┷━━━┷━━━┷━━━┛
+                    ┏━━━┯━━━┓ ┏━━━┯━━━┓
+                    ┃   │   ┃ ┃   │   ┃
+                ┏━━━╃───┼───┨ ┠───┼───╄━━━┓
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┃   │   ├───┨ ┠───┤   │   ┃
+                ┃   │   │   ┃ ┃   │   │   ┃
+                ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
+
+Installation (X only)
+‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
+   1. Build and flash firmware as usual
+
+   2. sudo make install-xorg-configuration
+
+   3. Restart X
+
+Features
+‾‾‾‾‾‾‾‾
+   • E on the thumb
+
+   • Emacs-friendly
+
+   • Symmetric control keys for finger wear levelling
+
+   • Greek and subscript dead keys
+
+   • Compose key for arbitrary Unicode input via ~/.XCompose
+
+Don't Cares
+‾‾‾‾‾‾‾‾‾‾‾
+   • Easy migration from QWERTY
+
+   • Compatbility with non-XKB systems
+
+   • Mouse emulation
+
+   • Media keys
+
+Acknowledgements
+‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
+Snarfangel, for designing the layout.
+
+The GNU FreeFont project and Steve White, for adding new keyboard
+symbols.
+
+Xah Lee, for http://xahlee.info/comp/unicode_computing_symbols.html
+
+Colophon
+‾‾‾‾‾‾‾‾
+This file is best-viewed with an SVN version of GNU FreeFont Mono.
diff --git a/layouts/community/ergodox/yoruian/ergodox_yoruian b/layouts/community/ergodox/yoruian/ergodox_yoruian
new file mode 100644 (file)
index 0000000..0d13fbf
--- /dev/null
@@ -0,0 +1,34 @@
+partial alphanumeric_keys modifier_keys
+xkb_symbols "ergodox_yoruian" {
+    include "us"
+    name[Group1]= "English (yoruian-1.0.0)";
+
+    replace key <KP2>  { [    Multi_key, Multi_key    ] };
+    replace key <KP3>  { [    Hyper_L,   Hyper_L      ] };
+    replace key <AE09> { [        grave, 9            ] };
+    replace key <AE07> { [    semicolon, 7            ] };
+    replace key <AE05> { [        colon, 5            ] };
+    replace key <AE03> { [        minus, 3            ] };
+    replace key <AE01> { [        slash, 1            ] };
+    replace key <AE10> { [  asciicircum, 0            ] };
+    replace key <AE02> { [      percent, 2            ] };
+    replace key <AE04> { [   asciitilde, 4            ] };
+    replace key <AE06> { [   dead_greek, 6            ] };
+    replace key <AE08> { [   dead_caron, 8            ] };
+    replace key <KP1>  { [            E, E            ] };
+    replace key <AD12> { [       period, asterisk     ] };
+    replace key <BKSL> { [     question, backslash    ] };
+    replace key <AC10> { [       exclam, bar          ] };
+    replace key <AC11> { [   apostrophe, numbersign   ] };
+    replace key <AB08> { [     quotedbl, dollar       ] };
+    replace key <AB09> { [        comma, at           ] };
+    replace key <AB10> { [   underscore, ampersand    ] };
+    replace key <KP0>  { [        equal, plus         ] };
+    replace key <TLDE> { [    parenleft, bracketleft  ] };
+    replace key <AE11> { [         less, braceleft    ] };
+    replace key <AE12> { [      greater, braceright   ] };
+    replace key <AD11> { [   parenright, bracketright ] };
+
+    modifier_map none { <HYPR> };
+    modifier_map Mod3 { <KP3>  };
+};
diff --git a/layouts/community/ergodox/yoruian/keymap.c b/layouts/community/ergodox/yoruian/keymap.c
new file mode 100644 (file)
index 0000000..367fe3c
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "yoruian.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_ergodox_YORUIAN\
+(9,  7,    5,    3,    1,    GRV,  MINS, EQL,  LBRC, 0,    2,    4,    6,    8,
+ ES, RBRC, Y,    O,    R,    BSLS, P3,   P3,   J,    V,    D,    F,    W,    Q,
+ LC, U,    I,    A,    N,    SCLN,             M,    H,    T,    S,    C,    RC,
+ FF, QUOT, COMM, DOT,  SLSH, P0,   LGUI, LGUI, K,    L,    P,    G,    B,    X,
+ IN, P1,   NO,   NO,   LALT,                         LALT, NO,   NO,   Z,    PS,
+                             BSPC, RALT, P2,   TAB,
+                                   NO,   NO,
+                       E,    LSFT, NO,   NO,   ENT,  SPC),
+[1] = LAYOUT_ergodox_YORUIAN\
+(TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   F5,   F6,   F7,   F8,   F9,
+ TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   F1,   F2,   F3,   F4,   FT,
+ TR, TR,   TR,   TR,   TR,   TR,               PAUS, LEFT, DOWN, UP,   RGHT, FE,
+ TR, TR,   TR,   TR,   TR,   TR,   TR,   TR,   TR,   HOME, PGDN, PGUP, END,  FW,
+ TR, TR,   TR,   TR,   TR,                           TR,   TR,   TR,   TR,   TR,
+                             TR,   TR,   TR,   TR,
+                                   TR,   TR,
+                       TR,   TR,   TR,   TR,   TR,   TR),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+};
+
+void matrix_scan_user(void) {
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+};
+
+/*
+ * Local Variables:
+ * electric-indent-mode: nil
+ * End:
+ */
diff --git a/layouts/community/ergodox/yoruian/rules.mk b/layouts/community/ergodox/yoruian/rules.mk
new file mode 100644 (file)
index 0000000..0e9338d
--- /dev/null
@@ -0,0 +1,11 @@
+
+
+install-xorg-configuration:
+       install -m 0664 90-$(KEYBOARD)-$(LAYOUT_ergodox).conf \
+           /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(LAYOUT_ergodox).conf
+       install -m 0644 $(KEYBOARD)_$(LAYOUT_ergodox) \
+           /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(LAYOUT_ergodox)
+
+uninstall-xorg-configuration:
+       -rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(LAYOUT_ergodox).conf
+       -rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(LAYOUT_ergodox)
diff --git a/layouts/community/ergodox/yoruian/yoruian.h b/layouts/community/ergodox/yoruian/yoruian.h
new file mode 100644 (file)
index 0000000..2a85ef9
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define LAYOUT_ergodox_YORUIAN(                                                        \
+ /* Spacial positions. */                                                      \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D,         \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D,         \
+ k20, k21, k22, k23, k24, k25,           k28, k29, k2A, k2B, k2C, k2D,         \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D,         \
+ k40, k41, k42, k43, k44,                     k49, k4A, k4B, k4C, k4D,         \
+                          k55, k56, k57, k58,                                  \
+                               k54, k59,                                       \
+                     k53, k52, k51, k5C, k5B, k5A)                             \
+  LAYOUT_ergodox(KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, \
+         KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, \
+         KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25,           \
+         KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, \
+         KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44,                     \
+                                                           KC_##k55, KC_##k56, \
+                                                                     KC_##k54, \
+                                                 KC_##k53, KC_##k52, KC_##k51, \
+         KC_##k07, KC_##k08, KC_##k09, KC_##k0A, KC_##k0B, KC_##k0C, KC_##k0D, \
+         KC_##k17, KC_##k18, KC_##k19, KC_##k1A, KC_##k1B, KC_##k1C, KC_##k1D, \
+                   KC_##k28, KC_##k29, KC_##k2A, KC_##k2B, KC_##k2C, KC_##k2D, \
+         KC_##k37, KC_##k38, KC_##k39, KC_##k3A, KC_##k3B, KC_##k3C, KC_##k3D, \
+                             KC_##k49, KC_##k4A, KC_##k4B, KC_##k4C, KC_##k4D, \
+         KC_##k57, KC_##k58,                                                   \
+         KC_##k59,                                                             \
+         KC_##k5C, KC_##k5B, KC_##k5A)
+
+#define KC_ES  KC_ESC
+#define KC_LC  KC_LCTL
+#define KC_RC  KC_RCTL
+#define KC_FF  MO(1)
+#define KC_IN  KC_INS
+#define KC_PS  KC_PSCR
+#define KC_TR  KC_TRNS
+#define KC_FT  KC_F10
+#define KC_FE  KC_F11
+#define KC_FW  KC_F12
diff --git a/layouts/community/ergodox/zweihander-osx/keymap.c b/layouts/community/ergodox/zweihander-osx/keymap.c
new file mode 100644 (file)
index 0000000..2ace33e
--- /dev/null
@@ -0,0 +1,233 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+#define SGWK 0 // "sagewick", ⌘S ⌘⇥
+#define SGWF 1 // "sagewick freshly", ⌘S ⌘⇥ ⌘R
+#define BBED 2 // BBEdit
+#define TMNL 3 // Terminal
+#define SAFA 4 // Safari
+#define ALFRED_LEAD_TIME 250 // time, in milliseconds, to let Alfred come to the fore and accept keyboard input
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  |  L1  |           |  L1  |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |   ⌦    |   Q  |   W  |   E  |   R  |   T  | ~L1  |           | ~L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |   ⌫    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2| ' / L⌘ |
+ * |--------+------+------+------+------+------|  L⌘  |           |  L⌘  |------+------+------+------+------+--------|
+ * |  L⇧    |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | / / ⌃|  R⇧    |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  L⌃  |  L⌥  |  L⌘  |   ←  |   →  |                                       |   ↑  |   ↓  |   [  |   ]  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        |  `~  |  '"  |       |   ⎋  |    ⌫   |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | PgUp |       | PgDn |        |      |
+ *                                 |      |   ⇥  |------|       |------|    ⇥   |Enter |
+ *                                 |      |      |  R⌥  |       |  R⌃  |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   TG(SYMB),
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   MO(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_LGUI,
+        KC_LCTL,        KC_LALT,      KC_LGUI,KC_LEFT,KC_RGHT,
+                                              KC_GRV, KC_QUOT,
+                                                              KC_PGUP,
+                                               KC_SPC,KC_TAB ,KC_RALT,
+        // right hand
+             TG(SYMB),  KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             MO(SYMB),  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                        KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+             KC_LGUI,   KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_SPC ,
+             KC_ESC,            KC_BSPC,
+             KC_PGDN,
+             KC_RCTL,           KC_TAB,      KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   [  |   ]  |   {  |   }  |   "  |      |           |      |   /  |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   <  |   >  |   (  |   )  |   '  |------|           |------|   -  |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |   =  |      |           |      |   :  |   1  |   2  |   3  |   =  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   0  |   .  |   ←  |   →  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_DQT ,KC_TRNS,
+       KC_TRNS,KC_LABK,KC_RABK,KC_LPRN,KC_RPRN,KC_QUOT,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_EQL ,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_SLSH, KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_MINS, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_COLN, KC_1,   KC_2,    KC_3,    KC_EQL,  KC_TRNS,
+                         KC_0,   KC_DOT,  KC_LEFT, KC_RGHT, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F14 |  F15 |PrtScr|SclLck| Pause|      |           |  ⌘Q  |  ⌘W  | ⌘⇧`  |  ⌘`  |      |      |  Power |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | PgUp |⌘S⌘⇥⌘R| Term |      |           |      |  ⌘]  | ⌥⌘↑  |   ↑  | ⌥⌘↓  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |Safari| PgDn |      |      |------|           |------|  ⌘[  |   ←  |   ↓  |   →  |      |    ⏯  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |BBEdit|      |           |      |      |  ⏯  |  ⏮  |   ⏭ |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Home |       |  End |      |      |
+ *                                 |      |      |------|       |------|  ⌘C  |  ⌘V  |
+ *                                 |      |      |      |       |  ⌘X  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+       KC_TRNS, KC_F14 , KC_F15 , KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,  /* F14 dims screen, F15 brightens */
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, M(SGWF), M(TMNL), KC_TRNS,
+       KC_TRNS, KC_TRNS, M(SAFA), KC_PGDN, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(BBED), KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_HOME,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       LGUI(KC_Q),  LGUI(KC_W),     LGUI(LSFT(KC_GRV)), LGUI(KC_GRV),   KC_TRNS,                KC_TRNS,        KC_PWR ,
+       KC_TRNS,     LGUI(KC_RBRC),  LGUI(LALT(KC_UP)),  KC_UP  ,        LGUI(LALT(KC_DOWN)),    KC_TRNS,        KC_TRNS,
+                    LGUI(KC_LBRC),  KC_LEFT,            KC_DOWN,        KC_RGHT,                KC_TRNS,        KC_MPLY,
+       KC_TRNS,     KC_TRNS,        KC_MPLY,            KC_MPRV,        KC_MNXT,                KC_TRNS,        KC_TRNS,
+                                    KC_VOLU,            KC_VOLD,        KC_MUTE,                KC_TRNS,        KC_TRNS,
+       KC_TRNS,     KC_TRNS,
+       KC_END ,
+       LGUI(KC_X),  LGUI(KC_C),     LGUI(KC_V)
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+          case SGWK:
+              if (record->event.pressed) {
+                  return MACRO(
+                               I(10),
+                               D(LGUI), T(S),   U(LGUI),
+                               D(LGUI), T(TAB), U(LGUI),
+                               END);
+              }
+              break;
+          case SGWF:
+              if (record->event.pressed) {
+                  return MACRO(
+                               I(10),
+                               D(LGUI), T(S),   U(LGUI),
+                               D(LGUI), T(TAB), U(LGUI),
+                               D(LGUI), T(R),   U(LGUI),
+                               END);
+              }
+              break;
+          case BBED:
+              if (record->event.pressed) {
+                  return MACRO(
+                               I(10),
+                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
+                               T(B), T(B), T(E), T(D), T(I), T(T),
+                               T(ENT),
+                               END);
+              }
+              break;
+          case TMNL:
+              if (record->event.pressed) {
+                  return MACRO(
+                               I(10),
+                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
+                               T(T), T(E), T(R), T(M), T(I), T(N), T(A), T(L),
+                               T(ENT),
+                               END);
+              }
+              break;
+          case SAFA:
+              if (record->event.pressed) {
+                  return MACRO(
+                               I(10),
+                               D(LALT), T(SPC),   U(LALT), W(ALFRED_LEAD_TIME),
+                               T(S), T(A), T(F), T(A), T(R), T(I),
+                               T(ENT),
+                               END);
+              }
+              break;
+      }
+    return MACRO_NONE;
+};
+
+// 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);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/layouts/community/ergodox/zweihander-osx/readme.markdown b/layouts/community/ergodox/zweihander-osx/readme.markdown
new file mode 100644 (file)
index 0000000..5125a12
--- /dev/null
@@ -0,0 +1,47 @@
+# The Zweihander Layout
+
+NB: the backtick (\`) is special in Markdown. If I write ⌘\` in this readme, I mean “command-backtick”, not “command-backslash-backtick”.
+
+This layout is tuned for people who…
+
+
+## use OS X
+
+While this layout should work fine in Windows, it’s not tuned for it. No sane person who primarily uses Windows would put this many Windows keys on a keyboard layout.
+
+
+## mouse left-handed while doing other things with the right hand
+
+I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder:
+
+- Close Window (⌘W)
+- Back (⌘[)
+- Forward (⌘])
+- Open and Close Parent Folder (⌥⌘↓)
+- Go Up and Close Just-Left Folder (⌥⌘↑)
+- Cycle through open windows in current application (⌘\` and ⌘⇧\`)
+- Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥)
+
+Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word.
+
+
+## use lots of modifier keys in OS X menu-item shortcuts
+
+I wanted to preserve the feel of a number of shortcuts that involve pressing lots of modifier keys at once; this is why the bottom left of the keyboard has shift, control, option, and command in the usual spaces. Further, some common shortcuts I press have a key on the right side of the keyboard. These shortcuts include:
+
+- Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫)
+- Shut Down Without Asking for Confirmation (⇧⌥⌘ power)
+
+⇧⌥⌘⌫, when you press the backspace on the right half of the keyboard, is much more satisfying than if you curl your left hand into a claw to press all the keys on the left. Try both; you’ll agree.
+
+
+## use Emacs-style shortcuts
+
+I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key.
+
+Having trouble remembering which thumb key is alt and which is ctrl? It’s like on the lower right of a normal keyboard — leftmost is alt, rightmost is ctrl.
+
+
+## use spreadsheets
+
+All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer. There’s also a colon there for entering times and maybe IPv6 addresses. Not that I expect people to type IPv6 addresses into a spreadsheet, but, y’know.
diff --git a/layouts/community/ergodox/zweihander-osx/rules.mk b/layouts/community/ergodox/zweihander-osx/rules.mk
new file mode 100644 (file)
index 0000000..6e3d088
--- /dev/null
@@ -0,0 +1,2 @@
+# Don’t do a tricolor wave when the computer is shut down in Windows
+SLEEP_LED_ENABLE = no
diff --git a/layouts/community/ortho_4x12/ergodoxish/config.h b/layouts/community/ortho_4x12/ergodoxish/config.h
new file mode 100644 (file)
index 0000000..3c3d9b8
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define _MASTER_RIGHT
+// #define EE_HANDS
+
+#endif
\ No newline at end of file
diff --git a/layouts/community/ortho_4x12/ergodoxish/keymap.c b/layouts/community/ortho_4x12/ergodoxish/keymap.c
new file mode 100644 (file)
index 0000000..49600aa
--- /dev/null
@@ -0,0 +1,214 @@
+#include QMK_KEYBOARD_H
+#include "action_layer.h"
+#include "eeconfig.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 _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12( \
+  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_ortho_4x12( \
+  KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
+  KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_ortho_4x12( \
+  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
+  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |     |    \  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12( \
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12( \
+  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] =  LAYOUT_ortho_4x12( \
+  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_qwerty);
+        #endif
+        persistent_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_colemak);
+        #endif
+        persistent_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_dvorak);
+        #endif
+        persistent_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
\ No newline at end of file
diff --git a/layouts/community/ortho_4x12/layout.json b/layouts/community/ortho_4x12/layout.json
new file mode 100644 (file)
index 0000000..9439b6e
--- /dev/null
@@ -0,0 +1,4 @@
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""]
\ No newline at end of file
diff --git a/layouts/community/ortho_4x12/readme.md b/layouts/community/ortho_4x12/readme.md
new file mode 100644 (file)
index 0000000..6963727
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_4x12
+
+    LAYOUT_ortho_4x12
\ No newline at end of file
diff --git a/layouts/community/ortho_4x4/layout.json b/layouts/community/ortho_4x4/layout.json
new file mode 100644 (file)
index 0000000..ef2a095
--- /dev/null
@@ -0,0 +1,4 @@
+["","","",""],
+["","","",""],
+["","","",""],
+["","","",""]
diff --git a/layouts/community/ortho_4x4/readme.md b/layouts/community/ortho_4x4/readme.md
new file mode 100644 (file)
index 0000000..b7afef7
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_4x4
+
+    LAYOUT_ortho_4x4
\ No newline at end of file
diff --git a/layouts/community/ortho_5x12/layout.json b/layouts/community/ortho_5x12/layout.json
new file mode 100644 (file)
index 0000000..9b12fa1
--- /dev/null
@@ -0,0 +1,5 @@
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""]
diff --git a/layouts/community/ortho_5x12/readme.md b/layouts/community/ortho_5x12/readme.md
new file mode 100644 (file)
index 0000000..b5037ef
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_5x12
+
+    LAYOUT_ortho_5x12
\ No newline at end of file
diff --git a/layouts/community/ortho_5x15/layout.json b/layouts/community/ortho_5x15/layout.json
new file mode 100644 (file)
index 0000000..e770382
--- /dev/null
@@ -0,0 +1,5 @@
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""]
diff --git a/layouts/community/ortho_5x15/readme.md b/layouts/community/ortho_5x15/readme.md
new file mode 100644 (file)
index 0000000..137af0a
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_5x15
+
+    LAYOUT_ortho_5x15
\ No newline at end of file
diff --git a/layouts/default/60_ansi/default_60_ansi/keymap.c b/layouts/default/60_ansi/default_60_ansi/keymap.c
new file mode 100644 (file)
index 0000000..130dc19
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_60_ansi( 
+        KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,      KC_NO, 
+        KC_NO,    KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+        KC_NO,       KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,      KC_NO,
+        KC_NO,          KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,         KC_NO,
+        KC_NO,  KC_NO,  KC_NO,                     KC_NO,                      KC_NO,  KC_NO,  KC_NO,  KC_NO 
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/60_ansi/layout.json b/layouts/default/60_ansi/layout.json
new file mode 100644 (file)
index 0000000..b7e1d0f
--- /dev/null
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:2.75},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
diff --git a/layouts/default/60_ansi/readme.md b/layouts/default/60_ansi/readme.md
new file mode 100644 (file)
index 0000000..15f51d3
--- /dev/null
@@ -0,0 +1,3 @@
+# 60_ansi
+
+    LAYOUT_60_ansi
\ No newline at end of file
diff --git a/layouts/default/60_iso/default_60_iso/keymap.c b/layouts/default/60_iso/default_60_iso/keymap.c
new file mode 100644 (file)
index 0000000..b9d932e
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_60_iso( 
+        KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, 
+          KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NO, KC_ENT,   
+        KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT,  
+        KC_LCTRL, KC_LALT, KC_LGUI,         KC_SPACE,       KC_NO,  KC_RGUI,  KC_RALT,  KC_MENU,  KC_RCTL
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/60_iso/layout.json b/layouts/default/60_iso/layout.json
new file mode 100644 (file)
index 0000000..2b8493f
--- /dev/null
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""],
+[{w:1.75},"","","","","","","","","","","","",""],
+[{w:1.25},"","","","","","","","","","","","",{w:2.75},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
diff --git a/layouts/default/60_iso/readme.md b/layouts/default/60_iso/readme.md
new file mode 100644 (file)
index 0000000..42ff805
--- /dev/null
@@ -0,0 +1,3 @@
+# 60_iso
+
+    LAYOUT_60_iso
\ No newline at end of file
diff --git a/layouts/default/ergodox/default_ergodox/keymap.c b/layouts/default/ergodox/default_ergodox/keymap.c
new file mode 100644 (file)
index 0000000..697b53f
--- /dev/null
@@ -0,0 +1,23 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ergodox(
+        KC_GRV,   KC_1,  KC_2,   KC_3,   KC_4,    KC_5,   KC_EQL,
+        KC_TAB,   KC_Q,  KC_W,   KC_E,   KC_R,    KC_T,   KC_EQL,
+        KC_ESC,   KC_A,  KC_S,   KC_D,   KC_F,    KC_G,
+        KC_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,    KC_B,   KC_B,
+        KC_LCTL, KC_F4,  KC_F5,  KC_LGUI,KC_LALT,
+                                                                              KC_C,   KC_V,
+                                                                                      KC_PGUP,
+                                                                    KC_BSPC, KC_BSPC, KC_DEL,
+
+             KC_5,  KC_6,   KC_7,   KC_8,   KC_9,    KC_0,     KC_MINS,
+             KC_Y,  KC_Y,   KC_U,   KC_I,   KC_O,    KC_P,     KC_BSLS,
+                    KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN,  KC_QUOT,
+             KC_N , KC_N,   KC_M,   KC_COMM,KC_DOT,  KC_SLSH,  KC_RSFT,
+                            KC_LEFT,KC_DOWN,KC_UP,   KC_RIGHT, KC_RGUI,
+             KC_RALT, KC_A,
+             KC_PGDN,
+             KC_RCTL, KC_ENT, KC_SPC
+    ),
+};
\ No newline at end of file
diff --git a/layouts/default/ergodox/layout.json b/layouts/default/ergodox/layout.json
new file mode 100644 (file)
index 0000000..5348e91
--- /dev/null
@@ -0,0 +1,26 @@
+[{x:3.5,a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"","",{x:4.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
diff --git a/layouts/default/ergodox/readme.md b/layouts/default/ergodox/readme.md
new file mode 100644 (file)
index 0000000..ddbe193
--- /dev/null
@@ -0,0 +1,3 @@
+# ergodox
+
+    LAYOUT_ergodox
\ No newline at end of file
diff --git a/layouts/default/ortho_4x12/default_ortho_4x12/keymap.c b/layouts/default/ortho_4x12/default_ortho_4x12/keymap.c
new file mode 100644 (file)
index 0000000..4a2f8fd
--- /dev/null
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_4x12( 
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, 
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, 
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, 
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L 
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/ortho_4x12/layout.json b/layouts/default/ortho_4x12/layout.json
new file mode 100644 (file)
index 0000000..9439b6e
--- /dev/null
@@ -0,0 +1,4 @@
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""]
\ No newline at end of file
diff --git a/layouts/default/ortho_4x12/readme.md b/layouts/default/ortho_4x12/readme.md
new file mode 100644 (file)
index 0000000..6963727
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_4x12
+
+    LAYOUT_ortho_4x12
\ No newline at end of file
diff --git a/layouts/default/ortho_4x4/default_ortho_4x4/keymap.c b/layouts/default/ortho_4x4/default_ortho_4x4/keymap.c
new file mode 100644 (file)
index 0000000..79581fa
--- /dev/null
@@ -0,0 +1,10 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_4x4( 
+        KC_A, KC_B, KC_C, KC_D, 
+        KC_A, KC_B, KC_C, KC_D, 
+        KC_A, KC_B, KC_C, KC_D, 
+        KC_A, KC_B, KC_C, KC_D 
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/ortho_4x4/layout.json b/layouts/default/ortho_4x4/layout.json
new file mode 100644 (file)
index 0000000..ef2a095
--- /dev/null
@@ -0,0 +1,4 @@
+["","","",""],
+["","","",""],
+["","","",""],
+["","","",""]
diff --git a/layouts/default/ortho_4x4/readme.md b/layouts/default/ortho_4x4/readme.md
new file mode 100644 (file)
index 0000000..b7afef7
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_4x4
+
+    LAYOUT_ortho_4x4
\ No newline at end of file
diff --git a/layouts/default/ortho_5x12/default_ortho_5x12/keymap.c b/layouts/default/ortho_5x12/default_ortho_5x12/keymap.c
new file mode 100644 (file)
index 0000000..89ad14b
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_5x12(
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/ortho_5x12/layout.json b/layouts/default/ortho_5x12/layout.json
new file mode 100644 (file)
index 0000000..9b12fa1
--- /dev/null
@@ -0,0 +1,5 @@
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""],
+["","","","","","","","","","","",""]
diff --git a/layouts/default/ortho_5x12/readme.md b/layouts/default/ortho_5x12/readme.md
new file mode 100644 (file)
index 0000000..b5037ef
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_5x12
+
+    LAYOUT_ortho_5x12
\ No newline at end of file
diff --git a/layouts/default/ortho_5x15/default_ortho_5x15/keymap.c b/layouts/default/ortho_5x15/default_ortho_5x15/keymap.c
new file mode 100644 (file)
index 0000000..f67f324
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_ortho_5x15(
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_J, KC_K, KC_L,
+        KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_J, KC_K, KC_L
+    )
+};
\ No newline at end of file
diff --git a/layouts/default/ortho_5x15/layout.json b/layouts/default/ortho_5x15/layout.json
new file mode 100644 (file)
index 0000000..e770382
--- /dev/null
@@ -0,0 +1,5 @@
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","",""]
diff --git a/layouts/default/ortho_5x15/readme.md b/layouts/default/ortho_5x15/readme.md
new file mode 100644 (file)
index 0000000..137af0a
--- /dev/null
@@ -0,0 +1,3 @@
+# ortho_5x15
+
+    LAYOUT_ortho_5x15
\ No newline at end of file
index 102d23b7effeda7db2cda0551518385cbc949475..671b63ea2ca2bee951deaceb2e33124d1b30ccec 100644 (file)
@@ -91,7 +91,7 @@ GDISP_DRIVER_LIST := $(subst $(GDISP_LIST_SPACE),$(GDISP_LIST_COMMA),$(GDISP_DRI
 GFXDEFS +=-DGDISP_DRIVER_LIST="$(GDISP_DRIVER_LIST)"
 
 ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","")
-    SRC += keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/visualizer.c
+    SRC += $(KEYMAP_PATH)/visualizer.c
 else 
     ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/visualizer.c)","")
         ifeq ("$(wildcard $(SUBPROJECT_PATH)/visualizer.c)","")