1 #include QMK_KEYBOARD_H
2 #include "action_layer.h"
9 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
12 * ,-----------------------------------------------------------------------------.
13 * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp |
14 * |-----------------------------------------------------------------------------|
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|
18 * |-----------------------------------------------------------------------------|
19 * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| Shift |
20 * |-----------------------------------------------------------------------------|
21 * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl|
22 * `-----------------------------------------------------------------------------'
24 [_BL
] = LAYOUT_60_iso(
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
, \
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
),
32 * Pok3r style arrow cluster
33 * ,-----------------------------------------------------------.
34 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
35 * |-----------------------------------------------------------|
36 * | | | | | | | | |Up| | | | | |
37 * |------------------------------------------------------- |
38 * | | | | | | | |Left|Down|Right| | | |
39 * |-----------------------------------------------------------|
40 * | | | | | | | | | | | | |
41 * |-----------------------------------------------------------|
43 * `-----------------------------------------------------------'
45 [_AL
] = LAYOUT_60_iso(
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
, \
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
, \
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
, \
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
),
54 * Secondary function layer
55 * ,-------------------------------------------------------------.
56 * | | | | | | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
57 * |-------------------------------------------------------------|
58 * | | | | | | | | | |PgUp| | | | |
59 * |-------------------------------------------------------- |
60 * | | | | | | | |Home|PgDown|End| | | | |
61 * |-------------------------------------------------------------|
62 * | | | | | | | | | | | | |
63 * |-------------------------------------------------------------|
65 * `-------------------------------------------------------------'
67 [_FL
] = LAYOUT_60_iso(
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
, \
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
, \
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
, \
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
),
75 * Locking layer for controlling the underglow.
76 * NOTE: currently unused.
78 * ,-----------------------------------------------------------.
79 * | | | | | | | | | | | | | | |
80 * |-----------------------------------------------------------|
81 * | | | | | | | | | | | | | | |
82 * |------------------------------------------------------- |
83 * | |On|Mode| | | | | | | | | | | |
84 * |-----------------------------------------------------------|
85 * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | |
86 * |-----------------------------------------------------------|
88 * `-----------------------------------------------------------'
90 [_UL
] = LAYOUT_60_iso(
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
, \
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
, \
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
, \
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
),
110 const uint16_t PROGMEM fn_actions
[] = {
111 [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay
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
),
124 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
126 // MACRODOWN only works in this function
129 if (record
->event
.pressed
) {
130 register_code(KC_RSFT
);
132 unregister_code(KC_RSFT
);
139 void matrix_scan_user(void) {
141 // Layer LED indicators
142 // ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
144 uint32_t layer
= layer_state
;
145 if (layer
& (1<<1)) {
148 gh60_wasd_leds_off();
151 if (layer
& (1<<2)) {
159 #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
161 void action_function(keyrecord_t
*record
, uint8_t id
, uint8_t opt
) {
163 #ifdef RGBLIGHT_ENABLE
166 if (record
->event
.pressed
) {
170 case RGBLED_INCREASE_HUE
:
171 if (record
->event
.pressed
) {
172 rgblight_increase_hue();
175 case RGBLED_DECREASE_HUE
:
176 if (record
->event
.pressed
) {
177 rgblight_decrease_hue();
180 case RGBLED_INCREASE_SAT
:
181 if (record
->event
.pressed
) {
182 rgblight_increase_sat();
185 case RGBLED_DECREASE_SAT
:
186 if (record
->event
.pressed
) {
187 rgblight_decrease_sat();
190 case RGBLED_INCREASE_VAL
:
191 if (record
->event
.pressed
) {
192 rgblight_increase_val();
195 case RGBLED_DECREASE_VAL
:
196 if (record
->event
.pressed
) {
197 rgblight_decrease_val();
200 case RGBLED_STEP_MODE
:
201 if (record
->event
.pressed
) {
206 static uint8_t shift_esc_shift_mask
;
209 shift_esc_shift_mask
= get_mods()&MODS_CTRL_MASK
;
210 if (record
->event
.pressed
) {
211 if (shift_esc_shift_mask
) {
213 send_keyboard_report();
216 send_keyboard_report();
219 if (shift_esc_shift_mask
) {
221 send_keyboard_report();
224 send_keyboard_report();