1
0

keymap.c 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /* Copyright 2017 Wunder
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. // Layer shorthand
  18. #define _WO 0
  19. #define _QW 1
  20. #define _NUM 2
  21. #define _SYM 3
  22. #define _FUN 4
  23. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  24. [_WO] = LAYOUT_ortho_5x15( /* WORKMAN */
  25. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, MO(_FUN),TG(_NUM),TG(_QW),KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
  26. KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_GRV, KC_LGUI, KC_QUOT, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS,
  27. CTL_T(KC_ESC),KC_A,KC_S, KC_H, KC_T, KC_G, KC_EQL, KC_UP, KC_MINS, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT,
  28. KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LEFT, KC_DOWN, KC_RGHT, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  29. KC_MEH,KC_LGUI,KC_LALT,KC_LEFT,KC_RGHT,LT(_SYM,KC_SPC),LGUI_T(KC_ENT),KC_SPC,LT(_SYM,KC_TAB),KC_BSPC,KC_DOWN,KC_UP,KC_LBRC,KC_RBRC,MO(_SYM)
  30. ),
  31. [_QW] = LAYOUT_ortho_5x15( /* QWERTY */
  32. _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
  33. _______, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
  34. _______, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______,
  35. _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
  36. _______, _______, _______, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______
  37. ),//
  38. [_NUM] = LAYOUT_ortho_5x15( /* NUM */
  39. _______, _______, _______, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
  40. _______, _______, _______, _______, _______,_______,KC_7, KC_8, KC_9, _______,_______,_______, _______, _______, _______,
  41. _______, _______, _______, _______, _______,_______,KC_4, KC_5, KC_6, _______,_______,_______, _______, _______, _______,
  42. _______, _______, _______, _______, _______,_______,KC_1, KC_2, KC_3, _______,_______,_______, _______, _______, _______,
  43. _______, _______, _______, _______, _______,_______,_______, KC_0, _______, _______,_______,_______, _______, _______, _______
  44. ),
  45. [_SYM] = LAYOUT_ortho_5x15( /* SYM */
  46. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
  47. _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR,KC_ASTR,_______, KC_F11, KC_F12, KC_LABK,KC_HOME,KC_UP, KC_PGUP, KC_ASTR, _______,
  48. _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN,KC_GRV, _______, _______, _______, KC_RABK,KC_LEFT,KC_DOWN, KC_RIGHT,KC_PLUS, _______,
  49. _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC,KC_TILD,_______, _______, _______, KC_AMPR,KC_END, KC_DOWN, KC_PGDN, KC_BSLS, _______,
  50. _______, _______, _______, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______
  51. ),
  52. [_FUN] = LAYOUT_ortho_5x15( /* FUN */
  53. _______, RGB_RMOD,RGB_MOD, RGB_TOG, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, RESET,
  54. _______, RGB_HUD, RGB_HUI, RGB_MODE_PLAIN, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
  55. _______, RGB_SAD, RGB_SAI, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
  56. _______, RGB_VAD, RGB_VAI, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
  57. _______, _______, _______, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______
  58. )
  59. };
  60. bool CTRLDOWN = false;
  61. bool WINDOWN = false;
  62. bool SHIFTDOWN = false;
  63. void matrix_scan_user(void) {
  64. uint8_t layer = biton32(layer_state);
  65. switch (layer) {
  66. case 0:
  67. rgblight_setrgb(0,240, 255);
  68. break;
  69. case 1:
  70. rgblight_setrgb(0,255, 100);
  71. break;
  72. case 2:
  73. rgblight_setrgb(10,255, 0);
  74. break;
  75. case 3:
  76. rgblight_setrgb(255,0, 85);
  77. break;
  78. case 4:
  79. rgblight_setrgb(240,255, 0);
  80. break;
  81. default:
  82. // none
  83. break;
  84. }
  85. if ( SHIFTDOWN) {
  86. rgblight_setrgb(255,255, 255);
  87. }
  88. if ( CTRLDOWN) {
  89. rgblight_setrgb(240,255, 0);
  90. }
  91. if ( WINDOWN) {
  92. rgblight_setrgb(255,255, 255);
  93. }
  94. };
  95. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  96. switch (keycode) {
  97. case KC_LGUI:
  98. if (record->event.pressed) {
  99. WINDOWN = true;
  100. } else {
  101. WINDOWN = false;
  102. }
  103. return true;
  104. case LGUI_T(KC_ENT):
  105. if (record->event.pressed) {
  106. WINDOWN = true;
  107. } else {
  108. WINDOWN = false;
  109. }
  110. return true;
  111. case CTL_T(KC_ESC):
  112. if (record->event.pressed) {
  113. CTRLDOWN = true;
  114. } else {
  115. CTRLDOWN = false;
  116. }
  117. return true;
  118. case KC_LSFT:
  119. if (record->event.pressed) {
  120. SHIFTDOWN = true;
  121. } else {
  122. SHIFTDOWN = false;
  123. }
  124. return true;
  125. case KC_RSFT:
  126. if (record->event.pressed) {
  127. SHIFTDOWN = true;
  128. } else {
  129. SHIFTDOWN = false;
  130. }
  131. return true;
  132. default:
  133. return true; // Process all other keycodes normally
  134. }
  135. };