]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/iris/keymaps/fabian/keymap.c
Keymap: Custom (fabian) layout for Iris and Planck (#3460)
[qmk_firmware.git] / keyboards / iris / keymaps / fabian / keymap.c
1 #include QMK_KEYBOARD_H
2
3 extern keymap_config_t keymap_config;
4
5 enum custom_layers {
6   _COLEMAK,
7   _QWERTY,
8   _LOWER,
9   _RAISE,
10   _MOUSECURSOR,
11   _ADJUST,
12 };
13
14 enum custom_keycodes {
15   COLEMAK = SAFE_RANGE,
16   QWERTY,
17   LOWER,
18   RAISE,
19   MOUSECURSOR,
20   ADJUST,
21   DYNAMIC_MACRO_RANGE,
22 };
23
24 #include "dynamic_macro.h"
25
26 #define KC_ KC_TRNS
27 #define _______ KC_TRNS
28
29 #define KC_COLE COLEMAK
30 #define KC_LOWR LOWER
31 #define KC_QWER QWERTY
32 #define KC_RASE RAISE
33 #define KC_RECB DYN_REC_START1
34 #define KC_RECE DYN_REC_STOP
35 #define KC_RECP DYN_MACRO_PLAY1
36 #define KC_RSET RESET
37
38 #define KC_CTLE CTL_T(KC_ESC)             // Tap for Escape, hold for Control
39 #define KC_HTAB ALL_T(KC_TAB)             // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
40 #define KC_SBSP SFT_T(KC_BSPC)            // Tap for Backspace, hold for Shift
41 #define KC_SENT KC_SFTENT                 // Tap for Enter, hold for Shift
42 #define KC_TGMC TG(_MOUSECURSOR)          // Toggle MOUSECURSOR layer
43 #define KC_SPMC LT(_MOUSECURSOR, KC_SPC)  // Tap for Space, hold for MOUSECURSOR layer
44
45 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47   [_QWERTY] = LAYOUT_kc(
48   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
49      MEH , 1  , 2  , 3  , 4  , 5  ,                6  , 7  , 8  , 9  , 0  ,TGMC,
50   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
51      HTAB, Q  , W  , E  , R  , T  ,                Y  , U  , I  , O  , P  ,BSPC,
52   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
53      CTLE, A  , S  , D  , F  , G  ,                H  , J  , K  , L  ,SCLN,QUOT,
54   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
55      SBSP, Z  , X  , C  , V  , B  ,LALT,     RALT, N  , M  ,COMM,DOT ,SLSH,SENT,
56   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
57                        LGUI,LOWR,SPMC,         HTAB,RASE,RGUI
58   //                  `----+----+----'        `----+----+----'
59   ),
60
61   [_COLEMAK] = LAYOUT_kc(
62   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
63      MEH , 1  , 2  , 3  , 4  , 5  ,                6  , 7  , 8  , 9  , 0  ,TGMC,
64   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
65      HTAB, Q  , W  , F  , P  , G  ,                J  , L  , U  , Y  ,SCLN,BSPC,
66   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
67      CTLE, A  , R  , S  , T  , D  ,                H  , N  , E  , I  , O  ,QUOT,
68   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
69      SBSP, Z  , X  , C  , V  , B  ,LALT,     RALT, K  , M  ,COMM,DOT ,SLSH,SENT,
70   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
71                        LGUI,LOWR,SPMC,         HTAB,RASE,RGUI
72   //                  `----+----+----'        `----+----+----'
73   ),
74
75   [_LOWER] = LAYOUT_kc(
76   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
77          , F1 , F2 , F3 , F4 , F5 ,                F6 , F7 , F8 , F9 ,F10 ,    ,
78   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
79      TILD,EXLM, AT ,HASH,DLR ,PERC,               CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
80   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
81      GRV , F1 , F2 , F3 , F4 , F5 ,                F6 ,UNDS,PLUS,LCBR,RCBR,PIPE,
82   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
83          , F7 , F8 , F9 ,F10 ,F11 ,    ,         ,F12 ,MS_L,MS_D,MS_U,MS_R,BTN1,
84   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
85                            ,    ,    ,             ,    ,
86   //                  `----+----+----'        `----+----+----'
87   ),
88
89   [_RAISE] = LAYOUT_kc(
90   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
91          ,    ,    ,    ,    ,    ,                   ,    ,    ,    ,    ,    ,
92   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
93      TILD, 1  , 2  , 3  , 4  , 5  ,                6  , 7  , 8  , 9  , 0  ,    ,
94   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
95      GRV , F1 , F2 , F3 , F4 , F5 ,                F6 ,MINS,EQL ,LBRC,RBRC,BSLS,
96   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
97          , F7 , F8 , F9 ,F10 ,F11 ,    ,         ,F12 ,LEFT,DOWN, UP ,RGHT,BTN2,
98   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
99                            ,    ,    ,             ,    ,
100   //                  `----+----+----'        `----+----+----'
101   ),
102
103   [_MOUSECURSOR] = LAYOUT_kc(
104   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
105          ,    ,    ,    ,    ,    ,                   ,    ,    ,    ,    ,    ,
106   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
107          ,    ,    , UP ,    ,    ,               WH_D,WH_R,MS_U,ACL0,ACL1,ACL2,
108   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
109          ,    ,LEFT,DOWN,RGHT,    ,               WH_L,MS_L,MS_D,MS_R,BTN1,BTN2,
110   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
111          ,    ,    ,    ,    ,    ,    ,         ,WH_U,LEFT,DOWN, UP ,RGHT,BTN3,
112   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
113                            ,    ,    ,             ,    ,
114   //                  `----+----+----'        `----+----+----'
115   ),
116
117   [_ADJUST] = LAYOUT_kc(
118   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
119          ,    ,    ,    ,    ,    ,                   ,    ,    ,    ,    ,    ,
120   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
121          ,RSET,    ,    ,    ,    ,                   ,    ,    ,    ,RSET,    ,
122   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
123          ,    ,    ,    ,    ,    ,                   ,QWER,COLE,    ,    ,    ,
124   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
125          ,    ,    ,    ,    ,    ,    ,         ,    ,    ,RECB,RECE,RECP,CAPS,
126   //`----+----+----+----+----+----+----/    \----+----+----+----+----+----+----'
127                            ,    ,    ,             ,    ,
128   //                  `----+----+----'        `----+----+----'
129   )
130 };
131
132 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
133   if (!process_record_dynamic_macro(keycode, record)) {
134     return false;
135   }
136
137   switch (keycode) {
138     case COLEMAK:
139       if (record->event.pressed) {
140         set_single_persistent_default_layer(_COLEMAK);
141       }
142       return false;
143       break;
144     case QWERTY:
145       if (record->event.pressed) {
146         set_single_persistent_default_layer(_QWERTY);
147       }
148       return false;
149       break;
150     case LOWER:
151       if (record->event.pressed) {
152         layer_on(_LOWER);
153         update_tri_layer(_LOWER, _RAISE, _ADJUST);
154       } else {
155         layer_off(_LOWER);
156         update_tri_layer(_LOWER, _RAISE, _ADJUST);
157       }
158       return false;
159       break;
160     case RAISE:
161       if (record->event.pressed) {
162         layer_on(_RAISE);
163         update_tri_layer(_LOWER, _RAISE, _ADJUST);
164       } else {
165         layer_off(_RAISE);
166         update_tri_layer(_LOWER, _RAISE, _ADJUST);
167       }
168       return false;
169       break;
170     case ADJUST:
171       if (record->event.pressed) {
172         layer_on(_ADJUST);
173       } else {
174         layer_off(_ADJUST);
175       }
176       return false;
177       break;
178   }
179   return true;
180  }