2
0

keymap.c 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #include QMK_KEYBOARD_H
  2. #include "action_layer.h"
  3. #define _BL 0
  4. #define _AL 1
  5. #define _FL 2
  6. #define _UL 3
  7. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  8. [_BL] = LAYOUT_kc(
  9. F12, Q, W, E, R, T, Y, U, I, O, P, BSPC,
  10. TAB, A, S, D, F, G, H, J, K, L, ENT,
  11. LSFT, Z, X, C, V, B, N, M, COMM, UP, DOT,
  12. LCTL, LGUI, LALT, FN0, SPC, SPC, FN0, LEFT, DOWN, RIGHT),
  13. [_AL] = LAYOUT_kc(
  14. GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, DEL,
  15. CAPS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
  16. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, SCLN, PGUP, QUOT,
  17. TRNS, TRNS, TRNS, TRNS, FN3, FN3, TRNS, HOME, PGDN, END),
  18. [_FL] = LAYOUT_kc(
  19. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  20. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  21. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  22. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
  23. [_UL] = LAYOUT_kc(
  24. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  25. TRNS, FN4, FN5, FN11, FN10, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  26. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  27. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
  28. };
  29. enum function_id
  30. {
  31. RGBLED_TOGGLE,
  32. RGBLED_STEP_MODE,
  33. RGBLED_INCREASE_HUE,
  34. RGBLED_DECREASE_HUE,
  35. RGBLED_INCREASE_SAT,
  36. RGBLED_DECREASE_SAT,
  37. RGBLED_INCREASE_VAL,
  38. RGBLED_DECREASE_VAL,
  39. SHIFT_ESC,
  40. };
  41. const uint16_t PROGMEM fn_actions[] = {
  42. [0] = ACTION_LAYER_MOMENTARY(1), // Momentary Fn overlay
  43. [1] = ACTION_LAYER_TOGGLE(2), // Toggle Arrow Layer overlay
  44. [2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
  45. [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay
  46. [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
  47. [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
  48. [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
  49. [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
  50. [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
  51. [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
  52. [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
  53. [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
  54. [12] = ACTION_FUNCTION(SHIFT_ESC),
  55. };
  56. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  57. {
  58. // MACRODOWN only works in this function
  59. switch (id)
  60. {
  61. case 0:
  62. if (record->event.pressed)
  63. {
  64. register_code(KC_RSFT);
  65. }
  66. else
  67. {
  68. unregister_code(KC_RSFT);
  69. }
  70. break;
  71. }
  72. return MACRO_NONE;
  73. };
  74. void matrix_scan_user(void)
  75. {
  76. // Layer LED indicators
  77. // ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
  78. uint32_t layer = layer_state;
  79. if (layer & (1 << 1))
  80. {
  81. //gh60_wasd_leds_on();
  82. }
  83. else
  84. {
  85. //gh60_wasd_leds_off();
  86. }
  87. if (layer & (1 << 2))
  88. {
  89. //gh60_esc_led_on();
  90. }
  91. else
  92. {
  93. //gh60_esc_led_off();
  94. }
  95. };
  96. #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))
  97. void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
  98. {
  99. switch (id)
  100. {
  101. case RGBLED_TOGGLE:
  102. //led operations
  103. if (record->event.pressed)
  104. {
  105. rgblight_toggle();
  106. }
  107. break;
  108. case RGBLED_INCREASE_HUE:
  109. if (record->event.pressed)
  110. {
  111. rgblight_increase_hue();
  112. }
  113. break;
  114. case RGBLED_DECREASE_HUE:
  115. if (record->event.pressed)
  116. {
  117. rgblight_decrease_hue();
  118. }
  119. break;
  120. case RGBLED_INCREASE_SAT:
  121. if (record->event.pressed)
  122. {
  123. rgblight_increase_sat();
  124. }
  125. break;
  126. case RGBLED_DECREASE_SAT:
  127. if (record->event.pressed)
  128. {
  129. rgblight_decrease_sat();
  130. }
  131. break;
  132. case RGBLED_INCREASE_VAL:
  133. if (record->event.pressed)
  134. {
  135. rgblight_increase_val();
  136. }
  137. break;
  138. case RGBLED_DECREASE_VAL:
  139. if (record->event.pressed)
  140. {
  141. rgblight_decrease_val();
  142. }
  143. break;
  144. case RGBLED_STEP_MODE:
  145. if (record->event.pressed)
  146. {
  147. rgblight_step();
  148. }
  149. break;
  150. static uint8_t shift_esc_shift_mask;
  151. // Shift + ESC = ~
  152. case SHIFT_ESC:
  153. shift_esc_shift_mask = get_mods() & MODS_CTRL_MASK;
  154. if (record->event.pressed)
  155. {
  156. if (shift_esc_shift_mask)
  157. {
  158. add_key(KC_GRV);
  159. send_keyboard_report();
  160. }
  161. else
  162. {
  163. add_key(KC_ESC);
  164. send_keyboard_report();
  165. }
  166. }
  167. else
  168. {
  169. if (shift_esc_shift_mask)
  170. {
  171. del_key(KC_GRV);
  172. send_keyboard_report();
  173. }
  174. else
  175. {
  176. del_key(KC_ESC);
  177. send_keyboard_report();
  178. }
  179. }
  180. break;
  181. }
  182. };