aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/config.h1
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def1
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c119
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk2
4 files changed, 110 insertions, 13 deletions
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
index a60188ef9..d3fe5b814 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
@@ -24,3 +24,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
24 24
25#undef DEBOUNCE 25#undef DEBOUNCE
26#define DEBOUNCE 25 26#define DEBOUNCE 25
27
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def
index 239d351b7..d50d431c8 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def
@@ -3,4 +3,5 @@
3COMB(hjEnt, KC_ENT, KC_H, KC_J) 3COMB(hjEnt, KC_ENT, KC_H, KC_J)
4COMB(loDel, KC_DEL, KC_L, KC_O) 4COMB(loDel, KC_DEL, KC_L, KC_O)
5COMB(pscBspace, KC_BSPC, KC_P, KC_SCLN) 5COMB(pscBspace, KC_BSPC, KC_P, KC_SCLN)
6COMB(sdEsc, KC_ESC, KC_D, KC_F)
6COMB(fgEsc, KC_ESC, KC_F, KC_G) 7COMB(fgEsc, KC_ESC, KC_F, KC_G)
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
index de3bcf67a..e3b894481 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
@@ -24,15 +24,36 @@
24 24
25enum { 25enum {
26 _ALPHA, // default 26 _ALPHA, // default
27 _GAME, // gaming
27 _SPECIAL, // special characters 28 _SPECIAL, // special characters
28 _NUMBERS // numbers/function/motion 29 _NUMBERS // numbers/function/motion
29}; 30};
30 31
32typedef enum {
33 TD_NONE,
34 TD_UNKNOWN,
35 TD_SINGLE_TAP,
36 TD_DOUBLE_TAP,
37 TD_TRIPLE_TAP
38} td_state_t;
39
40typedef struct {
41 bool is_press_action;
42 td_state_t state;
43} td_tap_t;
44
45enum {
46 GAME
47};
48
49td_state_t cur_dance(qk_tap_dance_state_t *state);
50
51void ql_finished(qk_tap_dance_state_t *state, void *user_data);
52void ql_reset(qk_tap_dance_state_t *state, void *user_data);
53
31#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control 54#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control
32#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift 55#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift
33#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift 56#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift
34
35#define KC_ALT_ENT MT(MOD_LALT, KC_ENT) // Tap for Enter, hold for Alt (Option)
36#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer 57#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer
37#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer 58#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer
38 59
@@ -41,7 +62,7 @@ enum {
41 * ,-------------------------------. ,-------------------------------. 62 * ,-------------------------------. ,-------------------------------.
42 * | | | | | | | | | | | | 63 * | | | | | | | | | | | |
43 * |-------+-----+-----+-----+-----| |-----+-----+-----+-DEL-+-BSPC--| 64 * |-------+-----+-----+-----+-----| |-----+-----+-----+-DEL-+-BSPC--|
44 * | | | | ESC | | ENT | | | | 65 * | | | ESC ESC | | ENT | | | |
45 * |-------+-----+-----+-RMB-+-LMB-| |-----+-----+-----+-----+-------| 66 * |-------+-----+-----+-RMB-+-LMB-| |-----+-----+-----+-----+-------|
46 * | | | | | | | | | | | | 67 * | | | | | | | | | | | |
47 * `-------------------------------' `-------------------------------' 68 * `-------------------------------' `-------------------------------'
@@ -51,7 +72,7 @@ enum {
51 */ 72 */
52 73
53const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 74const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
54 /* Keymap 0: Alpha layer 75 /* Alpha layer
55 * 76 *
56 * ,-------------------------------. ,-------------------------------. 77 * ,-------------------------------. ,-------------------------------.
57 * | Q | W | E | R | T | | Y | U | I | O | P | 78 * | Q | W | E | R | T | | Y | U | I | O | P |
@@ -60,17 +81,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
60 * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| 81 * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
61 * | SHFT Z| X | C | V | B | | N | M | , | . |SHFT / | 82 * | SHFT Z| X | C | V | B | | N | M | , | . |SHFT / |
62 * `-------------------------------' `-------------------------------' 83 * `-------------------------------' `-------------------------------'
63 * .--------------------------. .----------------------. 84 * .----------------------. .----------------------.
64 * | META | ENT ALT | SPC SPE | | SPC NUM | TAB | SHFT | 85 * | META | ALT | SPC SPE | | SPC NUM | TAB | SHFT |
65 * '--------------------------' '----------------------' 86 * '----------------------' '----------------------'
66 */ 87 */
67 [_ALPHA] = LAYOUT_split_3x5_3( 88 [_ALPHA] = LAYOUT_split_3x5_3(
68 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 89 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
69 KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 90 KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
70 KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SFT_SL, 91 KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL,
71 KC_LGUI, KC_ALT_ENT, KC_SPE_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT), 92 KC_LGUI, KC_LALT, KC_SPE_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT),
72 93
73 /* Keymap 1: Special characters layer 94 /* Gaming layer
95 *
96 * ,-------------------------------. ,-------------------------------.
97 * | ~ | Q | W | E | R | | Y | U | I | O | P |
98 * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
99 * | CTRL | A | S | D | F | | H | J | K | L | ; |
100 * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
101 * | SHFT | Z | X | C | V | | N | M | , | . |SHFT / |
102 * `-------------------------------' `-------------------------------'
103 * .------------------. .----------------------.
104 * | META | ALT | SPC | | SPC NUM | TAB | SHFT |
105 * '------------------' '----------------------'
106 */
107 [_GAME] = LAYOUT_split_3x5_3(
108 KC_TILD, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P,
109 KC_LCTL , KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
110 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL,
111 KC_LGUI, KC_LALT, KC_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT),
112
113 /* Special characters layer
74 * 114 *
75 * ,-------------------------------. ,-------------------------------. 115 * ,-------------------------------. ,-------------------------------.
76 * | ! | @ | { | } | | | | ` | - | = | / | \ | 116 * | ! | @ | { | } | | | | ` | - | = | / | \ |
@@ -80,16 +120,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
80 * | % | ^ | [ | ] | | | & | ~ | + | * | | 120 * | % | ^ | [ | ] | | | & | ~ | + | * | |
81 * `-------------------------------' `-------------------------------' 121 * `-------------------------------' `-------------------------------'
82 * .-------------------. .-----------------. 122 * .-------------------. .-----------------.
83 * | | | | | | | | 123 * | | | | | | " | _ |
84 * '-------------------' '-----------------' 124 * '-------------------' '-----------------'
85 */ 125 */
86 [_SPECIAL] = LAYOUT_split_3x5_3( 126 [_SPECIAL] = LAYOUT_split_3x5_3(
87 KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_MINS, KC_EQL , KC_SLSH, KC_BSLS, 127 KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_MINS, KC_EQL , KC_SLSH, KC_BSLS,
88 KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT, 128 KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT,
89 KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TRNS, KC_AMPR, KC_TILD, KC_PLUS, KC_ASTR, KC_TRNS, 129 KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TRNS, KC_AMPR, KC_TILD, KC_PLUS, KC_ASTR, KC_TRNS,
90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 130 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_QUOTE), LSFT(KC_MINS)),
91 131
92 /* Keymap 2: Numbers/Function/Motion layer 132 /* Numbers/Function/Motion layer
93 * 133 *
94 * ,-------------------------------. ,-------------------------------. 134 * ,-------------------------------. ,-------------------------------.
95 * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | 135 * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
@@ -108,3 +148,56 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
108 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, 148 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS,
109 KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 149 KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
110}; 150};
151
152bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
153 switch (keycode) {
154 case KC_CTL_A:
155 return false;
156 default:
157 return true;
158 }
159}
160
161td_state_t cur_dance(qk_tap_dance_state_t *state) {
162 if (state->count == 1)
163 return TD_SINGLE_TAP;
164 if (state->count == 2)
165 return TD_DOUBLE_TAP;
166 else if (state->count == 3)
167 return TD_TRIPLE_TAP;
168 return TD_UNKNOWN;
169}
170
171static td_tap_t ql_tap_state = {
172 .is_press_action = true,
173 .state = TD_NONE
174};
175
176void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
177 ql_tap_state.state = cur_dance(state);
178 switch (ql_tap_state.state) {
179 case TD_SINGLE_TAP:
180 tap_code(KC_COMMA);
181 break;
182 case TD_DOUBLE_TAP:
183 tap_code(KC_COMMA);
184 tap_code(KC_COMMA);
185 break;
186 case TD_TRIPLE_TAP:
187 if (layer_state_is(_GAME))
188 layer_off(_GAME);
189 else
190 layer_on(_GAME);
191 break;
192 default:
193 break;
194 }
195}
196
197void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
198 ql_tap_state.state = TD_NONE;
199}
200
201qk_tap_dance_action_t tap_dance_actions[] = {
202 [GAME] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
203};
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk b/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk
index e882b8008..e4064d493 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk
@@ -15,3 +15,5 @@ VPATH += keyboards/gboards/
15ifeq ($(strip $(DEBUG_MATRIX)), yes) 15ifeq ($(strip $(DEBUG_MATRIX)), yes)
16 OPT_DEFS += -DDEBUG_MATRIX 16 OPT_DEFS += -DDEBUG_MATRIX
17endif 17endif
18
19TAP_DANCE_ENABLE = yes