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