keymap.c 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. enum chimera_ortho_plus_layers {
  7. _QWERTY,
  8. _CAPS,
  9. _NUMPAD,
  10. _SYMBOLS,
  11. _MACROS,
  12. _NAV
  13. };
  14. #define KC_NMPD TG(_NUMPAD)
  15. #define KC_SYMB TG(_SYMBOLS)
  16. #define KC_SPFN LT(_NAV,KC_4)
  17. #define KC_SCTL MT(MOD_LCTL, KC_2)
  18. #define KC_SCTR MT(MOD_LCTL, KC_9)
  19. #define KC_SPLT MT(MOD_LALT, KC_3)
  20. #define KC_SPRT MT(MOD_LALT, KC_8)
  21. #define KC_GBRC MT(MOD_RGUI, KC_7)
  22. #define KC_GQOT MT(MOD_LGUI, KC_QUOT)
  23. #define KC_MESC LT(_MACROS, KC_ESC)
  24. #define KC_CAD LALT(LCTL(KC_DEL))
  25. enum custom_keycodes {
  26. KC_INCL = SAFE_RANGE,
  27. KC_PULL,
  28. KC_PUSH,
  29. KC_SCAP,
  30. KC_SCOF
  31. };
  32. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  33. [_QWERTY] = LAYOUT(
  34. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  35. KC_LBRC, KC_1 ,KC_SCTL,KC_SPLT,KC_SPFN, KC_5 , KC_6 ,KC_GBRC,KC_SPRT,KC_SCTR, KC_0 ,KC_RBRC,
  36. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  37. KC_MESC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_QUOT,
  38. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  39. KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_ENT ,
  40. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  41. SC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,SC_RSPC,
  42. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  43. KC_NMPD,KC_BSPC, KC_SPC ,KC_SYMB
  44. //|-------------------------------+-------+-------| |-------+-------+-------------------------------|
  45. ),
  46. [_CAPS] = LAYOUT(
  47. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  48. _______,KC_UNDS,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
  49. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  50. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
  51. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  52. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,KC_COLN,_______,
  53. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  54. KC_SCOF,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_SCOF,
  55. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  56. _______,_______, _______,_______
  57. //|-------------------------------+-------+-------| |-------+-------+-------------------------------|
  58. ),
  59. [_NUMPAD] = LAYOUT(
  60. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  61. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,KC_MINS,_______,
  62. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  63. _______,_______,KC_COLN,_______,_______,_______, _______, KC_7 , KC_8 , KC_9 ,KC_ASTR,_______,
  64. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  65. _______,_______,KC_DOT ,_______,_______,_______, _______, KC_4 , KC_5 , KC_6 ,KC_PLUS,_______,
  66. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  67. _______,_______,_______,_______,_______,_______, _______, KC_1 , KC_2 , KC_3 ,KC_SLSH,_______,
  68. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  69. _______,_______, _______, KC_0
  70. //|-------------------------------+-------+-------/ |-------+-------+-------------------------------|
  71. ),
  72. [_SYMBOLS] = LAYOUT(
  73. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  74. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
  75. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  76. _______,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSLS,
  77. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  78. KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_TILD,KC_EQL ,KC_UNDS,KC_LCBR,KC_RCBR,_______,
  79. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  80. KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 , KC_GRV ,KC_PLUS,KC_MINS,KC_LBRC,KC_RBRC,_______,
  81. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  82. KC_PIPE,_______, _______,_______
  83. //|-------------------------------+-------+-------| |-------+-------+-------------------------------|
  84. ),
  85. [_MACROS] = LAYOUT(
  86. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  87. _______,_______,_______,_______,_______,_______, _______ ,_______,_______,_______,_______,_______,
  88. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  89. _______,_______,_______,_______,_______,_______, _______ ,_______,KC_INCL,_______,_______,_______,
  90. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  91. _______,_______,_______,KC_CAD ,_______,_______, _______ ,_______,_______,_______,_______,_______,
  92. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  93. KC_SCAP,_______,_______,_______,_______,_______, _______ ,_______,KC_PULL,KC_PUSH,_______,_______,
  94. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  95. _______,_______, _______,_______
  96. //|-------------------------------+-------+-------| |-------+-------+-------------------------------|
  97. ),
  98. [_NAV] = LAYOUT(
  99. //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
  100. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
  101. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  102. _______,_______,_______,_______,_______,_______, _______,KC_PGUP, KC_UP ,KC_PGDN,KC_PSCR,_______,
  103. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  104. _______,_______,_______,_______,_______,_______, _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,
  105. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  106. _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
  107. //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
  108. _______,KC_DEL , _______,_______
  109. //|-------------------------------+-------+-------| |-------+-------+-------------------------------|
  110. )
  111. };
  112. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  113. switch(keycode) {
  114. /* include some kind of library or header */
  115. case KC_INCL:
  116. if (record->event.pressed) {
  117. SEND_STRING("#include <>" SS_TAP(X_LEFT));
  118. }
  119. return false;
  120. case KC_PULL:
  121. if (record->event.pressed) {
  122. SEND_STRING("git pull\n");
  123. }
  124. return false;
  125. case KC_PUSH:
  126. if (record->event.pressed){
  127. SEND_STRING("git push\n");
  128. }
  129. return false;
  130. case KC_SCAP:
  131. if (record->event.pressed){
  132. layer_on(_CAPS);
  133. tap_code(KC_CAPS);
  134. }
  135. return false;
  136. case KC_SCOF:
  137. if (record->event.pressed){
  138. layer_off(_CAPS);
  139. tap_code(KC_CAPS);
  140. }
  141. return false;
  142. }
  143. return true;
  144. };
  145. void matrix_scan_user(void) {
  146. uint8_t layer = get_highest_layer(layer_state);
  147. switch (layer) {
  148. case _QWERTY:
  149. set_led_green;
  150. break;
  151. case _CAPS:
  152. set_led_white;
  153. break;
  154. case _NUMPAD:
  155. set_led_blue;
  156. break;
  157. case _SYMBOLS:
  158. set_led_red;
  159. break;
  160. case _MACROS:
  161. set_led_cyan;
  162. break;
  163. case _NAV:
  164. set_led_magenta;
  165. break;
  166. default:
  167. set_led_green;
  168. break;
  169. }
  170. };