]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
init keymap
authorPavlos Vinieratos <pvinis@gmail.com>
Tue, 20 Sep 2016 09:38:45 +0000 (11:38 +0200)
committerPavlos Vinieratos <pvinis@gmail.com>
Tue, 11 Oct 2016 08:34:47 +0000 (10:34 +0200)
keyboards/ergodox/keymaps/pvinis/Makefile [new file with mode: 0644]
keyboards/ergodox/keymaps/pvinis/keymap.c [new file with mode: 0644]

diff --git a/keyboards/ergodox/keymaps/pvinis/Makefile b/keyboards/ergodox/keymaps/pvinis/Makefile
new file mode 100644 (file)
index 0000000..7ceb51c
--- /dev/null
@@ -0,0 +1,9 @@
+CONSOLE_ENABLE = no    # for debugging
+
+SLEEP_LED_ENABLE = no  # no led blinking while sleeping
+NKRO_ENABLE = yes      # disable for windows
+TAP_DANCE_ENABLE = yes # tap-tap-tap
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c
new file mode 100644 (file)
index 0000000..fce7877
--- /dev/null
@@ -0,0 +1,429 @@
+// pvinis' ergodox keymap
+
+#include "ergodox.h"
+#include "mousekey.h"
+
+// easier name for left ctrl-alt-gui
+#define ALLM(kc) LCAG(kc)
+
+// layers
+enum {
+  BASE = 0,
+  BEGIN,
+  QWERTY,
+  CARPALX,
+  SYSCTL,
+};
+
+// extra keys
+enum {
+  NONE = 0,
+
+  // mouse
+  MS_UL, // up   left
+  MS_UR, // up   right
+  MS_DL, // down left
+  MS_DR, // down right
+
+  // tap dance
+  TD_FLSH, // flash keyboard
+};
+
+// application selection
+// this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
+#define AP_SLCK ALLM(KC_S)
+#define AP_XCOD ALLM(KC_X)
+
+// keymaps
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* BASE
+ * the base of the keyboard.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |4x FLASH|      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |BEGIN |QWERTY|       |SYSCTL|      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |CARPAL|       |Slack |        |      |
+ *                                 |Backsp|LShift|------|       |------| Enter  |Space |
+ *                                 |      |      |SYSCTL|       |Xcode |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[BASE] = KEYMAP(
+ TD(TD_FLSH)    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                          ,TG(BEGIN)  ,TG(QWERTY)
+                                                                      ,TG(CARPALX)
+                                                  ,KC_BSPC  ,KC_LSFT  ,TG(SYSCTL)
+
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                                  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+
+   ,TG(SYSCTL)  ,KC_NO
+   ,AP_SLCK
+   ,AP_XCOD     ,KC_ENT  ,KC_SPC
+),
+
+/* BEGIN
+ * a beginner's keymap i currently use.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |   6  |           |   6  |   7  |   8  |   9  |   0  |   -  |   =    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   Q  |   W  |   E  |   R  |   T  |   [  |           |   ]  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |Esc/Ctrl|   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | Enter  |
+ * |--------+------+------+------+------+------|   (  |           |   )  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |   `  |  Cmd |      | Cmd  |                                       |      |      |      |   '  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[BEGIN] = KEYMAP(
+ KC_TRNS          ,KC_1    ,KC_2     ,KC_3     ,KC_4      ,KC_5    ,KC_6
+,KC_TAB           ,KC_Q    ,KC_W     ,KC_E     ,KC_R      ,KC_T    ,KC_LBRC
+,CTL_T(KC_ESC)    ,KC_A    ,KC_S     ,KC_D     ,KC_F      ,KC_G
+,KC_LSFT          ,KC_Z    ,KC_X     ,KC_C     ,KC_V      ,KC_B    ,KC_LPRN
+,KC_TRNS          ,KC_GRV  ,KC_LGUI  ,KC_LEFT  ,KC_RIGHT
+
+                                                                   ,KC_TRNS  ,KC_TRNS
+                                                                             ,KC_TRNS
+                                                         ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_6       ,KC_7  ,KC_8   ,KC_9     ,KC_0     ,KC_MINS    ,KC_EQL
+                ,KC_RBRC    ,KC_Y  ,KC_U   ,KC_I     ,KC_O     ,KC_P       ,KC_BSLS
+                            ,KC_H  ,KC_J   ,KC_K     ,KC_L     ,KC_SCLN    ,KC_ENT
+                ,KC_RPRN    ,KC_N  ,KC_M   ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_RSFT
+                                   ,KC_UP  ,KC_DOWN  ,KC_TRNS  ,KC_QUOT    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+/* QWERTY
+ * the default qwerty keymap. not really used, but i'll keep it here for now.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+[QWERTY] = KEYMAP(
+ KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
+,KC_TRNS    ,KC_Q     ,KC_W     ,KC_E     ,KC_R     ,KC_T    ,KC_TRNS
+,KC_TRNS    ,KC_A     ,KC_S     ,KC_D     ,KC_F     ,KC_G
+,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_B    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                             ,KC_TRNS  ,KC_TRNS
+                                                                       ,KC_TRNS
+                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
+                ,KC_TRNS    ,KC_Y  ,KC_U     ,KC_I     ,KC_O     ,KC_P       ,KC_TRNS
+                            ,KC_H  ,KC_J     ,KC_K     ,KC_L     ,KC_SCLN    ,KC_TRNS
+                ,KC_TRNS    ,KC_N  ,KC_M     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
+                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+/* CARPALX
+ * the keymap i would like to transition to.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |   1  |   2  |   3  |   4  |   5  |      |           | RIGHT|   6  |   7  |   8  |   9  |   0  |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   G  |   M  |   L  |   W  |      |           |  L1  |   Y  |   F  |   U  |   B  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   D  |   S  |   T  |   N  |   R  |------|           |------|   I  |   A  |   E  |   O  |   H  |        |
+ * |--------+------+------+------+------+------|      |           | Meh  |------+------+------+------+------+--------|
+ * |        |   Z  |   X  |   C  |   V  |   J  |      |           |      |   K  |   P  |   ,  |   .  |   /  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |  Up  |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[CARPALX] = KEYMAP(
+ KC_TRNS    ,KC_1     ,KC_2     ,KC_3     ,KC_4     ,KC_5    ,KC_TRNS
+,KC_TRNS    ,KC_Q     ,KC_G     ,KC_M     ,KC_L     ,KC_W    ,KC_TRNS
+,KC_TRNS    ,KC_D     ,KC_S     ,KC_T     ,KC_N     ,KC_R
+,KC_TRNS    ,KC_Z     ,KC_X     ,KC_C     ,KC_V     ,KC_J    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                             ,KC_TRNS  ,KC_TRNS
+                                                                       ,KC_TRNS
+                                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_6  ,KC_7     ,KC_8     ,KC_9     ,KC_0       ,KC_TRNS
+                ,KC_TRNS    ,KC_Y  ,KC_F     ,KC_U     ,KC_B     ,KC_SCLN    ,KC_TRNS
+                            ,KC_I  ,KC_A     ,KC_E     ,KC_O     ,KC_H       ,KC_TRNS
+                ,KC_TRNS    ,KC_K  ,KC_P     ,KC_COMM  ,KC_DOT   ,KC_SLSH    ,KC_TRNS
+                                   ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+
+
+/* SYSCTL
+ * a keymap to control my system.
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      | Mute |VolDn |VolUp |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |MsUpL | MsUp |MsUpR |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |MsLeft| MsDn |MsRght|      | Lock   |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |MsDnL | MsDn |      |      | Sleep  |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      | Power|
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |MidClk|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Left  |Right |
+ *                                 |      |      |------|       |------| Click| Click|
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+[SYSCTL] = KEYMAP(
+ KC_TRNS    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO      ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                      ,KC_NO  ,KC_NO
+                                                              ,KC_NO
+                                              ,KC_NO  ,KC_NO  ,KC_NO
+
+       /*,KC_POP*/,KC_NO    ,KC_NO  ,KC_NO  ,KC_MUTE  ,KC_VOLD  ,KC_VOLU    ,KC_NO
+      /*,KC_PTRN*/,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_NO
+                            ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,LCTL(LSFT(KC_PWR))
+                  ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_SLEP
+                                    ,KC_NO  ,KC_NO    ,KC_NO    ,KC_NO      ,KC_PWR
+
+          ,KC_NO  ,KC_NO
+          ,KC_NO
+          ,KC_NO  ,KC_NO  ,KC_NO
+),
+
+/* TEMPLATE
+ * keymap template with transparent and non-transparent keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      |      |       |      |        |      |
+ *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      |      |       |      |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+/*
+[TEMPLATE] = KEYMAP(
+ KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                                                                ,KC_TRNS  ,KC_TRNS
+                                                                          ,KC_TRNS
+                                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                            ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                ,KC_TRNS    ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+                                      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS  ,KC_TRNS    ,KC_TRNS
+
+      ,KC_TRNS  ,KC_TRNS
+      ,KC_TRNS
+      ,KC_TRNS  ,KC_TRNS  ,KC_TRNS
+),
+[TEMPLATE] = KEYMAP(
+ KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO
+
+                                                    ,KC_NO  ,KC_NO
+                                                            ,KC_NO
+                                            ,KC_NO  ,KC_NO  ,KC_NO
+
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                          ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                ,KC_NO    ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+                                  ,KC_NO  ,KC_NO  ,KC_NO  ,KC_NO    ,KC_NO
+
+        ,KC_NO  ,KC_NO
+        ,KC_NO
+        ,KC_NO  ,KC_NO  ,KC_NO
+),
+*/
+};
+
+// keyboard initialization
+void matrix_init_user() {
+  ergodox_led_all_on();
+  for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
+    ergodox_led_all_set(i);
+    _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();
+}
+
+// extra keys
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch (id) {
+
+    // mouse
+  case MS_UL:
+    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);
+    }
+    break;
+  case MS_UR:
+    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);
+    }
+    break;
+  case MS_DL:
+    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);
+    }
+    break;
+  case MS_DR:
+    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);
+    }
+    break;
+  }
+  return MACRO_NONE;
+}
+
+// tap dances
+
+// flash keyboard on 4x tap, with leds
+void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
+  switch (state->count) {
+  case 1:
+    ergodox_right_led_3_on();
+    break;
+  case 2:
+    ergodox_right_led_2_on();
+    break;
+  case 3:
+    ergodox_right_led_1_on();
+    break;
+  case 4:
+    ergodox_right_led_3_off();
+    _delay_ms(50);
+    ergodox_right_led_2_off();
+    _delay_ms(50);
+    ergodox_right_led_1_off();
+    break;
+  }
+}
+
+void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
+  if (state->count >= 4) {
+    reset_keyboard();
+    reset_tap_dance(state);
+  }
+}
+
+void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
+  ergodox_right_led_1_off();
+  _delay_ms(50);
+  ergodox_right_led_2_off();
+  _delay_ms(50);
+  ergodox_right_led_3_off();
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
+};