keymap.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #include QMK_KEYBOARD_H
  2. #ifdef RGBLIGHT_ENABLE
  3. //Following line allows macro to read current RGB settings
  4. extern rgblight_config_t rgblight_config;
  5. #endif
  6. extern uint8_t is_master;
  7. #define _QWERTY 0
  8. #define _LOWER 1
  9. #define _RAISE 2
  10. #define _ADJUST 3
  11. enum custom_keycodes {
  12. QWERTY = SAFE_RANGE,
  13. LOWER,
  14. RAISE,
  15. ADJUST,
  16. };
  17. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  18. /* QWERTY
  19. * ,-----------------------------------------. ,-----------------------------------------.
  20. * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
  21. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  22. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
  23. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  24. * |HYPER | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
  25. * |------+------+------+------+------+------| - | | + |------+------+------+------+------+------|
  26. * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
  27. * `-----------------------------------------/ / \ \-----------------------------------------'
  28. * | LCtl | LGUI |LALT | /Space / \Space \ |RAISE | [ | ] |
  29. * | | | |/ LOWER / \ \ | ' | | |
  30. * `----------------------------' '------''--------------------'
  31. */
  32. [_QWERTY] = LAYOUT(
  33. KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
  34. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
  35. ALL_T(KC_GRV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER, \
  36. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINS, MEH_T(KC_EQL), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
  37. KC_LCTRL, KC_LGUI, KC_LALT,LT(_LOWER, KC_SPC), KC_SPC, LT(2,KC_QUOT), KC_LBRC, KC_RBRC \
  38. ),
  39. /* LOWER
  40. * ,-----------------------------------------. ,-----------------------------------------.
  41. * | | | | | | | | | | | | | |
  42. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  43. * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
  44. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  45. * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
  46. * |------+------+------+------+------+------| cmd spc| | |------+------+------+------+------+------|
  47. * | | | |ctrl c| | |-------| |-------| | - | _ | [ | ] | | |
  48. * `-----------------------------------------/ / \ \-----------------------------------------'
  49. * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | { | } |
  50. * | | | |/ / \ \ | | | |
  51. * `----------------------------' '------''--------------------'
  52. */
  53. [_LOWER] = LAYOUT(
  54. KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, \
  55. KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
  56. _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,\
  57. _______, _______, _______, C(KC_C), _______, _______, LGUI(KC_SPC), _______, _______, KC_MINS, KC_UNDS , KC_LBRC, KC_RBRC, KC_PIPE, \
  58. _______, _______, _______, _______, _______, RAISE, KC_LCBR, KC_RCBR\
  59. ),
  60. /* RAISE
  61. * ,-----------------------------------------. ,-----------------------------------------.
  62. * | | | | | | | | | | | | | |
  63. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  64. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
  65. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  66. * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
  67. * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
  68. * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
  69. * `-----------------------------------------/ / \ \-----------------------------------------'
  70. * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
  71. * | | | |/ / \ \ | | | |
  72. * `----------------------------' '------''--------------------'
  73. */
  74. [_RAISE] = LAYOUT(
  75. KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, _______, \
  76. KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_6, LCTL(LSFT(KC_TAB)),KC_UP,LCTL(KC_TAB), KC_0, _______, \
  77. _______, _______, _______, _______, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RGHT, XXXXXXX, \
  78. _______, _______, _______, _______, _______, _______, _______, TG(_ADJUST),KC_PLUS, KC_MUTE ,KC_VOLD ,KC_VOLU, _______, _______, \
  79. _______, _______, _______, _______, _______, _______, _______, _______ \
  80. ),
  81. /* ADJUST
  82. * ,-----------------------------------------. ,-----------------------------------------.
  83. * | | | | | | | | | 7 | 8 | 9 |RGB ON| HUE+ |
  84. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  85. * | | | | | | | | | 4 | 5 | 6 | MODE | HUE- |
  86. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  87. * | | | | | | |-------. ,-------| | 1 | 2 | 3 | SAT+ | VAL+ |
  88. * |------+------+------+------+------+------| | |DEFAULT|------+------+------+------+------+------|
  89. * | | | | | | |-------| |-------| | 0 | 0 | . | SAT- | VAL- |
  90. * `-----------------------------------------/ / \ \-----------------------------------------'
  91. * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
  92. * | | | |/ / \ \ | | | |
  93. * `----------------------------' '------''--------------------'
  94. */
  95. [_ADJUST] = LAYOUT(
  96. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7 , KC_8 , KC_9 , RGB_TOG, RGB_HUI, \
  97. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4 , KC_5 , KC_6 , RGB_MOD, RGB_HUD, \
  98. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1 , KC_2 , KC_3 , RGB_SAI, RGB_VAI, \
  99. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(_ADJUST), XXXXXXX, KC_0 , KC_0 , KC_DOT, RGB_SAD, RGB_VAD,\
  100. _______, _______, _______, _______, _______, _______,KC_BSPC, _______ \
  101. )
  102. };
  103. int RGB_current_mode;
  104. int counter = 0;
  105. int lastIndex = 9;
  106. // Setting ADJUST layer RGB back to default
  107. void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
  108. if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
  109. layer_on(layer3);
  110. } else {
  111. layer_off(layer3);
  112. }
  113. }
  114. void matrix_init_user(void) {
  115. #ifdef RGBLIGHT_ENABLE
  116. RGB_current_mode = rgblight_config.mode;
  117. #endif
  118. }
  119. #ifdef OLED_DRIVER_ENABLE
  120. oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  121. if (!is_keyboard_master())
  122. return OLED_ROTATION_180; // flips the display 180 degrees if offhand
  123. return rotation;
  124. }
  125. // When add source files to SRC in rules.mk, you can use functions.
  126. const char *read_layer_state(void);
  127. const char *read_logo(void);
  128. void set_keylog(uint16_t keycode, keyrecord_t *record);
  129. const char *read_keylog(void);
  130. const char *read_keylogs(void);
  131. const char *read_mode_icon(bool swap);
  132. const char *read_host_led_state(void);
  133. void set_timelog(void);
  134. const char *read_timelog(void);
  135. char encoder_debug[24];
  136. void oled_task_user(void) {
  137. // Host Keyboard Layer Status
  138. snprintf(encoder_debug, sizeof(encoder_debug), "%i %i", counter, lastIndex );
  139. if (is_keyboard_master()) {
  140. // If you want to change the display of OLED, you need to change here
  141. oled_write_ln(read_layer_state(), false);
  142. // oled_write_ln(read_keylog(), false);
  143. // oled_write_ln(read_keylogs(), false);
  144. // oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
  145. oled_write_ln(read_host_led_state(), false);
  146. oled_write_ln(encoder_debug, false);
  147. // oled_write_ln(read_timelog(), false);
  148. } else {
  149. oled_write(read_logo(), false);
  150. // oled_write_ln(encoder_debug, false);
  151. }
  152. }
  153. #endif //OLED_DRIVER_ENABLE
  154. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  155. if (record->event.pressed) {
  156. #ifdef SSD1306OLED
  157. // set_keylog(keycode, record);
  158. #endif
  159. // set_timelog();
  160. }
  161. switch (keycode) {
  162. case QWERTY:
  163. if (record->event.pressed) {
  164. set_single_persistent_default_layer(_QWERTY);
  165. }
  166. return false;
  167. break;
  168. case LOWER:
  169. if (record->event.pressed) {
  170. layer_on(_LOWER);
  171. update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
  172. } else {
  173. layer_off(_LOWER);
  174. update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
  175. }
  176. return false;
  177. break;
  178. case RAISE:
  179. if (record->event.pressed) {
  180. layer_on(_RAISE);
  181. update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
  182. } else {
  183. layer_off(_RAISE);
  184. update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
  185. }
  186. return false;
  187. break;
  188. case ADJUST:
  189. if (record->event.pressed) {
  190. layer_on(_ADJUST);
  191. } else {
  192. layer_off(_ADJUST);
  193. }
  194. return false;
  195. break;
  196. }
  197. return true;
  198. }
  199. bool encoder_update_user(uint8_t index, bool clockwise) {
  200. lastIndex = index;
  201. if (clockwise) {
  202. counter++;
  203. tap_code(KC_PGDN);
  204. } else {
  205. counter--;
  206. tap_code(KC_PGUP);
  207. }
  208. return true;
  209. }