]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/gonnerd/keymaps/mauin/keymap.c
GON NerD: Refactor, Configurator support and Readme cleanup (#3167)
[qmk_firmware.git] / keyboards / gonnerd / keymaps / mauin / keymap.c
1 #include QMK_KEYBOARD_H
2
3 // Keymap layers
4 #define BASE_LAYER 0
5 #define FUNCTION_LAYER 1
6 #define SYSTEM_LAYER 2
7
8 // Key aliases
9 #define __x__ KC_NO
10
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    * `-----------------------------------------------------------'
24    */
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  \
31   ),
32
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    * |-----------------------------------------------------------'
43    * |     |   |     |                       |     |   |   |     |
44    * `-----------------------------------------------------------'
45    */
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__   \
52    ),
53
54   /* Layer 2: System Layer
55    * ,-----------------------------------------------------------.
56    * |Reset|   |   |   |   |   |   |   |   |   |   |    |   |    |
57    * |-----------------------------------------------------------|
58    * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |
59    * |-----------------------------------------------------------|
60    * |      |   |   |   |   |   |   |   |   |   |   |   |        |
61    * |-----------------------------------------------------------|
62    * |        |   |   |   |   |   |   |   |   |   |   |          |
63    * |-----------------------------------------------------------'
64    * |     |   |     |                       |     |   |   |     |
65    * `-----------------------------------------------------------'
66    */
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__  \
73   ),
74 };
75
76 enum function_id {
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
78 };
79
80 const uint16_t PROGMEM fn_actions[] = {
81   [0]  = ACTION_FUNCTION(ESC_GRV),
82 };
83
84 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
85   static uint8_t esc_grv_mask;
86   switch (id) {
87     case ESC_GRV:
88       esc_grv_mask = get_mods() & MOD_BIT(KC_LGUI);
89       if (record->event.pressed) {
90         if (esc_grv_mask) {
91           add_key(KC_GRV);
92           send_keyboard_report();
93         } else {
94           add_key(KC_ESC);
95           send_keyboard_report();
96         }
97       } else {
98         if (esc_grv_mask) {
99           del_key(KC_GRV);
100           send_keyboard_report();
101         } else {
102           del_key(KC_ESC);
103           send_keyboard_report();
104         }
105       }
106       break;
107   }
108 }