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.

329 lines
22 KiB

  1. // Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
  2. //
  3. // This file is part of qmk_firmware.
  4. //
  5. // qmk_firmware is free software: you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation, either version 3 of the License, or
  8. // (at your option) any later version.
  9. //
  10. // qmk_firmware is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. // GNU General Public License for more details.
  14. //
  15. // You should have received a copy of the GNU General Public License
  16. // along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
  17. #pragma once
  18. #include "jjerrell.h"
  19. #define QWERTY KC_QWERTY
  20. #define WORKMN KC_WORKMAN
  21. #define KC_CUT LGUI(KC_X)
  22. // Non-sane shortcuts for software macros or keybindings
  23. #define MACRO_1 ALL_T(KC_F12)
  24. #define MACRO_2 ALL_T(KC_F13)
  25. #define MACRO_3 ALL_T(KC_F14)
  26. #define MACRO_4 ALL_T(KC_F15)
  27. #define MACRO_5 ALL_T(KC_F16)
  28. #define MACRO_6 ALL_T(KC_F17)
  29. #define MACRO_7 ALL_T(KC_F18)
  30. #define MACRO_8 ALL_T(KC_F19)
  31. // clang-format off
  32. #if (!defined(LAYOUT) && defined(KEYMAP))
  33. # define LAYOUT KEYMAP
  34. #endif
  35. #if (defined(KEYBOARD_planck_ez))
  36. /** Planck EZ Empty
  37. * ,-----------------------------------------------------------------------------------.
  38. * | | | | | | | | | | | | |
  39. * |------+------+------+------+------+------+------+------+------+------+------+------|
  40. * | | | | | | | | | | | | |
  41. * |------+------+------+------+------+------+------+------+------+------+------+------|
  42. * | | | | | | | | | | | | |
  43. * |------+------+------+------+------+------+------+------+------+------+------+------|
  44. * | | | | | | | | | | | |
  45. * `-----------------------------------------------------------------------------------'
  46. */
  47. # define ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ \
  48. KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, LT(_LOWER, KC_BSPC), SFT_T(KC_SPC), XXXXXXX, LT(_RAISE, KC_ENT), KC_MEH, RGB_TOG, RGB_IDL, LED_LEVEL
  49. # define _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________ \
  50. KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, KC_BSPC, KC_SPC, XXXXXXX, KC_ENT, KC_0, KC_DOT, KC_COMM, LED_LEVEL
  51. // TODO: It would be nice to find a way to apply the bottom row with optional left/right varargs.
  52. // I'm completely unsure if this language can support something like that though.
  53. /**
  54. * Basic Planck EZ Wrapper to expand "block" defines before sending
  55. * to LAYOUT_ortho_4x12
  56. */
  57. # define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
  58. # define WRAPPER_planck_common( \
  59. K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \
  60. K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \
  61. K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \
  62. ) WRAPPER_ortho_4x12( \
  63. K01, K02, K03, K04, K05 , XXXXXXX , XXXXXXX, K08, K09, K0A, K0B, K0C, \
  64. K11, K12, K13, K14, K15 , XXXXXXX , XXXXXXX, K18, K19, K1A, K1B, K1C, \
  65. K21, K22, K23, K24, K25 , XXXXXXX , XXXXXXX, K28, K29, K2A, K2B, K2C, \
  66. ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ )
  67. /**
  68. * Shifted Key conflicts:
  69. * K12, K13, K14, K19, K1A, K1B, K21, K2C
  70. */
  71. # define WRAPPER_planck_base( \
  72. K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \
  73. K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \
  74. K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \
  75. ) WRAPPER_ortho_4x12( \
  76. K01 , K02 , K03 , K04 , K05 , KC_GAME , KC_GAME, K08, K09 , K0A , K0B , K0C, \
  77. K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , XXXXXXX , XXXXXXX, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \
  78. CTL_T(K21), K22 , K23 , K24 , K25 , XXXXXXX , XXXXXXX, K28, K29 , K2A , K2B , CTL_T(K2C), \
  79. ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ )
  80. # define WRAPPER_planck_mods( \
  81. K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
  82. K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
  83. K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
  84. K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \
  85. ) WRAPPER_ortho_4x12( \
  86. K01 , K02 , K03 , K04 , K05 , K06 , K07, K08, K09 , K0A , K0B , K0C, \
  87. K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , K16 , K17, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \
  88. CTL_T(K21), K22 , K23 , K24 , K25 , K26 , K27, K28, K29 , K2A , K2B , CTL_T(K2C), \
  89. K31, K32 , K33 , K34 , LT(_LOWER, K35), SFT_T(K36), XXXXXXX, LT(_RAISE, K38), K39 , K3A , K3B, K3C )
  90. // These macros are used when defining layouts in keymap.c
  91. # define LAYOUT_planck_base(...) WRAPPER_planck_base(__VA_ARGS__)
  92. # define LAYOUT_planck_common(...) WRAPPER_planck_common(__VA_ARGS__)
  93. # define LAYOUT_planck_mods(...) WRAPPER_planck_mods(__VA_ARGS__)
  94. #elif defined(KEYBOARD_moonlander)
  95. /** Moonlander Empty
  96. * ( \
  97. k00, k01, k02, k03, k04, k05, k06, k60, k61, k62, k63, k64, k65, k66, \
  98. k10, k11, k12, k13, k14, k15, k16, k70, k71, k72, k73, k74, k75, k76, \
  99. k20, k21, k22, k23, k24, k25, k26, k80, k81, k82, k83, k84, k85, k86, \
  100. k30, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, k96, \
  101. k40, k41, k42, k43, k44, k53, kb3, ka2, ka3, ka4, ka5, ka6, \
  102. k50, k51, k52, kb4, kb5, kb6 \
  103. ) \
  104. */
  105. # define WRAPPER_moonlander(...) LAYOUT_moonlander(__VA_ARGS__)
  106. # define WRAPPER_moonlander_common( \
  107. k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \
  108. k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \
  109. k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \
  110. k41, k42, k43, k44, ka2, ka3, ka4, ka5 \
  111. ) WRAPPER_moonlander( \
  112. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  113. XXXXXXX, k11, k12, k13, k14, k15, XXXXXXX, XXXXXXX, k71, k72, k73, k74, k75, XXXXXXX, \
  114. XXXXXXX, k21, k22, k23, k24, k25, XXXXXXX, XXXXXXX, k81, k82, k83, k84, k85, XXXXXXX, \
  115. KC_LSFT, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, KC_RSFT, \
  116. MO(_SPECIAL), k41, k42, k43, k44, TO(_GAME), XXXXXXX, ka2, ka3, ka4, ka5, MO(_SPECIAL), \
  117. LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) )
  118. # define WRAPPER_moonlander_mods( \
  119. k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \
  120. k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \
  121. k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \
  122. k41, k42, k43, k44, ka2, ka3, ka4, ka5 \
  123. ) WRAPPER_moonlander_common( \
  124. k11 , k12 , k13 , k14 , k15, k71, k72, k73, k74, k75, \
  125. k21 , SFT_T(k22), GUI_T(k23), ALT_T(k24), k25, k81, ALT_T(k82), GUI_T(k83), SFT_T(k84), k85, \
  126. CTL_T(k31), k32 , k33 , k34 , k35, k91, k92, k93, k94, CTL_T(k95), \
  127. k41 , k42 , k43 , k44 , ka2, ka3, ka4, ka5 \
  128. )
  129. # define WRAPPER_moonlander_gamepad( \
  130. k00, k01, k02, k03, k04, k05, k06, \
  131. k10, k11, k12, k13, k14, k15, k16, \
  132. k20, k21, k22, k23, k24, k25, k26, \
  133. k30, k31, k32, k33, k34, k35, \
  134. k40, k41, k42, k43, k44, k53, \
  135. k50, k51, k52 \
  136. ) WRAPPER_moonlander( \
  137. k00, k01, k02, k03, k04, k05, k06, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  138. k10, k11, k12, k13, k14, k15, k16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  139. k20, k21, k22, k23, k24, k25, k26, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  140. k30, k31, k32, k33, k34, k35, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  141. k40, k41, k42, k43, k44, k53, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  142. k50, k51, k52, XXXXXXX, XXXXXXX, TO(_WORKMAN) \
  143. )
  144. # define LAYOUT_moonlander_common(...) WRAPPER_moonlander_common(__VA_ARGS__)
  145. # define LAYOUT_moonlander_mods(...) WRAPPER_moonlander_mods(__VA_ARGS__)
  146. # define LAYOUT_moonlander_gamepad(...) WRAPPER_moonlander_gamepad(__VA_ARGS__)
  147. #elif defined(KEYBOARD_ergodox_ez)
  148. /** Ergodox EZ Empty
  149. .---------------------------------------------. .---------------------------------------------.
  150. | | | | | | | | ! | | | | | | |
  151. !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
  152. | | | | | | | | ! | | | | | | |
  153. !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
  154. | | | | | | |-------! !-------! | | | | | |
  155. !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
  156. | | | | | | | | ! | | | | | | |
  157. '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
  158. | | | | | | ! | | | | |
  159. '------------------------------' '------------------------------'
  160. .---------------. .---------------.
  161. | | | ! | |
  162. .-------+-------+-------! !-------+-------+-------.
  163. ! ! | | ! | ! !
  164. ! ! !-------! !-------! ! !
  165. | | | | ! | | |
  166. '-----------------------' '-----------------------'
  167. ---------- LEFT HAND ----------- ---------- RIGHT HAND ----------
  168. ( \
  169. L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
  170. L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
  171. L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
  172. L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
  173. L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
  174. L55,L56, R50,R51, \
  175. L54, R52, \
  176. L53,L52,L51, R55,R54,R53 \
  177. )
  178. */
  179. # define WRAPPER_ergodox_ez(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
  180. /** Common Wrapper
  181. .---------------------------------------------. .---------------------------------------------.
  182. | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X |
  183. !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
  184. | X | | | | | | X | ! X | | | | | | X |
  185. !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
  186. | X | | | | | |-------! !-------! | | | | | X |
  187. !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------!
  188. | X | | | | | | | ! | | | | | | X |
  189. '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
  190. | SPCL | | | | | ! | | | | SPCL |
  191. '------------------------------' '------------------------------'
  192. .---------------. .---------------.
  193. | X | X | ! X | X |
  194. .-------+-------+-------! !-------+-------+-------.
  195. ! Space ! BSpace| X | ! X | Tab ! Enter !
  196. ! / ! / !-------! !-------! / ! / !
  197. | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE |
  198. '-----------------------' '-----------------------'
  199. */
  200. # define WRAPPER_ergodox_common( \
  201. L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \
  202. L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \
  203. L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \
  204. L41,L42,L43,L44, R42,R43,R44,R45 \
  205. ) WRAPPER_ergodox_ez( \
  206. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
  207. XXXXXXX, L11, L12, L13, L14, L15, XXXXXXX, XXXXXXX, R11, R12, R13, R14, R15, XXXXXXX, \
  208. XXXXXXX, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, XXXXXXX, \
  209. KC_LSFT, L31, L32, L33, L34, L35, XXXXXXX, XXXXXXX, R31, R32, R33, R34, R35, KC_RSFT, \
  210. MO(_SPECIAL), L41, L42, L43, L44, R42, R43, R44, R45, MO(_SPECIAL), \
  211. \
  212. XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX, \
  213. XXXXXXX, XXXXXXX, \
  214. LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) )
  215. /** Common Wrapper with Mod Tap/Hold overlay
  216. .---------------------------------------------. .---------------------------------------------.
  217. | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X |
  218. !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
  219. | X | | | | | | X | ! X | | | | | | X |
  220. !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
  221. | X | |Shift| Cmd | Alt | |-------! !-------! | Alt | Cmd |Shift| | X |
  222. !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------!
  223. | Sft | Ctl | | | | | | ! | | | | | Ctl | Sft |
  224. '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
  225. | SPCL | | | | | ! | | | | SPCL |
  226. '------------------------------' '------------------------------'
  227. .---------------. .---------------.
  228. | X | X | ! X | X |
  229. .-------+-------+-------! !-------+-------+-------.
  230. ! Space ! BSpace| X | ! X | Tab ! Enter !
  231. ! / ! / !-------! !-------! / ! / !
  232. | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE |
  233. '-----------------------' '-----------------------'
  234. */
  235. # define WRAPPER_ergodox_mods( \
  236. L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \
  237. L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \
  238. L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \
  239. L41,L42,L43,L44, R42,R43,R44,R45 \
  240. ) WRAPPER_ergodox_common( \
  241. L11 , L12 , L13 , L14 , L15, R11, R12 , R13 , R14 , R15, \
  242. L21 , SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, \
  243. CTL_T(L31), L32 , L33 , L34 , L35, R31, R32 , R33 , R34 , CTL_T(R35), \
  244. L41 , L42 , L43 , L44 , R42 , R43 , R44 , R45 )
  245. // These macros are used when defining layouts in keymap.c
  246. # define LAYOUT_ergodox_common(...) WRAPPER_ergodox_common(__VA_ARGS__)
  247. # define LAYOUT_ergodox_mods(...) WRAPPER_ergodox_mods(__VA_ARGS__)
  248. #endif // END Keyboard specific wrapper defines
  249. /**
  250. * Alpha/Num key wrappers for portability
  251. */
  252. // Workman
  253. #define __________________WORKMN_L1__________________ KC_Q, KC_D, KC_R, KC_W, KC_B
  254. #define __________________WORKMN_L2__________________ KC_A, KC_S, KC_H, KC_T, KC_G
  255. #define __________________WORKMN_L3__________________ KC_Z, KC_X, KC_M, KC_C, KC_V
  256. #define __________________WORKMN_R1__________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
  257. #define __________________WORKMN_R2__________________ KC_Y, KC_N, KC_E, KC_O, KC_I
  258. #define __________________WORKMN_R3__________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
  259. // QWERTY
  260. #define __________________QWERTY_L1__________________ KC_Q, KC_W, KC_E, KC_R, KC_T
  261. #define __________________QWERTY_L2__________________ KC_A, KC_S, KC_D, KC_F, KC_G
  262. #define __________________QWERTY_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
  263. #define __________________QWERTY_R1__________________ KC_Y, KC_U, KC_I, KC_O, KC_P
  264. #define __________________QWERTY_R2__________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
  265. #define __________________QWERTY_R3__________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
  266. #define ________________QWERTY_R1_LHS________________ KC_P, KC_O, KC_I, KC_U, KC_Y
  267. #define ________________QWERTY_R2_LHS________________ KC_SCLN, KC_L, KC_K, KC_J, KC_H
  268. #define ________________QWERTY_R3_LHS________________ KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N
  269. // Nums
  270. #define ___________________NUMS_L____________________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6
  271. #define ___________________NUMS_R____________________ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL
  272. // Lower
  273. #define __________________LOWER_L1___________________ KC_PGUP, KC_TAB, KC_UP, KC_ENT, KC_PGDN
  274. #define __________________LOWER_L2___________________ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END
  275. #define __________________LOWER_L3___________________ KC_ESC, KC_BSPC, KC_CUT, KC_DEL, KC_CCCV
  276. #define __________________LOWER_R1___________________ XXXXXXX, KC_7, KC_8, KC_9, KC_ASTR
  277. #define __________________LOWER_R2___________________ XXXXXXX, KC_4, KC_5, KC_6, KC_SLSH
  278. #define __________________LOWER_R3___________________ XXXXXXX, KC_1, KC_2, KC_3, KC_MINS
  279. // Relevant keys: -> KC_0, KC_DOT, KC_COMM, KC_PLUS <- these keys break our lovely wrapper pattern
  280. // Raise
  281. #define __________________RAISE_L1___________________ KC_PIPE, KC_UNDS, KC_LBRC, KC_RBRC, KC_AMPR
  282. #define __________________RAISE_L2___________________ KC_BSLS, KC_SLSH, KC_LCBR, KC_RCBR, KC_ASTR
  283. #define __________________RAISE_L3___________________ KC_HASH, KC_DLR , KC_PERC, KC_TILD, KC_GRV
  284. #define __________________RAISE_R1___________________ KC_EXLM, KC_LABK, KC_RABK, KC_MINS, KC_SCLN
  285. #define __________________RAISE_R2___________________ KC_QUES, KC_LPRN, KC_RPRN, KC_EQL, KC_COLN
  286. #define __________________RAISE_R3___________________ KC_AT, KC_QUOT, KC_DQUO, KC_PLUS, KC_CIRC
  287. // Adjust
  288. #define __________________ADJUST_L1__________________ KC_MAKE, DEBUG, RESET, TERM_ON, TERM_OFF
  289. #define __________________ADJUST_L2__________________ KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_MPLY, KC_MNXT
  290. #define __________________ADJUST_L3__________________ KC_VRSN, AU_ON, AU_OFF, CG_SWAP, CG_NORM
  291. #define __________________ADJUST_R1__________________ MU_MOD, MU_ON, MU_OFF, MI_ON, MI_OFF
  292. #define __________________ADJUST_R2__________________ MUV_IN, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD
  293. #define __________________ADJUST_R3__________________ MUV_DE, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD
  294. // clang-format on