]> git.donarmstrong.com Git - tmk_firmware.git/blob - keyboard/ergodox/keymap_cub.h
eda19e6e6b5ac8ca8fcf0bd7db5a2b885d3cb82c
[tmk_firmware.git] / keyboard / ergodox / keymap_cub.h
1 static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
2     /* Keymap 0: Default Layer
3      *
4      * ,--------------------------------------------------.           ,--------------------------------------------------.
5      * |   ~    |   1  |   2  |   3  |   4  |   5  |   \  |           |   '  |   6  |   7  |   8  |   9  |   0  |   =    |
6      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
7      * | Tab    |   Q  |   W  |   E  |   R  |   T  | ~Fn1 |           | ~Fn3 |   Y  |   U  |   I  |   O  |   P  |   [    |
8      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
9      * | LShift |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | RShift |
10      * |--------+------+------+------+------+------|  Fn0 |           | ~Fn4 |------+------+------+------+------+--------|
11      * | LCtrl  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RCtrl  |
12      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
13      *   | ~Fn1 | ~Fn2 | Caps | LAlt | LGui |                                       |  Lft |  Up  |  Dn  | Rght | ~Fn4 |
14      *   `----------------------------------'                                       `----------------------------------'
15      *                                        ,-------------.       ,-------------.
16      *                                        | +Fn2 | Home |       | PgUp | Del  |
17      *                                 ,------|------|------|       |------+------+------.
18      *                                 |      |      |  End |       | PgDn |      |      |
19      *                                 | BkSp |  ESC |------|       |------| Enter| Space|
20      *                                 |      |      |  Spc |       | Ins  |      |      |
21      *                                 `--------------------'       `--------------------'
22      */
23
24     KEYMAP(  // layout: layer 0: default
25         // left hand
26         GRV, 1,   2,   3,   4,   5,   BSLS,
27         TAB, Q,   W,   E,   R,   T,   FN1,
28         LSFT,A,   S,   D,   F,   G,
29         LCTL,Z,   X,   C,   V,   B,   FN0,
30         FN1, FN6, CAPS,LALT,LGUI,
31                                       FN2, HOME,
32                                            END,
33                                  FN8, FN9, FN10,
34         // right hand
35              QUOT,6,   7,   8,   9,   0,   EQL,
36              FN3, Y,   U,   I,   O,   P,   LBRC,
37                   FN16,J,   K,   L,   SCLN,FN14,
38              FN4, N,   M,   COMM,DOT, SLSH,FN15,
39                        LEFT,UP,  DOWN,RGHT,FN4,
40         PGUP,DEL,
41         PGDN,
42         FN11,FN12,FN13
43     ),
44
45     KEYMAP(  // layout: layer 1: F-keys instead of numbers
46         // left hand
47         TRNS,F1,  F2,  F3,  F4,  F5,  F6,
48         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
49         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
50         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
51         TRNS,TRNS,TRNS,TRNS,TRNS,
52                                       TRNS,TRNS,
53                                            TRNS,
54                                  TRNS,TRNS,TRNS,
55         // right hand
56              F7,  F8,  F9,  F10, F11, F12, TRNS,
57              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
58                   TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
59              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
60                        TRNS,TRNS,TRNS,TRNS,TRNS,
61         TRNS,TRNS,
62         TRNS,
63         TRNS,TRNS,TRNS
64     ),
65
66     KEYMAP(  // layout: layer 2: mouse + numpad
67         // left hand
68         TRNS,NO,  NO,  NO,  NO,  PAUS,PSCR,
69         TRNS,WH_L,WH_U,WH_D,WH_R,BTN2,TRNS,
70         TRNS,MS_L,MS_U,MS_D,MS_R,BTN1,
71         TRNS,NO,  NO,  NO,  NO,  BTN3,TRNS,
72         TRNS,TRNS,TRNS,TRNS,TRNS,
73                                       TRNS,TRNS,
74                                            TRNS,
75                                  TRNS,TRNS,TRNS,
76         // right hand
77              SLCK,NLCK,PSLS,PAST,PAST,PMNS,BSPC,
78              TRNS,NO,  P7,  P8,  P9,  PMNS,BSPC,
79                   TRNS,P4,  P5,  P6,  PPLS,PENT,
80              TRNS,NO,  P1,  P2,  P3,  PPLS,PENT,
81                        P0,  PDOT,SLSH,PENT,PENT,
82         TRNS,TRNS,
83         TRNS,
84         TRNS,TRNS,TRNS
85     ),
86
87     KEYMAP(  // layout: layer 3: F-keys only
88         // left hand
89         TRNS,NO,  NO,  NO,  NO,  NO,  NO,  
90         TRNS,F13, F14, F15, F16, NO,  TRNS,
91         TRNS,F17, F18, F19, F20, NO,  
92         TRNS,F21, F22, F23, F24, NO,  TRNS,
93         TRNS,TRNS,TRNS,TRNS,TRNS,
94                                       TRNS,TRNS,
95                                            TRNS,
96                                  TRNS,TRNS,TRNS,
97         // right hand
98              NO,  NO,  NO,  NO,  NO,  NO,  TRNS,
99              TRNS,NO,  F1,  F2,  F3,  F4,  TRNS,
100                   NO,  F5,  F6,  F7,  F8,  TRNS,
101              TRNS,NO,  F9,  F10, F11, F12, TRNS,
102                        TRNS,TRNS,TRNS,TRNS,TRNS,
103         TRNS,TRNS,
104         TRNS,
105         TRNS,TRNS,TRNS
106     ),
107
108     KEYMAP(  // layout: layer 4: F-keys + cursor
109         // left hand
110         TRNS,F1,  F2,  F3,  F4,  F5,  F6,
111         FN7, NO,  PGUP,UP,  PGDN,PGUP,TRNS,
112         TRNS,NO,  LEFT,DOWN,RGHT,PGDN,
113         TRNS,NO,  NO,  END, HOME,NO,  TRNS,
114         FN5, TRNS,TRNS,TRNS,TRNS,
115                                       TRNS,TRNS,
116                                            TRNS,
117                                  TRNS,TRNS,TRNS,
118         // right hand
119              F7,  F8,  F9,  F10, F11, F12, MINS,
120              TRNS,PGUP,PGUP,UP,  PGDN,NO,  FN7,
121                   PGDN,LEFT,DOWN,RGHT,NO,  TRNS,
122              TRNS,NO,  HOME,END, NO,  NO,  TRNS,
123                        TRNS,TRNS,TRNS,TRNS,TRNS,
124         TRNS,TRNS,
125         TRNS,
126         TRNS,TRNS,TRNS
127     ),
128
129     KEYMAP(  // layout: layer 5: Workman layout
130         // left hand
131         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
132         TRNS,Q,   D,   R,   W,   B,   TRNS,
133         TRNS,A,   S,   H,   T,   G,
134         TRNS,Z,   X,   M,   C,   V,   TRNS,
135         TRNS,TRNS,TRNS,TRNS,TRNS,
136                                       TRNS,TRNS,
137                                            TRNS,
138                                  TRNS,TRNS,TRNS,
139         // right hand
140              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
141              TRNS,J,   F,   U,   P,   4,   TRNS,
142                   Y,   N,   E,   O,   I,   TRNS,
143              TRNS,K,   L,   TRNS,TRNS,TRNS,TRNS,
144                        TRNS,TRNS,TRNS,TRNS,TRNS,
145         TRNS,TRNS,
146         TRNS,
147         TRNS,TRNS,TRNS
148     ),
149
150 /*
151     // templates to copy from
152
153     KEYMAP(  // layout: layer N: transparent on edges, all others are empty
154         // left hand
155         TRNS,NO,  NO,  NO,  NO,  NO,  NO,  
156         TRNS,NO,  NO,  NO,  NO,  NO,  TRNS,
157         TRNS,NO,  NO,  NO,  NO,  NO,  
158         TRNS,NO,  NO,  NO,  NO,  NO,  TRNS,
159         TRNS,TRNS,TRNS,LALT,LGUI,
160                                       TRNS,TRNS,
161                                            TRNS,
162                                  LCTL,LSFT,TRNS,
163         // right hand
164              NO,  NO,  NO,  NO,  NO,  NO,  TRNS,
165              TRNS,NO,  NO,  NO,  NO,  NO,  TRNS,
166                   NO,  NO,  NO,  NO,  NO,  TRNS,
167              TRNS,NO,  NO,  NO,  NO,  NO,  TRNS,
168                        RGUI,RALT,TRNS,TRNS,TRNS,
169         TRNS,TRNS,
170         TRNS,
171         TRNS,RSFT,RCTL
172     ),
173     KEYMAP(  // layout: layer N: fully transparent
174         // left hand
175         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
176         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
177         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
178         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
179         TRNS,TRNS,TRNS,TRNS,TRNS,
180                                       TRNS,TRNS,
181                                            TRNS,
182                                  TRNS,TRNS,TRNS,
183         // right hand
184              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
185              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
186                   TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
187              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
188                        TRNS,TRNS,TRNS,TRNS,TRNS,
189         TRNS,TRNS,
190         TRNS,
191         TRNS,TRNS,TRNS
192     ),
193 */
194
195 };
196
197 /* id for user defined functions */
198 enum function_id {
199     TEENSY_KEY,
200 };
201
202 /*
203  * Fn action definition
204  */
205 static const uint16_t PROGMEM fn_actions[] = {
206     ACTION_LAYER_SET(0, ON_BOTH),                   // FN0 - switch to Layer0
207     ACTION_LAYER_MOMENTARY(1),                      // FN1 - push Layer1
208     ACTION_LAYER_SET(2, ON_BOTH),                   // FN2 - switch to Layer2
209     ACTION_LAYER_MOMENTARY(3),                      // FN3 - push Layer3
210     ACTION_LAYER_MOMENTARY(4),                      // FN4 - push Layer4
211     ACTION_LAYER_SET(5, ON_BOTH),                   // FN5 - switch to Layer5
212     ACTION_LAYER_MOMENTARY(2),                      // FN6 - push Layer2
213     ACTION_FUNCTION(TEENSY_KEY),                    // FN7 - Teensy key
214
215     ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPC),         // FN8  = LShift with tap BackSpace
216     ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),          // FN9  = LCtrl with tap Escape
217     ACTION_MODS_TAP_KEY(MOD_LALT, KC_SPC),          // FN10 = LAlt with tap Space
218     ACTION_MODS_TAP_KEY(MOD_RALT, KC_INS),          // FN11 = RAlt with tap Ins
219     ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),          // FN12 = RShift with tap Enter
220     ACTION_MODS_TAP_KEY(MOD_RCTL, KC_SPC),          // FN13 = RCtrl with tap Space
221     ACTION_MODS_TAP_KEY(MOD_RSFT, KC_MINS),         // FN14 = RShift with tap Enter
222     ACTION_MODS_TAP_KEY(MOD_RCTL, KC_RBRC),         // FN15 = RCtrl with tap Space
223
224     ACTION_LAYER_TAP_KEY(2, KC_H),                  // FN16 = L2 symbols on J key, to use with Mouse keys
225 };
226
227 void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
228 {
229     print("action_function called\n");
230     print("id  = "); phex(id); print("\n");
231     print("opt = "); phex(opt); print("\n");
232     if (id == TEENSY_KEY) {
233         clear_keyboard();
234         print("\n\nJump to bootloader... ");
235         _delay_ms(250);
236         bootloader_jump(); // should not return
237         print("not supported.\n");
238     }
239 }
240