]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - layouts/community/ergodox/qwerty_code_friendly/keymap.c
ergodox qwerty_code_friendly: add macro keys (#1918)
[qmk_firmware.git] / layouts / community / ergodox / qwerty_code_friendly / keymap.c
index 520985204f8e3de82a8c94f21007baf983c2c1d4..a55a1e8d90fe35878cef5816935d21592955a099 100644 (file)
 // #define CFQ_USE_MOMENTARY_LAYER_KEYS
 // #define CFQ_USE_EXPEREMENTAL_LAYER
 
+// keep enabled for now
+#define CFQ_USE_DYNAMIC_MACRO
+
 #if !defined(CFQ_USER_KEY1)
-#define CFQ_USER_KEY1 KC_F13
+#define CFQ_USER_KEY1 KC_SPC
 #endif
 #if !defined(CFQ_USER_KEY2)
-#define CFQ_USER_KEY2 KC_APP
+#define CFQ_USER_KEY2 KC_ENT
+#endif
+#if !defined(CFQ_USER_KEY3)
+#define CFQ_USER_KEY3 CFQ_KC_FN3
+#endif
+#if !defined(CFQ_USER_KEY4)
+#define CFQ_USER_KEY4 KC_APP
 #endif
 
 #define BASE 0 // default layer
@@ -29,9 +38,16 @@ enum custom_keycodes {
   PLACEHOLDER = SAFE_RANGE, // can always be here
   EPRM,
   VRSN,
-  RGB_SLD
+  RGB_SLD,
+#ifdef CFQ_USE_DYNAMIC_MACRO
+  DYNAMIC_MACRO_RANGE,
+#endif
 };
 
+#ifdef CFQ_USE_DYNAMIC_MACRO
+#include "dynamic_macro.h"
+#endif
+
 // macros
 #ifdef CFQ_USE_EXPEREMENTAL_LAYER
 #define M_SPACES_1 2
@@ -77,13 +93,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |--------+------+------+------+------+------|   [  |           |  ]   |------+------+------+------+------+--------|
  * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | LCtl |Super | Alt  | USR2 |Space |                                       | Left | Down | Up   |Right | Del  |
+ *   | LCtl |Super | Alt  | USR4 |Space |                                       | Left | Down | Up   |Right | Del  |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
- *                                        | Ins  | ~L3  |       | Home | End  |
+ *                                        | Ins  | USR3 |       | Home | End  |
  *                                 ,------|------|------|       |------+------+------.
  *                                 |      |      | ~L2  |       | PgUp |      |      |
- *                                 |Space | USR1 |------|       |------|Enter |Space |
+ *                                 | USR1 | USR2 |------|       |------|Enter |Space |
  *                                 |      |      | ~L1  |       | PgDn |      |      |
  *                                 `--------------------'       `--------------------'
  */
@@ -95,10 +111,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KC_TAB,  KC_Q,    KC_W,    KC_E,          KC_R,   KC_T,    KC_LPRN,
   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_LBRC,
-  KC_LCTL, KC_LGUI, KC_LALT, CFQ_USER_KEY2, KC_SPC,
-                                                    KC_INS,        CFQ_KC_FN3,
+  KC_LCTL, KC_LGUI, KC_LALT, CFQ_USER_KEY4, KC_SPC,
+                                                    KC_INS,        CFQ_USER_KEY3,
                                                                    CFQ_KC_FN2,
-                                            KC_SPC, CFQ_USER_KEY1, CFQ_KC_FN1,
+                                     CFQ_USER_KEY1, CFQ_USER_KEY2, CFQ_KC_FN1,
   // right hand
   KC_RCBR,     KC_CIRC, KC_AMPR, KC_ASTR,KC_MINS, KC_EQL,    KC_BSPC,
   KC_RPRN,     KC_Y,    KC_U,    KC_I,   KC_O,    KC_P,      KC_BSLS,
@@ -127,10 +143,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *   |      |      |      |      |      |                                       |   0  |      |   .  |   +  |      |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,---------------.
- *                                        |      |      |       |      |        |
+ *                                        |Start1|Start2|       |      |        |
  *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|        |      |
+ *                                 |      |      | Stop |       |      |        |      |
+ *                                 |Play1 |Play2 |------|       |------|        |      |
  *                                 |      |      |      |       |      |        |      |
  *                                 `--------------------'       `----------------------'
  */
@@ -142,9 +158,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_ARROW_RMINUS),
   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_BRACKET_IN_ANG), M(M_BRACKET_IN_BRC),
   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+#ifdef CFQ_USE_DYNAMIC_MACRO
