aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjorge <jhervas@direla.com>2016-05-28 09:57:25 +0200
committerjorge <jhervas@direla.com>2016-05-28 09:57:25 +0200
commitf20e17a19e80c31c30cd5bd4a566075babd2e564 (patch)
tree28b0ceb5b0066ef7989bb6c4d7dde0fb09826f2a
parent209ee3cd052b22b4cc32aecbc4b03cb8fb229a23 (diff)
downloadqmk_firmware-f20e17a19e80c31c30cd5bd4a566075babd2e564.tar.gz
qmk_firmware-f20e17a19e80c31c30cd5bd4a566075babd2e564.zip
ergodox_ez: added dvorak_spanish layout
-rw-r--r--keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md99
-rwxr-xr-xkeyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c284
2 files changed, 383 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md b/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md
new file mode 100644
index 000000000..e075e3cd7
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md
@@ -0,0 +1,99 @@
1# Ergodox Spanish Dvorak Layout
2 * See spanish dvorak layout [here](http://djelibeibi.unex.es/dvorak/)
3 * Software layout must be set to SPANISH QWERTY to work properly
4
5## Keymap Layers
6 - L0: spanish dvorak with some customizations (see layout below)
7 - L1: auxiliary keys (includes qwerty shortcuts, numpad...)
8 - L2: qwerty layout with customizations
9
10
11### Keymap 0: Base layer
12Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
13
14<pre><code>
15
16,--------------------------------------------------. ,--------------------------------------------------.
17| \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' |
18|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
19| F1/~L1 | . | , | Ñ | P | Y |MEH_T | | L1 | F | G | C | H | L |ALL_T/+ |
20|--------+------+------+------+------+------| DEL | | ~L1 |------+------+------+------+------+--------|
21|Esc/Ctrl| A | O | E | U | I |------| |------| D | R | T | N | S |'/RCtrl |
22|--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------|
23| {/LSft | - | Q | J | K | X | | | | B | M | W | V | Z | }/RSft |
24'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
25 |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT|
26 '----------------------------------' '----------------------------------'
27 ,-------------. ,-------------.
28 |F5/CAG|F6/~L1| |F7/~L1|F8/CAG|
29 ,------|------|------| |------+--------+------.
30 | | |F4/CA | |F11/CA| | |
31 | ENTER| TAB |------| |------| BSPC | SPACE|
32 | | |F3/SA | |F12/SA| | |
33 '--------------------' '----------------------'
34 CAG = CTRL-ALT-GUI
35 CA = CTRL-ALT
36 SA = SHIFT-ALT
37
38</pre></code>
39
40### Keymap 1: Aux layer
41
42<pre><code>
43
44,--------------------------------------------------. ,--------------------------------------------------.
45| | F1 | F2 | F3 | F4 | F5 | SLEEP| | PWR | F6 | F7 | F8 | F9 | F10 | F11 |
46|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
47| | < | > | MsUp | | | | | ~L0 | | 7 | 8 | 9 | * | '^ |
48|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
49| | |MsLeft|MsDown|MsRght| |------| |------| | 4 | 5 | 6 | + | Ç |
50|--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------|
51|CAPSLOCK| | | | | | | | | | 1 | 2 | 3 | / | |
52'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
53 |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V| | | . | 0 | = | |
54 '----------------------------------' '----------------------------------'
55 ,-------------. ,-------------.
56 | | | | | Play |
57 ,------|------|------| |------+------+------.
58 | | | | | VolUp| | |
59 | Lclk | Rclk |------| |------| Prev | Next |
60 | | | L2 | | VolDn| | |
61 '--------------------' '--------------------'
62
63</pre></code>
64
65### Keymap 2: QWERTY layer
66
67<pre><code>
68
69,--------------------------------------------------. ,--------------------------------------------------.
70| \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' |
71|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
72| TRANS | Q | W | E | R | T |MEH_T | | TRANS| Y | U | I | O | P |ALL_T/+ |
73|--------+------+------+------+------+------| DEL | | |------+------+------+------+------+--------|
74|Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | Ñ |'/RCtrl |
75|--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------|
76| {/LSft | Z | X | C | V | B | | | | N | M | , | . | - | }/RSft |
77'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
78 |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT|
79 '----------------------------------' '----------------------------------'
80 ,-------------. ,-------------.
81 |F5/CAG| TRANS| | TRANS|F8/CAG|
82 ,------|------|------| |------+--------+------.
83 | | |F4/CA | |F11/CA| | |
84 | ENTER| TAB |------| |------| BSPC | SPACE|
85 | | | TRANS| |F12/SA| | |
86 '--------------------' '----------------------'
87 CAG = CTRL-ALT-GUI
88 CA = CTRL-ALT
89 SA = SHIFT-ALT
90
91</pre></code>
92
93
94## Generation of .hex file
95> [Download scripts from here](https://github.com/johgh/keyboard/tree/master/ergodox)
96
97> Execute install.sh and generate.sh scripts.
98
99> Flash with `teensy_loader` binary (should be installed from previous step)
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c
new file mode 100755
index 000000000..33a0480c9
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c
@@ -0,0 +1,284 @@
1#include "ergodox_ez.h"
2#include "debug.h"
3#include "action_layer.h"
4
5/******************************************************************************************
6 * SPANISH DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
7 * Layer 1: auxiliary keys
8 * Layer 2: full qwerty layout
9 ******************************************************************************************
10 * IMPORTANT: Software layout must be set to SPANISH QWERTY to work properly
11 *****************************************************************************************/
12
13// LAYERS
14#define BASE 0 // dvorak layout (default)
15#define AUX 1 // auxiliary keys
16#define QWERTY 2 // qwerty layout
17
18// MACROS
19#define OBRACE 0 // key { or shift
20#define CBRACE 1 // key } or shift
21#define OBRACK 2 // key [ or left alt
22#define CBRACK 3 // key ] or left alt
23#define CAPS 4 // caps lock
24
25// LEDS
26#define USB_LED_NUM_LOCK 0
27#define USB_LED_CAPS_LOCK 1
28#define USB_LED_SCROLL_LOCK 2
29#define USB_LED_COMPOSE 3
30#define USB_LED_KANA 4
31
32// TIMERS
33#define KEY_TAP_FAST 85
34#define KEY_TAP_SLOW 95
35
36const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37/* Keymap 0: Base layer
38 * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
39 *
40 * ,--------------------------------------------------. ,--------------------------------------------------.
41 * | \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' |
42 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
43 * | F1/~L1 | . | , | Ñ | P | Y |MEH_T | | L1 | F | G | C | H | L |ALL_T/+ |
44 * |--------+------+------+------+------+------| DEL | | ~L1 |------+------+------+------+------+--------|
45 * |Esc/Ctrl| A | O | E | U | I |------| |------| D | R | T | N | S |'/RCtrl |
46 * |--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------|
47 * | {/LSft | - | Q | J | K | X | | | | B | M | W | V | Z | }/RSft |
48 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
49 * |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT|
50 * `----------------------------------' `----------------------------------'
51 * ,-------------. ,-------------.
52 * |F5/CAG|F6/~L1| |F7/~L1|F8/CAG|
53 * ,------|------|------| |------+--------+------.
54 * | | |F4/CA | |F11/CA| | |
55 * | ENTER| TAB |------| |------| BSPC | SPACE|
56 * | | |F3/SA | |F12/SA| | |
57 * `--------------------' `----------------------'
58 * CAG = CTRL-ALT-GUI
59 * CA = CTRL-ALT
60 * SA = SHIFT-ALT
61 *
62 */
63[BASE] = KEYMAP(
64 // left hand
65 KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NONUS_BSLASH,
66 LT(AUX, KC_F1), KC_DOT, KC_COMM,KC_SCLN,KC_P, KC_Y, MEH_T(KC_DEL),
67 CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I,
68 M(OBRACE), KC_SLSH,KC_Q, KC_J, KC_K, KC_X, KC_LGUI,
69 M(OBRACK), KC_HOME,KC_PGDN,KC_PGUP,KC_END,
70 LCAG_T(KC_F5), LT(AUX, KC_F6),
71 MT(MOD_LALT | MOD_LCTL, KC_F4),
72 KC_ENT,KC_TAB,MT((MOD_LALT | MOD_LSFT), KC_F3),
73 // right hand
74 KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
75 KC_FN1, KC_F, KC_G, KC_C, KC_H, KC_L, ALL_T(KC_RBRACKET),
76 KC_D, KC_R, KC_T, KC_N, KC_S, CTL_T(KC_QUOTE),
77 KC_RALT, KC_B, KC_M, KC_W, KC_V, KC_Z, M(CBRACE),
78 KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,M(CBRACK),
79 LT(AUX, KC_F7), LCAG_T(KC_F8),
80 MT(MOD_LALT | MOD_LCTL, KC_F11),
81 MT(MOD_LALT | MOD_LSFT, KC_F12),KC_BSPC, KC_SPC
82 ),
83/* Keymap 1: Aux layer
84 *
85 * ,--------------------------------------------------. ,--------------------------------------------------.
86 * | | F1 | F2 | F3 | F4 | F5 | SLEEP | PWR | F6 | F7 | F8 | F9 | F10 | F11 |
87 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
88 * | | < | > | MsUp | | | | | ~L0 | | 7 | 8 | 9 | * | `^ |
89 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
90 * | | |MsLeft|MsDown|MsRght| |------| |------| | 4 | 5 | 6 | + | Ç |
91 * |--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------|
92 * |CAPSLOCK| | | | | | | | | | 1 | 2 | 3 | / | |
93 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
94 * |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V| | | . | 0 | = | |
95 * `----------------------------------' `----------------------------------'
96 * ,-------------. ,-------------.
97 * | | | | | Play |
98 * ,------|------|------| |------+------+------.
99 * | | | | | VolUp| | |
100 * | Lclk | Rclk |------| |------| Prev | Next |
101 * | | | L2 | | VolDn| | |
102 * `--------------------' `--------------------'
103 */
104[AUX] = KEYMAP(
105 // left hand
106 KC_NO , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_SLEP,
107 KC_TRNS, KC_NONUS_BSLASH, LSFT(KC_NONUS_BSLASH), KC_MS_U, KC_NO, KC_NO, KC_NO,
108 KC_NO , KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO ,
109 M(CAPS), KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO,
110 LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V),
111 KC_NO , KC_TRNS,
112 KC_NO,
113 KC_BTN1, KC_BTN2, TG(QWERTY),
114 // right hand
115 KC_PWR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
116 KC_TRNS, KC_NO, KC_7, KC_8, KC_9, KC_PAST, KC_LBRACKET,
117 KC_NO, KC_4, KC_5, KC_6, KC_PPLS, KC_BSLASH,
118 KC_PSCR, KC_NO, KC_1, KC_2, KC_3, KC_PSLS, KC_NO,
119 KC_NO ,KC_DOT, KC_0, KC_PEQL, KC_NO,
120 KC_TRNS, KC_MPLY,
121 KC_VOLU,
122 KC_VOLD, KC_MPRV, KC_MNXT
123),
124/* Keymap 2: QWERTY layer
125 *
126 * ,--------------------------------------------------. ,--------------------------------------------------.
127 * | \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' |
128 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
129 * | TRANS | Q | W | E | R | T |MEH_T | | TRANS| Y | U | I | O | P |ALL_T/+ |
130 * |--------+------+------+------+------+------| DEL | | |------+------+------+------+------+--------|
131 * |Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | Ñ |'/RCtrl |
132 * |--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------|
133 * | {/LSft | Z | X | C | V | B | | | | N | M | , | . | - | }/RSft |
134 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
135 * |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT|
136 * `----------------------------------' `----------------------------------'
137 * ,-------------. ,-------------.
138 * |F5/CAG| TRANS| | TRANS|F8/CAG|
139 * ,------|------|------| |------+--------+------.
140 * | | |F4/CA | |F11/CA| | |
141 * | ENTER| TAB |------| |------| BSPC | SPACE|
142 * | | | TRANS| |F12/SA| | |
143 * `--------------------' `----------------------'
144 * CAG = CTRL-ALT-GUI
145 * CA = CTRL-ALT
146 * SA = SHIFT-ALT
147 *
148 */
149[QWERTY] = KEYMAP(
150 // left hand
151 KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NONUS_BSLASH,
152 KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_DEL),
153 CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
154 M(OBRACE), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI,
155 M(OBRACK), KC_HOME,KC_PGDN,KC_PGUP,KC_END,
156 LCAG_T(KC_F5), KC_TRNS,
157 MT(MOD_LALT | MOD_LCTL, KC_F4),
158 KC_ENT,KC_TAB,KC_TRNS,
159 // right hand
160 KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
161 KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, ALL_T(KC_RBRACKET),
162 KC_H, KC_J, KC_K, KC_L, KC_SCLN,CTL_T(KC_QUOTE),
163 KC_RALT, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,M(CBRACE),
164 KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,M(CBRACK),
165 KC_TRNS, LCAG_T(KC_F8),
166 MT(MOD_LALT | MOD_LCTL, KC_F11),
167 MT(MOD_LALT | MOD_LSFT, KC_F12),KC_BSPC, KC_SPC
168),
169};
170
171const uint16_t PROGMEM fn_actions[] = {
172 [1] = ACTION_LAYER_TAP_TOGGLE(AUX) // FN1 - Momentary Layer 1 (Aux)
173};
174
175static uint16_t key_timer;
176
177const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
178{
179 switch(id) {
180 case OBRACE: {
181 if (record->event.pressed) {
182 key_timer = timer_read();
183 register_code(KC_RSFT);
184 } else {
185 unregister_code(KC_RSFT);
186 if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
187 register_code(KC_RALT);
188 register_code(KC_QUOTE);
189 unregister_code(KC_QUOTE);
190 unregister_code(KC_RALT);
191 }
192 }
193 break;
194 }
195 case CBRACE: {
196 if (record->event.pressed) {
197 key_timer = timer_read();
198 register_code(KC_RSFT);
199 } else {
200 unregister_code(KC_RSFT);
201 if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
202 register_code(KC_RALT);
203 register_code(KC_BSLS);
204 unregister_code(KC_BSLS);
205 unregister_code(KC_RALT);
206 }
207 }
208 break;
209 }
210 case OBRACK: {
211 if (record->event.pressed) {
212 key_timer = timer_read();
213 register_code(KC_LALT);
214 } else {
215 unregister_code(KC_LALT);
216 if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
217 register_code(KC_RALT);
218 register_code(KC_LBRACKET);
219 unregister_code(KC_LBRACKET);
220 unregister_code(KC_RALT);
221 }
222 }
223 break;
224 }
225 case CBRACK: {
226 if (record->event.pressed) {
227 key_timer = timer_read();
228 register_code(KC_LALT);
229 } else {
230 unregister_code(KC_LALT);
231 if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
232 register_code(KC_RALT);
233 register_code(KC_RBRACKET);
234 unregister_code(KC_RBRACKET);
235 unregister_code(KC_RALT);
236 }
237 }
238 break;
239 }
240 case CAPS: {
241 if (record->event.pressed) {
242 register_code(KC_CAPSLOCK);
243 } else {
244 unregister_code(KC_CAPSLOCK);
245 }
246 break;
247 }
248 }
249 return MACRO_NONE;
250};
251
252// Runs just one time when the keyboard initializes.
253void matrix_init_user(void) {
254
255};
256
257// Runs constantly in the background, in a loop.
258void matrix_scan_user(void) {
259
260 uint8_t layer = biton32(layer_state);
261
262 ergodox_board_led_off();
263 ergodox_right_led_1_off();
264 ergodox_right_led_2_off();
265 ergodox_right_led_3_off();
266 switch (layer) {
267 case 1:
268 ergodox_right_led_3_on();
269 break;
270 case 2:
271 ergodox_right_led_2_on();
272 break;
273 default:
274 // none
275 break;
276 }
277
278 // Turn the caps lock led on
279 if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
280 ergodox_right_led_1_on();
281 }
282
283}
284