keymap.c 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. #include QMK_KEYBOARD_H
  2. #include "version.h"
  3. enum {
  4. BASE = 0,
  5. OLD_BASE,
  6. SYMBL,
  7. MEDIA,
  8. MKDWN,
  9. ARROWS,
  10. NUM,
  11. };
  12. enum custom_keycodes {
  13. PLACEHOLDER = SAFE_RANGE, // can always be here
  14. EPRM,
  15. VRSN,
  16. MD_LINK,
  17. XKCD,
  18. DBLE_ZER0,
  19. L_ID_0,
  20. L_ID_1,
  21. L_ID_2,
  22. PAST_PS,
  23. TODO,
  24. RUBYMINE,
  25. ZENDESK,
  26. DBLE_ASTR,
  27. TRPLE_GRAVE,
  28. H_ONE,
  29. H_TWO,
  30. H_THREE,
  31. H_FOUR,
  32. H_FIVE,
  33. M_LINK,
  34. M_GREATER,
  35. TD_COPY_CUT = 6,
  36. TD_SNAGIT = 8,
  37. TD_B_L_SEL = 10,
  38. CT_LBP = 11,
  39. CT_RBP = 12
  40. };
  41. //Redefine Key Names for Readaibilty
  42. #define SCRN_CLIPB LCTL(LGUI(LSFT(KC_4)))
  43. #define CHRM_L LALT(LGUI(KC_LEFT)) //Move left one tab in Chrome
  44. #define CHRM_R LALT(LGUI(KC_RIGHT)) //Move right one tab in Chrome
  45. #define S_CMD_S LGUI_T(KC_S) //`S` when typing `CMD` when held
  46. #define D_CMD_OPT LGUI_T(LALT_T(KC_D)) //`D` when typing `CMD + Opt` when held
  47. static uint16_t key_timer; //key timer for macros
  48. //Tap Dance Definitions
  49. qk_tap_dance_action_t tap_dance_actions[] = {
  50. //Tap once for Copy, twice for Paste, three times for Cut.
  51. [TD_COPY_CUT] = ACTION_TAP_DANCE_DOUBLE(LGUI(KC_C),LGUI(KC_X)),
  52. //Tap once for Snagit, twice for Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.)
  53. [TD_SNAGIT] = ACTION_TAP_DANCE_DOUBLE(LCTL(LSFT(KC_C)), LCTL(LGUI(LSFT(KC_4)))),
  54. [CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN),
  55. [CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
  56. };
  57. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  58. /* Keymap 0: Basic layer
  59. * ,--------------------------------------------------. ,--------------------------------------------------.
  60. * | = | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - |
  61. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  62. * | Tab | Q | W | E | R | T | "> " | | []() | Y | U | I | O | P | \ |
  63. * |--------+------+------+------+------+------| | | SCRN |------+------+------+------+------+--------|
  64. * | Hyper | A |S /CMD|D/OPT | F /MD| G |------| |------| H | J |K/OPT |L /CMD| ; /L2| '/Hyper|
  65. * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
  66. * |Shft Tab|Z/Ctrl|X/Alt | C | V | B | [ { | | ] } | N | M | , | ./Alt|//Ctrl|CMD+SHFT|
  67. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  68. * | ` |Zendsk|RBMINE|CMD+S | ToDo | | _ | | 00 | 00 |OLD BASE|
  69. * `----------------------------------' `----------------------------------'
  70. * ,-------------. ,--------------.
  71. * | Esc | Home | |Layer?| Esc |
  72. * ,------|------|------| |------+-------+------.
  73. * | | | End | | Undo | | |
  74. * |Shift |Backsp|------| |------| Return|Space/|
  75. * | OSM | /NUM | DEL | | Ctrl | /SYML |Arrows|
  76. * `--------------------' `---------------------'
  77. *
  78. *Copy/Cut key copies on tap, cut's on two taps.
  79. *
  80. *One tap on Snagit key = is Ctrl + Shift + C which is Snagit's selector.
  81. *Two taps on Snagit key = Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.)
  82. */
  83. [BASE] = LAYOUT_ergodox(
  84. //left hand
  85. KC_EQUAL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
  86. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, M_GREATER,
  87. OSM(MOD_HYPR), KC_A, S_CMD_S, ALT_T(KC_D), LT(MKDWN,KC_F), KC_G,
  88. LSFT(KC_TAB), CTL_T(KC_Z), ALT_T(KC_X), KC_C, KC_V, KC_B, TD(CT_LBP),
  89. KC_GRAVE, ZENDESK, RUBYMINE, LGUI(KC_S), TODO,
  90. KC_ESCAPE, KC_HOME,
  91. KC_END,
  92. OSM(MOD_LSFT), LT(NUM,KC_BSPACE), LT(MKDWN,KC_DELETE),
  93. //right hand
  94. KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINUS,
  95. MD_LINK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
  96. KC_H, KC_J, ALT_T(KC_K), LGUI_T(KC_L), LT(MEDIA,KC_SCOLON), ALL_T(KC_QUOTE),
  97. TD(CT_RBP), KC_N, KC_M, KC_COMMA, ALT_T(KC_DOT), CTL_T(KC_SLASH), SCMD_T(_______),
  98. LSFT(KC_MINUS), _______, DBLE_ZER0, DBLE_ZER0, TO(OLD_BASE),
  99. L_ID_0, KC_ESCAPE,
  100. LGUI(KC_Z),
  101. LT(MEDIA,KC_LCTL), LT(SYMBL,KC_ENTER), LT(ARROWS,KC_SPACE)),
  102. /* Keymap 1: OLD Base layer
  103. * ,--------------------------------------------------. ,--------------------------------------------------.
  104. * | = | 1 | 2 | 3 | 4 | 5 | []() | |Snagit| 6 | 7 | 8 | 9 | 0 | - |
  105. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  106. * | Tab | Q | W | E | R | T | "> " | | []() | Y | U | I | O | P | \ |
  107. * |--------+------+------+------+------+------| | | SCRN |------+------+------+------+------+--------|
  108. * | Hyper | A |S /CMD| D | F | G |------| |------| H | J | K |L /CMD| ; /L2| '/Hyper|
  109. * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
  110. * |Shft Tab|Z/Ctrl|X/Alt | C | V | B | [ { | | ] } | N | M | , | ./Alt|//Ctrl|CMD+SHFT|
  111. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  112. * | ` |Zendsk|RBMINE|CMD+S | ToDo | | _ | | 00 | 00 |ToBase|
  113. * `----------------------------------' `----------------------------------'
  114. * ,-------------. ,--------------.
  115. * | Esc | Home | |Layer?| Esc |
  116. * ,------|------|------| |------+-------+------.
  117. * | | | End | | Undo | | |
  118. * |Shift |Backsp|------| |------| Return|Space/|
  119. * | OSM | /L5 | DEL | | Ctrl | /LT1 |Arrows|
  120. * `--------------------' `---------------------'
  121. *
  122. *Copy/Cut key copies on tap, cut's on two taps.
  123. *
  124. *One tap on Snagit key = is Ctrl + Shift + C which is Snagit's selector.
  125. *Two taps on Snagit key = Cmd + Shift + Opt + 4 (OS X cropping screenshot that is copied to the clipboard only.)
  126. */
  127. [OLD_BASE] = LAYOUT_ergodox(
  128. //left hand
  129. KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, M_LINK,
  130. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, M_GREATER,
  131. OSM(MOD_HYPR), KC_A, S_CMD_S, D_CMD_OPT, LT(MKDWN,KC_F),KC_G,
  132. LSFT(KC_TAB), CTL_T(KC_Z), ALT_T(KC_X), KC_C, KC_V, KC_B, TD(CT_LBP),
  133. KC_GRAVE, ZENDESK, RUBYMINE, LGUI(KC_S), TODO,
  134. KC_ESCAPE, KC_HOME,
  135. KC_END,
  136. OSM(MOD_LSFT), LT(NUM,KC_BSPACE), LT(MKDWN,KC_DELETE),
  137. //right hand
  138. TD(TD_SNAGIT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
  139. MD_LINK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
  140. KC_H, KC_J, KC_K, LGUI_T(KC_L), LT(MEDIA,KC_SCOLON), ALL_T(KC_QUOTE),
  141. TD(CT_RBP), KC_N, KC_M, KC_COMMA, ALT_T(KC_DOT), CTL_T(KC_SLASH), SCMD_T(_______),
  142. LSFT(KC_MINUS), _______, DBLE_ZER0, DBLE_ZER0, TO(BASE),
  143. L_ID_0, KC_ESCAPE,
  144. LGUI(KC_Z),
  145. LT(MEDIA,KC_LCTL), LT(SYMBL,KC_ENTER), LT(ARROWS,KC_SPACE)),
  146. /* Keymap 2: Symbol
  147. * ,--------------------------------------------------. ,--------------------------------------------------.
  148. * | | 1 | 2 | 3 | 4 | 5 | []() | |Snagit| 6 | 7 | 8 | 9 | 0 | - |
  149. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  150. * | | | $ | & | ` | | | Cmd | | | | | * | | | |
  151. * |--------+------+------+------+------+------| + K | | |------+------+------+------+------+--------|
  152. * | | # | $ | & | ! | @ |------| |------| - | [ | ] | ( | ) | |
  153. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  154. * | | % | ^ | | | ~ | | | | | | | | | |
  155. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  156. * | | | | | | | | | | | |
  157. * `----------------------------------' `----------------------------------'
  158. * ,-------------. ,-------------.
  159. * | | | |Layer?| |
  160. * ,------|------|------| |------+------+------.
  161. * | | | | | | | |
  162. * | | |------| |------| | |
  163. * | | | | | | | |
  164. * `--------------------' `--------------------'
  165. */
  166. // SYMBOLS
  167. [SYMBL] = LAYOUT_ergodox(
  168. //left hand
  169. _______, KC_1, KC_2, KC_3, KC_4, KC_5, M_LINK,
  170. _______, _______, KC_DLR, KC_AMPR, KC_GRAVE, KC_PIPE, LGUI(KC_K),
  171. _______, KC_HASH, KC_DLR, KC_AMPR, KC_EXLM, KC_AT,
  172. _______, KC_PERC, KC_CIRC, _______, _______, KC_TILD, _______,
  173. _______, _______, _______, _______, _______,
  174. _______, _______,
  175. _______,
  176. _______, _______, _______,
  177. //right hand
  178. TD(TD_SNAGIT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
  179. _______, _______, _______, KC_PAST, _______, _______, _______,
  180. KC_MINUS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, _______,
  181. _______, _______, _______, _______, _______, _______, _______,
  182. _______, _______, _______, _______, _______,
  183. L_ID_1, _______,
  184. _______,
  185. _______, _______, _______),
  186. /* Keymap 3: Media and mouse keys
  187. * ,--------------------------------------------------. ,--------------------------------------------------.
  188. * | | | | | | | | | XKCD | | | | | | F15 |
  189. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  190. * | | |Whl Up| MsUp |Whl Dn| | | | | | | | | | F14 |
  191. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  192. * | |Ctl L |MsLeft|MsDown|MsRght| Ctl R|------| |------| | Mute | VolDn| VolUp| TL 2 | Play |
  193. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  194. * | | |WHL L | |Whl R | | | | | | | Prev | Next | | |
  195. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  196. * | | | | | | | Mute | | | | |
  197. * `----------------------------------' `----------------------------------'
  198. * ,-------------. ,-------------.
  199. * | | | |LAYER?| |
  200. * ,------|------|------| |------+------+------.
  201. * | Left |Right | | | |Copy/ | paste|
  202. * | Click|Click |------| |------| cut |/paste|
  203. * | | | | | | |spcial|
  204. * `--------------------' `--------------------'
  205. */
  206. // MEDIA AND MOUSE
  207. [MEDIA] = LAYOUT_ergodox(
  208. //left hand
  209. _______, _______, _______, _______, _______, _______, _______,
  210. _______, _______, KC_MS_WH_UP, KC_MS_UP, KC_MS_WH_DOWN, _______, _______,
  211. _______, LCTL(KC_LEFT), KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, RCTL(KC_RIGHT),
  212. XXXXXXX, _______, KC_MS_WH_LEFT, _______, KC_MS_WH_RIGHT, _______, _______,
  213. _______, _______, _______, _______, _______,
  214. _______, _______,
  215. _______,
  216. KC_MS_BTN1, KC_MS_BTN2, _______,
  217. //right hand
  218. XKCD, _______, _______, _______, _______, _______, KC_F15,
  219. _______, _______, _______, _______, _______, _______, KC_F14,
  220. _______, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, _______, KC_MEDIA_PLAY_PAUSE,
  221. _______, _______, _______, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, _______, XXXXXXX,
  222. _______, _______, _______, _______, _______,
  223. L_ID_2, _______,
  224. _______,
  225. _______, TD(TD_COPY_CUT), PAST_PS),
  226. /* Keymap 4: Markdown Symbols
  227. * ,--------------------------------------------------. ,--------------------------------------------------.
  228. * | | | | | | | | |SCRNCL| | | | | | |
  229. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  230. * | | | | | | | | | | | ``` | ** | _ | ` | |
  231. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  232. * | | | | | TL MD| |------| |------| - | [ | ] | ( | ) | |
  233. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  234. * | | | | | | | | | | # | ## | ### | #### | #####| |
  235. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  236. * | | | | | | | | | | | |
  237. * `----------------------------------' `----------------------------------'
  238. * ,-------------. ,-------------.
  239. * | | | |Layer?| |
  240. * ,------|------|------| |------+------+------.
  241. * | | | | | | | |
  242. * | | |------| |------| | |
  243. * | | | | | | | |
  244. * `--------------------' `--------------------'
  245. * Sc cp = OS X cropping screenshot that is copied to the clipboard only.
  246. */
  247. // Markdown Layer
  248. [MKDWN] = LAYOUT_ergodox(
  249. //left hand
  250. _______, _______, _______, _______, _______, _______, _______,
  251. _______, _______, _______, _______, _______, _______, _______,
  252. _______, _______, _______, _______, _______, _______,
  253. _______, _______, _______, _______, _______, _______, _______,
  254. _______, _______, _______, _______, _______,
  255. _______, _______,
  256. _______,
  257. _______, _______, _______,
  258. //right hand
  259. SCRN_CLIPB, _______, _______, _______, _______, _______, _______,
  260. _______, _______, TRPLE_GRAVE, DBLE_ASTR,LSFT(KC_MINUS), KC_GRAVE, _______,
  261. KC_MINUS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, _______,
  262. _______, H_ONE, H_TWO, H_THREE, H_FOUR, H_FIVE, _______,
  263. _______, _______, _______, _______, _______,
  264. _______, _______,
  265. _______,
  266. _______, _______, _______),
  267. /* Keymap 5: Arrows
  268. *
  269. * ,--------------------------------------------------. ,--------------------------------------------------.
  270. * | QK_BOOT | | | | | | | | | | | | | | |
  271. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  272. * | | | Opt+L| Up |Opt+R | | | | | | Opt+L| Up |Opt+R | | |
  273. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  274. * | |Ctrl+L| Left | Dn | Right|Ctrl+R|------| |------|Ctrl+L| Left | Dn | Right|Ctrl+R| |
  275. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  276. * | | | | | | | | | | | | | | | |
  277. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  278. * | | | | | | | | | | | |
  279. * `----------------------------------' `----------------------------------'
  280. * ,-------------. ,-------------.
  281. * | | | | | |
  282. * ,------|------|------| |------+------+------.
  283. * | | | | | | | |
  284. * | | |------| |------| | |
  285. * | | | | | | | |
  286. * `--------------------' `--------------------'
  287. *
  288. *
  289. *
  290. */
  291. // Movement Layer
  292. [ARROWS] = LAYOUT_ergodox(
  293. //left hand
  294. QK_BOOT, _______, _______, _______, _______, _______, _______,
  295. _______, _______, CHRM_L, KC_UP, CHRM_R, _______, _______,
  296. _______,LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT),
  297. _______, _______, _______, _______, _______, _______, _______,
  298. _______, _______, _______, _______, _______,
  299. _______, _______,
  300. _______,
  301. _______, _______, _______,
  302. //right hand
  303. _______, _______, _______, _______, _______, _______, _______,
  304. _______, _______, CHRM_L, KC_UP, CHRM_R, _______, _______,
  305. LCTL(KC_LEFT), KC_LEFT, KC_DOWN, LGUI_T(KC_RIGHT), LCTL(KC_RIGHT), _______,
  306. _______, _______, _______, _______, _______, _______, _______,
  307. _______, _______, _______, _______, _______,
  308. _______, _______,
  309. _______,
  310. _______, _______, _______),
  311. /* Keymap 6: Numpad
  312. * ,--------------------------------------------------. ,--------------------------------------------------.
  313. * | | | | | | | | | | | | | | | |
  314. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  315. * | | | | | | | | | | = | 7 | 8 | 9 | * | |
  316. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  317. * | | | |Cp/Cut|paste | |------| |------| + | 4 | 5 | 6 | + | |
  318. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  319. * | | | | | | | | | | - | 1 | 2 | 3 | / | |
  320. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  321. * | | | | | | | 0 | . | 00 | 00 | Enter|
  322. * `----------------------------------' `----------------------------------'
  323. * ,-------------. ,-------------.
  324. * | | | | | |
  325. * ,------|------|------| |------+------+------.
  326. * | | | | | |Nupmad| |
  327. * | | |------| |------|Enter | |
  328. * | | | | | | | |
  329. * `--------------------' `--------------------'
  330. */
  331. // Numpad Layer
  332. [NUM] = LAYOUT_ergodox(
  333. //left hand
  334. _______, _______, _______, _______, _______, _______, _______,
  335. _______, _______, _______, _______, _______, _______, _______,
  336. _______, _______, _______, TD(TD_COPY_CUT), PAST_PS, _______,
  337. _______, _______, _______, _______, _______, _______, _______,
  338. _______, _______, _______, _______, _______,
  339. _______, _______,
  340. _______,
  341. _______, _______, _______,
  342. //right hand
  343. _______, _______, _______, _______, _______, _______, _______,
  344. _______, KC_EQUAL, KC_7, KC_8, KC_9, KC_ASTR, _______,
  345. KC_PLUS, KC_4, KC_5, KC_6, KC_PLUS, _______,
  346. _______, KC_MINUS, KC_1, KC_2, KC_3, KC_KP_SLASH, _______,
  347. KC_KP_0, KC_DOT, DBLE_ZER0, DBLE_ZER0, KC_KP_ENTER,
  348. _______, _______,
  349. _______,
  350. _______, KC_PENT, _______),
  351. };
  352. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  353. switch (keycode) {
  354. case EPRM:
  355. if (record->event.pressed) {
  356. eeconfig_init();
  357. }
  358. return false;
  359. break;
  360. case VRSN:
  361. if (record->event.pressed) {
  362. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  363. }
  364. return false;
  365. break;
  366. case MD_LINK:
  367. if (record->event.pressed){
  368. key_timer = timer_read();
  369. } else {
  370. if (timer_elapsed(key_timer) > 150) {
  371. SEND_STRING ("([Video](");
  372. } else {
  373. SEND_STRING ("([Screenshot](");
  374. }
  375. SEND_STRING(SS_LGUI("v"));
  376. SEND_STRING("))");
  377. }
  378. break;
  379. case XKCD:
  380. if (record->event.pressed) {
  381. SEND_STRING ("https://xkcd.com/1319/");
  382. }
  383. break;
  384. case DBLE_ZER0:
  385. if (record->event.pressed){
  386. SEND_STRING ("00");
  387. }
  388. break;
  389. case DBLE_ASTR:
  390. if (record->event.pressed){
  391. SEND_STRING ("**");
  392. SEND_STRING ("**");
  393. SEND_STRING (SS_TAP(X_LEFT));
  394. SEND_STRING (SS_TAP(X_LEFT));
  395. }
  396. break;
  397. case TRPLE_GRAVE:
  398. if (record->event.pressed){
  399. SEND_STRING ("```");
  400. }
  401. break;
  402. case L_ID_0:
  403. if (record->event.pressed) {
  404. SEND_STRING (SS_LGUI(" "));
  405. SEND_STRING ("Layer 0: Base");
  406. }
  407. break;
  408. case L_ID_1:
  409. if (record->event.pressed) {
  410. SEND_STRING (SS_LGUI(" "));
  411. SEND_STRING ("Layer 1: Symbols");
  412. }
  413. break;
  414. case L_ID_2:
  415. if (record->event.pressed) {
  416. SEND_STRING (SS_LGUI(" "));
  417. SEND_STRING ("Layer 2: Media & Mousekeys");
  418. }
  419. break;
  420. case PAST_PS:
  421. if (record->event.pressed) {
  422. key_timer = timer_read();
  423. } else {
  424. if (timer_elapsed(key_timer) > 150) {
  425. SEND_STRING (SS_LGUI("V")); // Paste special
  426. } else {
  427. SEND_STRING (SS_LGUI("v")); // Paste
  428. }
  429. }
  430. break;
  431. case TODO:
  432. if (record->event.pressed) {
  433. key_timer = timer_read();
  434. } else {
  435. if (timer_elapsed(key_timer) > 150) { //switch to Todoist when held and released
  436. SEND_STRING (SS_LGUI(" "));
  437. SEND_STRING ("Todoist");
  438. SEND_STRING (SS_TAP(X_ENTER));
  439. } else {
  440. SEND_STRING (SS_LGUI(SS_LCTRL("a"))); //macro to open Todoist new task dialog
  441. }
  442. }
  443. break;
  444. case RUBYMINE:
  445. if (record->event.pressed){
  446. SEND_STRING (SS_LGUI(" "));
  447. SEND_STRING ("RUBYMINE");
  448. SEND_STRING (SS_TAP(X_ENTER));
  449. }
  450. break;
  451. case ZENDESK:
  452. if (record->event.pressed){
  453. SEND_STRING (SS_LGUI(" "));
  454. SEND_STRING ("||ZEN");
  455. SEND_STRING (SS_TAP(X_ENTER));
  456. }
  457. break;
  458. case H_ONE:
  459. if (record->event.pressed){
  460. SEND_STRING ("# ");
  461. }
  462. break;
  463. case H_TWO:
  464. if (record->event.pressed){
  465. SEND_STRING ("## ");
  466. }
  467. break;
  468. case H_THREE:
  469. if (record->event.pressed){
  470. SEND_STRING ("### ");
  471. }
  472. break;
  473. case H_FOUR:
  474. if (record->event.pressed){
  475. SEND_STRING ("#### ");
  476. }
  477. break;
  478. case H_FIVE:
  479. if (record->event.pressed){
  480. SEND_STRING ("##### ");
  481. }
  482. break;
  483. case M_LINK:
  484. if (record->event.pressed){
  485. SEND_STRING ("[]()");
  486. }
  487. break;
  488. case M_GREATER:
  489. if (record->event.pressed){
  490. SEND_STRING ("> ");
  491. }
  492. break;
  493. }
  494. return true;
  495. };
  496. void matrix_scan_user(void) {
  497. uint8_t layer = get_highest_layer(layer_state);
  498. ergodox_board_led_off();
  499. ergodox_right_led_1_off();
  500. ergodox_right_led_2_off();
  501. ergodox_right_led_3_off();
  502. switch (layer) {
  503. case 1:
  504. ergodox_right_led_1_on();
  505. break;
  506. case 2:
  507. ergodox_right_led_2_on();
  508. break;
  509. default:
  510. break;
  511. }
  512. };