2
0

keymap.c 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #include QMK_KEYBOARD_H
  2. enum mitosis_layers
  3. {
  4. _QWERTY,
  5. _WORKMAN,
  6. _NUMBERS,
  7. _PUNCT,
  8. _MOUSE,
  9. _LAYERS,
  10. _GAMING,
  11. _UNICODE,
  12. _NUMPAD
  13. };
  14. //Mousekeys
  15. #define MOUSEKEY_DELAY 300
  16. #define MOUSEKEY_INTERNAL 50
  17. #define MOUSEKEY_MAX_SPEED 20
  18. #define MOUSEKEY_TIME_TO_MAX 30
  19. #define MOUSEKEY_WHEEL_MAX_SPEED 8
  20. #define MOUSEKEY_WHEEL_TIME_TO_MAX 40
  21. // Fillers to make layering more clear
  22. #define _______ KC_TRNS
  23. #define XXX KC_NO
  24. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  25. // https://github.com/nhou7/qmk_firmware_amj40/blob/master/doc/keycode.txt
  26. /* QWERTY
  27. ['Q', 'W', 'E', 'R', 'T',// 'Y', 'U', 'I', 'O', 'P' ],
  28. ['A', 'S', 'D', 'F', 'G',// 'H', 'J', 'K', 'L', '; :' ],
  29. ['Z', 'X', 'C', 'V', 'B',// 'N', 'M', ', <', '. >', '\' "' ],
  30. [ 'back', 'del', 'ctrl', 'L_n',// 'L_p', 'ctrl', 'ent', 'back', ],
  31. [ 'alt', '0', 'shif', 'spac',// 'spac', 'shif', 'cap', 'alt', ]
  32. */
  33. [_QWERTY] = LAYOUT(
  34. KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
  35. KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON,
  36. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOTE,
  37. KC_BSPACE, KC_DELETE, KC_LCTRL, TG( 2 ), TG( 3 ), KC_RCTRL, KC_ENTER, KC_BSPACE,
  38. KC_LALT, KC_0, KC_LSHIFT, KC_SPACE, KC_SPACE, KC_RSHIFT, KC_CAPSLOCK, KC_RALT
  39. ),
  40. /*
  41. ['Q', 'D', 'R', 'W', 'B',/ ** / 'J', 'F', 'U', 'P', '; :' ],
  42. ['A', 'S', 'H', 'T', 'G',/ ** / 'Y', 'N', 'E', 'O', 'I' ],
  43. ['Z', 'X', 'M', 'C', 'V',/ ** / 'K', 'L', ', <', '. >', '\' "' ],
  44. [ '', '', '', '',/ ** / '', '', '', '', ],
  45. [ '', '4', '', '',/ ** / '', '', '', '', ]
  46. */
  47. [_WORKMAN] = LAYOUT(
  48. KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCOLON,
  49. KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I,
  50. KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMMA, KC_DOT, KC_QUOTE,
  51. _______, _______, _______, _______, _______, _______, _______, _______,
  52. _______, KC_1, _______, _______, _______, _______, _______, _______
  53. ),
  54. /*
  55. ['9', '8', '7', '6', '5',/ ** / 'F2', 'pDn', *up* /, '*tab* /, 'pUp' ],
  56. [' 4', ' 3', ' 2', ' 1', ' 0',/ ** / 'home', *lf* /, '*dn* /, *rt* /, 'end' ],
  57. ['undo', 'cut', 'copy', 'paste', 'os',/ ** / 'D', '_', ',', '-', '.' ],
  58. // --
  59. [ '', '', '', 'L_=6',/ ** / 'L_7', '', '', '', ],
  60. [ '', '6', '', '',/ ** / '', '', '', '', ]
  61. */
  62. [_NUMBERS] = LAYOUT(
  63. KC_9, KC_8, KC_7, KC_6, KC_5, KC_F2, KC_PGDOWN, KC_UP, KC_TAB, KC_PGUP,
  64. KC_4, KC_3, KC_2, KC_1, KC_0, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END,
  65. LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_LGUI, KC_D, KC_UNDERSCORE, KC_COMMA, KC_MINUS, KC_DOT,
  66. _______, _______, _______, TG( 2 ), TG( 3 ), _______, _______, _______,
  67. _______, KC_2, _______, _______, _______, _______, _______, _______
  68. ),
  69. /*
  70. [ '#', '@', '&', '.', ';',/ ** / '_', ',', '|', '^', '%' ],
  71. [ '*', '+', '{', '(', ':',/ ** / '"', ')', '}', '-', '=' ],
  72. [ '\\', '?', '<', '[', '$',/ ** / '~', ']', '>', '!', '/' ],
  73. // --
  74. ['', '', '', 'L_8',/ ** / 'L_=7', '', '', '', ],
  75. ['', '7', '', '',/ ** / '', '', '', '', ]
  76. */
  77. [_PUNCT] = LAYOUT(
  78. KC_HASH, KC_AT, KC_AMPERSAND, KC_DOT, KC_SCOLON, KC_UNDERSCORE, KC_COMMA, KC_PIPE, KC_CIRCUMFLEX, KC_PERCENT,
  79. KC_ASTERISK, KC_PLUS, KC_LCBR, KC_LPRN, KC_COLON, KC_DQUO, KC_RPRN, KC_RCBR, KC_MINUS, KC_EQUAL,
  80. KC_BSLASH, KC_QUESTION, KC_LT, KC_LBRACKET, KC_DOLLAR, KC_TILDE, KC_RBRACKET, KC_GT, KC_EXCLAIM, KC_SLASH,
  81. _______, _______, _______, TG( 4 ), TG( 3 ), _______, _______, _______,
  82. _______, KC_3, _______, _______, _______, _______, _______, _______
  83. ),
  84. /*
  85. ['F6', 'F7', 'F8', 'F9', 'F10',/ ** / 'app', 'mb1', 'mmU', 'mb2', 'mwU' ],
  86. ['F1', 'F2', 'F3', 'F4', 'F5',/ ** / 'mnu', 'mmL', 'mmD', 'mmR', 'mwD' ],
  87. ['F11', 'F12', '`', 'mute', 'ESC',/ ** / 'prtSc', 'scrLk', 'mwL', 'mwR', 'mb3' ],
  88. // --
  89. [ '', '', '', 'L_=8',/ ** / 'L_9', '', '', '', ],
  90. [ '', '8', '', '',/ ** / '', '', '', '', ]
  91. */
  92. [_MOUSE] = LAYOUT(
  93. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MENU, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP,
  94. KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MENU, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
  95. KC_F11, KC_F12, KC_GRAVE, KC__MUTE, KC_ESCAPE, KC_PSCREEN, KC_SLCK, KC_MS_WH_LEFT, KC_MS_WH_RIGHT, KC_MS_BTN3,
  96. _______, _______, _______, TG( 4 ), TG( 5 ), _______, _______, _______,
  97. _______, KC_4, _______, _______, _______, _______, _______, _______
  98. ),
  99. /*
  100. ['L_ma1', '!', 'L_dv2', '!', 'L_cl3',/ ** / 'L_wk4', '!', 'L_ar5', '!', '!' ],
  101. ['!', '!', '!', '!', '!',/ ** / '!', '!', '!', '!', '!' ],
  102. ['L_gmA', '!', 'L_ucB', '!', 'L_npC',/ ** / '!', '!', '!', '!', '!' ],
  103. // --
  104. [ '', '', '', 'L_=9',/ ** / 'L_=9', '', '', '', ],
  105. [ '', '9', '', '',/ ** / '', '', '', '', ]
  106. */
  107. [_LAYERS] = LAYOUT(
  108. KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, TG( 1 ), KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM,
  109. KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM,
  110. TG( 6 ), KC_EXCLAIM, TG( 7 ), KC_EXCLAIM, TG( 8 ), KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM, KC_EXCLAIM,
  111. _______, _______, _______, TG( 5 ), TG( 5 ), _______, _______, _______,
  112. _______, KC_5, _______, _______, _______, _______, _______, _______
  113. ),
  114. /*
  115. ['Q', 'W', 'E', 'R', 'T',/ ** / 'P', 'Y', '\u2191'*up* /, 'K', '1' ],
  116. ['A', 'S', 'D', 'F', 'G',/ ** / 'H', '\u2190'*lf* /, '\u2193'*dn* /, '\u2192'*rt* /, '2' ],
  117. ['Z', 'X', 'C', 'V', 'B',/ ** / 'M', '*', '*', '*', '3' ],
  118. // --
  119. [ '', '', '', 'L_=A',/ ** / 'A', '', '', '', ],
  120. [ '', 'A', '', '',/ ** / '', '', '', '', ]
  121. */
  122. [_GAMING] = LAYOUT(
  123. KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P, KC_Y, KC_UP, KC_K, KC_1,
  124. KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_LEFT, KC_DOWN, KC_RIGHT, KC_2,
  125. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_M, KC_ASTERISK, KC_ASTERISK, KC_ASTERISK, KC_3,
  126. _______, _______, _______, TG( 6 ), KC_6, _______, _______, _______,
  127. _______, KC_6, _______, _______, _______, _______, _______, _______
  128. ),
  129. /*
  130. ['\u00a2'cent* /, '\u00bc'1/4* /, '\u00bd'1/2* /, '\u03a3'sum* /, '\u00d8'Oslash* /,/ ** / '\u250f'box ul* /, '\u2533'box um* /, '\u2513'box ur* /, '\u03bb'lambda* /, '\u2018'sm'dn* / ],
  131. ['\u00F1'n~* /, '\u00a9'&copy* /, '\u00b0'degrees* /, '\u00b1'+-* /, '\u2b0f'arrow up* /,/ ** / '\u2523'box ml* /, '\u254B'box mm* /, '\u252B'box mr* /, '\u0394'delta* /, '\u2019'sm'up* / ],
  132. ['\u00a1'down !* /, '\u00bf'down ?* /, '\u00d7'mult x* /, '\u00f7'div/ * /, '\u03c0'pi* /,/ ** / '\u2517'box ll* /, '\u253b'bos lm* /, '\u251b'box lr* /, '\u201c'sm"dn* /, '\u201d'sm"up* / ],
  133. // --
  134. [ '', '', '', 'L_=B',/ ** / 'B', '', '', '', ],
  135. [ '', 'B', '', '',/ ** / '', '', '', '', ]
  136. */
  137. [_UNICODE] = LAYOUT(
  138. UC(0x00A2), UC(0x00BC), UC(0x00BD), UC(0x03A3), UC(0x00D8), UC(0x250F), UC(0x2533), UC(0x2513), UC(0x03BB), UC(0x2018),
  139. UC(0x00F1), UC(0x00A9), UC(0x00B0), UC(0x00B1), UC(0x2B0F), UC(0x2523), UC(0x254B), UC(0x252B), UC(0x0394), UC(0x2019),
  140. UC(0x00A1), UC(0x00BF), UC(0x00D7), UC(0x00F7), UC(0x03C0), UC(0x2517), UC(0x253B), UC(0x251B), UC(0x201C), UC(0x201D),
  141. _______, _______, _______, TG( 7 ), KC_7, _______, _______, _______,
  142. _______, KC_7, _______, _______, _______, _______, _______, _______
  143. ),
  144. /*
  145. ['n-.', 'n-7', 'n-8', 'n-9', 'n--',/ ** / 'n-=', 'volU', 'volD', 'volU', 'volD' ],
  146. ['n-0', 'n-4', 'n-5', 'n-6', 'n-+',/ ** / 'N-lck', 'BACK', 'MUTE', 'RGUI', 'paus' ],
  147. ['n -*', 'n-1', 'n-2', 'n-3', 'n-/',/ ** / 'n-ent', 'PLAY', 'PREV', 'NEXT', 'insr' ],
  148. // --
  149. [ '', '', '', 'L_=C',/ ** / 'C', '', '', '', ],
  150. [ '', 'C', '', '',/ ** / '', '', '', '', ]
  151. */
  152. [_NUMPAD] = LAYOUT(
  153. KC_KP_DOT, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_KP_EQUAL, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC__VOLUP, KC__VOLDOWN,
  154. KC_KP_0, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NUMLOCK, KC_WWW_BACK, KC_AUDIO_MUTE, KC_RGUI, KC_PAUSE,
  155. KC_KP_ASTERISK, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, KC_KP_ENTER, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_INSERT,
  156. _______, _______, _______, TG( 8 ), KC_8, _______, _______, _______,
  157. _______, KC_8, _______, _______, _______, _______, _______, _______
  158. )// ,
  159. /*
  160. * /
  161. [_] = LAYOUT(
  162. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  163. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  164. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  165. _______, _______, _______, _______, _______, _______, _______, _______,
  166. _______, _______, _______, _______, _______, _______, _______, _______
  167. )
  168. */
  169. };
  170. void matrix_scan_user(void) {
  171. uint8_t layer = biton32(layer_state);
  172. switch (layer) {
  173. case _QWERTY:
  174. case _WORKMAN:
  175. set_led_off;
  176. break;
  177. case _NUMBERS:
  178. set_led_blue;
  179. break;
  180. case _PUNCT:
  181. set_led_red;
  182. break;
  183. case _MOUSE:
  184. set_led_green;
  185. break;
  186. case _LAYERS:
  187. set_led_yellow;
  188. break;
  189. case _UNICODE:
  190. set_led_cyan;
  191. break;
  192. default:
  193. break;
  194. }
  195. };
  196. void matrix_init_user(void) {
  197. set_unicode_input_mode(UC_LNX); // or UC_WINC
  198. };