浏览代码

Merge pull request #503 from fredizzimo/ergodox_subproject

Add both Ergodox EZ and Infinity Ergodox as sub-projects of Ergodox
Jack Humbert 9 年之前
父节点
当前提交
063983639d
共有 100 个文件被更改,包括 1512 次插入1304 次删除
  1. 34 0
      keyboards/ergodox/Makefile
  2. 36 0
      keyboards/ergodox/config.h
  3. 0 0
      keyboards/ergodox/ergodox.c
  4. 10 0
      keyboards/ergodox/ergodox.h
  5. 0 0
      keyboards/ergodox/ez/190hotfix.sh
  6. 1 11
      keyboards/ergodox/ez/Makefile
  7. 7 26
      keyboards/ergodox/ez/config.h
  8. 1 1
      keyboards/ergodox/ez/ez.c
  9. 0 0
      keyboards/ergodox/ez/ez.h
  10. 0 0
      keyboards/ergodox/ez/i2cmaster.h
  11. 1 1
      keyboards/ergodox/ez/matrix.c
  12. 0 0
      keyboards/ergodox/ez/twimaster.c
  13. 0 0
      keyboards/ergodox/ez/util/compile_keymap.py
  14. 0 0
      keyboards/ergodox/ez/util/readme.md
  15. 0 0
      keyboards/ergodox/infinity/MEMO.txt
  16. 8 16
      keyboards/ergodox/infinity/Makefile
  17. 0 0
      keyboards/ergodox/infinity/bootloader_defs.h
  18. 0 0
      keyboards/ergodox/infinity/chconf.h
  19. 10 15
      keyboards/ergodox/infinity/config.h
  20. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h
  21. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
  22. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
  23. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
  24. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/emulator_lcd/driver.mk
  25. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/emulator_lcd/emulator_lcd.c
  26. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/emulator_led/driver.mk
  27. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/emulator_led/emulator_led.c
  28. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h
  29. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
  30. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
  31. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h
  32. 0 0
      keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h
  33. 0 0
      keyboards/ergodox/infinity/gfxconf.h
  34. 0 0
      keyboards/ergodox/infinity/halconf.h
  35. 58 2
      keyboards/ergodox/infinity/infinity.c
  36. 110 0
      keyboards/ergodox/infinity/infinity.h
  37. 0 0
      keyboards/ergodox/infinity/led.c
  38. 3 0
      keyboards/ergodox/infinity/matrix.c
  39. 0 0
      keyboards/ergodox/infinity/mcuconf.h
  40. 0 0
      keyboards/ergodox/keymaps/ab/Makefile
  41. 0 0
      keyboards/ergodox/keymaps/ab/keyboard-layout.json
  42. 0 0
      keyboards/ergodox/keymaps/ab/keyboard-layout.png
  43. 1 1
      keyboards/ergodox/keymaps/ab/keymap.c
  44. 0 0
      keyboards/ergodox/keymaps/ab/readme.md
  45. 1 1
      keyboards/ergodox/keymaps/adnw_k_o_y/keymap.c
  46. 0 0
      keyboards/ergodox/keymaps/adnw_k_o_y/readme.md
  47. 1 1
      keyboards/ergodox/keymaps/alexjj/keymap.c
  48. 0 0
      keyboards/ergodox/keymaps/alexjj/readme.md
  49. 0 0
      keyboards/ergodox/keymaps/alexjj/rl-layout.jpg
  50. 0 0
      keyboards/ergodox/keymaps/algernon/COPYING
  51. 0 0
      keyboards/ergodox/keymaps/algernon/Makefile
  52. 0 0
      keyboards/ergodox/keymaps/algernon/config.h
  53. 0 0
      keyboards/ergodox/keymaps/algernon/images/adore-layer.png
  54. 0 0
      keyboards/ergodox/keymaps/algernon/images/base-layer.png
  55. 0 0
      keyboards/ergodox/keymaps/algernon/images/heatmap.png
  56. 0 0
      keyboards/ergodox/keymaps/algernon/images/hun-layer.png
  57. 0 0
      keyboards/ergodox/keymaps/algernon/images/nav-n-media-layer.png
  58. 0 0
      keyboards/ergodox/keymaps/algernon/images/one-handed-layer.png
  59. 0 0
      keyboards/ergodox/keymaps/algernon/images/steno-layer.png
  60. 1217 1216
      keyboards/ergodox/keymaps/algernon/keymap.c
  61. 0 0
      keyboards/ergodox/keymaps/algernon/readme.md
  62. 0 0
      keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json
  63. 0 0
      keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json
  64. 0 0
      keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py
  65. 0 0
      keyboards/ergodox/keymaps/algernon/tools/max-focused
  66. 1 1
      keyboards/ergodox/keymaps/andrew_osx/keymap.c
  67. 0 0
      keyboards/ergodox/keymaps/bepo/bepo.png
  68. 1 1
      keyboards/ergodox/keymaps/bepo/keymap.c
  69. 0 0
      keyboards/ergodox/keymaps/bepo/readme.md
  70. 0 0
      keyboards/ergodox/keymaps/coderkun_neo2/Makefile
  71. 1 1
      keyboards/ergodox/keymaps/coderkun_neo2/keymap.c
  72. 0 0
      keyboards/ergodox/keymaps/coderkun_neo2/readme.md
  73. 1 1
      keyboards/ergodox/keymaps/colemak/keymap.c
  74. 0 0
      keyboards/ergodox/keymaps/colemak/readme.md
  75. 0 0
      keyboards/ergodox/keymaps/colemak_osx_pc_no/keyboard-layout.png
  76. 1 1
      keyboards/ergodox/keymaps/colemak_osx_pc_no/keymap.c
  77. 0 0
      keyboards/ergodox/keymaps/colemak_osx_pc_no/readme.md
  78. 0 0
      keyboards/ergodox/keymaps/csharp_dev/csharp_dev.png
  79. 0 0
      keyboards/ergodox/keymaps/csharp_dev/csharp_dev_legend.png
  80. 1 1
      keyboards/ergodox/keymaps/csharp_dev/keymap.c
  81. 0 0
      keyboards/ergodox/keymaps/csharp_dev/readme.md
  82. 1 1
      keyboards/ergodox/keymaps/dave/keymap.c
  83. 0 0
      keyboards/ergodox/keymaps/dave/readme.md
  84. 0 0
      keyboards/ergodox/keymaps/default/default.png
  85. 0 0
      keyboards/ergodox/keymaps/default/default_highres.png
  86. 1 1
      keyboards/ergodox/keymaps/default/keymap.c
  87. 0 0
      keyboards/ergodox/keymaps/default/readme.md
  88. 0 0
      keyboards/ergodox/keymaps/default_osx/default_osx_highres.png
  89. 1 1
      keyboards/ergodox/keymaps/default_osx/keymap.c
  90. 0 0
      keyboards/ergodox/keymaps/default_osx/readme.md
  91. 1 1
      keyboards/ergodox/keymaps/dragon788/keymap.c
  92. 0 0
      keyboards/ergodox/keymaps/dvorak/dvorak.png
  93. 1 1
      keyboards/ergodox/keymaps/dvorak/keymap.c
  94. 0 0
      keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout0.png
  95. 0 0
      keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout1.png
  96. 0 0
      keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout2.png
  97. 1 1
      keyboards/ergodox/keymaps/dvorak_intl_squisher/keymap.c
  98. 0 0
      keyboards/ergodox/keymaps/dvorak_intl_squisher/readme.md
  99. 1 1
      keyboards/ergodox/keymaps/dvorak_spanish/keymap.c
  100. 0 0
      keyboards/ergodox/keymaps/dvorak_spanish/readme.md

+ 34 - 0
keyboards/ergodox/Makefile

@@ -0,0 +1,34 @@
+#----------------------------------------------------------------------------
+# 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).
+#
+#----------------------------------------------------------------------------
+SUBPROJECT_DEFAULT = ez
+
+# 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
+MIDI_ENABLE      ?= no  # MIDI controls
+UNICODE_ENABLE   ?= yes # Unicode
+
+ifndef QUANTUM_DIR
+	include ../../Makefile
+endif

+ 36 - 0
keyboards/ergodox/config.h

@@ -0,0 +1,36 @@
+#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    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
+
+
+#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */

+ 0 - 0
keyboards/ergodox/ergodox.c


+ 10 - 0
keyboards/ergodox/ergodox.h

@@ -0,0 +1,10 @@
+#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_
+#define KEYBOARDS_ERGODOX_ERGODOX_H_
+#ifdef SUBPROJECT_ez
+    #include "ez.h"
+#endif
+#ifdef SUBPROJECT_infinity
+    #include "infinity.h"
+#endif
+
+#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */

+ 0 - 0
keyboards/ergodox_ez/190hotfix.sh → keyboards/ergodox/ez/190hotfix.sh


+ 1 - 11
keyboards/ergodox_ez/Makefile → keyboards/ergodox/ez/Makefile

@@ -70,17 +70,7 @@ 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
-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
-MIDI_ENABLE      ?= no  # MIDI controls
-UNICODE_ENABLE   ?= yes # Unicode
 
 ifndef QUANTUM_DIR
-	include ../../Makefile
+	include ../../../Makefile
 endif

+ 7 - 26
keyboards/ergodox_ez/config.h → keyboards/ergodox/ez/config.h

