keymap.c 29 KB

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