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.

274 lines
23 KiB

6 years ago
  1. /*
  2. Copyright (c) 2020 Fred Silberberg
  3. Permission is hereby granted, free of charge, to any person obtaining a copy
  4. of this software and associated documentation files (the "Software"), to deal
  5. in the Software without restriction, including without limitation the rights
  6. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. copies of the Software, and to permit persons to whom the Software is
  8. furnished to do so, subject to the following conditions:
  9. The above copyright notice and this permission notice shall be included in all
  10. copies or substantial portions of the Software.
  11. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  12. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  15. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  16. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  17. THE SOFTWARE.
  18. */
  19. #include QMK_KEYBOARD_H
  20. #include "debug.h"
  21. #include "action_layer.h"
  22. #include "version.h"
  23. #include "333fred.h"
  24. // NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
  25. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  26. /* Keymap 0: Basic layer
  27. *
  28. * ,--------------------------------------------------. ,--------------------------------------------------.
  29. * | ` | 1 | 2 | 3 | 4 | 5 | F5 | | F6 | 6 | 7 | 8 | 9 | 0 | - |
  30. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  31. * | TAB | Q | W | E | R | T | GAME | |GAMEA | Y | U | I | O | P | \ |
  32. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  33. * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
  34. * |--------+------+------+------+------+------| SYMB | |MEDIA |------+------+------+------+------+--------|
  35. * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
  36. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  37. * |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | = | Right| RGUI |
  38. * `----------------------------------' `----------------------------------'
  39. * ,-------------. ,-------------.
  40. * | Copy | Paste| | Copy | Paste |
  41. * ,------|------|------| |------+--------+------.
  42. * | | | PgUp | | Up | | |
  43. * | Bcksp|OSL(2)|------| |------| Ent |Space |
  44. * | | VIM | Del | | Down | | |
  45. * `--------------------' `----------------------'
  46. */
  47. [BASE] = LAYOUT_ergodox_pretty( // layer 0 : default
  48. // left hand
  49. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  50. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(GAME), TG(GAME_ARROW), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  51. KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  52. OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(SYMB), MO(MDIA), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
  53. OSM(MOD_LCTL), KC_F4, KC_F5, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_EQL, KC_RIGHT, KC_RGUI,
  54. LCTL(KC_C), LCTL(KC_V), LCTL(KC_C), LCTL(KC_V),
  55. KC_PGUP, KC_UP,
  56. KC_BSPC, TD(TD_SYM_VIM), KC_DEL, KC_DOWN, KC_ENT, KC_SPC
  57. ),
  58. /* Keymap 2: Codeflow Layer
  59. *
  60. * ,--------------------------------------------------. ,--------------------------------------------------.
  61. * | | | | | | | | | | | | | | | |
  62. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  63. * | | | | | | | | | | | | | | | |
  64. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  65. * | | | | | | |------| |------| | | | | | |
  66. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  67. * | | | | | | | | | | | | | | | |
  68. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  69. * | | | | | | | F7 | F8 | | | |
  70. * `----------------------------------' `----------------------------------'
  71. * ,-------------. ,---------------.
  72. * | |ACCESS| | | |
  73. * ,------|------|------| |------+--------+------.
  74. * | | | | | | | |
  75. * | | |------| |------| | |
  76. * | | | | | | | |
  77. * `--------------------' `----------------------'
  78. */
  79. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
  80. // Otherwise, it needs KC_*
  81. [CODEFLOW] = LAYOUT_ergodox_pretty( // layer 1 : code
  82. // left hand
  83. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  84. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  85. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  86. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  87. _______, _______, _______, _______, _______, KC_F7, KC_F8, _______, _______, _______,
  88. _______, _______, _______, _______,
  89. _______, _______,
  90. _______, _______, _______, _______, _______, _______
  91. ),
  92. /* Keymap 3: Symbol Layer
  93. *
  94. * ,---------------------------------------------------. ,--------------------------------------------------.
  95. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
  96. * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  97. * | | ! | @ | ( | ) | | | | | | Up | 7 | 8 | 9 | * | F12 |
  98. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  99. * | | # | $ | { | } | ` |------| |------| Down | 4 | 5 | 6 | + | |
  100. * |---------+------+------+------+------+------|ACCESS| | |------+------+------+------+------+--------|
  101. * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
  102. * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  103. * | | | | | | | 0 | 0 | . | = | |
  104. * `-----------------------------------' `----------------------------------'
  105. * ,-------------. ,-------------.
  106. * | | | | | |
  107. * ,------|------|------| |------+------+------.
  108. * | | |APScr | | | | |
  109. * | |ACCESS|------| |------| | |
  110. * | | | PScr | | | | |
  111. * `--------------------' `--------------------'
  112. */
  113. [SYMB] = LAYOUT_ergodox_pretty(
  114. // left hand
  115. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  116. _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
  117. _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
  118. _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
  119. _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, KC_EQL, _______,
  120. _______, _______, _______, _______,
  121. PSCREEN_APP, _______,
  122. _______, _______, KC_PSCR, _______, _______, _______
  123. ),
  124. /* Keymap 3: Media and mouse keys
  125. *
  126. * ,--------------------------------------------------. ,--------------------------------------------------.
  127. * | | | | | | | | | | | | | | | |
  128. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  129. * | | | | MsUp | | | | | | | | | | | |
  130. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  131. * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
  132. * |--------+------+------+------+------+------| | |ACCESS|------+------+------+------+------+--------|
  133. * | | | | | | | | | | | | | | | |
  134. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  135. * | | | | Lclk | Rclk | | | | | | |
  136. * `----------------------------------' `----------------------------------'
  137. * ,-------------. ,-------------.
  138. * | Back+| Back-| | Vol+ | |
  139. * ,------|------|------| |------+------+------.
  140. * | | |BackTg| | Vol- | | |
  141. * | | |------| |------| PL/PS| Next |
  142. * | | | | | Back | | |
  143. * `--------------------' `--------------------'
  144. */
  145. [MDIA] = LAYOUT_ergodox_pretty(
  146. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  147. _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  148. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,
  149. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  150. _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, _______,
  151. BL_INC, BL_DEC, KC_VOLU, _______,
  152. BL_TOGG, KC_VOLD,
  153. _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
  154. ),
  155. /* Keymap 4: Movement
  156. *
  157. * ,--------------------------------------------------. ,--------------------------------------------------.
  158. * | | | | | | | | | | | | | | | |
  159. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  160. * | |KOpen |KType |TERMCP|TERMPT| | | | | Copy | | | | Paste| |
  161. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  162. * | |DLeft |DRight|LCTRL | LGUI | |------| |------| Left | Down | Up | Right| | |
  163. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  164. * | |SFT_TB| TAB | | | | | | | | | | | | |
  165. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  166. * | | | | | | | | | | | |
  167. * `----------------------------------' `----------------------------------'
  168. * ,-------------. ,-------------.
  169. * | | | | Home | End |
  170. * ,------|------|------| |------+------+------.
  171. * | | | | | | | |
  172. * | |ACCESS|------| |------| | |
  173. * | | | | | | | |
  174. * `--------------------' `--------------------'
  175. */
  176. // MEDIA AND MOUSE
  177. [VIM] = LAYOUT_ergodox_pretty(
  178. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  179. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  180. _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
  181. _______, _______, KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  182. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  183. _______, _______, KC_HOME, KC_END,
  184. _______, _______,
  185. _______, _______, _______, _______, _______, _______
  186. ),
  187. /* Keymap 1: Game Layer
  188. *
  189. * ,--------------------------------------------------. ,--------------------------------------------------.
  190. * | ESC | | | | | | | | | | | | | | |
  191. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  192. * | | | | | | |ACCESS| | | | | | | | |
  193. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  194. * | CTRL | | | | | |------| |------| | | | | | |
  195. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  196. * | SHIFT | Z | | | | | | | | | | | | | |
  197. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  198. * |ENTER | | | LOCK | BSPC | | | | | | |
  199. * `----------------------------------' `----------------------------------'
  200. * ,-------------. ,---------------.
  201. * | F5 | F6 | | | |
  202. * ,------|------|------| |------+--------+------.
  203. * | | | | | | | |
  204. * | ALT | SPC |------| |------| | |
  205. * | | | SYMB | | | | |
  206. * `--------------------' `----------------------'
  207. */
  208. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
  209. // Otherwise, it needs KC_*
  210. [GAME] = LAYOUT_ergodox_pretty( // layer 1 : code
  211. // left hand
  212. KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  213. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  214. KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  215. KC_LSFT, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  216. KC_ENT, _______, _______, KC_LOCK, KC_BSPC, _______, _______, _______, _______, _______,
  217. KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
  218. _______, KC_UP,
  219. KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, _______, _______
  220. ),
  221. /* Keymap 1: Game Arrow Layer
  222. *
  223. * ,--------------------------------------------------. ,--------------------------------------------------.
  224. * | ESC | | | | | | | | | | | | | | |
  225. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  226. * | | | Up | | | | | |ACCESS| | | | | | |
  227. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  228. * | CTRL | Left | Down |Right | | |------| |------| | | | | | |
  229. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  230. * | SHIFT | Z | | | | | | | | | | | | | |
  231. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  232. * |ENTER | | | LOCK | BSPC | | | | | | |
  233. * `----------------------------------' `----------------------------------'
  234. * ,-------------. ,---------------.
  235. * | F5 | F6 | | | |
  236. * ,------|------|------| |------+--------+------.
  237. * | | | | | | | |
  238. * | ALT | SPC |------| |------| | |
  239. * | | | SYMB | | | | |
  240. * `--------------------' `----------------------'
  241. */
  242. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
  243. // Otherwise, it needs KC_*
  244. [GAME_ARROW] = LAYOUT_ergodox_pretty( // layer 1 : code
  245. // left hand
  246. KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  247. _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  248. KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______,
  249. KC_LSFT, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  250. KC_ENT, _______, _______, KC_LOCK, KC_BSPC, _______, _______, _______, _______, _______,
  251. KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
  252. _______, KC_UP,
  253. KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, _______, _______
  254. )
  255. };
  256. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  257. tap_dance_process_keycode(keycode);
  258. return true;
  259. }
  260. // Runs constantly in the background, in a loop.
  261. void matrix_scan_user(void) {
  262. ergodox_board_led_on();
  263. ergodox_led_all_on();
  264. }