@@ -16,10 +16,10 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef ERGODOX_EZ_CONFIG_H
+#define ERGODOX_EZ_CONFIG_H
 
-#include "config_common.h"
+#include "../config.h"
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
@@ -33,34 +33,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 14
 #define MATRIX_COLS 6
 
-#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
-
 /* number of backlight levels */
 #define BACKLIGHT_LEVELS 3
 
+#define LED_BRIGHTNESS_LO       15
+#define LED_BRIGHTNESS_HI       255
+
+
 /* Set 0 if debouncing isn't needed */
 #define DEBOUNCE    5
-#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)) \
-)
 
 /*
  * Feature disable options

+ 1 - 1
keyboards/ergodox_ez/ergodox_ez.c → keyboards/ergodox/ez/ez.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ez.h"
 #include "i2cmaster.h"
 
 bool i2c_initialized = 0;

+ 0 - 0
keyboards/ergodox_ez/ergodox_ez.h → keyboards/ergodox/ez/ez.h


+ 0 - 0
keyboards/ergodox_ez/i2cmaster.h → keyboards/ergodox/ez/i2cmaster.h


+ 1 - 1
keyboards/ergodox_ez/matrix.c → keyboards/ergodox/ez/matrix.c

@@ -33,7 +33,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "debug.h"
 #include "util.h"
 #include "matrix.h"
-#include "ergodox_ez.h"
+#include "ez.h"
 #include "i2cmaster.h"
 #ifdef DEBUG_MATRIX_SCAN_RATE
 #include  "timer.h"

+ 0 - 0
keyboards/ergodox_ez/twimaster.c → keyboards/ergodox/ez/twimaster.c


+ 0 - 0
keyboards/ergodox_ez/keymaps/german-manuneo/compile_keymap.py → keyboards/ergodox/ez/util/compile_keymap.py


+ 0 - 0
keyboards/ergodox_ez/util/readme.md → keyboards/ergodox/ez/util/readme.md


+ 0 - 0
keyboards/infinity_ergodox/MEMO.txt → keyboards/ergodox/infinity/MEMO.txt


+ 8 - 16
keyboards/infinity_ergodox/Makefile → keyboards/ergodox/infinity/Makefile

@@ -52,34 +52,26 @@ 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
+OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000
 
 # Build Options
 #   comment out to disable the options.
 #
-BOOTMAGIC_ENABLE ?= yes	# Virtual DIP switch configuration
-## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
-MOUSEKEY_ENABLE ?= yes	# Mouse keys
-EXTRAKEY_ENABLE ?= yes	# Audio control and System control
-CONSOLE_ENABLE ?= yes	# Console for debug
-COMMAND_ENABLE ?= yes    # Commands for debug and configuration
-SLEEP_LED_ENABLE ?= yes  # Breathing sleep LED during USB suspend
-NKRO_ENABLE ?= yes	    # USB Nkey Rollover
 CUSTOM_MATRIX ?= yes # Custom matrix file
 SERIAL_LINK_ENABLE = yes
-VISUALIZER_ENABLE ?= yes
+VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile
 LCD_ENABLE ?= yes
 LED_ENABLE ?= yes
 LCD_BACKLIGHT_ENABLE ?= yes
 
+ifndef QUANTUM_DIR
+	include ../../../Makefile
+endif
+
 ifdef LCD_ENABLE
-include drivers/gdisp/st7565ergodox/driver.mk
+include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
 endif
 
 ifdef LED_ENABLE
-include drivers/gdisp/IS31FL3731C/driver.mk
+include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
 endif
-
-ifndef QUANTUM_DIR
-	include ../../Makefile
-endif

+ 0 - 0
keyboards/infinity_ergodox/bootloader_defs.h → keyboards/ergodox/infinity/bootloader_defs.h


+ 0 - 0
keyboards/infinity_ergodox/chconf.h → keyboards/ergodox/infinity/chconf.h


+ 10 - 15
keyboards/infinity_ergodox/config.h → keyboards/ergodox/infinity/config.h

@@ -15,8 +15,10 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef INFINITY_ERGODOX_CONFIG_H
+#define INFINITY_ERGODOX_CONFIG_H
+
+#include "../config.h"
 
 
 /* USB Device descriptor parameter */
@@ -35,25 +37,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COLS 5
 #define LOCAL_MATRIX_ROWS 9
 
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+#define LED_BRIGHTNESS_LO       15
+#define LED_BRIGHTNESS_HI       255
+
 /* define if matrix has ghost */
 //#define MATRIX_HAS_GHOST
 
 /* Set 0 if debouncing isn't needed */
 #define DEBOUNCE    5
 
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-//#define LOCKING_RESYNC_ENABLE
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* Keymap for Infiity prototype */
-#define INFINITY_PROTOTYPE
-
 #define SERIAL_LINK_BAUD 562500
 #define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1)
 // The visualizer needs gfx thread priorities

+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h → keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/driver.mk → keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c → keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h → keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/driver.mk → keyboards/ergodox/infinity/drivers/gdisp/emulator_lcd/driver.mk


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/emulator_lcd/emulator_lcd.c → keyboards/ergodox/infinity/drivers/gdisp/emulator_lcd/emulator_lcd.c


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/emulator_led/driver.mk → keyboards/ergodox/infinity/drivers/gdisp/emulator_led/driver.mk


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/emulator_led/emulator_led.c → keyboards/ergodox/infinity/drivers/gdisp/emulator_led/emulator_led.c


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/board_ST7565.h → keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/driver.mk → keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c → keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/gdisp_lld_config.h → keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h


+ 0 - 0
keyboards/infinity_ergodox/drivers/gdisp/st7565ergodox/st7565.h → keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h


+ 0 - 0
keyboards/infinity_ergodox/gfxconf.h → keyboards/ergodox/infinity/gfxconf.h


+ 0 - 0
keyboards/infinity_ergodox/halconf.h → keyboards/ergodox/infinity/halconf.h


+ 58 - 2
keyboards/infinity_ergodox/infinity_ergodox.c → keyboards/ergodox/infinity/infinity.c

@@ -1,8 +1,10 @@
-#include "infinity_ergodox.h"
+#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);
@@ -36,7 +38,7 @@ void init_serial_link_hal(void) {
 // 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
-
+#ifdef VISUALIZER_ENABLE
 void lcd_backlight_hal_init(void) {
 	// Setup Backlight
     SIM->SCGC6 |= SIM_SCGC6_FTM0;
@@ -74,3 +76,57 @@ void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
 	CHANNEL_GREEN.CnV = g;
 	CHANNEL_BLUE.CnV = b;
 }
+#endif
+
+__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();
+}
+
+void matrix_scan_kb(void) {
+	// put your looping keyboard code here
+	// runs every cycle (a lot)
+
+	matrix_scan_user();
+}
+
+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){
+}
+
+void ergodox_right_led_on(uint8_t led){
+}
+
+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){
+}
+
+void ergodox_right_led_off(uint8_t led){
+}

+ 110 - 0
keyboards/ergodox/infinity/infinity.h

@@ -0,0 +1,110 @@
+#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);
+void ergodox_right_led_on(uint8_t led);
+
+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);
+void ergodox_right_led_off(uint8_t led);
+
+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){
+	if (n) {
+		ergodox_right_led_1_on();
+	} else {
+		ergodox_right_led_1_off();
+	}
+}
+
+inline void ergodox_right_led_2_set(uint8_t n){
+	if (n) {
+		ergodox_right_led_2_on();
+	} else {
+		ergodox_right_led_2_off();
+	}
+}
+
+inline void ergodox_right_led_3_set(uint8_t n){
+	if (n) {
+		ergodox_right_led_3_on();
+	} else {
+		ergodox_right_led_3_off();
+	}
+}
+
+inline void ergodox_right_led_set(uint8_t led, uint8_t n){
+	if (n) {
+		ergodox_right_led_on(led);
+	} else {
+		ergodox_right_led_off(led);
+	}
+}
+
+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_ */

+ 0 - 0
keyboards/infinity_ergodox/led.c → keyboards/ergodox/infinity/led.c


+ 3 - 0
keyboards/infinity_ergodox/matrix.c → keyboards/ergodox/infinity/matrix.c

@@ -63,6 +63,8 @@ void matrix_init(void)
 
     memset(matrix, 0, MATRIX_ROWS);
     memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS);
+
+    matrix_init_quantum();
 }
 
 uint8_t matrix_scan(void)
@@ -127,6 +129,7 @@ uint8_t matrix_scan(void)
         }
         debouncing = false;
     }
+    matrix_scan_quantum();
     return 1;
 }
 

+ 0 - 0
keyboards/infinity_ergodox/mcuconf.h → keyboards/ergodox/infinity/mcuconf.h


+ 0 - 0
keyboards/ergodox_ez/keymaps/ab/Makefile → keyboards/ergodox/keymaps/ab/Makefile


+ 0 - 0
keyboards/ergodox_ez/keymaps/ab/keyboard-layout.json → keyboards/ergodox/keymaps/ab/keyboard-layout.json


+ 0 - 0
keyboards/ergodox_ez/keymaps/ab/keyboard-layout.png → keyboards/ergodox/keymaps/ab/keyboard-layout.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/ab/keymap.c → keyboards/ergodox/keymaps/ab/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/ab/readme.md → keyboards/ergodox/keymaps/ab/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/adnw_k_o_y/keymap.c → keyboards/ergodox/keymaps/adnw_k_o_y/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 #include "keymap_german.h"

