1 // This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2 // this is the style you want to emulate.
6 // Each layer gets a name for readability, which is then used in the keymap matrix below.
7 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
8 // Layer names don't all need to be of the same length, obviously, and you can also skip them
9 // entirely and just use numbers.
15 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _DEF: Default Layer
17 * ,-----------------------------------------------------------.-------------------------------------
18 * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
19 * |-----------------------------------------------------------|
20 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1 !!
21 * |-----------------------------------------------------------|
22 * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return |
23 * |-----------------------------------------------------------|
24 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP
25 * |-----------------------------------------------------------|
26 * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is
27 * `-----------------------------------------------------------' LEFT DWN RIGHT
29 [_DEF] = KEYMAP_ISO_SPLITRSHIFT(
30 KC_GRV, 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, \
31 F(2), 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, \
32 F(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, F(17), \
33 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TG(_SFX),F(4), \
34 KC_LCTL, KC_LGUI, KC_LALT, LT(_SPC,KC_SPACE), KC_RALT, F(5), F(6), F(7)) ,
35 /* Keymap 1: F-and-vim Layer, modified with Space (Fn0)
36 * ,-----------------------------------------------------------.-----------------------------------------
37 * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete|
38 * |-----------------------------------------------------------|
39 * | |Paus| Up| | | | | | | | | | | |
40 * |-----------------------------------------------------------|
41 * | |Lft|Dwn|Rgt| | | |Left|Down|Right|Up| | PLAY |
42 * |-----------------------------------------------------------|
43 * | | | | | | |M0 | | | | | Vol+ | |
44 * |-----------------------------------------------------------|
45 * | | | | |Alt |Prev|Vol-|Next|
46 * `-----------------------------------------------------------'
48 [_SPC] = KEYMAP_ISO_SPLITRSHIFT(
49 KC_PSCR, 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_DEL, \
50 KC_TRNS, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
51 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, \
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE,M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, \
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT) ,
55 /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (Fn1)
56 * ,-----------------------------------------------------------.-----------------------------------------
57 * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE
58 * |-----------------------------------------------------------|
59 * | | | | | | | | | | | | | | |
60 * |-----------------------------------------------------------|
61 * | | | | | | | |Pos1|PgDn|PgUp|End| |Retrn |
62 * |-----------------------------------------------------------|
63 * | | | | | | |AF2| | | | | PgUp | |
64 * |-----------------------------------------------------------|
65 * | | | | |Alt |Pos1|PgDn|End |
66 * `-----------------------------------------------------------'
68 [_TAB] = KEYMAP_ISO_SPLITRSHIFT(
69 KC_WAKE, 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_INS, \
70 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, \
71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, \
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, \
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END) ,
75 /* Keymap 3: Split right shift Numpad toggle Layer (Fn2)
76 * ,-----------------------------------------------------------.-----------------------------------------
77 * |RSET| | | | | | | 7| 8| 9| | | |Backsp |
78 * |-----------------------------------------------------------|
79 * | | | | | | | | 4 | 5 | 6 | | | | \ |
80 * |-----------------------------------------------------------|
81 * | | L | L | | | | | 1 | 2 | 3 | | | Return |
82 * |-----------------------------------------------------------|
83 * | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent
84 * |-----------------------------------------------------------| LED controlling
85 * |Ctrl|Win |Alt | |Alt |Left|Down|Right|
86 * `-----------------------------------------------------------'
88 [_SFX] = KEYMAP_ISO_SPLITRSHIFT(
89 RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, \
90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, \
91 KC_TRNS, F(9), F(10), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, KC_NO, KC_ENT, \
92 KC_TRNS, F(11), F(12), F(13), F(14), F(15), F(16), KC_TRNS, KC_TRNS, KC_0, KC_TRNS, KC_SLSH, KC_TRNS, KC_UP, \
93 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT) ,
109 const uint16_t PROGMEM fn_actions[] = {
110 [0] = ACTION_LAYER_TAP_KEY(_SPC, KC_SPACE),
111 [1] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
112 [2] = ACTION_LAYER_TAP_KEY(_TAB, KC_TAB),
113 [3] = ACTION_LAYER_TOGGLE(_SFX),
114 [4] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_UP),
115 [5] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_LEFT),
116 [6] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_DOWN),
117 [7] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RIGHT),
118 [8] = ACTION_FUNCTION(LAUNCH),
119 [9] = ACTION_FUNCTION(RGBLED_TOGGLE),
120 [10] = ACTION_FUNCTION(RGBLED_STEP_MODE),
121 [11] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
122 [12] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
123 [13] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
124 [14] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
125 [15] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
126 [16] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
127 [17] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ENT),
130 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
132 // MACRODOWN only works in this function
135 return (record->event.pressed ?
136 MACRO( D(RALT), T(SPC), U(RALT), END )
140 return (record->event.pressed ?
141 MACRO( D(LALT), T(F2), U(LALT), END )
148 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
152 if (record->event.pressed) {
156 case RGBLED_INCREASE_HUE:
157 if (record->event.pressed) {
158 rgblight_increase_hue();
161 case RGBLED_DECREASE_HUE:
162 if (record->event.pressed) {
163 rgblight_decrease_hue();
166 case RGBLED_INCREASE_SAT:
167 if (record->event.pressed) {
168 rgblight_increase_sat();
171 case RGBLED_DECREASE_SAT:
172 if (record->event.pressed) {
173 rgblight_decrease_sat();
176 case RGBLED_INCREASE_VAL:
177 if (record->event.pressed) {
178 rgblight_increase_val();
181 case RGBLED_DECREASE_VAL:
182 if (record->event.pressed) {
183 rgblight_decrease_val();
186 case RGBLED_STEP_MODE:
187 if (record->event.pressed) {