gordon.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #ifndef GORDON
  2. #define GORDON
  3. #include "quantum.h"
  4. #include "process_keycode/process_tap_dance.h"
  5. // Fillers to make layering more clear
  6. #define _______ KC_TRNS
  7. #define ________ KC_TRNS
  8. #define _________ KC_TRNS
  9. #define XXXXXXX KC_NO
  10. // KC codes that are too long
  11. #define DOLLAR KC_DOLLAR
  12. #define LSQUIGLY KC_LBRACKET
  13. #define RSQUIGLY KC_RBRACKET
  14. #define NUMLOCK KC_NUMLOCK
  15. #define CAPLOCK KC_CAPSLOCK
  16. #define BK_SLASH KC_BSLASH
  17. #define ASTERSK KC_KP_ASTERISK
  18. // Navigation
  19. #define SNAPLEFT LGUI(KC_LEFT)
  20. #define SNAPRGHT LGUI(KC_RIGHT)
  21. #define SNAPUP LGUI(KC_UP)
  22. #define SNAPDOWN LGUI(KC_DOWN)
  23. #define PREVTAB LCTL(LSFT(KC_TAB))
  24. #define NEXTTAB LCTL(KC_TAB)
  25. #define WORKRIGHT LCTL(LGUI(KC_RIGHT))
  26. #define WORKLEFT LCTL(LGUI(KC_LEFT))
  27. // KC/modifier hold
  28. #define CTRL_F CTL_T(KC_F)
  29. #define CTRL_J CTL_T(KC_J)
  30. #define CTRL_Z CTL_T(KC_Z)
  31. #define ALT_V ALT_T(KC_V)
  32. #define ALT_M ALT_T(KC_M)
  33. #define WIN_G GUI_T(KC_G)
  34. #define WIN_H GUI_T(KC_H)
  35. #define HYPER_X ALL_T(KC_X)
  36. #define HYPE_DOT ALL_T(KC_DOT)
  37. #define MEH_S MEH_T(KC_S)
  38. #define MEH_L MEH_T(KC_L)
  39. #define ALT_HOME ALT_T(KC_HOME)
  40. // KC/Layer Hold
  41. #define NAV_E LT(_NAV,KC_E)
  42. #define NUMPAD_D LT(_NUMPAD,KC_D)
  43. #define MOUSE_C LT(_MOUSE,KC_C)
  44. #define SYMB_BSP LT(_SYMBOLS,KC_BSPACE)
  45. #define COL_MOUS LT(_MOUSE,KC_SCOLON)
  46. #define SPAC_SYM LT(_SYMBOLS,KC_SPACE)
  47. // Double Modifier ONLY hold
  48. #define ALT_SHFT LSFT(KC_LALT)
  49. #define CTR_SHFT LSFT(KC_LCTL)
  50. // KC/Double modifier Hold
  51. #define CTR_SH_W MT(MOD_LCTL|MOD_LSFT,KC_W)
  52. #define CTR_AL_R MT(MOD_LCTL|MOD_LALT,KC_R)
  53. //MISC
  54. #define PRINTSCR KC_PSCREEN
  55. #define CALTDEL LCTL(LALT(KC_DEL))
  56. #define TSKMGR LCTL(LSFT(KC_ESC))
  57. typedef struct {
  58. bool is_press_action;
  59. int state;
  60. } xtap;
  61. enum {
  62. SINGLE_TAP = 1,
  63. SINGLE_HOLD = 2,
  64. DOUBLE_TAP = 3,
  65. DOUBLE_HOLD = 4,
  66. DOUBLE_SINGLE_TAP = 5, //send two single taps
  67. TRIPLE_TAP = 6,
  68. TRIPLE_HOLD = 7
  69. };
  70. enum gordon_layers
  71. {
  72. _QWERTY = 0,
  73. _SYMBOLS,
  74. _MOUSE,
  75. _NUMPAD,
  76. _NAV,
  77. _MACROS,
  78. _FUNCTION,
  79. _TEXTNAV
  80. };
  81. void register_hyper (void);
  82. void unregister_hyper (void);
  83. void register_ctrl_a (void);
  84. void unregister_ctrl_a (void);
  85. void register_alt_f7 (void);
  86. void unregister_alt_f7 (void);
  87. void register_shift_f6 (void);
  88. void unregister_shift_f6 (void);
  89. void register_ctrl_shift (void);
  90. void unregister_ctrl_shift (void);
  91. void register_alt_shift (void);
  92. void unregister_alt_shift (void);
  93. int cur_dance (qk_tap_dance_state_t *state);
  94. int hold_cur_dance (qk_tap_dance_state_t *state);
  95. void x_finished (qk_tap_dance_state_t *state, void *user_data);
  96. void x_reset (qk_tap_dance_state_t *state, void *user_data);
  97. void h_finished (qk_tap_dance_state_t *state, void *user_data);
  98. void h_reset (qk_tap_dance_state_t *state, void *user_data);
  99. void tab_finished (qk_tap_dance_state_t *state, void *user_data);
  100. void tab_reset (qk_tap_dance_state_t *state, void *user_data);
  101. void comma_finished (qk_tap_dance_state_t *state, void *user_data);
  102. void comma_reset (qk_tap_dance_state_t *state, void *user_data);
  103. void bt_finished (qk_tap_dance_state_t *state, void *user_data);
  104. void bt_reset (qk_tap_dance_state_t *state, void *user_data);
  105. // Macro Declarations
  106. enum {
  107. INFOQM,
  108. TIL_SLASH,
  109. DEREF,
  110. EQRIGHT,
  111. TILD3,
  112. TICK3,
  113. ALTTAB_START,
  114. ALTTAB_END
  115. };
  116. enum secret_strings {
  117. KC_SECRET_1 = SAFE_RANGE,
  118. KC_SECRET_2,
  119. KC_SECRET_3,
  120. KC_SECRET_4,
  121. KC_SECRET_5,
  122. };
  123. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt);
  124. #endif