Commit | Line | Data |
---|---|---|
d2ff66a9 | 1 | #include QMK_KEYBOARD_H |
a8a49276 ED |
2 | #include "action_layer.h" |
3 | ||
4 | #define _BL 0 | |
5 | #define _AL 1 | |
6 | #define _FL 2 | |
7 | #define _UL 3 | |
8 | ||
9 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
10 | /* | |
5fd68266 | 11 | * ISO Base, Mac style |
a8a49276 ED |
12 | * ,-----------------------------------------------------------------------------. |
13 | * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp | | |
14 | * |-----------------------------------------------------------------------------| | |
5fd68266 | 15 | * |Tab | Q | W | E | R | T | Y | U | I| O| P| [| ]| | |
16 | * |----------------------------------------------------------------------- | | |
17 | * |Caps/Fn | A| S| D| F| G| H| J| K| L| ;| '| #|Enter| | |
a8a49276 | 18 | * |-----------------------------------------------------------------------------| |
5fd68266 | 19 | * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| Shift | |
a8a49276 ED |
20 | * |-----------------------------------------------------------------------------| |
21 | * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl| | |
22 | * `-----------------------------------------------------------------------------' | |
23 | */ | |
d2ff66a9 | 24 | [_BL] = LAYOUT_60_iso( |
a8a49276 | 25 | KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \ |
5fd68266 | 26 | KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC, \ |
27 | KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, \ | |
28 | KC_LSFT,KC_NUBS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, \ | |
29 | MO(1),KC_LALT,KC_LGUI, LT(1,KC_SPACE), KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL), | |
a8a49276 ED |
30 | |
31 | /* | |
32 | * Pok3r style arrow cluster | |
33 | * ,-----------------------------------------------------------. | |
34 | * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL | | |
35 | * |-----------------------------------------------------------| | |
36 | * | | | | | | | | |Up| | | | | | | |
5fd68266 | 37 | * |------------------------------------------------------- | |
a8a49276 ED |
38 | * | | | | | | | |Left|Down|Right| | | | |
39 | * |-----------------------------------------------------------| | |
40 | * | | | | | | | | | | | | | | |
41 | * |-----------------------------------------------------------| | |
42 | * | | | | | | | | | | |
43 | * `-----------------------------------------------------------' | |
44 | */ | |
d2ff66a9 | 45 | [_AL] = LAYOUT_60_iso( |
a8a49276 | 46 | KC_GRV,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_DELETE, \ |
5fd68266 | 47 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
a8a49276 | 48 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
5fd68266 | 49 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
50 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
a8a49276 ED |
51 | |
52 | ||
53 | /* | |
54 | * Secondary function layer | |
55 | * ,-------------------------------------------------------------. | |
56 | * | | | | | | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset | | |
57 | * |-------------------------------------------------------------| | |
58 | * | | | | | | | | | |PgUp| | | | | | |
5fd68266 | 59 | * |-------------------------------------------------------- | |
60 | * | | | | | | | |Home|PgDown|End| | | | | | |
a8a49276 ED |
61 | * |-------------------------------------------------------------| |
62 | * | | | | | | | | | | | | | | |
63 | * |-------------------------------------------------------------| | |
64 | * | | | | | | | | | | |
65 | * `-------------------------------------------------------------' | |
66 | */ | |
d2ff66a9 | 67 | [_FL] = LAYOUT_60_iso( |
a8a49276 | 68 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \ |
5fd68266 | 69 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS, \ |
a8a49276 | 70 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,KC_END,KC_TRNS,KC_TRNS,KC_TRNS, \ |
5fd68266 | 71 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
72 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
a8a49276 ED |
73 | |
74 | /* | |
75 | * Locking layer for controlling the underglow. | |
76 | * NOTE: currently unused. | |
77 | * | |
78 | * ,-----------------------------------------------------------. | |
79 | * | | | | | | | | | | | | | | | | |
80 | * |-----------------------------------------------------------| | |
81 | * | | | | | | | | | | | | | | | | |
5fd68266 | 82 | * |------------------------------------------------------- | |
83 | * | |On|Mode| | | | | | | | | | | | | |
a8a49276 ED |
84 | * |-----------------------------------------------------------| |
85 | * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | | | |
86 | * |-----------------------------------------------------------| | |
87 | * | | | | | | | | | | |
88 | * `-----------------------------------------------------------' | |
89 | */ | |
d2ff66a9 | 90 | [_UL] = LAYOUT_60_iso( |
a8a49276 | 91 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
5fd68266 | 92 | KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
a8a49276 | 93 | KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
5fd68266 | 94 | KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ |
95 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
a8a49276 ED |
96 | }; |
97 | ||
98 | enum function_id { | |
99 | RGBLED_TOGGLE, | |
100 | RGBLED_STEP_MODE, | |
101 | RGBLED_INCREASE_HUE, | |
102 | RGBLED_DECREASE_HUE, | |
103 | RGBLED_INCREASE_SAT, | |
104 | RGBLED_DECREASE_SAT, | |
105 | RGBLED_INCREASE_VAL, | |
106 | RGBLED_DECREASE_VAL, | |
107 | SHIFT_ESC, | |
108 | }; | |
109 | ||
110 | const uint16_t PROGMEM fn_actions[] = { | |
a8a49276 | 111 | [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay |
a8a49276 ED |
112 | [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay |
113 | [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow | |
114 | [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode | |
115 | [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), | |
116 | [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), | |
117 | [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), | |
118 | [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), | |
119 | [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), | |
120 | [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), | |
121 | [12] = ACTION_FUNCTION(SHIFT_ESC), | |
a8a49276 ED |
122 | }; |
123 | ||
124 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |
125 | { | |
126 | // MACRODOWN only works in this function | |
127 | switch(id) { | |
128 | case 0: | |
129 | if (record->event.pressed) { | |
130 | register_code(KC_RSFT); | |
131 | } else { | |
132 | unregister_code(KC_RSFT); | |
133 | } | |
134 | break; | |
135 | } | |
136 | return MACRO_NONE; | |
137 | }; | |
138 | ||
139 | void matrix_scan_user(void) { | |
140 | ||
141 | // Layer LED indicators | |
142 | // ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster | |
d2ff66a9 | 143 | #ifdef KEYBOARD_gh60 |
a8a49276 ED |
144 | uint32_t layer = layer_state; |
145 | if (layer & (1<<1)) { | |
146 | gh60_wasd_leds_on(); | |
147 | } else { | |
148 | gh60_wasd_leds_off(); | |
149 | } | |
150 | ||
151 | if (layer & (1<<2)) { | |
152 | gh60_esc_led_on(); | |
153 | } else { | |
154 | gh60_esc_led_off(); | |
155 | } | |
d2ff66a9 | 156 | #endif |
a8a49276 ED |
157 | }; |
158 | ||
159 | #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | |
160 | ||
161 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | |
162 | switch (id) { | |
5fd68266 | 163 | #ifdef RGBLIGHT_ENABLE |
a8a49276 ED |
164 | case RGBLED_TOGGLE: |
165 | //led operations | |
166 | if (record->event.pressed) { | |
167 | rgblight_toggle(); | |
168 | } | |
169 | break; | |
170 | case RGBLED_INCREASE_HUE: | |
171 | if (record->event.pressed) { | |
172 | rgblight_increase_hue(); | |
173 | } | |
174 | break; | |
175 | case RGBLED_DECREASE_HUE: | |
176 | if (record->event.pressed) { | |
177 | rgblight_decrease_hue(); | |
178 | } | |
179 | break; | |
180 | case RGBLED_INCREASE_SAT: | |
181 | if (record->event.pressed) { | |
182 | rgblight_increase_sat(); | |
183 | } | |
184 | break; | |
185 | case RGBLED_DECREASE_SAT: | |
186 | if (record->event.pressed) { | |
187 | rgblight_decrease_sat(); | |
188 | } | |
189 | break; | |
190 | case RGBLED_INCREASE_VAL: | |
191 | if (record->event.pressed) { | |
192 | rgblight_increase_val(); | |
193 | } | |
194 | break; | |
195 | case RGBLED_DECREASE_VAL: | |
196 | if (record->event.pressed) { | |
197 | rgblight_decrease_val(); | |
198 | } | |
199 | break; | |
200 | case RGBLED_STEP_MODE: | |
201 | if (record->event.pressed) { | |
202 | rgblight_step(); | |
203 | } | |
204 | break; | |
5fd68266 | 205 | #endif |
a8a49276 ED |
206 | static uint8_t shift_esc_shift_mask; |
207 | // Shift + ESC = ~ | |
208 | case SHIFT_ESC: | |
209 | shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; | |
210 | if (record->event.pressed) { | |
211 | if (shift_esc_shift_mask) { | |
212 | add_key(KC_GRV); | |
213 | send_keyboard_report(); | |
214 | } else { | |
215 | add_key(KC_ESC); | |
216 | send_keyboard_report(); | |
217 | } | |
218 | } else { | |
219 | if (shift_esc_shift_mask) { | |
220 | del_key(KC_GRV); | |
221 | send_keyboard_report(); | |
222 | } else { | |
223 | del_key(KC_ESC); | |
224 | send_keyboard_report(); | |
225 | } | |
226 | } | |
227 | break; | |
228 | } | |
229 | }; |