1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
#ifndef GORDON
#define GORDON
#include "quantum.h"
#include "process_keycode/process_tap_dance.h"
// Fillers to make layering more clear
#define ________ KC_TRNS
#define _________ KC_TRNS
#define _XXXXXX_ KC_TRNS
// KC codes that are too long
#define DOLLAR KC_DOLLAR
#define LSQUIGLY KC_LBRACKET
#define RSQUIGLY KC_RBRACKET
#define NUMLOCK KC_NUMLOCK
#define CAPLOCK KC_CAPSLOCK
#define BK_SLASH KC_BSLASH
#define ASTERSK KC_KP_ASTERISK
// Navigation
#define SNAPLEFT LGUI(KC_LEFT)
#define SNAPRGHT LGUI(KC_RIGHT)
#define SNAPUP LGUI(KC_UP)
#define SNAPDOWN LGUI(KC_DOWN)
#define PREVTAB LCTL(LSFT(KC_TAB))
#define NEXTTAB LCTL(KC_TAB)
#define WORKRIGHT LCTL(LGUI(KC_RIGHT))
#define WORKLEFT LCTL(LGUI(KC_LEFT))
#define APP_1 LCTL(LGUI(KC_1))
#define APP_2 LCTL(LGUI(KC_2))
#define APP_3 LCTL(LGUI(KC_3))
#define APP_4 LCTL(LGUI(KC_4))
#define APP_5 LCTL(LGUI(KC_5))
#define APP_6 LCTL(LGUI(KC_6))
#define APP_7 LCTL(LGUI(KC_7))
#define APP_8 LCTL(LGUI(KC_8))
// KC/modifier hold
#define CTRL_F CTL_T(KC_F)
#define CTRL_J CTL_T(KC_J)
#define CTRL_Z CTL_T(KC_Z)
#define ALT_V ALT_T(KC_V)
#define ALT_M ALT_T(KC_M)
#define WIN_G GUI_T(KC_G)
#define WIN_H GUI_T(KC_H)
#define HYPER_X ALL_T(KC_X)
#define HYPE_DOT ALL_T(KC_DOT)
#define MEH_S MEH_T(KC_S)
#define MEH_L MEH_T(KC_L)
#define ALT_HOME ALT_T(KC_HOME)
// KC/Layer Hold
#define NAV_E LT(_NAV,KC_E)
#define NUMPAD_D LT(_NUMPAD,KC_D)
#define MOUSE_C LT(_MOUSE,KC_C)
#define SYMB_BSP LT(_SYMBOLS,KC_BSPACE)
#define COL_MOUS LT(_MOUSE,KC_SCOLON)
#define SPAC_SYM LT(_SYMBOLS,KC_SPACE)
#define SPAC_TXT LT(_TEXTNAV,KC_SPACE)
#define APP_SW_I LT(_APPSWITCH,KC_I)
#define APP_SW_K LT(_APPSWITCH,KC_K)
// #define TLSLSH TIL_SLASH
// #define TILDA_3x TILD3
// #define _RESET_ UP_ENTER_RESET
// Double Modifier ONLY hold
#define ALT_SHFT LSFT(KC_LALT)
#define CTR_SHFT LSFT(KC_LCTL)
// KC/Double modifier Hold
#define CTR_SH_W MT(MOD_LCTL|MOD_LSFT,KC_W)
#define CTR_AL_R MT(MOD_LCTL|MOD_LALT,KC_R)
#define ALT_SH_R MT(MOD_LSFT|MOD_LALT,KC_R)
//MISC
#define PRINTSCR KC_PSCREEN
#define CALTDEL LCTL(LALT(KC_DEL))
#define TSKMGR LCTL(LSFT(KC_ESC))
typedef struct {
bool is_press_action;
int state;
} xtap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, //send two single taps
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7
};
//Tap dance enums
enum
{
F12TAP = 0,
F12ETAPS,
CALCCOMP,
REFRESH, //send R, or Control+R if double tapped.
ENDESC,
XESC, //'quad function'. x, control, escape, alt
ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
PRLOCK,
F6F7, // Shift F6 or Alt F7
TABCOMBO,
FCTRL,
F3D,
ALTF4,
COMMA,
AT,
HTAB,
F1F13,
F2F14,
F5F15,
ENDHOME,
Q_ESCAPE
};
#ifdef TAP_DANCE_ENABLE
#define F1_F13 TD(F1F13)
#define F2_F14 TD(F2F14)
#define F5_F15 TD(F5F15)
#define F4_ALTF4 TD(ALTF4)
#define END_ESC TD(ENDESC)
#define Q_ESC TD(Q_ESCAPE)
#define END_HOME TD(ENDHOME)
#define SHF6_AF7 TD(F6F7)
#define F12_RUN TD(F12ETAPS)
#define COMMA_TD TD(COMMA)
#define CALC_COM TD(CALCCOMP)
#else //just to make things compile
#define F1_F13 KC_1
#define F2_F14 KC_1
#define F5_F15 KC_1
#define F4_ALTF4 KC_1
#define END_ESC KC_1
#define END_HOME KC_1
#define SHF6_AF7 KC_1
#define F12_RUN KC_1
#define COMMA_TD KC_1
#define CALC_COM KC_1
#endif
enum gordon_layers
{
_QWERTY = 0,
_SYMBOLS, // Programming and all other commonlye used symbols
_MOUSE, // Mouse movement and also a few macros
_NUMPAD, // For getting a numpad under the right hand, and a few helpful things under the left
_NAV, // Windows navigation. Windows snapping, changing workspaces, and ARROWS
_MACROS, // Non-text related Macros.
_FUNCTION, // Not sure what I had in mind for this one
_APPSWITCH, // For switching between apps using the `ctrl + Win + [num]` shortcut.
// This allows for toggling windows of the same app with one button.
// Example: Press and hold `I`, then tap `j` multiple times to cycle through all
// Intellij windows (and only Intellij). This requires the app to be pinned to the Windows bar
_ONESHOT, // A layer I use for shortcuts that require multiple modifiers and a button not on my home layer
// Example: If I need to hit `alt + shift + 5`
_TEXTNAV, // Navigate through text
_QWERTY_KIDS, // So my kids can do nothing but type. Could also be a `speed typing` layer with no LT or MTs
_STREET_FIGHTER, // For Street Fighter 5. Die 1000x Deaths!!!!
_DIRNAV, // For navigating to different directories.
_TEXT_MACROS // For text-manipulation macros. Passwords, saved strings, pre-formatting
};
void register_hyper (void);
void unregister_hyper (void);
void register_ctrl_a (void);
void unregister_ctrl_a (void);
void register_alt_f7 (void);
void unregister_alt_f7 (void);
void register_shift_f6 (void);
void unregister_shift_f6 (void);
void register_ctrl_shift (void);
void unregister_ctrl_shift (void);
void register_alt_shift (void);
void unregister_alt_shift (void);
int cur_dance (qk_tap_dance_state_t *state);
int hold_cur_dance (qk_tap_dance_state_t *state);
void x_finished (qk_tap_dance_state_t *state, void *user_data);
void x_reset (qk_tap_dance_state_t *state, void *user_data);
void h_finished (qk_tap_dance_state_t *state, void *user_data);
void h_reset (qk_tap_dance_state_t *state, void *user_data);
void tab_finished (qk_tap_dance_state_t *state, void *user_data);
void tab_reset (qk_tap_dance_state_t *state, void *user_data);
void comma_finished (qk_tap_dance_state_t *state, void *user_data);
void comma_reset (qk_tap_dance_state_t *state, void *user_data);
void bt_finished (qk_tap_dance_state_t *state, void *user_data);
void bt_reset (qk_tap_dance_state_t *state, void *user_data);
enum secret_strings {
KC_SECRET_1 = SAFE_RANGE,
KC_SECRET_2,
KC_SECRET_3,
KC_SECRET_4,
KC_SECRET_5,
END_SECRET_SAFE_RANGE
};
// Macro Declarations
enum {
INFOQM = END_SECRET_SAFE_RANGE,
MODRESET,
TIL_SLASH,
DEREF,
EQRIGHT,
TILD3,
TICK3,
SPRK_TCK,
ALTTAB_START,
ALTTAB_END,
UP_ENTER_RESET,
DBMS_OUT,
DIE_1000X_RIGHT,
DIE_1000X_LEFT,
ID_MAN_IP
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt);
#endif
|