+                               DYN_REC_START1, DYN_REC_START2,
+                                               DYN_REC_STOP,
+                              DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_TRNS,
+#else
                                       KC_TRNS, KC_TRNS,
                                                KC_TRNS,
                              KC_TRNS, KC_TRNS, KC_TRNS,
+#endif
   // right hand
   M(M_BRACKET_OUT_CBR), KC_F6,                KC_F7,   KC_F8,   KC_F9,     KC_F10,         KC_TRNS,
   M(M_BRACKET_OUT_PRN), M(M_ARROW_LEQL),      KC_KP_7, KC_KP_8, KC_KP_9,   KC_KP_SLASH,    KC_F11,
@@ -201,13 +223,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Keymap 3: My own testing keys!
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        | Spc1 | Spc2 | Spc3 | Spc4 | Spc5 |      |           |      | Spc6 | Spc7 | Spc8 |      |      |        |
+ * |        |      |      |  {   |   }  |      |   }  |           |      |      |      |      |      |      |        |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
+ * |        |      |      |  (   |   )  |      |   )  |           |      | Spc7 | Spc8 |      |      |      |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |        |      |      |  [   |   ]  |      |------|           |------| Spc4 | Spc5 | Spc6 |      |      |        |
+ * |--------+------+------+------+------+------|   ]  |           |      |------+------+------+------+------+--------|
+ * |        |      |      |  <   |   >  |      |      |           |      | Spc1 | Spc2 | Spc3 |      |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  *   |      |      |      |      |      |                                       |      |      |      |      |      |
  *   `----------------------------------'                                       `----------------------------------'
@@ -220,23 +242,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 `--------------------'       `--------------------'
  */
 
-// EXPEREMENT
+// EXPERIMENT
 [EXPR] = LAYOUT_ergodox(
   // left hand
-  KC_TRNS, M(M_SPACES_1), M(M_SPACES_2), M(M_SPACES_3), M(M_SPACES_4), M(M_SPACES_5), KC_TRNS,
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                               KC_TRNS,
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                               KC_TRNS,
-  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                      KC_TRNS, KC_TRNS,
-                                               KC_TRNS,
-                             KC_TRNS, KC_TRNS, KC_TRNS,
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR,    KC_RCBR,    KC_TRNS, KC_RCBR,
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN,    KC_RPRN,    KC_TRNS, KC_RPRN,
+  KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC,    KC_RBRC,       KC_TRNS,
+  KC_TRNS, KC_TRNS, KC_TRNS, S(KC_COMM), S(KC_DOT),  KC_TRNS, KC_RBRC,
+  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, M(M_SPACES_6), M(M_SPACES_7), M(M_SPACES_8), KC_TRNS, KC_TRNS, KC_TRNS,
-  KC_TRNS, KC_TRNS,       KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,
-           KC_TRNS,       KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,
-  KC_TRNS, KC_TRNS,       KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,
-  KC_TRNS, KC_TRNS,       KC_TRNS,       KC_TRNS,       KC_TRNS,
+  KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,
+  KC_TRNS, KC_TRNS, M(M_SPACES_7), M(M_SPACES_8), KC_TRNS,       KC_TRNS, KC_TRNS,
+           KC_TRNS, M(M_SPACES_4), M(M_SPACES_5), M(M_SPACES_6), KC_TRNS, KC_TRNS,
+  KC_TRNS, KC_TRNS, M(M_SPACES_1), M(M_SPACES_2), M(M_SPACES_3), KC_TRNS, KC_TRNS,
+  KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,       KC_TRNS,
   KC_TRNS, KC_TRNS,
   KC_TRNS,
   KC_TRNS, KC_TRNS, KC_TRNS
@@ -314,6 +336,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 };
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef CFQ_USE_DYNAMIC_MACRO
+  if (!process_record_dynamic_macro(keycode, record)) {
+    return false;
+  }
+#endif
   switch (keycode) {
     // dynamically generate these.
     case EPRM: