You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

183 lines
6.0 KiB

  1. /* Copyright 2020 Joseph Wasson
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. #include QMK_KEYBOARD_H
  18. #include "tapdance/tapdance.h"
  19. #include "macros.h"
  20. enum userspace_custom_keycodes {
  21. KC_MAKE = SAFE_RANGE, // can always be here
  22. DFAULTS,
  23. TOGGLE_BACKLIGHT,
  24. EFFECT,
  25. EFFECT_END = EFFECT + 20
  26. };
  27. #ifndef RESET_LAYER
  28. #define RESET_LAYER 15
  29. #endif
  30. enum layers {
  31. _BASE = 0,
  32. _WORKMAN,
  33. _NORMAN,
  34. _DVORAK,
  35. _COLMAK,
  36. _MALTROFF,
  37. _NORTRON,
  38. _GAME,
  39. _NAV,
  40. _NUM,
  41. _ADJUST,
  42. _RESET = RESET_LAYER,
  43. };
  44. #ifdef VISUALIZER_ENABLE
  45. extern const char layer_names[][16];
  46. #endif
  47. #define MO_NAV MO(_NAV)
  48. #define MO_ADJ TD(TD_FUNCTION)
  49. #define MO_RST MO(_RESET)
  50. #define TG_ADJ TG(_ADJUST)
  51. #define TG_NUM TG(_NUM)
  52. #ifdef ENABLE_GAME_LAYER
  53. #define TG_GAME TG(_GAME)
  54. #else
  55. #define TG_GAME KC_NO
  56. #endif
  57. #define LY_QWER DF(_BASE)
  58. #define LY_WORK DF(_WORKMAN)
  59. #define LY_NRMN DF(_NORMAN)
  60. #define LY_DVRK DF(_DVORAK)
  61. #define LY_CLMK DF(_COLMAK)
  62. #if SPACE_COUNT >= 2
  63. #define LY_MALT DF(_MALTROFF)
  64. #define LY_NTRN DF(_NORTRON)
  65. #else
  66. #define LY_MALT KC_NO
  67. #define LY_NTRN KC_NO
  68. #endif
  69. #define TG_NKRO MAGIC_TOGGLE_NKRO
  70. #define KC_PTT KC_F24
  71. #define MS_MID KC_MS_BTN3
  72. #define FX(x) (EFFECT + x)
  73. #define CTL_ESC CTL_T(KC_ESC)
  74. #define US_ENT RCTL_T(KC_ENT)
  75. #define US_MINS RCTL_T(KC_QUOT)
  76. #define US_BSLS LCA_T(KC_BSLS)
  77. #define US_SCLN TD(TD_SEMICOLON)
  78. #define US_GRV TD(TD_GRAVE)
  79. #define US_TAB C_S_T(KC_TAB)
  80. #define SH_LBRC LSFT_T(KC_LBRC)
  81. #define SH_RBRC RSFT_T(KC_RBRC)
  82. #define US_LOCK TD(TD_LOCK)
  83. #define MLT_E LT(_NUM, KC_E)
  84. #ifndef SWAP_HANDS_ENABLE
  85. #define SH_T
  86. #endif
  87. #define KC_SPC1 LT(_NAV,KC_SPC)
  88. #define KC_SPC2 LT(_NUM,KC_ENT)
  89. #define KC_SPC3 SH_T(KC_BSPC)
  90. #define NV_SPC1 KC_SPC
  91. #define NV_SPC2 KC_ENT
  92. #define NV_SPC3 KC_SPC
  93. #define NM_SPC1 KC_0
  94. #define NM_SPC2 XXXXXXX
  95. #define NM_SPC3 KC_SPC
  96. #ifndef ZEAL_RGB
  97. #define BR_INC KC_NO
  98. #define BR_DEC KC_NO
  99. #define EF_INC KC_NO
  100. #define EF_DEC KC_NO
  101. #define ES_INC KC_NO
  102. #define ES_DEC KC_NO
  103. #define H1_INC KC_NO
  104. #define H1_DEC KC_NO
  105. #define S1_INC KC_NO
  106. #define S1_DEC KC_NO
  107. #define H2_INC KC_NO
  108. #define H2_DEC KC_NO
  109. #define S2_INC KC_NO
  110. #define S2_DEC KC_NO
  111. #define FN_MO13 KC_NO
  112. #define FN_MO2 KC_NO
  113. #endif
  114. #ifndef TEMPLATE
  115. #define _X_ KC_NO
  116. #define TEMPLATE( \
  117. KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \
  118. KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \
  119. KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
  120. KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \
  121. KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \
  122. ) TEMPLATE_TKL ( \
  123. KJ6, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, KA5, \
  124. KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, _X_, _X_, _X_, \
  125. KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, _X_, _X_, _X_, \
  126. KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
  127. KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, _X_, \
  128. KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, _X_, _X_, _X_ \
  129. )
  130. #endif
  131. #ifndef TEMPLATE_TKL
  132. #define TEMPLATE_TKL( \
  133. KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
  134. KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
  135. KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
  136. KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
  137. KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
  138. KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
  139. ) TEMPLATE( \
  140. KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \
  141. KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \
  142. KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
  143. KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \
  144. KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \
  145. )
  146. #endif
  147. #ifndef TEMPLATE_ALT
  148. #define TEMPLATE_ALT TEMPLATE
  149. #endif
  150. #ifndef TEMPLATE_NUM
  151. #define TEMPLATE_NUM TEMPLATE_ALT
  152. #endif
  153. #ifndef TEMPLATE_NAV
  154. #define TEMPLATE_NAV TEMPLATE_ALT
  155. #endif
  156. #ifndef TEMPLATE_ADJUST
  157. #define TEMPLATE_ADJUST TEMPLATE_ALT
  158. #endif
  159. #ifndef TEMPLATE_RESET
  160. #define TEMPLATE_RESET TEMPLATE_ALT( \
  161. RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , \
  162. RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , \
  163. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  164. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  165. RESET , XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX)
  166. #endif