keymap.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. #include QMK_KEYBOARD_H
  2. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  3. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  4. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  5. // entirely and just use numbers.
  6. #define CANCEL LCTL(KC_C)
  7. #define TERM LCTL(LALT(KC_T))
  8. #define ALPHAMOD LT(_ALPHA, KC_VOLD)
  9. #define CTLBSP MT(MOD_LCTL, KC_BSPC)
  10. #define GUIDEL MT(MOD_LGUI, KC_DEL)
  11. #define ALTSPC MT(MOD_LALT, KC_SPACE)
  12. #define SPCMOD LT(_MOD, KC_SPACE)
  13. #define JUMPBACK LSFT(KC_TAB)
  14. #define NTAB LCTL(KC_T)
  15. #define CTAB LCTL(KC_W)
  16. #define TAB1 LCTL(KC_1)
  17. #define TAB2 LCTL(KC_2)
  18. #define TAB3 LCTL(KC_3)
  19. #define TAB4 LCTL(KC_4)
  20. #define BWORD LCTL(KC_BSPC)
  21. #define LWORD LCTL(KC_LEFT)
  22. #define RWORD LCTL(KC_RIGHT)
  23. #define TABMOD LT(_MOD, KC_TAB)
  24. #define ENTMOD LT(_ENT, KC_ENTER)
  25. enum layer_names {
  26. _BASE,
  27. _PLAYING,
  28. _PLAYED,
  29. _NUMS,
  30. _FN,
  31. _TEST,
  32. _ALPHA,
  33. _QWERTY,
  34. _REV,
  35. _DEL,
  36. _MOD,
  37. _ENT
  38. };
  39. enum custom_keycodes {
  40. MET = SAFE_RANGE,
  41. SET,
  42. GO,
  43. STOP,
  44. RESUME,
  45. NEWRESUME,
  46. SYNC,
  47. SHUTDOWN,
  48. REBOOT,
  49. SOURCE,
  50. PUSH,
  51. TEST,
  52. TST,
  53. ENAME,
  54. SNAME,
  55. LNAME,
  56. BUS,
  57. PMERGE,
  58. CSPEAK
  59. };
  60. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  61. switch (keycode) {
  62. case SET:
  63. if (record->event.pressed) {
  64. layer_on(_NUMS);
  65. SEND_STRING("met ");
  66. }
  67. break;
  68. case GO:
  69. if (record->event.pressed) {
  70. layer_off(_NUMS);
  71. layer_off(_ALPHA);
  72. layer_off(_PLAYED);
  73. layer_on(_PLAYING);
  74. SEND_STRING(SS_TAP(X_ENTER));
  75. }
  76. break;
  77. case STOP:
  78. if (record->event.pressed) {
  79. layer_off(_PLAYING);
  80. layer_on(_PLAYED);
  81. layer_off(_NUMS);
  82. layer_off(_ALPHA);
  83. SEND_STRING(SS_TAP(X_N));
  84. SEND_STRING(SS_TAP(X_N));
  85. SEND_STRING(SS_LCTRL(SS_TAP(X_C)));
  86. }
  87. break;
  88. case RESUME:
  89. if (record->event.pressed) {
  90. layer_off(_PLAYED);
  91. layer_on(_PLAYING);
  92. SEND_STRING(SS_LCTRL(SS_TAP(X_C)));
  93. SEND_STRING(SS_TAP(X_UP));
  94. SEND_STRING(SS_TAP(X_ENTER));
  95. }
  96. break;
  97. case NEWRESUME:
  98. if (record->event.pressed) {
  99. layer_off(_NUMS);
  100. layer_off(_ALPHA);
  101. layer_off(_PLAYED);
  102. layer_on(_PLAYING);
  103. SEND_STRING(SS_TAP(X_R));
  104. SEND_STRING(SS_TAP(X_ENTER));
  105. }
  106. break;
  107. case SYNC:
  108. if (record->event.pressed) {
  109. SEND_STRING(SS_TAP(X_N));
  110. }
  111. break;
  112. case SHUTDOWN:
  113. if (record->event.pressed) {
  114. SEND_STRING(SS_LCTRL(SS_TAP(X_C)));
  115. SEND_STRING("shutdown now");
  116. SEND_STRING(SS_TAP(X_ENTER));
  117. }
  118. break;
  119. case REBOOT:
  120. if (record->event.pressed) {
  121. SEND_STRING(SS_LCTRL(SS_TAP(X_C)));
  122. SEND_STRING("reboot");
  123. SEND_STRING(SS_TAP(X_ENTER));
  124. }
  125. break;
  126. case SOURCE:
  127. if (record->event.pressed) {
  128. SEND_STRING("source .bashrc");
  129. SEND_STRING(SS_TAP(X_ENTER));
  130. }
  131. break;
  132. case PUSH:
  133. if (record->event.pressed) {
  134. SEND_STRING("ftp rossmontsinger.net");
  135. _delay_ms(250);
  136. SEND_STRING(SS_TAP(X_ENTER));
  137. _delay_ms(2250);
  138. SEND_STRING("met@rossmontsinger.net");
  139. _delay_ms(250);
  140. SEND_STRING(SS_TAP(X_ENTER));
  141. _delay_ms(2500);
  142. SEND_STRING("metboard");
  143. _delay_ms(250);
  144. SEND_STRING(SS_TAP(X_ENTER));
  145. }
  146. break;
  147. case TEST:
  148. if (record->event.pressed) {
  149. layer_off(_NUMS);
  150. layer_off(_ALPHA);
  151. layer_off(_PLAYED);
  152. layer_on(_PLAYING);
  153. SEND_STRING(SS_LCTRL(SS_TAP(X_C)));
  154. _delay_ms(250);
  155. SEND_STRING("play Desktop/met/a_lazoom.mp3");
  156. SEND_STRING(SS_TAP(X_ENTER));
  157. }
  158. case TST:
  159. if (record->event.pressed) {
  160. SEND_STRING("tst");
  161. SEND_STRING(SS_TAP(X_ENTER));
  162. }
  163. break;
  164. case ENAME:
  165. if (record->event.pressed) {
  166. SEND_STRING("sname ");
  167. layer_on(_NUMS);
  168. layer_on(_ALPHA);
  169. }
  170. break;
  171. case SNAME:
  172. if (record->event.pressed) {
  173. SEND_STRING(SS_TAP(X_ENTER));
  174. layer_off(_NUMS);
  175. layer_off(_ALPHA);
  176. }
  177. break;
  178. case LNAME:
  179. if (record->event.pressed) {
  180. SEND_STRING("met $");
  181. layer_off(_NUMS);
  182. layer_on(_ALPHA);
  183. }
  184. break;
  185. case BUS:
  186. if (record->event.pressed) {
  187. SEND_STRING("met $bus");
  188. layer_off(_NUMS);
  189. layer_off(_ALPHA);
  190. layer_off(_PLAYED);
  191. layer_on(_PLAYING);
  192. SEND_STRING(SS_TAP(X_ENTER));
  193. }
  194. break;
  195. case PMERGE:
  196. if (record->event.pressed) {
  197. SEND_STRING(SS_TAP(X_HOME));
  198. SEND_STRING(SS_TAP(X_BSPACE));
  199. SEND_STRING(SS_TAP(X_SPACE));
  200. SEND_STRING(SS_LCTRL(SS_TAP(X_BSPACE)));
  201. SEND_STRING(SS_TAP(X_SPACE));
  202. }
  203. break;
  204. case CSPEAK:
  205. if (record->event.pressed) {
  206. SEND_STRING(SS_TAP(X_PGDOWN));
  207. SEND_STRING(SS_TAP(X_ENTER));
  208. SEND_STRING(SS_TAP(X_ENTER));
  209. SEND_STRING(SS_TAP(X_PGDOWN));
  210. }
  211. break;
  212. };
  213. return true;
  214. };
  215. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  216. [_BASE] = LAYOUT_ortho_5x14(
  217. KC_NO, STOP , TST , _______, _______, _______, BUS , _______, _______, _______, _______, _______, _______, _______, \
  218. KC_NO, _______, SET , SET , SET , _______, _______, _______, _______, _______, _______, _______, _______, _______, \
  219. KC_NO, _______, SET , SET , SET , _______, _______, _______, _______, _______, _______, _______, _______, _______, \
  220. KC_NO, LNAME , SET , SET , SET , _______, _______, _______, _______, _______, _______, _______, _______, _______, \
  221. KC_NO, MO(_FN), _______, SET , _______, _______, _______, TG(_QWERTY),KC_B, _______, _______, _______, _______, _______ \
  222. ),
  223. [_PLAYING] = LAYOUT_ortho_5x14(
  224. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  225. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  226. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  227. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  228. KC_NO, _______, _______, _______, _______, _______, STOP , _______, _______, _______, _______, _______, _______, _______
  229. ),
  230. [_PLAYED] = LAYOUT_ortho_5x14(
  231. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  232. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  233. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  234. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  235. KC_NO, _______,_______, _______, _______, _______,NEWRESUME, _______, _______, _______, _______, _______, _______, _______
  236. ),
  237. [_NUMS] = LAYOUT_ortho_5x14(
  238. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  239. KC_NO, _______, KC_7 , KC_8 , KC_9 , _______, _______, _______, _______, _______, _______, _______, _______, _______,
  240. KC_NO, _______, KC_4 , KC_5 , KC_6 , _______, _______, _______, _______, _______, _______, _______, _______, _______,
  241. KC_NO, _______, KC_1 , KC_2 , KC_3 , _______, _______, _______, _______, _______, _______, _______, _______, _______,
  242. KC_NO, _______, _______, KC_0 , _______, _______, GO , _______, _______, _______, _______, _______, _______, _______
  243. ),
  244. [_FN] = LAYOUT_ortho_5x14(
  245. KC_NO, SHUTDOWN,_______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______,
  246. KC_NO, REBOOT , _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, _______, _______, _______,
  247. KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  248. KC_NO, ENAME , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  249. KC_NO, _______, _______, _______, _______, _______, SOURCE , _______, _______, _______, _______, _______, _______, _______
  250. ),
  251. [_TEST] = LAYOUT_ortho_5x14(
  252. KC_NO, TST , TST , TST , TST , TST , TST , _______, _______, _______, _______, _______, _______, _______,
  253. KC_NO, TST , TST , TST , TST , TST , TST , _______, _______, _______, _______, _______, _______, _______,
  254. KC_NO, TST , TST , TST , TST , TST , TST , _______, _______, _______, _______, _______, _______, _______,
  255. KC_NO, TST , TST , TST , TST , TST , TST , _______, _______, _______, _______, _______, _______, _______,
  256. KC_NO, TST , TST , TST , TST , TST , TST , _______, _______, _______, _______, _______, _______, _______
  257. ),
  258. [_ALPHA] = LAYOUT_ortho_5x14(
  259. KC_NO, _______, KC_Y , KC_U , KC_I , KC_O , KC_P , _______, _______, _______, _______, _______, _______, _______,
  260. KC_NO, KC_N , KC_Q , KC_W , KC_E , KC_R , KC_T , _______, _______, _______, _______, _______, _______, _______,
  261. KC_NO, KC_M , KC_A , KC_S , KC_D , KC_F , KC_G , _______, _______, _______, _______, _______, _______, _______,
  262. KC_NO, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , _______, _______, _______, _______, _______, _______, _______,
  263. KC_NO, _______, KC_H , KC_J , KC_K , KC_L , GO , _______, _______, _______, _______, _______, _______, _______
  264. ),
  265. [_QWERTY] = LAYOUT_ortho_5x14(
  266. KC_NO, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL ,
  267. KC_NO, KC_CAPS, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC ,
  268. KC_NO, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_PGUP ,
  269. KC_NO, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_UP, KC_PGDN ,
  270. KC_NO, CTLBSP , GUIDEL , KC_ENTER, ALTSPC, TABMOD , KC_BSPC, ENTMOD , SPCMOD ,MO(_DEL), KC_BSLS, KC_LEFT, KC_DOWN, KC_RIGHT
  271. ),
  272. [_REV] = LAYOUT_ortho_5x14(
  273. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  274. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  275. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  276. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  277. KC_NO , _______, _______, _______, _______, KC_TAB , KC_PGDN, _______, _______, _______, _______, _______, _______, _______
  278. ),
  279. [_DEL] = LAYOUT_ortho_5x14(
  280. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  281. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  282. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  283. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  284. KC_NO , _______, _______, _______, _______, KC_BSPC, BWORD , _______, _______, _______, _______, _______, _______, _______
  285. ),
  286. [_MOD] = LAYOUT_ortho_5x14(
  287. KC_NO , KC_GRAVE,KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , NTAB ,
  288. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CTAB,
  289. KC_NO , _______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP ,KC_RIGHT, KC_END , _______, _______,
  290. KC_NO , _______, _______, _______, _______, _______, _______, _______, PMERGE , KC_DOWN, _______, _______, _______, _______,
  291. KC_NO , _______, _______, _______, _______, LWORD , RWORD , TG(_QWERTY),_______,_______,_______,_______, _______, _______
  292. ),
  293. [_ENT] = LAYOUT_ortho_5x14(
  294. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  295. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  296. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  297. KC_NO , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  298. KC_NO , _______, _______, _______, _______, _______, CSPEAK , _______, _______, _______, _______, _______, _______, _______
  299. )
  300. };