]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/bepo/keymap.c
05250ee6a779b89b85e16c86211e3601866e6f73
[qmk_firmware.git] / keyboards / ergodox / keymaps / bepo / keymap.c
1 #include "ergodox.h"
2 #include "keymap_bepo.h"
3 #include "keymap_french.h"
4
5 // keymaps
6 #define BEPO 0  // default layer, for bepo compatible systems
7 #define QW_B 1  // bepo to qwerty base compat layer, for qwerty systems
8 #define QW_A 2  // bepo with altgr key to qwerty compat layer
9 #define QW_S 3  // bepo with shift key to qwerty compat layer
10 #define AZ_B 4  // bepo to azerty base compat layer, for azerty systems
11 #define AZ_A 5  // bepo with altgr key to azerty compat layer
12 #define AZ_S 6  // bepo with shift key to azerty compat layer
13 #define FNAV 7  // function / navigation / mouse layer
14 #define NUMK 8  // numeric keypad layer
15
16 // macros
17 #define KP_00 0 // keypad "double 0"
18
19 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 /* Keymap 0: default layer
21  *
22  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
23  * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
24  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
25  * |   %    |   B  |E_ACUT|   P  |   O  |E_GRAV|Backsp|                                  |CapsLo|   ^  |   V  |   D  |   L  |   J  |   Z    |
26  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
27  * |   W    |   A  |   U  |   I  |   E  |   ,  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
28  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
29  * | E_CIRC |A_GRAV|   Y  |   X  |   .  |   K  |      |                                  |      |   '  |   Q  |   G  |   H  |   F  | C_CEDIL|
30  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
31  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
32  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
33  *                                             |      |      |L_NumK|      |L_NumK|      |      |
34  *                                             | Space|LShift|------|      |------|RShift|Enter |
35  *                                             |      |      |L_FNav|      |L_FNav|      |      |
36  *                                             `--------------------'      `--------------------'
37  */
38 [BEPO] = KEYMAP(
39 // Left hand
40 BP_DOLLAR,      BP_DQOT,        BP_LGIL,        BP_RGIL,        BP_LPRN,        BP_RPRN,        KC_DEL,
41 BP_PERCENT,     BP_B,           BP_E_ACUTE,     BP_P,           BP_O,           BP_E_GRAVE,     KC_BSPC,
42 BP_W,           BP_A,           BP_U,           BP_I,           BP_E,           BP_COMMA,
43 BP_ECRC,        BP_A_GRAVE,     BP_Y,           BP_X,           BP_DOT,         BP_K,           KC_TAB,
44 KC_ESC,         KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
45                                                                                                                 DF(BEPO),       DF(QW_B),
46                                                                                                                                 MO(NUMK),
47                                                                                                 KC_SPC,         KC_LSHIFT,      MO(FNAV),
48 // Right hand
49                                 KC_SLCK,        BP_AT,          BP_PLUS,        BP_MINUS,       BP_SLASH,       BP_ASTR,        BP_EQUAL,
50                                 KC_CAPSLOCK,    BP_DCRC,        BP_V,           BP_D,           BP_L,           BP_J,           BP_Z,
51                                                 BP_C,           BP_T,           BP_S,           BP_R,           BP_N,           BP_M,
52                                 KC_NUMLOCK,     BP_APOS,        BP_Q,           BP_G,           BP_H,           BP_F,           BP_CCED,
53                                                                 BP_ALGR,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
54 DF(AZ_B),       DF(BEPO),
55 MO(NUMK),
56 MO(FNAV),       KC_RSHIFT,      KC_ENTER),
57 /* Keymap 1: bepo to qwerty base compat layer
58  *
59  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
60  * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
61  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
62  * |   %    |   b  |   e  |   p  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
63  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
64  * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
65  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
66  * |   e    |   a  |   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
67  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
68  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
69  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
70  *                                             |      |      |L_NumK|      |L_NumK|      |      |
71  *                                             | Space|LShift|------|      |------|RShift|Enter |
72  *                                             |      |      |L_FNav|      |L_FNav|      |      |
73  *                                             `--------------------'      `--------------------'
74  */
75 [QW_B] = KEYMAP(
76 // Left hand
77 KC_DOLLAR,      S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LPRN,        KC_RPRN,        KC_DEL,
78 KC_PERCENT,     KC_B,           KC_E,           KC_P,           KC_O,           KC_E,           KC_BSPC,
79 KC_W,           KC_A,           KC_U,           KC_I,           KC_E,           KC_COMMA,
80 KC_E,           KC_A,           KC_Y,           KC_X,           KC_DOT,         KC_K,           KC_TAB,
81 KC_ESC,         KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
82                                                                                                                 KC_TRNS,        KC_TRNS,
83                                                                                                                                 KC_TRNS,
84                                                                                                 KC_SPC,         MO(QW_S),       KC_TRNS,
85 // Right hand
86                                 KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
87                                 KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
88                                                 KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
89                                 KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
90                                                                 MO(QW_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
91 KC_TRNS,        KC_TRNS,
92 KC_TRNS,
93 KC_TRNS,        MO(QW_S),       KC_ENTER),
94 /* Keymap 2: bepo with altgr key to qwerty compat layer
95  *
96  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
97  * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
98  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
99  * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
100  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
101  * |   w    |   a  |   u  |   i  |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
102  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
103  * |   e    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
104  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
105  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
106  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
107  *                                             |      |      |L_NumK|      |L_NumK|      |      |
108  *                                             |   _  |LShift|------|      |------|RShift|Enter |
109  *                                             |      |      |L_FNav|      |L_FNav|      |      |
110  *                                             `--------------------'      `--------------------'
111  */
112 [QW_A] = KEYMAP(
113 // Left hand
114 KC_DOLLAR,      S(KC_QUOT),     S(KC_COMM),     S(KC_DOT),      KC_LBRC,        KC_RBRC,        KC_DEL,
115 KC_PERCENT,     KC_PIPE,        KC_E,           KC_AMPR,        KC_O,           KC_E,           KC_BSPC,
116 KC_W,           KC_A,           KC_U,           KC_I,           RALT(KC_5),     KC_COMMA,
117 KC_E,           KC_BSLASH,      KC_LCBR,        KC_RCBR,        KC_DOT,         KC_TILDE,       KC_TAB,
118 KC_ESC,         KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
119                                                                                                                 KC_TRNS,        KC_TRNS,
120                                                                                                                                 KC_TRNS,
121                                                                                                 KC_UNDS,        MO(QW_S),       KC_TRNS,
122 // Right hand
123                                 KC_SLCK,        KC_AT,          KC_PLUS,        KC_MINUS,       KC_SLASH,       KC_ASTR,        KC_EQUAL,
124                                 KC_CAPSLOCK,    KC_CIRC,        KC_V,           KC_D,           KC_L,           KC_J,           KC_Z,
125                                                 KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           KC_M,
126                                 KC_NUMLOCK,     KC_QUOT,        KC_Q,           KC_G,           KC_H,           KC_F,           KC_C,
127                                                                 KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
128 KC_TRNS,        KC_TRNS,
129 KC_TRNS,
130 KC_TRNS,        MO(QW_S),       KC_ENTER),
131 /* Keymap 3: bepo with shift key to qwerty compat layer
132  *
133  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
134  * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   =    |
135  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
136  * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
137  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
138  * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
139  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
140  * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
141  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
142  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
143  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
144  *                                             |      |      |L_NumK|      |L_NumK|      |      |
145  *                                             | Space|LShift|------|      |------|RShift|Enter |
146  *                                             |      |      |L_FNav|      |L_FNav|      |      |
147  *                                             `--------------------'      `--------------------'
148  */
149 [QW_S] = KEYMAP(
150 // Left hand
151 KC_HASH,        KC_1,           KC_2,           KC_3,           KC_4,           KC_5,           KC_TRNS,
152 KC_GRV,         S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
153 S(KC_W),        S(KC_A),        S(KC_U),        S(KC_I),        S(KC_E),        KC_SCOLON,
154 S(KC_E),        S(KC_A),        S(KC_Y),        S(KC_X),        KC_COLON,       S(KC_K),        S(KC_TAB),
155 S(KC_ESC),      S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
156                                                                                                                 KC_TRNS,        KC_TRNS,
157                                                                                                                                 KC_TRNS,
158                                                                                                 KC_TRNS,        KC_TRNS,        KC_TRNS,
159 // Right hand
160                                 KC_TRNS,        KC_6,           KC_7,           KC_8,           KC_9,           KC_0,           KC_TRNS,
161                                 KC_TRNS,        KC_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(KC_Z),
162                                                 S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(KC_M),
163                                 KC_TRNS,        S(KC_SLASH),    S(KC_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
164                                                                 S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
165 KC_TRNS,        KC_TRNS,
166 KC_TRNS,
167 KC_TRNS,        KC_TRNS,        KC_TRNS),
168 /* Keymap 4: bepo to azerty base compat layer
169  *
170  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
171  * |   $    |   "  |   <  |   >  |   (  |   )  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
172  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
173  * |   %    |   b  |e_acut|   p  |   o  |e_grav|Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
174  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
175  * |   w    |   a  |   u  |   i  |   e  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
176  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
177  * |   e    |a_grav|   y  |   x  |   .  |   k  |      |                                  |      |   '  |   q  |   g  |   h  |   f  | c_cedil|
178  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
179  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
180  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
181  *                                             |      |      |L_NumK|      |L_NumK|      |      |
182  *                                             | Space|LShift|------|      |------|RShift|Enter |
183  *                                             |      |      |L_FNav|      |L_FNav|      |      |
184  *                                             `--------------------'      `--------------------'
185  */
186 [AZ_B] = KEYMAP(
187 // Left hand
188 FR_DLR,         FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LPRN,        FR_RPRN,        KC_DEL,
189 FR_PERC,        KC_B,           FR_EACU,        KC_P,           KC_O,           FR_EGRV,        KC_BSPC,
190 FR_W,           FR_A,           KC_U,           KC_I,           KC_E,           FR_COMM,
191 KC_E,           FR_AGRV,        KC_Y,           KC_X,           FR_DOT,         KC_K,           KC_TAB,
192 KC_ESC,         KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
193                                                                                                                 KC_TRNS,        KC_TRNS,
194                                                                                                                                 KC_TRNS,
195                                                                                                 KC_SPC,         MO(AZ_S),       KC_TRNS,
196 // Right hand
197                                 KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
198                                 KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
199                                                 KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
200                                 KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
201                                                                 MO(AZ_A),       KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
202 KC_TRNS,        KC_TRNS,
203 KC_TRNS,
204 KC_TRNS,        MO(AZ_S),       KC_ENTER),
205 /* Keymap 5: bepo with altgr key to azerty compat layer
206  *
207  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
208  * |   $    |   "  |   <  |   >  |   [  |   ]  |Delete|                                  |ScroLo|   @  |   +  |   -  |   /  |   *  |   =    |
209  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
210  * |   %    |   |  |   e  |   &  |   o  |   e  |Backsp|                                  |CapsLo|   ^  |   v  |   d  |   l  |   j  |   z    |
211  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
212  * |   w    |   a  |u_grav| trem |   €  |   ,  |------|                                  |------|   c  |   t  |   s  |   r  |   n  |   m    |
213  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
214  * |   /    |   \  |   {  |   }  |   .  |   ~  |      |                                  |      |   '  |   q  |   g  |   h  |   f  |   c    |
215  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
216  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
217  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
218  *                                             |      |      |L_NumK|      |L_NumK|      |      |
219  *                                             |   _  |LShift|------|      |------|RShift|Enter |
220  *                                             |      |      |L_FNav|      |L_FNav|      |      |
221  *                                             `--------------------'      `--------------------'
222  */
223 [AZ_A] = KEYMAP(
224 // Left hand
225 FR_DLR,         FR_QUOT,        FR_LESS,        FR_GRTR,        FR_LBRC,        FR_RBRC,        KC_DEL,
226 FR_PERC,        FR_PIPE,        FR_EACU,        FR_AMP,         KC_O,           FR_EGRV,        KC_BSPC,
227 FR_W,           FR_A,           FR_UGRV,        S(KC_LBRC),     FR_EURO,        FR_COMM,
228 FR_SLSH,        FR_BSLS,        FR_LCBR,        FR_RCBR,        FR_DOT,         FR_TILD,        KC_TAB,
229 KC_ESC,         KC_INS,         KC_LGUI,        KC_LCTL,        KC_LALT,
230                                                                                                                 KC_TRNS,        KC_TRNS,
231                                                                                                                                 KC_TRNS,
232                                                                                                 FR_UNDS,        MO(AZ_S),       KC_TRNS,
233 // Right hand
234                                 KC_SLCK,        FR_AT,          FR_PLUS,        FR_MINS,        FR_SLSH,        FR_ASTR,        FR_EQL,
235                                 KC_CAPSLOCK,    KC_LBRC,        KC_V,           KC_D,           KC_L,           KC_J,           FR_Z,
236                                                 KC_C,           KC_T,           KC_S,           KC_R,           KC_N,           FR_M,
237                                 KC_NUMLOCK,     FR_APOS,        FR_Q,           KC_G,           KC_H,           KC_F,           FR_CCED,
238                                                                 KC_TRNS,        KC_RCTL,        KC_RGUI,        KC_PSCREEN,     KC_PAUSE,
239 KC_TRNS,        KC_TRNS,
240 KC_TRNS,
241 KC_TRNS,        MO(AZ_S),       KC_ENTER),
242 /* Keymap 6: bepo with shift key to azerty compat layer
243  *
244  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
245  * |   #    |   1  |   2  |   3  |   4  |   5  |Delete|                                  |ScroLo|   6  |   7  |   8  |   9  |   0  |   °    |
246  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
247  * |   `    |   B  |   E  |   P  |   O  |   E  |Backsp|                                  |CapsLo|   !  |   V  |   D  |   L  |   J  |   Z    |
248  * |--------+------+------+------+------+------|  ace |                                  |      |------+------+------+------+------+--------|
249  * |   W    |   A  |   U  |   I  |   E  |   ;  |------|                                  |------|   C  |   T  |   S  |   R  |   N  |   M    |
250  * |--------+------+------+------+------+------|  Tab |                                  | NumLo|------+------+------+------+------+--------|
251  * |   E    |   A  |   Y  |   X  |   :  |   K  |      |                                  |      |   ?  |   Q  |   G  |   H  |   F  |   C    |
252  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
253  *   |Escape|Insert|LSuper| LCtrl|  LAlt|             | BEPO |QWERTY|      |AZERTY| BEPO |             | AltGr| RCtrl|RSuper|PrntSc| Pause|
254  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
255  *                                             |      |      |L_NumK|      |L_NumK|      |      |
256  *                                             | Space|LShift|------|      |------|RShift|Enter |
257  *                                             |      |      |L_FNav|      |L_FNav|      |      |
258  *                                             `--------------------'      `--------------------'
259  */
260 [AZ_S] = KEYMAP(
261 // Left hand
262 FR_HASH,        FR_1,           FR_2,           FR_3,           FR_4,           FR_5,           KC_TRNS,
263 FR_GRV,         S(KC_B),        S(KC_E),        S(KC_P),        S(KC_O),        S(KC_E),        KC_TRNS,
264 S(FR_W),        S(FR_A),        S(KC_U),        S(KC_I),        S(KC_E),        FR_SCLN,
265 S(KC_E),        S(FR_A),        S(KC_Y),        S(KC_X),        FR_COLN,        S(KC_K),        S(KC_TAB),
266 S(KC_ESC),      S(KC_INS),      S(KC_LGUI),     S(KC_LCTL),     S(KC_LALT),
267                                                                                                                 KC_TRNS,        KC_TRNS,
268                                                                                                                                 KC_TRNS,
269                                                                                                 KC_TRNS,        KC_TRNS,        KC_TRNS,
270 // Right hand
271                                 KC_TRNS,        FR_6,           FR_7,           FR_8,           FR_9,           FR_0,           FR_OVRR,
272                                 KC_TRNS,        FR_EXLM,        S(KC_V),        S(KC_D),        S(KC_L),        S(KC_J),        S(FR_Z),
273                                                 S(KC_C),        S(KC_T),        S(KC_S),        S(KC_R),        S(KC_N),        S(FR_M),
274                                 KC_TRNS,        FR_QUES,        S(FR_Q),        S(KC_G),        S(KC_H),        S(KC_F),        S(KC_C),
275                                                                 S(KC_RALT),     S(KC_RCTL),     S(KC_RGUI),     KC_TRNS,        KC_TRNS,
276 KC_TRNS,        KC_TRNS,
277 KC_TRNS,
278 KC_TRNS,        KC_TRNS,        KC_TRNS),
279 /* Keymap 7: function / navigation / mouse layer
280  *
281  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
282  * |        |  F1  |  F2  |  F3  |  F4  |  F5  |VolMut|                                  |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
283  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
284  * |        | Next |LClick|  Up  |RClick| WhUp |VolDwn|                                  |      | PgUp | Home |  Up  |  End |  F11 |        |
285  * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
286  * |        | Prev | Left | Down | Right|WhDown|------|                                  |------| PgDn | Left | Down | Right|  F12 |        |
287  * |--------+------+------+------+------+------| VolUp|                                  |      |------+------+------+------+------+--------|
288  * |        | Undo |  Cut | Copy | Paste|      |      |                                  |      |      |      |      |      |      |        |
289  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
290  *   |      |      |      |      |      |             |      |      |      |      |      |             |      |      |      |      |      |
291  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
292  *                                             |      |      |      |      |      |      |      |
293  *                                             |      |      |------|      |------|      |      |
294  *                                             |      |      |      |      |      |      |      |
295  *                                             `--------------------'      `--------------------'
296  */
297 [FNAV] = KEYMAP(
298 // Left hand
299 KC_NO,          KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_MUTE,
300 KC_NO,          KC_MS_BTN5,     KC_MS_BTN1,     KC_MS_UP,       KC_MS_BTN2,     KC_MS_WH_UP,    KC_VOLU,
301 KC_NO,          KC_MS_BTN4,     KC_MS_LEFT,     KC_MS_DOWN,     KC_MS_RIGHT,    KC_MS_WH_DOWN,
302 KC_NO,          KC_UNDO,        KC_CUT,         KC_COPY,        KC_PASTE,       KC_NO,          KC_VOLD,
303 KC_NO,          KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
304                                                                                                                 KC_TRNS,        KC_TRNS,
305                                                                                                                                 KC_TRNS,
306                                                                                                 KC_NO,          KC_TRNS,        KC_TRNS,
307 // Right hand
308                                 KC_NO,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_NO,
309                                 KC_NO,          KC_PGUP,        KC_HOME,        KC_UP,          KC_END,         KC_F11,         KC_NO,
310                                                 KC_PGDOWN,      KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_F12,         KC_NO,
311                                 KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
312                                                                 KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_NO,          KC_NO,
313 KC_TRNS,        KC_TRNS,
314 KC_TRNS,
315 KC_TRNS,        KC_TRNS,        KC_NO),
316 /* Keymap 8: numeric keypad layer, sends keypad codes
317  *
318  * ,--------------------------------------------------.                                  ,--------------------------------------------------.
319  * |        |      |      |      |      |      |      |                                  |      |      | NumLo|   /  |   *  |   -  |        |
320  * |--------+------+------+------+------+-------------|                                  |------+------+------+------+------+------+--------|
321  * |        |      |      |      |      |      |      |                                  |      |      |   7  |   8  |   9  |   +  |        |
322  * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
323  * |        |      |      |      |      |      |------|                                  |------|      |   4  |   5  |   6  |   +  |        |
324  * |--------+------+------+------+------+------|      |                                  |      |------+------+------+------+------+--------|
325  * |        |      |      |      |      |      |      |                                  |      |      |   1  |   2  |   3  | Enter|        |
326  * `--------+------+------+------+------+-------------,-------------.      ,-------------`-------------+------+------+------+------+--------'
327  *   |      |      |      |      |      |             |      |      |      |      |      |             |   0  |  00  |   .  | Enter|      |
328  *   `----------------------------------'      ,------|------|------|      |------+------+------.      `----------------------------------'
329  *                                             |      |      |      |      |      |      |      |
330  *                                             |      |      |------|      |------|      |      |
331  *                                             |      |      |      |      |      |      |      |
332  *                                             `--------------------'      `--------------------'
333  */
334 [NUMK] = KEYMAP(
335 // Left hand
336 KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
337 KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
338 KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
339 KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
340 KC_NO,          KC_NO,          KC_TRNS,        KC_TRNS,        KC_TRNS,
341                                                                                                                 KC_TRNS,        KC_TRNS,
342                                                                                                                                 KC_TRNS,
343                                                                                                 KC_NO,          KC_TRNS,        KC_TRNS,
344 // Right hand
345                                 KC_NO,          KC_NO,          KC_NUMLOCK,     KC_KP_SLASH,    KC_KP_ASTERISK, KC_KP_MINUS,    KC_NO,
346                                 KC_NO,          KC_NO,          KC_KP_7,        KC_KP_8,        KC_KP_9,        KC_KP_PLUS,     KC_NO,
347                                                 KC_NO,          KC_KP_4,        KC_KP_5,        KC_KP_6,        KC_KP_PLUS,     KC_NO,
348                                 KC_NO,          KC_NO,          KC_KP_1,        KC_KP_2,        KC_KP_3,        KC_KP_ENTER,    KC_NO,
349                                                                 KC_KP_0,        M(KP_00),       KC_KP_COMMA,    KC_KP_ENTER,    KC_NO,
350 KC_TRNS,        KC_TRNS,
351 KC_TRNS,
352 KC_TRNS,        KC_TRNS,        KC_NO)
353 };
354
355 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
356 {
357   switch(id) {
358     // keypad "double 0"
359     case KP_00:
360       if (record->event.pressed) {
361         return MACRO( T(KP_0), D(KP_0), END );
362       } else {
363         return MACRO( U(KP_0), END );
364       }
365       break;
366   }
367   return MACRO_NONE;
368 };