+ 0 - 0
keyboards/ergodox_ez/keymaps/adnw_k_o_y/readme.md → keyboards/ergodox/keymaps/adnw_k_o_y/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/alexjj/keymap.c → keyboards/ergodox/keymaps/alexjj/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/alexjj/readme.md → keyboards/ergodox/keymaps/alexjj/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/alexjj/rl-layout.jpg → keyboards/ergodox/keymaps/alexjj/rl-layout.jpg


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/COPYING → keyboards/ergodox/keymaps/algernon/COPYING


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/Makefile → keyboards/ergodox/keymaps/algernon/Makefile


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/config.h → keyboards/ergodox/keymaps/algernon/config.h


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/adore-layer.png → keyboards/ergodox/keymaps/algernon/images/adore-layer.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/base-layer.png → keyboards/ergodox/keymaps/algernon/images/base-layer.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/heatmap.png → keyboards/ergodox/keymaps/algernon/images/heatmap.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.png → keyboards/ergodox/keymaps/algernon/images/hun-layer.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/nav-n-media-layer.png → keyboards/ergodox/keymaps/algernon/images/nav-n-media-layer.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.png → keyboards/ergodox/keymaps/algernon/images/one-handed-layer.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.png → keyboards/ergodox/keymaps/algernon/images/steno-layer.png


+ 1217 - 1216
keyboards/ergodox_ez/keymaps/algernon/keymap.c → keyboards/ergodox/keymaps/algernon/keymap.c

@@ -1,1216 +1,1217 @@
-/*
- * algernon's ErgoDox EZ layout, please see the readme.md file!
- */
-
-#include "ergodox_ez.h"
-#include "led.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "mousekey.h"
-#include "timer.h"
-#include "keymap_plover.h"
-#include "eeconfig.h"
-
-/* Layers */
-
-enum {
-  BASE = 0,
-  ADORE,
-  ARRW,
-  APPSEL,
-  HUN,
-  NMDIA,
-  OHLFT,
-  OHRGT,
-  PLVR,
-};
-
-/* Macros */
-
-enum {
-  NONE = 0,
-  // Buttons that do extra stuff
-  A_GUI,
-  A_PLVR,
-  A_ESC,
-  A_MPN,
-
-  // Function / number keys
-  KF_1, // 1, F1
-  KF_2, // 2, F2
-  KF_3, // ...
-  KF_4,
-  KF_5,
-  KF_6,
-  KF_7,
-  KF_8,
-  KF_9,
-  KF_10,
-  KF_11, // =, F11
-
-  // Application select keys
-  APP_SLK, // Slack
-  APP_EMCS, // Emacs
-  APP_TERM, // Terminal
-  APP_CHRM, // Chrome
-  APP_MSIC, // Music
-
-  // Diagonal mouse movement
-  A_MUL,
-  A_MUR,
-  A_MDL,
-  A_MDR,
-
-  // Hungarian layer keys
-  HU_AA, // Á
-  HU_OO, // Ó
-  HU_EE, // É
-  HU_UU, // Ú
-  HU_II, // Í
-  HU_OE, // Ö
-  HU_UE, // Ü
-  HU_OEE, // Ő
-  HU_UEE, // Ű
-
-  // One-handed layout specials
-  OH_BSSPC,
-  OH_ENTSFT,
-  OH_BASE,
-  OH_LEFT,
-  OH_RIGHT,
-};
-
-/* Fn keys */
-
-enum {
-  F_BSE = 0,
-  F_HUN,
-  F_GUI,
-  F_SFT,
-  F_ALT,
-  F_CTRL
-};
-
-/* Custom keycodes */
-
-enum {
-  CT_CLN = 0,
-  CT_MNS,
-  CT_TA,
-};
-
-/* States & timers */
-
-uint16_t gui_timer = 0;
-
-uint16_t kf_timers[12];
-
-uint16_t oh_base_timer = 0;
-uint16_t oh_bsspc_timer = 0;
-uint16_t oh_entsft_timer = 0;
-
-#define OH_BLINK_INTERVAL 500
-
-uint8_t oh_left_blink = 0;
-uint16_t oh_left_blink_timer = 0;
-uint8_t oh_right_blink = 0;
-uint16_t oh_right_blink_timer = 0;
-
-#if KEYLOGGER_ENABLE
-bool log_enable = false;
-#endif
-
-bool time_travel = false;
-
-/* The Keymap */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Base Layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr |           | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10|       F11 |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * | Next/Prev |   '  |   ,  |   .  |   P  |   Y  |   [  |           |  ]   |   F  |   G  |   C  |   R  |  L   | \         |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * | Tab/ARROW |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |  S   | = / Arrow |
- * |-----------+------+------+------+------+------|   (  |           |  )   |------+------+------+------+------+-----------|
- * | Play/Pause|   /  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |  Z   |      Stop |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | LAlt | GUI  |           | MDIA | 1HND |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | Ctrl |           | LEAD |      |      |
- *                                  |Backsp|LShift|------|           |------| Enter| Space|
- *                                  |      |      | ESC  |           | HUN  |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[BASE] = KEYMAP(
-// left hand
- KC_GRV             ,M(KF_1)     ,M(KF_2)     ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
-,M(A_MPN)           ,KC_QUOT     ,KC_COMM     ,KC_DOT ,KC_P   ,KC_Y   ,KC_LBRC
-,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   ,KC_LPRN
-,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),M(A_ESC)
-
-                                                                // right hand
-                                                               ,KC_APP    ,M(KF_6),M(KF_7)   ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
-                                                               ,KC_RBRC   ,KC_F   ,KC_G      ,KC_C   ,KC_R    ,KC_L     ,KC_BSLS
-                                                                          ,KC_D   ,KC_H      ,KC_T   ,KC_N    ,KC_S     ,KC_EQL
-                                                               ,KC_RPRN   ,KC_B   ,KC_M      ,KC_W   ,KC_V    ,KC_Z     ,KC_MSTP
-                                                                                  ,TD(CT_MNS),KC_NO  ,KC_NO   ,KC_NO    ,KC_NO
-
-                                                               ,OSL(NMDIA),M(OH_LEFT)
-                                                               ,KC_LEAD
-                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
-    ),
-
-/* Keymap 1: Adore layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr |           | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10|       F11 |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * | Next/Prev |   ,  |   .  |   L  |   W  |   M  |   [  |           |  ]   |   F  |   H  |   C  |   P  |  Y   | \         |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * | Tab/Arrow |   A  |   O  |   E  |   I  |   U  |------|           |------|   D  |   R  |   T  |   N  |  S   | = / Arrow |
- * |-----------+------+------+------+------+------|   (  |           |  )   |------+------+------+------+------+-----------|
- * | Play/Pause|   /  |   Z  |   '  |   K  |   X  |      |           |      |   B  |   G  |   V  |   J  |  Q   |      Stop |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | LAlt | GUI  |           | MDIA | 1HND |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | Ctrl |           | LEAD |      |      |
- *                                  |Backsp|LShift|------|           |------| Enter| Space|
- *                                  |      |      | ESC  |           | HUN  |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[ADORE] = KEYMAP(
-// left hand
- KC_GRV             ,M(KF_1)     ,M(KF_2)     ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
-,M(A_MPN)           ,KC_COMM     ,KC_DOT      ,KC_L   ,KC_W   ,KC_M   ,KC_LBRC
-,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E   ,KC_I   ,KC_U
-,KC_MPLY            ,KC_SLSH     ,KC_Z        ,KC_QUOT,KC_K   ,KC_X   ,KC_LPRN
-,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),M(A_ESC)
-
-                                                                // right hand
-                                                               ,KC_APP    ,M(KF_6),M(KF_7)   ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
-                                                               ,KC_RBRC   ,KC_F   ,KC_H      ,KC_C   ,KC_P    ,KC_Y     ,KC_BSLS
-                                                                          ,KC_D   ,KC_R      ,KC_T   ,KC_N    ,KC_S     ,KC_EQL
-                                                               ,KC_RPRN   ,KC_B   ,KC_G      ,KC_V   ,KC_J    ,KC_Q     ,KC_MSTP
-                                                                                  ,TD(CT_MNS),KC_NO  ,KC_NO   ,KC_NO    ,KC_NO
-
-                                                               ,OSL(NMDIA),M(OH_LEFT)
-                                                               ,KC_LEAD
-                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
-    ),
-
-/* Keymap 2: Arrow layer
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      | Home |  Up  |  End |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |------|           |------|      | Left | Down | Rght |      |           |
- * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         |      |      |           |      |      |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      |      |           |      |      |      |
- *                                  |      |      |------|           |------| 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_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_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
- *
- * ,-----------------------------------------------------.           ,-----------------------------------------------------.
- * | MS Slow   |      |      |      |      |      |ScrLCK|           |ScrLCK|      |      |      |      |      |           |
- * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
- * | MS Normal |      | Home |  Up  | PgUp |      |      |           |Scroll|      |MsUpL | MsUp |MsUpR |      |PrintScreen|
- * |-----------+------+------+------+------+------|      |           |  Up  |------+------+------+------+------+-----------|
- * | MS Fast   |      | Left | Down | Right|      |------|           |------|      |MsLeft| MsDn |MsRght|      |           |
- * |-----------+------+------+------+------+------|      |           |Scroll|------+------+------+------+------+-----------|
- * | Play/Pause|      | End  | Down | PgDn |      |      |           | Down |      |MsDnL | MsDn |MsDnR |      |      Stop |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *      |      |      |      |      |      |                                       |      |      |      |      |      |
- *      `----------------------------------'                                       `----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | Mute | VlUp |           | BASE | MClk |
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | VlDn |           | Prev |Left  |Right |
- *                                  |  SPC | Enter|------|           |------| Click| Click|
- *                                  |      |      | ESC  |           | Next |      |      |
- *                                  `--------------------'           `--------------------'
- */
-[NMDIA] = KEYMAP(
-// left hand
- KC_ACL0    ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,LGUI(KC_L)
-,KC_ACL1    ,KC_NO       ,KC_HOME    ,KC_UP   ,KC_PGUP ,KC_NO   ,KC_NO
-,KC_ACL2    ,KC_NO       ,KC_LEFT    ,KC_DOWN ,KC_RIGHT,KC_NO
-,KC_MPLY    ,KC_NO       ,KC_END     ,KC_DOWN ,KC_PGDN ,KC_NO   ,KC_NO
-,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO
-                                                        ,KC_MUTE ,KC_VOLU
-                                                                 ,KC_VOLD
-                                                 ,KC_SPC,KC_ENTER,M(A_ESC)
-
-                                                                     // right hand
-                                                                     ,LGUI(KC_L),KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-                                                                     ,KC_WH_U   ,KC_NO   ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO    ,KC_PSCR
-                                                                                ,KC_NO   ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO    ,KC_NO
-                                                                     ,KC_WH_D   ,KC_NO   ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO    ,KC_MSTP
-                                                                                         ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
-
-                                                                     ,KC_TRNS   ,KC_MS_BTN3
-                                                                     ,KC_MPRV
-                                                                     ,KC_MNXT   ,KC_BTN1 ,KC_BTN2
-    ),
-
-/* Keymap 6: One-handed, left side
- *
- * ,-----------------------------------------------------.
- * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A  BSE|
- * |-----------+------+------+------+------+-------------|
- * |       Tab |   '  |   ,  |   .  |   P  |   Y  |   [  |
- * |-----------+------+------+------+------+------|      |
- * |         - |   A  |   O  |   E  |   U  |   I  |------|
- * |-----------+------+------+------+------+------|   (  |
- * | Play/Pause|   ;  |   Q  |   J  |   K  |   X  |      |
- * `-----------+------+------+------+------+-------------'
- *     |  Home | End  | Down |  Up  | ESC  |
- *     `-----------------------------------'
- *                                         ,-------------.
- *                                         | LAlt | GUI  |
- *                                  ,------|------|------|
- *                                  |BackSp|LShift| Ctrl |
- *                                  |      |      |------|
- *                                  |Space |Enter |OTHER |
- *                                  `--------------------'
- */
-[OHLFT] = KEYMAP(
-// left hand
- KC_GRV     ,M(KF_1)     ,M(KF_2)     ,M(KF_3)   ,M(KF_4)    ,M(KF_5) ,M(OH_BASE)
-,KC_TAB     ,KC_QUOT     ,KC_COMM     ,KC_DOT    ,KC_P       ,KC_Y    ,KC_LBRC
-,KC_MINS    ,KC_A        ,KC_O        ,KC_E      ,KC_U       ,KC_I
-,KC_MPLY    ,KC_SCLN     ,KC_Q        ,KC_J      ,KC_K       ,KC_X    ,KC_LPRN
-,KC_HOME    ,KC_END      ,KC_DOWN     ,KC_UP     ,M(A_ESC)
-
-                                                                ,KC_TRNS     ,KC_TRNS
-                                                                             ,KC_TRNS
-                                                    ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_RIGHT)
-
-                                                                // 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_NO   ,KC_NO
-                                                               ,KC_NO
-                                                               ,KC_NO   ,KC_NO  ,KC_NO
-    ),
-
-/* Keymap 7: One-handed, right side
- *
- * ,-----------------------------------------------------.
- * | =     F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A  BSE|
- * |-----------+------+------+------+------+-------------|
- * |         / |   L  |   R  |   C  |   G  |   F  |   ]  |
- * |-----------+------+------+------+------+------|      |
- * |         \ |   S  |   N  |   T  |   H  |   D  |------|
- * |-----------+------+------+------+------+------|   )  |
- * |      Stop |   Z  |   V  |   W  |   M  |   B  |      |
- * `-----------+------+------+------+------+-------------'
- *     |  PgDn | PgUp | Right| Left | ESC  |
- *     `-----------------------------------'
- *                                         ,-------------.
- *                                         | LAlt | GUI  |
- *                                  ,------|------|------|
- *                                  |BackSp|LShift| Ctrl |
- *                                  |      |      |------|
- *                                  |Space |Enter |OTHER |
- *                                  `--------------------'
- */
-[OHRGT] = KEYMAP(
-// left hand
- M(KF_11)   ,M(KF_10)    ,M(KF_9)     ,M(KF_8)   ,M(KF_7)    ,M(KF_6) ,M(OH_BASE)
-,KC_SLSH    ,KC_L        ,KC_R        ,KC_C      ,KC_G       ,KC_F    ,KC_RBRC
-,KC_BSLS    ,KC_S        ,KC_N        ,KC_T      ,KC_H       ,KC_D
-,KC_MSTP    ,KC_Z        ,KC_V        ,KC_W      ,KC_M       ,KC_B    ,KC_RPRN
-,KC_PGDN    ,KC_PGUP     ,KC_RGHT     ,KC_LEFT   ,M(A_ESC)
-
-                                                                ,KC_TRNS     ,KC_TRNS
-                                                                             ,KC_TRNS
-                                                    ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_LEFT)
-
-                                                                // 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_NO   ,KC_NO
-                                                               ,KC_NO
-                                                               ,KC_NO   ,KC_NO  ,KC_NO
-    ),
-
-/* Keymap 8: 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,   M(A_PLVR),
-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,   KC_NO,
-                                                 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)
-};
-
-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);
-  }
-}
-
-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;
-}
-
-void ang_handle_kf (keyrecord_t *record, uint8_t id)
-{
-  uint8_t code = id - KF_1;
-
-  if (record->event.pressed) {
-    kf_timers[code] = timer_read ();
-  } else {
-    uint8_t kc;
-
-    if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) {
-      // Long press
-      kc = KC_F1 + code;
-    } else {
-      if (id == KF_11)
-        kc = KC_EQL;
-      else
-        kc = KC_1 + code;
-    }
-
-    register_code (kc);
-    unregister_code (kc);
-  }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-      switch(id) {
-      case A_ESC:
-        if (record->event.pressed) {
-          if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
-            clear_oneshot_mods ();
-          } else {
-            register_code (KC_ESC);
-          }
-          layer_off (HUN);
-        } else {
-          unregister_code (KC_ESC);
-        }
-        break;
-
-      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);
-
-        /* Mouse movement */
-      case A_MUL:
-        if (record->event.pressed) {
-          mousekey_on(KC_MS_UP);
-          mousekey_on(KC_MS_LEFT);
-        } else {
-          mousekey_off(KC_MS_UP);
-          mousekey_off(KC_MS_LEFT);
-        }
-        mousekey_send();
-        break;
-
-      case A_MUR:
-        if (record->event.pressed) {
-          mousekey_on(KC_MS_UP);
-          mousekey_on(KC_MS_RIGHT);
-        } else {
-          mousekey_off(KC_MS_UP);
-          mousekey_off(KC_MS_RIGHT);
-        }
-        mousekey_send();
-        break;
-
-      case A_MDL:
-        if (record->event.pressed) {
-          mousekey_on(KC_MS_DOWN);
-          mousekey_on(KC_MS_LEFT);
-        } else {
-          mousekey_off(KC_MS_DOWN);
-          mousekey_off(KC_MS_LEFT);
-        }
-        mousekey_send();
-        break;
-
-      case A_MDR:
-        if (record->event.pressed) {
-          mousekey_on(KC_MS_DOWN);
-          mousekey_on(KC_MS_RIGHT);
-        } else {
-          mousekey_off(KC_MS_DOWN);
-          mousekey_off(KC_MS_RIGHT);
-        }
-        mousekey_send();
-        break;
-
-        /* Plover base */
-      case A_PLVR:
-        toggle_steno(record->event.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) {
-              register_code (KC_W);
-              layer_on (APPSEL);
-              set_oneshot_layer (APPSEL, ONESHOT_START);
-            }
-          } else {
-            record->tap.count = 0;
-          }
-          gui_timer = 0;
-        } else {
-          if (record->tap.count >= 2)
-            {
-              unregister_code (KC_W);
-              clear_oneshot_layer_state (ONESHOT_PRESSED);
-            }
-          gui_timer = timer_read ();
-        }
-        break;
-
-      case APP_SLK:
-        return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
-
-      case APP_EMCS:
-        return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
-
-      case APP_TERM:
-        return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END);
-
-      case APP_CHRM:
-        return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
-
-      case APP_MSIC:
-        return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
-
-        /* Function keys */
-      case KF_1 ... KF_11:
-        ang_handle_kf (record, id);
-        break;
-
-        /* 1HAND layout */
-      case OH_BASE:
-        if (record->event.pressed) {
-          oh_base_timer = timer_read ();
-        } else {
-          if (timer_elapsed (oh_base_timer) > TAPPING_TERM) {
-            layer_clear ();
-          } else {
-            return MACRO (T(APP), END);
-          }
-        }
-        break;
-
-      case OH_BSSPC:
-        if (record->event.pressed) {
-          oh_bsspc_timer = timer_read ();
-        } else {
-          if (timer_elapsed (oh_bsspc_timer) > TAPPING_TERM) {
-            return MACRO (T(BSPC), END);
-          } else {
-            return MACRO (T(SPC), END);
-          }
-        }
-        break;
-
-      case OH_ENTSFT:
-        if (record->event.pressed) {
-          oh_entsft_timer = timer_read ();
-        } else {
-          if (timer_elapsed (oh_entsft_timer) > TAPPING_TERM) {
-            if (keyboard_report->mods & MOD_BIT(KC_LSFT))
-              unregister_code (KC_LSFT);
-            else
-              register_code (KC_LSFT);
-          } else {
-            return MACRO (T(ENT), END);
-          }
-        }
-        break;
-
-      case OH_LEFT:
-        if (record->event.pressed) {
-          layer_move (OHLFT);
-          oh_left_blink = 1;
-          oh_left_blink_timer = timer_read ();
-          ergodox_right_led_1_on ();
-        }
-        break;
-
-      case OH_RIGHT:
-        if (record->event.pressed) {
-          layer_move (OHRGT);
-          oh_right_blink = 1;
-          oh_right_blink_timer = timer_read ();
-          ergodox_right_led_3_on ();
-        }
-        break;
-      }
-      return MACRO_NONE;
-};
-
-uint8_t is_adore = 0;
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-  uint8_t dl;
-
-  ergodox_led_all_on();
-  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
-    ergodox_led_all_set (i);
-    _delay_ms (5);
-  }
-  _delay_ms(1000);
-  for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
-    ergodox_led_all_set (i);
-    _delay_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();
-
-void ang_do_unicode (void) {
-  register_code (KC_RCTL);
-  register_code (KC_RSFT);
-  register_code (KC_U);
-  unregister_code (KC_U);
-  unregister_code (KC_RSFT);
-  unregister_code (KC_RCTL);
-  _delay_ms (100);
-}
-
-void ang_tap (uint16_t codes[]) {
-  for (int i = 0; codes[i] != 0; i++) {
-    register_code (codes[i]);
-    unregister_code (codes[i]);
-    _delay_ms (50);
-  }
-}
-
-#define TAP_ONCE(code) \
-  register_code (code); \
-  unregister_code (code)
-
-void ang_tap_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 if (state->count == 2) {
-    register_code (KC_SCLN);
-  }
-}
-
-void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    unregister_code (KC_SCLN);
-    unregister_code (KC_RSFT);
-  } else if (state->count == 2) {
-    unregister_code (KC_SCLN);
-  }
-}
-
-void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    register_code (KC_MINS);
-  } else if (state->count == 2) {
-    register_code (KC_RSFT);
-    register_code (KC_MINS);
-  }
-}
-
-void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) {
-  if (state->count == 1) {
-    unregister_code (KC_MINS);
-  } else if (state->count == 2) {
-    unregister_code (KC_RSFT);
-    unregister_code (KC_MINS);
-  }
-}
-
-typedef struct {
-  bool layer_toggle;
-  bool sticky;
-  bool finished_once;
-} td_ta_state_t;
-
-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->finished_once) {
-    return;
-  }
-
-  if (td_ta->sticky) {
-    td_ta->sticky = false;
-    td_ta->layer_toggle = false;
-    layer_off (ARRW);
-    return;
-  }
-
-  td_ta->finished_once = true;
-  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);
-  }
-}
-
-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);
-
-  td_ta->finished_once = false;
-}
-
-const qk_tap_dance_action_t tap_dance_actions[] = {
-   [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset)
-  ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset)
-  ,[CT_TA]  = {
-     .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
-     .user_data = (void *)&((td_ta_state_t) { false, false, false })
-   }
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-  uint8_t layer = biton32(layer_state);
-
-  if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
-    unregister_code (KC_LGUI);
-
-  if (layer != OHLFT)
-    oh_left_blink = 0;
-  if (layer != OHRGT)
-    oh_right_blink = 0;
-
-  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 == OHLFT || layer == OHRGT) {
-    ergodox_right_led_2_on();
-
-    if (oh_left_blink) {
-      if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL) {
-        if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) == 0)
-          ergodox_right_led_1_off ();
-      }
-      if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL * 2) {
-        ergodox_right_led_1_on ();
-        oh_left_blink_timer = timer_read ();
-      }
-    }
-
-    if (oh_right_blink) {
-      if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL) {
-        if ((keyboard_report->mods & MOD_BIT(KC_LCTRL)) == 0)
-          ergodox_right_led_3_off ();
-      }
-      if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL * 2) {
-        ergodox_right_led_3_on ();
-        oh_right_blink_timer = timer_read ();
-      }
-    }
-  }
-
-  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 != OHLFT && layer != NMDIA && layer != PLVR && layer != ADORE)
-      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 != OHRGT && layer != HUN && layer != OHLFT && 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 != OHRGT && layer != HUN && layer != PLVR && layer != ADORE)
-      ergodox_right_led_3_off ();
-  }
-
-  LEADER_DICTIONARY() {
-    leading = false;
-    leader_end ();
-
-#if KEYLOGGER_ENABLE
-    SEQ_ONE_KEY (KC_D) {
-      ergodox_led_all_on();
-      _delay_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) {
-      ang_do_unicode ();
-    }
-
-    SEQ_ONE_KEY (KC_V) {
-      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
-    }
-
-    SEQ_ONE_KEY (KC_L) {
-      /* λ */
-      ang_do_unicode ();
-
-      uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0};
-      ang_tap (codes);
-    }
-
-    SEQ_ONE_KEY (KC_Y) {
-      uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0};
-      ang_tap (codes);
-    }
-
-    SEQ_ONE_KEY (KC_S) {
-      ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
-      TAP_ONCE (KC_BSLS);
-      register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
-      ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC);
-      register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
-      TAP_ONCE (KC_SLSH);
-      ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
-    }
-
-    SEQ_TWO_KEYS (KC_W, KC_M) {
-      register_code (KC_LALT);
-      register_code (KC_F2);
-      unregister_code (KC_F2);
-      unregister_code (KC_LALT);
-
-      _delay_ms (1000);
-
-      uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0};
-      ang_tap (codes);
-      register_code (KC_LGUI);
-      register_code (KC_UP);
-      unregister_code (KC_UP);
-      unregister_code (KC_LGUI);
-    }
-
-    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 ();
-        _delay_ms (100);
-        ergodox_right_led_2_on ();
-        _delay_ms (100);
-        ergodox_right_led_3_off ();
-        ergodox_right_led_1_on ();
-        _delay_ms (100);
-        ergodox_right_led_2_off ();
-        _delay_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 ();
-        _delay_ms (100);
-        ergodox_right_led_2_on ();
-        _delay_ms (100);
-        ergodox_right_led_1_off ();
-        ergodox_right_led_3_on ();
-        _delay_ms (100);
-        ergodox_right_led_2_off ();
-        _delay_ms (100);
-        ergodox_right_led_3_off ();
-      }
-    }
-  }
-}
-
-static uint16_t last4[4];
-
-bool process_record_user (uint16_t keycode, keyrecord_t *record) {
-#if KEYLOGGER_ENABLE
-  uint8_t layer = biton32(layer_state);
-
-  if (log_enable && layer == BASE) {
-    xprintf ("KL: col=%d, row=%d\n", record->event.key.col,
-             record->event.key.row);
-  }
-#endif
-
-  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) {
-      uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0};
-      ang_tap (codes);
-      register_code (KC_RSFT);
-      register_code (KC_EQL);
-      unregister_code (KC_EQL);
-      unregister_code (KC_RSFT);
-
-      uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0};
-      ang_tap (codes2);
-
-      return false;
-    }
-  }
-
-  return true;
-}
+/*
+ * algernon's ErgoDox EZ layout, please see the readme.md file!
+ */
+
+#include "ergodox.h"
+#include "led.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "action_util.h"
+#include "mousekey.h"
+#include "timer.h"
+#include "keymap_plover.h"
+#include "eeconfig.h"
+#include "wait.h"
+
+/* Layers */
+
+enum {
+  BASE = 0,
+  ADORE,
+  ARRW,
+  APPSEL,
+  HUN,
+  NMDIA,
+  OHLFT,
+  OHRGT,
+  PLVR,
+};
+
+/* Macros */
+
+enum {
+  NONE = 0,
+  // Buttons that do extra stuff
+  A_GUI,
+  A_PLVR,
+  A_ESC,
+  A_MPN,
+
+  // Function / number keys
+  KF_1, // 1, F1
+  KF_2, // 2, F2
+  KF_3, // ...
+  KF_4,
+  KF_5,
+  KF_6,
+  KF_7,
+  KF_8,
+  KF_9,
+  KF_10,
+  KF_11, // =, F11
+
+  // Application select keys
+  APP_SLK, // Slack
+  APP_EMCS, // Emacs
+  APP_TERM, // Terminal
+  APP_CHRM, // Chrome
+  APP_MSIC, // Music
+
+  // Diagonal mouse movement
+  A_MUL,
+  A_MUR,
+  A_MDL,
+  A_MDR,
+
+  // Hungarian layer keys
+  HU_AA, // Á
+  HU_OO, // Ó
+  HU_EE, // É
+  HU_UU, // Ú
+  HU_II, // Í
+  HU_OE, // Ö
+  HU_UE, // Ü
+  HU_OEE, // Ő
+  HU_UEE, // Ű
+
+  // One-handed layout specials
+  OH_BSSPC,
+  OH_ENTSFT,
+  OH_BASE,
+  OH_LEFT,
+  OH_RIGHT,
+};
+
+/* Fn keys */
+
+enum {
+  F_BSE = 0,
+  F_HUN,
+  F_GUI,
+  F_SFT,
+  F_ALT,
+  F_CTRL
+};
+
+/* Custom keycodes */
+
+enum {
+  CT_CLN = 0,
+  CT_MNS,
+  CT_TA,
+};
+
+/* States & timers */
+
+uint16_t gui_timer = 0;
+
+uint16_t kf_timers[12];
+
+uint16_t oh_base_timer = 0;
+uint16_t oh_bsspc_timer = 0;
+uint16_t oh_entsft_timer = 0;
+
+#define OH_BLINK_INTERVAL 500
+
+uint8_t oh_left_blink = 0;
+uint16_t oh_left_blink_timer = 0;
+uint8_t oh_right_blink = 0;
+uint16_t oh_right_blink_timer = 0;
+
+#if KEYLOGGER_ENABLE
+bool log_enable = false;
+#endif
+
+bool time_travel = false;
+
+/* The Keymap */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Keymap 0: Base Layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr |           | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10|       F11 |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * | Next/Prev |   '  |   ,  |   .  |   P  |   Y  |   [  |           |  ]   |   F  |   G  |   C  |   R  |  L   | \         |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * | Tab/ARROW |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |  S   | = / Arrow |
+ * |-----------+------+------+------+------+------|   (  |           |  )   |------+------+------+------+------+-----------|
+ * | Play/Pause|   /  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |  Z   |      Stop |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | LAlt | GUI  |           | MDIA | 1HND |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | Ctrl |           | LEAD |      |      |
+ *                                  |Backsp|LShift|------|           |------| Enter| Space|
+ *                                  |      |      | ESC  |           | HUN  |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[BASE] = KEYMAP(
+// left hand
+ KC_GRV             ,M(KF_1)     ,M(KF_2)     ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
+,M(A_MPN)           ,KC_QUOT     ,KC_COMM     ,KC_DOT ,KC_P   ,KC_Y   ,KC_LBRC
+,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   ,KC_LPRN
+,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),M(A_ESC)
+
+                                                                // right hand
+                                                               ,KC_APP    ,M(KF_6),M(KF_7)   ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
+                                                               ,KC_RBRC   ,KC_F   ,KC_G      ,KC_C   ,KC_R    ,KC_L     ,KC_BSLS
+                                                                          ,KC_D   ,KC_H      ,KC_T   ,KC_N    ,KC_S     ,KC_EQL
+                                                               ,KC_RPRN   ,KC_B   ,KC_M      ,KC_W   ,KC_V    ,KC_Z     ,KC_MSTP
+                                                                                  ,TD(CT_MNS),KC_NO  ,KC_NO   ,KC_NO    ,KC_NO
+
+                                                               ,OSL(NMDIA),M(OH_LEFT)
+                                                               ,KC_LEAD
+                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
+    ),
+
+/* Keymap 1: Adore layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr |           | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10|       F11 |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * | Next/Prev |   ,  |   .  |   L  |   W  |   M  |   [  |           |  ]   |   F  |   H  |   C  |   P  |  Y   | \         |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * | Tab/Arrow |   A  |   O  |   E  |   I  |   U  |------|           |------|   D  |   R  |   T  |   N  |  S   | = / Arrow |
+ * |-----------+------+------+------+------+------|   (  |           |  )   |------+------+------+------+------+-----------|
+ * | Play/Pause|   /  |   Z  |   '  |   K  |   X  |      |           |      |   B  |   G  |   V  |   J  |  Q   |      Stop |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *     |       |      |      |      |   :  |                                       |   -  |      |      |      |       |
+ *     `-----------------------------------'                                       `-----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | LAlt | GUI  |           | MDIA | 1HND |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | Ctrl |           | LEAD |      |      |
+ *                                  |Backsp|LShift|------|           |------| Enter| Space|
+ *                                  |      |      | ESC  |           | HUN  |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[ADORE] = KEYMAP(
+// left hand
+ KC_GRV             ,M(KF_1)     ,M(KF_2)     ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
+,M(A_MPN)           ,KC_COMM     ,KC_DOT      ,KC_L   ,KC_W   ,KC_M   ,KC_LBRC
+,TD(CT_TA)          ,KC_A        ,KC_O        ,KC_E   ,KC_I   ,KC_U
+,KC_MPLY            ,KC_SLSH     ,KC_Z        ,KC_QUOT,KC_K   ,KC_X   ,KC_LPRN
+,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),M(A_ESC)
+
+                                                                // right hand
+                                                               ,KC_APP    ,M(KF_6),M(KF_7)   ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
+                                                               ,KC_RBRC   ,KC_F   ,KC_H      ,KC_C   ,KC_P    ,KC_Y     ,KC_BSLS
+                                                                          ,KC_D   ,KC_R      ,KC_T   ,KC_N    ,KC_S     ,KC_EQL
+                                                               ,KC_RPRN   ,KC_B   ,KC_G      ,KC_V   ,KC_J    ,KC_Q     ,KC_MSTP
+                                                                                  ,TD(CT_MNS),KC_NO  ,KC_NO   ,KC_NO    ,KC_NO
+
+                                                               ,OSL(NMDIA),M(OH_LEFT)
+                                                               ,KC_LEAD
+                                                               ,F(F_HUN)  ,KC_ENT ,KC_SPC
+    ),
+
+/* Keymap 2: Arrow layer
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      | Home |  Up  |  End |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |------|           |------|      | Left | Down | Rght |      |           |
+ * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      |           |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         |      |      |           |      |      |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      |      |           |      |      |      |
+ *                                  |      |      |------|           |------| 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_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_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
+ *
+ * ,-----------------------------------------------------.           ,-----------------------------------------------------.
+ * | MS Slow   |      |      |      |      |      |ScrLCK|           |ScrLCK|      |      |      |      |      |           |
+ * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
+ * | MS Normal |      | Home |  Up  | PgUp |      |      |           |Scroll|      |MsUpL | MsUp |MsUpR |      |PrintScreen|
+ * |-----------+------+------+------+------+------|      |           |  Up  |------+------+------+------+------+-----------|
+ * | MS Fast   |      | Left | Down | Right|      |------|           |------|      |MsLeft| MsDn |MsRght|      |           |
+ * |-----------+------+------+------+------+------|      |           |Scroll|------+------+------+------+------+-----------|
+ * | Play/Pause|      | End  | Down | PgDn |      |      |           | Down |      |MsDnL | MsDn |MsDnR |      |      Stop |
+ * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
+ *      |      |      |      |      |      |                                       |      |      |      |      |      |
+ *      `----------------------------------'                                       `----------------------------------'
+ *                                         ,-------------.           ,-------------.
+ *                                         | Mute | VlUp |           | BASE | MClk |
+ *                                  ,------|------|------|           |------+------+------.
+ *                                  |      |      | VlDn |           | Prev |Left  |Right |
+ *                                  |  SPC | Enter|------|           |------| Click| Click|
+ *                                  |      |      | ESC  |           | Next |      |      |
+ *                                  `--------------------'           `--------------------'
+ */
+[NMDIA] = KEYMAP(
+// left hand
+ KC_ACL0    ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO   ,KC_NO   ,LGUI(KC_L)
+,KC_ACL1    ,KC_NO       ,KC_HOME    ,KC_UP   ,KC_PGUP ,KC_NO   ,KC_NO
+,KC_ACL2    ,KC_NO       ,KC_LEFT    ,KC_DOWN ,KC_RIGHT,KC_NO
+,KC_MPLY    ,KC_NO       ,KC_END     ,KC_DOWN ,KC_PGDN ,KC_NO   ,KC_NO
+,KC_NO      ,KC_NO       ,KC_NO      ,KC_NO   ,KC_NO
+                                                        ,KC_MUTE ,KC_VOLU
+                                                                 ,KC_VOLD
+                                                 ,KC_SPC,KC_ENTER,M(A_ESC)
+
+                                                                     // right hand
+                                                                     ,LGUI(KC_L),KC_NO   ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+                                                                     ,KC_WH_U   ,KC_NO   ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO    ,KC_PSCR
+                                                                                ,KC_NO   ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO    ,KC_NO
+                                                                     ,KC_WH_D   ,KC_NO   ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO    ,KC_MSTP
+                                                                                         ,KC_NO   ,KC_NO   ,KC_NO   ,KC_NO    ,KC_NO
+
+                                                                     ,KC_TRNS   ,KC_MS_BTN3
+                                                                     ,KC_MPRV
+                                                                     ,KC_MNXT   ,KC_BTN1 ,KC_BTN2
+    ),
+
+/* Keymap 6: One-handed, left side
+ *
+ * ,-----------------------------------------------------.
+ * |        `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A  BSE|
+ * |-----------+------+------+------+------+-------------|
+ * |       Tab |   '  |   ,  |   .  |   P  |   Y  |   [  |
+ * |-----------+------+------+------+------+------|      |
+ * |         - |   A  |   O  |   E  |   U  |   I  |------|
+ * |-----------+------+------+------+------+------|   (  |
+ * | Play/Pause|   ;  |   Q  |   J  |   K  |   X  |      |
+ * `-----------+------+------+------+------+-------------'
+ *     |  Home | End  | Down |  Up  | ESC  |
+ *     `-----------------------------------'
+ *                                         ,-------------.
+ *                                         | LAlt | GUI  |
+ *                                  ,------|------|------|
+ *                                  |BackSp|LShift| Ctrl |
+ *                                  |      |      |------|
+ *                                  |Space |Enter |OTHER |
+ *                                  `--------------------'
+ */
+[OHLFT] = KEYMAP(
+// left hand
+ KC_GRV     ,M(KF_1)     ,M(KF_2)     ,M(KF_3)   ,M(KF_4)    ,M(KF_5) ,M(OH_BASE)
+,KC_TAB     ,KC_QUOT     ,KC_COMM     ,KC_DOT    ,KC_P       ,KC_Y    ,KC_LBRC
+,KC_MINS    ,KC_A        ,KC_O        ,KC_E      ,KC_U       ,KC_I
+,KC_MPLY    ,KC_SCLN     ,KC_Q        ,KC_J      ,KC_K       ,KC_X    ,KC_LPRN
+,KC_HOME    ,KC_END      ,KC_DOWN     ,KC_UP     ,M(A_ESC)
+
+                                                                ,KC_TRNS     ,KC_TRNS
+                                                                             ,KC_TRNS
+                                                    ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_RIGHT)
+
+                                                                // 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_NO   ,KC_NO
+                                                               ,KC_NO
+                                                               ,KC_NO   ,KC_NO  ,KC_NO
+    ),
+
+/* Keymap 7: One-handed, right side
+ *
+ * ,-----------------------------------------------------.
+ * | =     F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A  BSE|
+ * |-----------+------+------+------+------+-------------|
+ * |         / |   L  |   R  |   C  |   G  |   F  |   ]  |
+ * |-----------+------+------+------+------+------|      |
+ * |         \ |   S  |   N  |   T  |   H  |   D  |------|
+ * |-----------+------+------+------+------+------|   )  |
+ * |      Stop |   Z  |   V  |   W  |   M  |   B  |      |
+ * `-----------+------+------+------+------+-------------'
+ *     |  PgDn | PgUp | Right| Left | ESC  |
+ *     `-----------------------------------'
+ *                                         ,-------------.
+ *                                         | LAlt | GUI  |
+ *                                  ,------|------|------|
+ *                                  |BackSp|LShift| Ctrl |
+ *                                  |      |      |------|
+ *                                  |Space |Enter |OTHER |
+ *                                  `--------------------'
+ */
+[OHRGT] = KEYMAP(
+// left hand
+ M(KF_11)   ,M(KF_10)    ,M(KF_9)     ,M(KF_8)   ,M(KF_7)    ,M(KF_6) ,M(OH_BASE)
+,KC_SLSH    ,KC_L        ,KC_R        ,KC_C      ,KC_G       ,KC_F    ,KC_RBRC
+,KC_BSLS    ,KC_S        ,KC_N        ,KC_T      ,KC_H       ,KC_D
+,KC_MSTP    ,KC_Z        ,KC_V        ,KC_W      ,KC_M       ,KC_B    ,KC_RPRN
+,KC_PGDN    ,KC_PGUP     ,KC_RGHT     ,KC_LEFT   ,M(A_ESC)
+
+                                                                ,KC_TRNS     ,KC_TRNS
+                                                                             ,KC_TRNS
+                                                    ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_LEFT)
+
+                                                                // 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_NO   ,KC_NO
+                                                               ,KC_NO
+                                                               ,KC_NO   ,KC_NO  ,KC_NO
+    ),
+
+/* Keymap 8: 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,   M(A_PLVR),
+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,   KC_NO,
+                                                 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)
+};
+
+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);
+  }
+}
+
+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;
+}
+
+void ang_handle_kf (keyrecord_t *record, uint8_t id)
+{
+  uint8_t code = id - KF_1;
+
+  if (record->event.pressed) {
+    kf_timers[code] = timer_read ();
+  } else {
+    uint8_t kc;
+
+    if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) {
+      // Long press
+      kc = KC_F1 + code;
+    } else {
+      if (id == KF_11)
+        kc = KC_EQL;
+      else
+        kc = KC_1 + code;
+    }
+
+    register_code (kc);
+    unregister_code (kc);
+  }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+      case A_ESC:
+        if (record->event.pressed) {
+          if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
+            clear_oneshot_mods ();
+          } else {
+            register_code (KC_ESC);
+          }
+          layer_off (HUN);
+        } else {
+          unregister_code (KC_ESC);
+        }
+        break;
+
+      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);
+
+        /* Mouse movement */
+      case A_MUL:
+        if (record->event.pressed) {
+          mousekey_on(KC_MS_UP);
+          mousekey_on(KC_MS_LEFT);
+        } else {
+          mousekey_off(KC_MS_UP);
+          mousekey_off(KC_MS_LEFT);
+        }
+        mousekey_send();
+        break;
+
+      case A_MUR:
+        if (record->event.pressed) {
+          mousekey_on(KC_MS_UP);
+          mousekey_on(KC_MS_RIGHT);
+        } else {
+          mousekey_off(KC_MS_UP);
+          mousekey_off(KC_MS_RIGHT);
+        }
+        mousekey_send();
+        break;
+
+      case A_MDL:
+        if (record->event.pressed) {
+          mousekey_on(KC_MS_DOWN);
+          mousekey_on(KC_MS_LEFT);
+        } else {
+          mousekey_off(KC_MS_DOWN);
+          mousekey_off(KC_MS_LEFT);
+        }
+        mousekey_send();
+        break;
+
+      case A_MDR:
+        if (record->event.pressed) {
+          mousekey_on(KC_MS_DOWN);
+          mousekey_on(KC_MS_RIGHT);
+        } else {
+          mousekey_off(KC_MS_DOWN);
+          mousekey_off(KC_MS_RIGHT);
+        }
+        mousekey_send();
+        break;
+
+        /* Plover base */
+      case A_PLVR:
+        toggle_steno(record->event.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) {
+              register_code (KC_W);
+              layer_on (APPSEL);
+              set_oneshot_layer (APPSEL, ONESHOT_START);
+            }
+          } else {
+            record->tap.count = 0;
+          }
+          gui_timer = 0;
+        } else {
+          if (record->tap.count >= 2)
+            {
+              unregister_code (KC_W);
+              clear_oneshot_layer_state (ONESHOT_PRESSED);
+            }
+          gui_timer = timer_read ();
+        }
+        break;
+
+      case APP_SLK:
+        return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
+
+      case APP_EMCS:
+        return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
+
+      case APP_TERM:
+        return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END);
+
+      case APP_CHRM:
+        return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
+
+      case APP_MSIC:
+        return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
+
+        /* Function keys */
+      case KF_1 ... KF_11:
+        ang_handle_kf (record, id);
+        break;
+
+        /* 1HAND layout */
+      case OH_BASE:
+        if (record->event.pressed) {
+          oh_base_timer = timer_read ();
+        } else {
+          if (timer_elapsed (oh_base_timer) > TAPPING_TERM) {
+            layer_clear ();
+          } else {
+            return MACRO (T(APP), END);
+          }
+        }
+        break;
+
+      case OH_BSSPC:
+        if (record->event.pressed) {
+          oh_bsspc_timer = timer_read ();
+        } else {
+          if (timer_elapsed (oh_bsspc_timer) > TAPPING_TERM) {
+            return MACRO (T(BSPC), END);
+          } else {
+            return MACRO (T(SPC), END);
+          }
+        }
+        break;
+
+      case OH_ENTSFT:
+        if (record->event.pressed) {
+          oh_entsft_timer = timer_read ();
+        } else {
+          if (timer_elapsed (oh_entsft_timer) > TAPPING_TERM) {
+            if (keyboard_report->mods & MOD_BIT(KC_LSFT))
+              unregister_code (KC_LSFT);
+            else
+              register_code (KC_LSFT);
+          } else {
+            return MACRO (T(ENT), END);
+          }
+        }
+        break;
+
+      case OH_LEFT:
+        if (record->event.pressed) {
+          layer_move (OHLFT);
+          oh_left_blink = 1;
+          oh_left_blink_timer = timer_read ();
+          ergodox_right_led_1_on ();
+        }
+        break;
+
+      case OH_RIGHT:
+        if (record->event.pressed) {
+          layer_move (OHRGT);
+          oh_right_blink = 1;
+          oh_right_blink_timer = timer_read ();
+          ergodox_right_led_3_on ();
+        }
+        break;
+      }
+      return MACRO_NONE;
+};
+
+uint8_t is_adore = 0;
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+  uint8_t dl;
+
+  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();
+
+void ang_do_unicode (void) {
+  register_code (KC_RCTL);
+  register_code (KC_RSFT);
+  register_code (KC_U);
+  unregister_code (KC_U);
+  unregister_code (KC_RSFT);
+  unregister_code (KC_RCTL);
+  wait_ms (100);
+}
+
+void ang_tap (uint16_t codes[]) {
+  for (int i = 0; codes[i] != 0; i++) {
+    register_code (codes[i]);
+    unregister_code (codes[i]);
+    wait_ms (50);
+  }
+}
+
+#define TAP_ONCE(code) \
+  register_code (code); \
+  unregister_code (code)
+
+void ang_tap_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 if (state->count == 2) {
+    register_code (KC_SCLN);
+  }
+}
+
+void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    unregister_code (KC_SCLN);
+    unregister_code (KC_RSFT);
+  } else if (state->count == 2) {
+    unregister_code (KC_SCLN);
+  }
+}
+
+void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    register_code (KC_MINS);
+  } else if (state->count == 2) {
+    register_code (KC_RSFT);
+    register_code (KC_MINS);
+  }
+}
+
+void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count == 1) {
+    unregister_code (KC_MINS);
+  } else if (state->count == 2) {
+    unregister_code (KC_RSFT);
+    unregister_code (KC_MINS);
+  }
+}
+
+typedef struct {
+  bool layer_toggle;
+  bool sticky;
+  bool finished_once;
+} td_ta_state_t;
+
+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->finished_once) {
+    return;
+  }
+
+  if (td_ta->sticky) {
+    td_ta->sticky = false;
+    td_ta->layer_toggle = false;
+    layer_off (ARRW);
+    return;
+  }
+
+  td_ta->finished_once = true;
+  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);
+  }
+}
+
+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);
+
+  td_ta->finished_once = false;
+}
+
+const qk_tap_dance_action_t tap_dance_actions[] = {
+   [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset)
+  ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset)
+  ,[CT_TA]  = {
+     .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
+     .user_data = (void *)&((td_ta_state_t) { false, false, false })
+   }
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+
+  if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
+    unregister_code (KC_LGUI);
+
+  if (layer != OHLFT)
+    oh_left_blink = 0;
+  if (layer != OHRGT)
+    oh_right_blink = 0;
+
+  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 == OHLFT || layer == OHRGT) {
+    ergodox_right_led_2_on();
+
+    if (oh_left_blink) {
+      if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL) {
+        if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) == 0)
+          ergodox_right_led_1_off ();
+      }
+      if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL * 2) {
+        ergodox_right_led_1_on ();
+        oh_left_blink_timer = timer_read ();
+      }
+    }
+
+    if (oh_right_blink) {
+      if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL) {
+        if ((keyboard_report->mods & MOD_BIT(KC_LCTRL)) == 0)
+          ergodox_right_led_3_off ();
+      }
+      if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL * 2) {
+        ergodox_right_led_3_on ();
+        oh_right_blink_timer = timer_read ();
+      }
+    }
+  }
+
+  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 != OHLFT && layer != NMDIA && layer != PLVR && layer != ADORE)
+      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 != OHRGT && layer != HUN && layer != OHLFT && 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 != OHRGT && layer != HUN && layer != PLVR && layer != ADORE)
+      ergodox_right_led_3_off ();
+  }
+
+  LEADER_DICTIONARY() {
+    leading = false;
+    leader_end ();
+
+#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) {
+      ang_do_unicode ();
+    }
+
+    SEQ_ONE_KEY (KC_V) {
+      SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
+    }
+
+    SEQ_ONE_KEY (KC_L) {
+      /* λ */
+      ang_do_unicode ();
+
+      uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0};
+      ang_tap (codes);
+    }
+
+    SEQ_ONE_KEY (KC_Y) {
+      uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0};
+      ang_tap (codes);
+    }
+
+    SEQ_ONE_KEY (KC_S) {
+      ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
+      TAP_ONCE (KC_BSLS);
+      register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
+      ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC);
+      register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
+      TAP_ONCE (KC_SLSH);
+      ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
+    }
+
+    SEQ_TWO_KEYS (KC_W, KC_M) {
+      register_code (KC_LALT);
+      register_code (KC_F2);
+      unregister_code (KC_F2);
+      unregister_code (KC_LALT);
+
+      wait_ms (1000);
+
+      uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0};
+      ang_tap (codes);
+      register_code (KC_LGUI);
+      register_code (KC_UP);
+      unregister_code (KC_UP);
+      unregister_code (KC_LGUI);
+    }
+
+    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];
+
+bool process_record_user (uint16_t keycode, keyrecord_t *record) {
+#if KEYLOGGER_ENABLE
+  uint8_t layer = biton32(layer_state);
+
+  if (log_enable && layer == BASE) {
+    xprintf ("KL: col=%d, row=%d\n", record->event.key.col,
+             record->event.key.row);
+  }
+#endif
+
+  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) {
+      uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0};
+      ang_tap (codes);
+      register_code (KC_RSFT);
+      register_code (KC_EQL);
+      unregister_code (KC_EQL);
+      unregister_code (KC_RSFT);
+
+      uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0};
+      ang_tap (codes2);
+
+      return false;
+    }
+  }
+
+  return true;
+}

