aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lepa <const.lepa+github@gmail.com>2018-07-17 18:16:01 +0300
committerDrashna Jaelre <drashna@live.com>2018-07-17 08:16:01 -0700
commit85d2d4fee5c6801b5f492bedc55b54f57e75c594 (patch)
treec1c48fa446472ddfec6b62a32056dcad74256fed
parenta57c9648e9712208e816bcc5b412c53882d9d48f (diff)
downloadqmk_firmware-85d2d4fee5c6801b5f492bedc55b54f57e75c594.tar.gz
qmk_firmware-85d2d4fee5c6801b5f492bedc55b54f57e75c594.zip
Keymap: Change Satan layout lepa (rev 2) (#3427)
* Change Satan keymap lepa (rev 2) * Remove unused code from satan keymap lepa.
-rw-r--r--keyboards/satan/keymaps/lepa/keymap.c113
-rw-r--r--keyboards/satan/keymaps/lepa/readme.md11
2 files changed, 80 insertions, 44 deletions
diff --git a/keyboards/satan/keymaps/lepa/keymap.c b/keyboards/satan/keymaps/lepa/keymap.c
index 080068427..85fdb743d 100644
--- a/keyboards/satan/keymaps/lepa/keymap.c
+++ b/keyboards/satan/keymaps/lepa/keymap.c
@@ -1,29 +1,36 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2 2
3#define MY_LESC LT(1, KC_ESC) 3#define MY_ESC LT(1, KC_ESC)
4#define MY_RENT LT(1, KC_ENT) 4#define MY_ENT LT(1, KC_ENT)
5#define MY_LCA TD(TD_LCA) 5#define MY_APP LT(2, KC_APP)
6#define MY_RCA TD(TD_RCA) 6
7#define MY_LGA TD(TD_LGA) 7#define MY_LCA TD(TD_LCTL_ALT)
8#define MY_RGA TD(TD_RGA) 8#define MY_RCA TD(TD_RCTL_ALT)
9#define MY_APP TD(TD_APP_HYPR) 9#define MY_LGA TD(TD_LGUI_ALT)
10#define MY_RGA TD(TD_RGUI_ALT)
11#define MY_LCG TD(TD_LCTL_GUI)
12#define MY_RCG TD(TD_RCTL_GUI)
13#define MY_LSH TD(TD_LSFT_HPR)
14#define MY_RSH TD(TD_RSFT_HPR)
10 15
11enum { 16enum {
12 TD_LCA, 17 TD_LCTL_ALT,
13 TD_RCA, 18 TD_RCTL_ALT,
14 TD_LGA, 19 TD_LGUI_ALT,
15 TD_RGA, 20 TD_RGUI_ALT,
16 TD_APP_HYPR 21 TD_LCTL_GUI,
22 TD_RCTL_GUI,
23 TD_LSFT_HPR,
24 TD_RSFT_HPR
17}; 25};
18 26
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 LAYOUT_60_ansi( 28 LAYOUT_60_ansi(
22 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, 29 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, 30 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 MY_LESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MY_RENT, 31 MY_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MY_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 32 MY_LSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MY_RSH,
26 MY_LGA, KC_LALT, MY_LCA, KC_SPC, MY_RCA, KC_RALT, MY_APP, MY_RGA), 33 MY_LGA, MY_LCG, MY_LCA, KC_SPC, MY_RCA, MY_RCG, MY_APP, MY_RGA),
27 34
28 LAYOUT_60_ansi( 35 LAYOUT_60_ansi(
29 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, 36 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
@@ -31,6 +38,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, 38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
41
42 LAYOUT_60_ansi(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
34}; 48};
35 49
36enum { 50enum {
@@ -66,7 +80,8 @@ int cur_dance(qk_tap_dance_state_t *state) {
66 return UNKNOWN_TAP; 80 return UNKNOWN_TAP;
67} 81}
68 82
69#define my_dance_combo(N, K1, K2) \ 83#define my_dance_combo(N, K0, REGFN, UNREGFN) my_dance_combo_expanded(N, K0, REGFN, UNREGFN)
84#define my_dance_combo_expanded(N, K0, REGFN, UNREGFN) \
70static tap N ## _state = { \ 85static tap N ## _state = { \
71 .is_press_action = true, \ 86 .is_press_action = true, \
72 .state = 0 \ 87 .state = 0 \
@@ -75,45 +90,57 @@ static tap N ## _state = { \
75void N ## _finished(qk_tap_dance_state_t *state, void *user_data) { \ 90void N ## _finished(qk_tap_dance_state_t *state, void *user_data) { \
76 N ## _state.state = cur_dance(state); \ 91 N ## _state.state = cur_dance(state); \
77 switch (N ## _state.state) { \ 92 switch (N ## _state.state) { \
78 case SINGLE_TAP: \ 93 case SINGLE_TAP: case SINGLE_HOLD: \
79 case SINGLE_HOLD: \ 94 register_code(K0); \
80 register_code(K1); \
81 break; \ 95 break; \
82 case DOUBLE_TAP: \ 96 case DOUBLE_TAP: case DOUBLE_SINGLE_TAP: case DOUBLE_HOLD: \
83 case DOUBLE_SINGLE_TAP: \ 97 register_code(K0); \
84 case DOUBLE_HOLD: \ 98 REGFN; \
85 register_code(K1); \
86 register_code(K2); \
87 break; \ 99 break; \
88 } \ 100 } \
89} \ 101} \
90 \ 102 \
91void N ## _reset(qk_tap_dance_state_t *state, void *user_data) { \ 103void N ## _reset(qk_tap_dance_state_t *state, void *user_data) { \
92 switch (N ## _state.state) { \ 104 switch (N ## _state.state) { \
93 case SINGLE_TAP: \ 105 case SINGLE_TAP: case SINGLE_HOLD: \
94 case SINGLE_HOLD: \ 106 unregister_code(K0); \
95 unregister_code(K1); \
96 break; \ 107 break; \
97 case DOUBLE_TAP: \ 108 case DOUBLE_TAP: case DOUBLE_SINGLE_TAP: case DOUBLE_HOLD: \
98 case DOUBLE_SINGLE_TAP: \ 109 UNREGFN; \
99 case DOUBLE_HOLD: \ 110 unregister_code(K0); \
100 unregister_code(K2); \
101 unregister_code(K1); \
102 break; \ 111 break; \
103 } \ 112 } \
104 N ## _state.state = 0; \ 113 N ## _state.state = 0; \
105} 114}
106 115
107my_dance_combo(lca, KC_LCTL, KC_LALT) 116#define my_dance_reg_code_1(K1) register_code(K1)
108my_dance_combo(rca, KC_RCTL, KC_RALT) 117#define my_dance_unreg_code_1(K1) unregister_code(K1)
109my_dance_combo(lga, KC_LGUI, KC_LALT) 118#define my_dance_combo_1(N, K0, K1) \
110my_dance_combo(rga, KC_RGUI, KC_RALT) 119 my_dance_combo(N, K0, my_dance_reg_code_1(K1), my_dance_unreg_code_1(K1))
111 120
112qk_tap_dance_action_t tap_dance_actions[] = { 121#define my_dance_reg_code_3(K1, K2, K3) \
113 [TD_LCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lca_finished, lca_reset), 122 do { register_code(K1); register_code(K2); register_code(K3); } while (0)
114 [TD_RCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rca_finished, rca_reset), 123#define my_dance_unreg_code_3(K1, K2, K3) \
115 [TD_LGA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lga_finished, lga_reset), 124 do { unregister_code(K3); unregister_code(K2); unregister_code(K1); } while (0)
116 [TD_RGA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rga_finished, rga_reset), 125#define my_dance_combo_3(N, K0, K1, K2, K3) \
126 my_dance_combo(N, K0, my_dance_reg_code_3(K1, K2, K3), my_dance_unreg_code_3(K1, K2, K3))
117 127
118 [TD_APP_HYPR] = ACTION_TAP_DANCE_DOUBLE(KC_APP, KC_HYPR) 128my_dance_combo_1(lca, KC_LCTL, KC_LALT)
129my_dance_combo_1(rca, KC_RCTL, KC_RALT)
130my_dance_combo_1(lga, KC_LGUI, KC_LALT)
131my_dance_combo_1(rga, KC_RGUI, KC_RALT)
132my_dance_combo_1(lcg, KC_LCTL, KC_LGUI)
133my_dance_combo_1(rcg, KC_RCTL, KC_RGUI)
134my_dance_combo_3(lsh, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI)
135my_dance_combo_3(rsh, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI)
136
137qk_tap_dance_action_t tap_dance_actions[] = {
138 [TD_LCTL_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lca_finished, lca_reset),
139 [TD_RCTL_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rca_finished, rca_reset),
140 [TD_LGUI_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lga_finished, lga_reset),
141 [TD_RGUI_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rga_finished, rga_reset),
142 [TD_LCTL_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lcg_finished, lcg_reset),
143 [TD_RCTL_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rcg_finished, rcg_reset),
144 [TD_LSFT_HPR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lsh_finished, lsh_reset),
145 [TD_RSFT_HPR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rsh_finished, rsh_reset)
119}; 146};
diff --git a/keyboards/satan/keymaps/lepa/readme.md b/keyboards/satan/keymaps/lepa/readme.md
index 99ee135f0..a53693d03 100644
--- a/keyboards/satan/keymaps/lepa/readme.md
+++ b/keyboards/satan/keymaps/lepa/readme.md
@@ -1,4 +1,13 @@
1# Satan GH60 ANSI Layout that uses tap dance 1# Satan GH60 ANSI Layout that uses tap dance
2 2
3![Satan GH60 Image](https://i.imgur.com/9bKM2TM.png) 3![Satan GH60 Image](https://i.imgur.com/T5FX7Sn.png)
4
5Notes:
6- Enter and Esc keys activate layer Fn1 when held, and work as usual when tapped.
7- Menu key activates layer Fn2 when held, and works as usual when tapped.
8- For the next keys a first key is used when held, and a second one is used when tapped 2 times:
9 - Shift and Hyper;
10 - Win and Win+Alt;
11 - Ctrl and Ctrl+Alt;
12 - Alt and Win+Ctrl.
4 13