- #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
|