+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/readme.md → keyboards/ergodox/keymaps/algernon/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/tools/heatmap-adore-layout.json → keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/tools/heatmap-base-layout.json → keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/tools/log-to-heatmap.py → keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py


+ 0 - 0
keyboards/ergodox_ez/keymaps/algernon/tools/max-focused → keyboards/ergodox/keymaps/algernon/tools/max-focused


+ 1 - 1
keyboards/ergodox_ez/keymaps/andrew_osx/keymap.c → keyboards/ergodox/keymaps/andrew_osx/keymap.c

@@ -1,7 +1,7 @@
 // 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_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/bepo/bepo.png → keyboards/ergodox/keymaps/bepo/bepo.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/bepo/keymap.c → keyboards/ergodox/keymaps/bepo/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 #include "keymap_bepo.h"

+ 0 - 0
keyboards/ergodox_ez/keymaps/bepo/readme.md → keyboards/ergodox/keymaps/bepo/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/coderkun_neo2/Makefile → keyboards/ergodox/keymaps/coderkun_neo2/Makefile


+ 1 - 1
keyboards/ergodox_ez/keymaps/coderkun_neo2/keymap.c → keyboards/ergodox/keymaps/coderkun_neo2/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 #include "led.h"

+ 0 - 0
keyboards/ergodox_ez/keymaps/coderkun_neo2/readme.md → keyboards/ergodox/keymaps/coderkun_neo2/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/colemak/keymap.c → keyboards/ergodox/keymaps/colemak/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/colemak/readme.md → keyboards/ergodox/keymaps/colemak/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/colemak_osx_pc_no/keyboard-layout.png → keyboards/ergodox/keymaps/colemak_osx_pc_no/keyboard-layout.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/colemak_osx_pc_no/keymap.c → keyboards/ergodox/keymaps/colemak_osx_pc_no/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 #include "keymap_norwegian.h"

+ 0 - 0
keyboards/ergodox_ez/keymaps/colemak_osx_pc_no/readme.md → keyboards/ergodox/keymaps/colemak_osx_pc_no/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev.png → keyboards/ergodox/keymaps/csharp_dev/csharp_dev.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png → keyboards/ergodox/keymaps/csharp_dev/csharp_dev_legend.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/csharp_dev/keymap.c → keyboards/ergodox/keymaps/csharp_dev/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/csharp_dev/readme.md → keyboards/ergodox/keymaps/csharp_dev/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/dave/keymap.c → keyboards/ergodox/keymaps/dave/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/dave/readme.md → keyboards/ergodox/keymaps/dave/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/default/default.png → keyboards/ergodox/keymaps/default/default.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/default/default_highres.png → keyboards/ergodox/keymaps/default/default_highres.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/default/keymap.c → keyboards/ergodox/keymaps/default/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/default/readme.md → keyboards/ergodox/keymaps/default/readme.md


+ 0 - 0
keyboards/ergodox_ez/keymaps/default_osx/default_osx_highres.png → keyboards/ergodox/keymaps/default_osx/default_osx_highres.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/default_osx/keymap.c → keyboards/ergodox/keymaps/default_osx/keymap.c

@@ -1,7 +1,7 @@
 // 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_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/default_osx/readme.md → keyboards/ergodox/keymaps/default_osx/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/dragon788/keymap.c → keyboards/ergodox/keymaps/dragon788/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak/dvorak.png → keyboards/ergodox/keymaps/dvorak/dvorak.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/dvorak/keymap.c → keyboards/ergodox/keymaps/dvorak/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png → keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout0.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png → keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout1.png


+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png → keyboards/ergodox/keymaps/dvorak_intl_squisher/keyboard-layout2.png


+ 1 - 1
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c → keyboards/ergodox/keymaps/dvorak_intl_squisher/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/readme.md → keyboards/ergodox/keymaps/dvorak_intl_squisher/readme.md


+ 1 - 1
keyboards/ergodox_ez/keymaps/dvorak_spanish/keymap.c → keyboards/ergodox/keymaps/dvorak_spanish/keymap.c

@@ -1,4 +1,4 @@
-#include "ergodox_ez.h"
+#include "ergodox.h"
 #include "debug.h"
 #include "action_layer.h"
 

+ 0 - 0
keyboards/ergodox_ez/keymaps/dvorak_spanish/readme.md → keyboards/ergodox/keymaps/dvorak_spanish/readme.md


部分文件因为文件数量过多而无法显示