1 #include QMK_KEYBOARD_H
8 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
10 * Base layer, pretty standard ANSI layout.
11 * ,-----------------------------------------------------------.
12 * |F(12)| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
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 * `-----------------------------------------------------------'
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
, \
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
, \
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
, \
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
, \
28 KC_LCTL
,KC_LGUI
,KC_LALT
, KC_SPC
, KC_NO
,KC_RALT
,MO(2),KC_APP
,KC_RCTL
),
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 * |-----------------------------------------------------------|
42 * `-----------------------------------------------------------'
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
),
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 * |-------------------------------------------------------------|
64 * `-------------------------------------------------------------'
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
),
74 * Locking layer for controlling the underglow.
76 * ,-----------------------------------------------------------.
77 * | | | | | | | | | | | | | | |
78 * |-----------------------------------------------------------|
79 * | | | | | | | | | | | | | | |
80 * |-----------------------------------------------------------|
81 * | |On|Mode| | | | | | | | | | |
82 * |-----------------------------------------------------------|
83 * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | |
84 * |-----------------------------------------------------------|
86 * `-----------------------------------------------------------'
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
),
108 const uint16_t PROGMEM fn_actions
[] = {
109 [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay
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
),
122 void matrix_scan_user(void) {
124 // Layer LED indicators
125 // ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
126 uint32_t layer
= layer_state
;
127 if (layer
& (1<<1)) {
130 gh60_wasd_leds_off();
133 if (layer
& (1<<2)) {
140 #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
142 void action_function(keyrecord_t
*record
, uint8_t id
, uint8_t opt
) {
146 if (record
->event
.pressed
) {
150 case RGBLED_INCREASE_HUE
:
151 if (record
->event
.pressed
) {
152 rgblight_increase_hue();
155 case RGBLED_DECREASE_HUE
:
156 if (record
->event
.pressed
) {
157 rgblight_decrease_hue();
160 case RGBLED_INCREASE_SAT
:
161 if (record
->event
.pressed
) {
162 rgblight_increase_sat();
165 case RGBLED_DECREASE_SAT
:
166 if (record
->event
.pressed
) {
167 rgblight_decrease_sat();
170 case RGBLED_INCREASE_VAL
:
171 if (record
->event
.pressed
) {
172 rgblight_increase_val();
175 case RGBLED_DECREASE_VAL
:
176 if (record
->event
.pressed
) {
177 rgblight_decrease_val();
180 case RGBLED_STEP_MODE
:
181 if (record
->event
.pressed
) {
185 static uint8_t shift_esc_shift_mask
;
188 shift_esc_shift_mask
= get_mods()&MODS_CTRL_MASK
;
189 if (record
->event
.pressed
) {
190 if (shift_esc_shift_mask
) {
192 send_keyboard_report();
195 send_keyboard_report();
198 if (shift_esc_shift_mask
) {
200 send_keyboard_report();
203 send_keyboard_report();