]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - keyboard/ergodox/keymap_dvorak.c
Add a qwerty layer
[max/tmk_keyboard.git] / keyboard / ergodox / keymap_dvorak.c
1 #include "bootloader.h"
2 #include "keymap_common.h"
3
4 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5     /*
6      * Keymap: Default Layer in Dvorak (Layer 0)
7      *
8      * ,--------------------------------------------------.           ,--------------------------------------------------.
9      * |   +    |   1  |   2  |   3  |   4  |   5  |  Esc |           |  ESC |   6  |   7  |   8  |   9  |   0  |   -    |
10      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
11      * | Tab    |   '  |   ,  |   .  |   Y  |   Y  |(Null)|           |(Null)|   F  |   G  |   C  |   R  |   L  |   /    |
12      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
13      * | CapsLk |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   \    |
14      * |--------+------+------+------+------+------| FN1  |           | FN2  |------+------+------+------+------+--------|
15      * | LShift |   Z  |   X  |   C  |   V  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShift |
16      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
17      *   | LGUI |   `  |  INS | Left | Rght |                                       |  Up  |  Dn  |   [  |   ]  | RGUI |
18      *   `----------------------------------'                                       `----------------------------------'
19      *                                        ,-------------.       ,-------------.
20      *                                        | LCtr | LAlt |       | Ralt | RCtr |
21      *                                 ,------|------|------|       |------+------+------.
22      *                                 |      |      | Home |       | PgUp |      |      |
23      *                                 | BkSp | Del  |------|       |------| Enter| Space|
24      *                                 |      |      | End  |       | PgDn |      |      |
25      *                                 `--------------------'       `--------------------'
26      *
27      *
28      *****************************************************************************************************
29      * This Dvorak keyboard layout stems from my early Kinesis years, using the Contour PS/2 with a Dvorak
30      * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the cor-
31      * ner keys. I've decided to continue using this layout with my ErgoDox.
32      */
33
34     KEYMAP(  // layer 0 : default
35         // left hand
36         EQL,    1,    2,   3,   4,   5,   ESC,
37         TAB, QUOT, COMM, DOT,   P,   Y,    NO,
38         CAPS,   A,    O,   E,   U,   I,
39         LSFT, SCLN,   Q,   J,   K,   X,   FN1,
40         LGUI,  GRV, INS,LEFT,RGHT,
41                                       LCTL,LALT,
42                                            HOME,
43                                  BSPC,DEL, END,
44         // right hand
45              ESC,  6,   7,   8,   9,   0,  MINS,
46              NO,   F,   G,   C,   R,   L,  SLSH,
47                    D,   H,   T,   N,   S,  BSLS,
48              FN2,  B,   M,   W,   V,   Z,  RSFT,
49                         UP,DOWN,RBRC,LBRC,  RGUI,
50         RALT,RCTL,
51         PGUP,
52         PGDN,ENT, SPC
53     ),
54
55
56     /* 
57      * Keymap: Function and Media Keys Layer (Layer 1)
58      * 
59      * ,--------------------------------------------------.           ,--------------------------------------------------.
60      * | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  |           |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |  Mute  |
61      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
62      * |        |      |      |      |      |      | FN4  |           |  FN6 |      | PrSc | ScLk | Paus |      | Vol Up |
63      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
64      * |        |      |      |      |      |      |------|           |------| Stop | Prev | Play | Next | Sel  | Vol Dn |
65      * |--------+------+------+------+------+------| FN4  |           |  FN7 |------+------+------+------+------+--------|
66      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
67      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
68      *   |      |      |      |      |      |                                       |      |      |      |      |      |
69      *   `----------------------------------'                                       `----------------------------------'
70      *                                        ,-------------.       ,-------------.
71      *                                        |      |      |       |      |      |
72      *                                 ,------|------|------|       |------+------+------.
73      *                                 |      |      |      |       |      |      |      |
74      *                                 |      |      |------|       |------|      |      |
75      *                                 |      |      |      |       |      |      |      |
76      *                                 `--------------------'       `--------------------'
77      * 
78      * 
79      */
80
81     KEYMAP(  // layer 1 : function and media keys
82         // left hand
83         FN0, F1,  F2,  F3,  F4,  F5,  F11,
84         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN4,
85         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
86         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN4,
87         TRNS,TRNS,TRNS,TRNS,TRNS,
88                                       TRNS,TRNS,
89                                            TRNS,
90                                  TRNS,TRNS,TRNS,
91         // right hand
92              F12, F6,  F7,  F8,  F9,  F10, MUTE,
93              FN6, TRNS,PSCR,SLCK,PAUS,TRNS,VOLU,
94                   MSTP,MPRV,MPLY,MNXT,MSEL,VOLD,
95              FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
96                        TRNS,TRNS,TRNS,TRNS,TRNS,
97         TRNS,TRNS,
98         TRNS,
99         TRNS,TRNS,TRNS
100     ),
101
102
103     /* 
104      * Keymap: Numpad Layer (Layer 2)
105      * 
106      * ,--------------------------------------------------.           ,--------------------------------------------------.
107      * | Power  |      |      |      |      |      |      |           |      |      | NmLk | KP / | KP * | KP - |        |
108      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
109      * | Sleep  |      |      |      |      |      | FN5  |           |  FN4 |      | KP 7 | KP 8 | KP 9 | KP + |        |
110      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
111      * | Wake   |      |      |      |      |      |------|           |------|      | KP 4 | KP 5 | KP 6 | KP + |        |
112      * |--------+------+------+------+------+------| FN7  |           |  FN4 |------+------+------+------+------+--------|
113      * |        |      |      |      |      |      |      |           |      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
114      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
115      *   |      |      |      |      |      |                                       | KP 0 |      | KP . |KP Ent|      |
116      *   `----------------------------------'                                       `----------------------------------'
117      *                                        ,-------------.       ,-------------.
118      *                                        |      |      |       |      |      |
119      *                                 ,------|------|------|       |------+------+------.
120      *                                 |      |      |      |       |      |      |      |
121      *                                 |      |      |------|       |------|      |      |
122      *                                 |      |      |      |       |      |      |      |
123      *                                 `--------------------'       `--------------------'
124      * 
125      */
126
127     KEYMAP(  // layer 2: numpad
128         // left hand
129         PWR, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
130         SLEP,TRNS,TRNS,TRNS,TRNS,TRNS, FN5,
131         WAKE,TRNS,TRNS,TRNS,TRNS,TRNS,
132         TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, FN7,
133         TRNS,TRNS,TRNS,TRNS,TRNS,
134                                       TRNS,TRNS,
135                                            TRNS,
136                                  TRNS,TRNS,TRNS,
137         // right hand
138              TRNS,TRNS,NLCK,PSLS,PAST,PMNS,TRNS,
139               FN4,NO,  P7,  P8,  P9,  PPLS,TRNS,
140                   NO,  P4,  P5,  P6,  PPLS,TRNS,
141               FN4,NO,  P1,  P2,  P3,  PENT,TRNS,
142                        P0,  TRNS,PDOT,PENT,TRNS,
143         TRNS,TRNS,
144         TRNS,
145         TRNS,TRNS,TRNS
146     ),
147
148
149     /* 
150      * Keymap: QWERTY Gaming Layer (Layer 3)
151      * 
152      * ,--------------------------------------------------.           ,--------------------------------------------------.
153      * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |           | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
154      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
155      * | Tab    |   Q  |   W  |   E  |   R  |   T  | Fn4  |           | Fn4  |   Y  |   U  |   I  |   O  |   P  |   [    |
156      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
157      * | CapsLk |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
158      * |--------+------+------+------+------+------| Fn1  |           | Fn2  |------+------+------+------+------+--------|
159      * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
160      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
161      *   | LGUI |   `  |  INS | Left | Rght |                                       |  Up  |  Dn  |   [  |   ]  | RGUI |
162      *   `----------------------------------'                                       `----------------------------------'
163      *                                        ,-------------.       ,-------------.
164      *                                        | LCtr | LAlt |       | Ralt | RCtr |
165      *                                 ,------|------|------|       |------+------+------.
166      *                                 |      |      | Home |       | PgUp |      |      |
167      *                                 | BkSp | Del  |------|       |------| Enter| Space|
168      *                                 |      |      | End  |       | PgDn |      |      |
169      *                                 `--------------------'       `--------------------'
170      * 
171      */
172
173     KEYMAP(  // layer 3 : QWERTY Gaming
174         // left hand
175         EQL, 1,   2,   3,   4,   5,   ESC,
176         TAB, Q,   W,   E,   R,   T,   FN4,
177         CAPS,A,   S,   D,   F,   G,
178         LSFT,Z,   X,   C,   V,   B,   FN1,
179         LGUI,GRV, INS,LEFT,RGHT,
180                                       LCTL,LALT,
181                                            HOME,
182                                  BSPC,DEL, END,
183         // right hand
184              ESC, 6,   7,   8,   9,   0,   MINS,
185              FN4, Y,   U,   I,   O,   P,   BSLS,
186                   H,   J,   K,   L,   SCLN,QUOT,
187              FN2, N,   M,   COMM,DOT, SLSH,RSFT,
188                        UP,DOWN,LBRC,RBRC,RGUI,
189         RALT,RCTL,
190         PGUP,
191         PGDN,ENT, SPC
192     ),
193
194 };
195
196 /* id for user defined functions & macros */
197 enum function_id {
198     TEENSY_KEY,
199 };
200
201 /*
202  * Fn action definition
203  */
204 const action_t PROGMEM fn_actions[] = {
205     ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
206     ACTION_LAYER_MOMENTARY(1),                      // FN1 - switch to Layer1
207     ACTION_LAYER_MOMENTARY(2),                      // FN2 - switch to Layer2
208     ACTION_LAYER_MOMENTARY(3),                      // FN3 - switch to Layer3
209     ACTION_LAYER_SET_CLEAR(0),                      // FN4 - set Layer0
210     ACTION_LAYER_SET(1, ON_PRESS),                  // FN5 - set Layer1
211     ACTION_LAYER_SET(2, ON_PRESS),                  // FN6 - set Layer2
212     ACTION_LAYER_SET(3, ON_PRESS),                  // FN7 - set Layer3
213 };
214
215 /*
216  * Defining the Teensy Key action_function
217  */
218 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
219 {
220     // print("action_function called\n");
221     // print("id  = "); phex(id); print("\n");
222     // print("opt = "); phex(opt); print("\n");
223
224     if (id == TEENSY_KEY) {
225         clear_keyboard();
226         print("\n\nJump to bootloader... ");
227         _delay_ms(50);
228         bootloader_jump(); // should not return
229         print("not supported.\n");
230     }
231
232 }