Commit | Line | Data |
---|---|---|
b9fea284 | 1 | #include QMK_KEYBOARD_H |
1ab527a4 MW |
2 | |
3 | #define _BL 0 | |
4 | #define _AL 1 | |
5 | #define _FL 2 | |
6 | #define _UL 3 | |
7 | ||
8 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
9 | /* | |
620e4f74 | 10 | * Base layer, pretty standard ANSI layout. |
1ab527a4 | 11 | * ,-----------------------------------------------------------. |
df8724ce | 12 | * |F(12)| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |
1ab527a4 MW |
13 | * |-----------------------------------------------------------| |
14 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | |
15 | * |-----------------------------------------------------------| | |
16 | * |Caps/Fn| A| S| D| F| G| H| J| K| L| ;| '|Return | | |
17 | * |-----------------------------------------------------------| | |
18 | * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | |
19 | * |-----------------------------------------------------------| | |
20 | * |Ctrl|Gui |Alt | Space |Alt |Fn |Menu|Ctrl| | |
21 | * `-----------------------------------------------------------' | |
22 | */ | |
b9fea284 | 23 | [_BL] = LAYOUT( |
df8724ce | 24 | F(12),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, \ |
b9fea284 | 25 | 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,KC_BSLS, \ |
26eef35f | 26 | LT(2, KC_CAPS),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \ |
df8724ce | 27 | KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \ |
554e4bf2 | 28 | KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,MO(2),KC_APP,KC_RCTL), |
620e4f74 SC |
29 | |
30 | /* | |
1ab527a4 MW |
31 | * Locking arrow keys to WASD for when you need dedicated arrow keys |
32 | * ,-----------------------------------------------------------. | |
33 | * | | | | | | | | | | | | | | | | |
34 | * |-----------------------------------------------------------| | |
35 | * | | |Up | | | | | | | | | | | | | |
36 | * |-----------------------------------------------------------| | |
37 | * | |Left|Down|Rght| | | | | | | | | | | |
38 | * |-----------------------------------------------------------| | |
39 | * | | | | | | | | | | | | | | |
40 | * |-----------------------------------------------------------| | |
41 | * | | | | | | | | | | |
42 | * `-----------------------------------------------------------' | |
43 | */ | |
b9fea284 | 44 | [_AL] = LAYOUT( |
df8724ce SC |
45 | 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, \ |
46 | KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ | |
47 | KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ | |
48 | 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, \ | |
49 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
1ab527a4 MW |
50 | |
51 | ||
620e4f74 | 52 | /* |
1ab527a4 MW |
53 | * Primary function layer, mostly the same as the traditional Pok3r layout. |
54 | * ,-------------------------------------------------------------. | |
55 | * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL | | |
56 | * |-------------------------------------------------------------| | |
57 | * | |_AL| | | | |Calc|PgUp|Up|PgDn|Ptscn|Srlck|Pause| | | |
58 | * |-------------------------------------------------------------| | |
59 | * | | | | | | |Home|Left|Down|Rght|Ins| | | | |
60 | * |-------------------------------------------------------------| | |
61 | * | |_UL| | | | | | | | | | | | |
62 | * |-------------------------------------------------------------| | |
63 | * | | | | | | | | | | |
64 | * `-------------------------------------------------------------' | |
65 | */ | |
b9fea284 | 66 | [_FL] = LAYOUT( |
df8724ce SC |
67 | KC_GRAVE,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, \ |
68 | KC_TRNS,F(1),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, \ | |
69 | KC_TRNS,KC_MUTE,KC__VOLDOWN,KC__VOLUP,KC_TRNS,KC_TRNS,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,KC_TRNS,KC_TRNS,KC_TRNS, \ | |
70 | KC_TRNS,KC_TRNS,F(3),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_END,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ | |
71 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
620e4f74 SC |
72 | |
73 | /* | |
1ab527a4 | 74 | * Locking layer for controlling the underglow. |
620e4f74 | 75 | * |
1ab527a4 MW |
76 | * ,-----------------------------------------------------------. |
77 | * | | | | | | | | | | | | | | | | |
78 | * |-----------------------------------------------------------| | |
79 | * | | | | | | | | | | | | | | | | |
80 | * |-----------------------------------------------------------| | |
81 | * | |On|Mode| | | | | | | | | | | | |
82 | * |-----------------------------------------------------------| | |
83 | * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | | | |
84 | * |-----------------------------------------------------------| | |
85 | * | | | | | | | | | | |
86 | * `-----------------------------------------------------------' | |
87 | */ | |
b9fea284 | 88 | [_UL] = LAYOUT( |
df8724ce SC |
89 | 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, \ |
90 | 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, \ | |
91 | 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, \ | |
92 | 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,KC_TRNS, \ | |
93 | KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), | |
1ab527a4 MW |
94 | }; |
95 | ||
96 | enum function_id { | |
97 | RGBLED_TOGGLE, | |
98 | RGBLED_STEP_MODE, | |
99 | RGBLED_INCREASE_HUE, | |
100 | RGBLED_DECREASE_HUE, | |
101 | RGBLED_INCREASE_SAT, | |
102 | RGBLED_DECREASE_SAT, | |
103 | RGBLED_INCREASE_VAL, | |
104 | RGBLED_DECREASE_VAL, | |
105 | SHIFT_ESC, | |
106 | }; | |
107 | ||
108 | const uint16_t PROGMEM fn_actions[] = { | |
1ab527a4 | 109 | [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay |
1ab527a4 MW |
110 | [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay |
111 | [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow | |
112 | [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode | |
113 | [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), | |
114 | [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), | |
115 | [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), | |
116 | [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), | |
117 | [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), | |
118 | [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), | |
119 | [12] = ACTION_FUNCTION(SHIFT_ESC), | |
120 | }; | |
121 | ||
1ab527a4 MW |
122 | void matrix_scan_user(void) { |
123 | ||
124 | // Layer LED indicators | |
125 | // ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster | |
1ab527a4 MW |
126 | uint32_t layer = layer_state; |
127 | if (layer & (1<<1)) { | |
128 | gh60_wasd_leds_on(); | |
129 | } else { | |
130 | gh60_wasd_leds_off(); | |
131 | } | |
132 | ||
133 | if (layer & (1<<2)) { | |
134 | gh60_esc_led_on(); | |
135 | } else { | |
136 | gh60_esc_led_off(); | |
137 | } | |
138 | }; | |
139 | ||
140 | #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | |
141 | ||
142 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | |
143 | switch (id) { | |
144 | case RGBLED_TOGGLE: | |
145 | //led operations | |
146 | if (record->event.pressed) { | |
147 | rgblight_toggle(); | |
148 | } | |
149 | break; | |
150 | case RGBLED_INCREASE_HUE: | |
151 | if (record->event.pressed) { | |
152 | rgblight_increase_hue(); | |
153 | } | |
154 | break; | |
155 | case RGBLED_DECREASE_HUE: | |
156 | if (record->event.pressed) { | |
157 | rgblight_decrease_hue(); | |
158 | } | |
159 | break; | |
160 | case RGBLED_INCREASE_SAT: | |
161 | if (record->event.pressed) { | |
162 | rgblight_increase_sat(); | |
163 | } | |
164 | break; | |
165 | case RGBLED_DECREASE_SAT: | |
166 | if (record->event.pressed) { | |
167 | rgblight_decrease_sat(); | |
168 | } | |
169 | break; | |
170 | case RGBLED_INCREASE_VAL: | |
171 | if (record->event.pressed) { | |
172 | rgblight_increase_val(); | |
173 | } | |
174 | break; | |
175 | case RGBLED_DECREASE_VAL: | |
176 | if (record->event.pressed) { | |
177 | rgblight_decrease_val(); | |
178 | } | |
179 | break; | |
180 | case RGBLED_STEP_MODE: | |
181 | if (record->event.pressed) { | |
182 | rgblight_step(); | |
183 | } | |
184 | break; | |
185 | static uint8_t shift_esc_shift_mask; | |
df958a2d | 186 | // Shift + ESC = ~ |
1ab527a4 MW |
187 | case SHIFT_ESC: |
188 | shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; | |
189 | if (record->event.pressed) { | |
190 | if (shift_esc_shift_mask) { | |
191 | add_key(KC_GRV); | |
192 | send_keyboard_report(); | |
193 | } else { | |
194 | add_key(KC_ESC); | |
195 | send_keyboard_report(); | |
196 | } | |
197 | } else { | |
198 | if (shift_esc_shift_mask) { | |
199 | del_key(KC_GRV); | |
200 | send_keyboard_report(); | |
201 | } else { | |
202 | del_key(KC_ESC); | |
203 | send_keyboard_report(); | |
204 | } | |
205 | } | |
206 | break; | |
207 | } | |
208 | }; |