5 #include "process_keycode/process_tap_dance.h"
8 // Fillers to make layering more clear
9 #define ________ KC_TRNS
10 #define _________ KC_TRNS
11 #define _XXXXXX_ KC_TRNS
13 // KC codes that are too long
14 #define DOLLAR KC_DOLLAR
15 #define LSQUIGLY KC_LBRACKET
16 #define RSQUIGLY KC_RBRACKET
17 #define NUMLOCK KC_NUMLOCK
18 #define CAPLOCK KC_CAPSLOCK
19 #define BK_SLASH KC_BSLASH
20 #define ASTERSK KC_KP_ASTERISK
23 #define SNAPLEFT LGUI(KC_LEFT)
24 #define SNAPRGHT LGUI(KC_RIGHT)
25 #define SNAPUP LGUI(KC_UP)
26 #define SNAPDOWN LGUI(KC_DOWN)
27 #define PREVTAB LCTL(LSFT(KC_TAB))
28 #define NEXTTAB LCTL(KC_TAB)
29 #define WORKRIGHT LCTL(LGUI(KC_RIGHT))
30 #define WORKLEFT LCTL(LGUI(KC_LEFT))
32 #define APP_1 LCTL(LGUI(KC_1))
33 #define APP_2 LCTL(LGUI(KC_2))
34 #define APP_3 LCTL(LGUI(KC_3))
35 #define APP_4 LCTL(LGUI(KC_4))
36 #define APP_5 LCTL(LGUI(KC_5))
37 #define APP_6 LCTL(LGUI(KC_6))
38 #define APP_7 LCTL(LGUI(KC_7))
39 #define APP_8 LCTL(LGUI(KC_8))
42 #define CTRL_F CTL_T(KC_F)
43 #define CTRL_J CTL_T(KC_J)
44 #define CTRL_Z CTL_T(KC_Z)
45 #define ALT_V ALT_T(KC_V)
46 #define ALT_M ALT_T(KC_M)
47 #define WIN_G GUI_T(KC_G)
48 #define WIN_H GUI_T(KC_H)
49 #define HYPER_X ALL_T(KC_X)
50 #define HYPE_DOT ALL_T(KC_DOT)
51 #define MEH_S MEH_T(KC_S)
52 #define MEH_L MEH_T(KC_L)
53 #define ALT_HOME ALT_T(KC_HOME)
57 #define NAV_E LT(_NAV,KC_E)
58 #define NUMPAD_D LT(_NUMPAD,KC_D)
59 #define MOUSE_C LT(_MOUSE,KC_C)
60 #define SYMB_BSP LT(_SYMBOLS,KC_BSPACE)
61 #define COL_MOUS LT(_MOUSE,KC_SCOLON)
62 #define SPAC_SYM LT(_SYMBOLS,KC_SPACE)
63 #define SPAC_TXT LT(_TEXTNAV,KC_SPACE)
65 #define APP_SW_I LT(_APPSWITCH,KC_I)
66 #define APP_SW_K LT(_APPSWITCH,KC_K)
68 // #define TLSLSH TIL_SLASH
69 // #define TILDA_3x TILD3
70 // #define _RESET_ UP_ENTER_RESET
73 // Double Modifier ONLY hold
74 #define ALT_SHFT LSFT(KC_LALT)
75 #define CTR_SHFT LSFT(KC_LCTL)
77 // KC/Double modifier Hold
78 #define CTR_SH_W MT(MOD_LCTL|MOD_LSFT,KC_W)
79 #define CTR_AL_R MT(MOD_LCTL|MOD_LALT,KC_R)
80 #define ALT_SH_R MT(MOD_LSFT|MOD_LALT,KC_R)
83 #define PRINTSCR KC_PSCREEN
84 #define CALTDEL LCTL(LALT(KC_DEL))
85 #define TSKMGR LCTL(LSFT(KC_ESC))
98 DOUBLE_SINGLE_TAP = 5, //send two single taps
109 REFRESH, //send R, or Control+R if double tapped.
111 XESC, //'quad function'. x, control, escape, alt
112 ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
114 F6F7, // Shift F6 or Alt F7
129 #ifdef TAP_DANCE_ENABLE
130 #define F1_F13 TD(F1F13)
131 #define F2_F14 TD(F2F14)
132 #define F5_F15 TD(F5F15)
133 #define F4_ALTF4 TD(ALTF4)
134 #define END_ESC TD(ENDESC)
135 #define Q_ESC TD(Q_ESCAPE)
136 #define END_HOME TD(ENDHOME)
137 #define SHF6_AF7 TD(F6F7)
138 #define F12_RUN TD(F12ETAPS)
139 #define COMMA_TD TD(COMMA)
140 #define CALC_COM TD(CALCCOMP)
141 #else //just to make things compile
145 #define F4_ALTF4 KC_1
147 #define END_HOME KC_1
148 #define SHF6_AF7 KC_1
150 #define COMMA_TD KC_1
151 #define CALC_COM KC_1
157 _SYMBOLS, // Programming and all other commonlye used symbols
158 _MOUSE, // Mouse movement and also a few macros
159 _NUMPAD, // For getting a numpad under the right hand, and a few helpful things under the left
160 _NAV, // Windows navigation. Windows snapping, changing workspaces, and ARROWS
161 _MACROS, // Non-text related Macros.
162 _FUNCTION, // Not sure what I had in mind for this one
163 _APPSWITCH, // For switching between apps using the `ctrl + Win + [num]` shortcut.
164 // This allows for toggling windows of the same app with one button.
165 // Example: Press and hold `I`, then tap `j` multiple times to cycle through all
166 // Intellij windows (and only Intellij). This requires the app to be pinned to the Windows bar
167 _ONESHOT, // A layer I use for shortcuts that require multiple modifiers and a button not on my home layer
168 // Example: If I need to hit `alt + shift + 5`
169 _TEXTNAV, // Navigate through text
170 _QWERTY_KIDS, // So my kids can do nothing but type. Could also be a `speed typing` layer with no LT or MTs
171 _STREET_FIGHTER, // For Street Fighter 5. Die 1000x Deaths!!!!
172 _DIRNAV, // For navigating to different directories.
173 _TEXT_MACROS // For text-manipulation macros. Passwords, saved strings, pre-formatting
178 void register_hyper (void);
179 void unregister_hyper (void);
181 void register_ctrl_a (void);
182 void unregister_ctrl_a (void);
184 void register_alt_f7 (void);
185 void unregister_alt_f7 (void);
187 void register_shift_f6 (void);
188 void unregister_shift_f6 (void);
190 void register_ctrl_shift (void);
191 void unregister_ctrl_shift (void);
193 void register_alt_shift (void);
194 void unregister_alt_shift (void);
196 int cur_dance (qk_tap_dance_state_t *state);
197 int hold_cur_dance (qk_tap_dance_state_t *state);
199 void x_finished (qk_tap_dance_state_t *state, void *user_data);
200 void x_reset (qk_tap_dance_state_t *state, void *user_data);
202 void h_finished (qk_tap_dance_state_t *state, void *user_data);
203 void h_reset (qk_tap_dance_state_t *state, void *user_data);
205 void tab_finished (qk_tap_dance_state_t *state, void *user_data);
206 void tab_reset (qk_tap_dance_state_t *state, void *user_data);
208 void comma_finished (qk_tap_dance_state_t *state, void *user_data);
209 void comma_reset (qk_tap_dance_state_t *state, void *user_data);
211 void bt_finished (qk_tap_dance_state_t *state, void *user_data);
212 void bt_reset (qk_tap_dance_state_t *state, void *user_data);
214 enum secret_strings {
215 KC_SECRET_1 = SAFE_RANGE,
220 END_SECRET_SAFE_RANGE
224 // Macro Declarations
226 INFOQM = END_SECRET_SAFE_RANGE,
245 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt);