keymap.c 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #include QMK_KEYBOARD_H
  2. #define _BASE 0
  3. #define _L 1
  4. #define _R 2
  5. #define KC_TL LCTL(KC_PGUP)
  6. #define KC_TR LCTL(KC_PGDN)
  7. #define KC_TC LCTL(KC_W)
  8. #define KC_TRO LCTL(LSFT(KC_T))
  9. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  10. [_BASE] = LAYOUT(
  11. //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
  12. KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
  13. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  14. KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL ,
  15. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  16. KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
  17. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  18. KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT ,
  19. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  20. KC_CAPS, KC_LCTL, KC_LGUI, KC_LALT, MO(_L) , KC_SPC , KC_RSFT, TT(_R) , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
  21. //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
  22. ),
  23. [_L] = LAYOUT(
  24. //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
  25. _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______,
  26. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  27. _______, KC_F11 , KC_F12 , _______, _______, _______, _______, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_BSLS,
  28. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  29. _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
  30. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  31. _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______,
  32. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  33. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  34. //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
  35. ),
  36. [_R] = LAYOUT(
  37. //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
  38. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  39. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  40. _______, KC_TL , KC_TR , KC_TC , KC_TRO , _______, _______, KC_TL , KC_TR , KC_TC , KC_TRO , _______,
  41. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  42. _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
  43. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  44. _______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______, _______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______,
  45. //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
  46. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  47. //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
  48. )
  49. };
  50. const rgblight_segment_t PROGMEM left[] = RGBLIGHT_LAYER_SEGMENTS(
  51. {0, 12, HSV_MAGENTA}
  52. );
  53. const rgblight_segment_t PROGMEM right[] = RGBLIGHT_LAYER_SEGMENTS(
  54. {0, 12, HSV_RED}
  55. );
  56. const rgblight_segment_t PROGMEM capslock[] = RGBLIGHT_LAYER_SEGMENTS(
  57. {0, 3, HSV_GOLD},
  58. {6, 3, HSV_GOLD}
  59. );
  60. const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(left, right, capslock);
  61. void keyboard_post_init_user(void) {
  62. rgblight_sethsv_noeeprom(HSV_SPRINGGREEN);
  63. rgblight_layers = rgb_layers;
  64. }
  65. layer_state_t layer_state_set_user(layer_state_t state) {
  66. rgblight_set_layer_state(0, layer_state_cmp(state, _L));
  67. rgblight_set_layer_state(1, layer_state_cmp(state, _R));
  68. return state;
  69. }
  70. void suspend_power_down_user(void) {
  71. rgblight_disable();
  72. }
  73. void suspend_wakeup_init_user(void) {
  74. rgblight_enable();
  75. }
  76. bool is_shift_pressed = false;
  77. bool led_update_user(led_t led_state) {
  78. rgblight_set_layer_state(2, is_shift_pressed != led_state.caps_lock);
  79. return true;
  80. }
  81. bool process_record_user(uint16_t keycode, keyrecord_t* record) {
  82. switch (keycode) {
  83. case KC_LSFT:
  84. case KC_RSFT:
  85. is_shift_pressed = record->event.pressed;
  86. rgblight_set_layer_state(2, is_shift_pressed != host_keyboard_led_state().caps_lock);
  87. default:
  88. return true;
  89. }
  90. }