1 #include QMK_KEYBOARD_H
5 #define FUNCTION_LAYER 1
11 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
12 /* Layer 0: Default Layer
13 * ,-----------------------------------------------------------.
14 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | BSp |
15 * |-----------------------------------------------------------|
16 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
17 * |-----------------------------------------------------------|
18 * |Funct | A| S| D| F| G| H| J| K| L| ;| '|Enter |
19 * |-----------------------------------------------------------|
20 * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |
21 * |-----------------------------------------------------------'
22 * | Ctl|Alt|Gui | Space |Gui |Alt| F2| Ctl |
23 * `-----------------------------------------------------------'
25 [BASE_LAYER
] = LAYOUT_60(
26 F(0), 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
, \
27 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
, \
28 MO(1), KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
, __x__
, KC_ENT
, \
29 KC_LSFT
, __x__
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, KC_RSFT
, __x__
, \
30 KC_LCTL
, KC_LALT
, KC_LGUI
, KC_SPC
, KC_RGUI
, KC_RALT
, MO(2), KC_RCTL \
33 /* Layer 1: Function Layer
34 * ,-----------------------------------------------------------.
35 * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11| F12| Del |
36 * |-----------------------------------------------------------|
37 * | |Prv|Ply|Nxt| | |Pg^|Hme|Up |End| |Br-|Br+| |
38 * |-----------------------------------------------------------|
39 * |Hold |Mte|Vl-|Vl+| | |Pgv|Lft|Dwn|Rgt| | | |
40 * |-----------------------------------------------------------|
41 * | | | | | | | | | | | | |
42 * |-----------------------------------------------------------'
44 * `-----------------------------------------------------------'
46 [FUNCTION_LAYER
] = LAYOUT_60(
47 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_DEL
, \
48 __x__
, KC_MPRV
, KC_MPLY
, KC_MNXT
, __x__
, __x__
, KC_PGUP
, KC_HOME
, KC_UP
, KC_END
, __x__
, KC_SLCK
, KC_PAUS
, __x__
, \
49 KC_TRNS
, KC_MUTE
, KC_VOLD
, KC_VOLU
, __x__
, __x__
, KC_PGDN
, KC_LEFT
, KC_DOWN
, KC_RGHT
, __x__
, __x__
, __x__
, __x__
, \
50 KC_LSFT
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, \
51 KC_LCTL
, KC_LALT
, KC_LGUI
, KC_SPC
, __x__
, __x__
, __x__
, __x__ \
54 /* Layer 2: System Layer
55 * ,-----------------------------------------------------------.
56 * |Reset| | | | | | | | | | | | | |
57 * |-----------------------------------------------------------|
58 * | | | | | | | | | | | | | | |
59 * |-----------------------------------------------------------|
60 * | | | | | | | | | | | | | |
61 * |-----------------------------------------------------------|
62 * | | | | | | | | | | | | |
63 * |-----------------------------------------------------------'
65 * `-----------------------------------------------------------'
67 [SYSTEM_LAYER
] = LAYOUT_60(
68 RESET
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, \
69 __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, \
70 __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, \
71 __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, \
72 __x__
, __x__
, __x__
, __x__
, __x__
, __x__
, KC_TRNS
, __x__ \
77 ESC_GRV
, // Makes Esc behave like `~ when pressed with the left GUI modifier. This is the "switch between windows of the same application" key combination in macOS
80 const uint16_t PROGMEM fn_actions
[] = {
81 [0] = ACTION_FUNCTION(ESC_GRV
),
84 void action_function(keyrecord_t
*record
, uint8_t id
, uint8_t opt
) {
85 static uint8_t esc_grv_mask
;
88 esc_grv_mask
= get_mods() & MOD_BIT(KC_LGUI
);
89 if (record
->event
.pressed
) {
92 send_keyboard_report();
95 send_keyboard_report();
100 send_keyboard_report();
103 send_keyboard_report();