aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/osx_de
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/osx_de')
-rw-r--r--layouts/community/ergodox/osx_de/keymap.c364
-rw-r--r--layouts/community/ergodox/osx_de/osx_de_highres.png.md1
-rw-r--r--layouts/community/ergodox/osx_de/readme.md41
3 files changed, 406 insertions, 0 deletions
diff --git a/layouts/community/ergodox/osx_de/keymap.c b/layouts/community/ergodox/osx_de/keymap.c
new file mode 100644
index 000000000..a9a27a8d4
--- /dev/null
+++ b/layouts/community/ergodox/osx_de/keymap.c
@@ -0,0 +1,364 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "keymap_german_osx.h"
5
6#define BASE 0
7#define SYMB 1
8#define MDIA 2
9#define SMLY 3
10#define NUMB 4
11#define EGOS 5
12
13#define M_CTRL_CMDV 0
14#define M_CTRL_CMDC 1
15#define M_MEH_SH_ACUT 2
16#define M_LGUI_SHFT 3
17#define M_CTL_SFT_HASH 4
18#define M_DE_OSX_CIRC_CTRLCMD 5
19#define M_DE_OSX_PLUS_CTRLALT 6
20#define SM_SMILE 7
21#define SM_SMIRK 8
22#define SM_CRY 9
23#define SM_SAD 10
24#define SM_HEART 11
25#define SM_LAUGH 12
26#define SM_KISS 13
27#define SM_FROWN 14
28#define M_TOGGLE_5 15
29
30//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32[BASE]=LAYOUT_ergodox(
33//left half
34 KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH),
35 KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI,
36 KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G,
37 KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT,
38 LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN,
39 M(M_MEH_SH_ACUT), TG(MDIA),
40 KC_HOME,
41 KC_BSPC, KC_DEL, LT(SMLY,KC_END),
42 //right half
43 M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS,
44 KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE,
45 DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE),
46 KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT,
47 KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS),
48 TG(NUMB), ALL_T(DE_OSX_ACUT),
49 KC_PGUP,
50 KC_PGDN, KC_ENT, KC_SPC),
51[SYMB]=LAYOUT_ergodox(
52//left half
53 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
54 KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS,
55 KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT,
56 KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS,
57 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
58 KC_TRNS, KC_TRNS,
59 KC_TRNS,
60 KC_TRNS, KC_DEL, KC_TRNS,
61 //right half
62 M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
63 KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM,
64 DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH,
65 KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4),
66 DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
67 KC_F13, KC_F12,
68 KC_F14,
69 KC_F15, KC_TRNS, KC_TRNS),
70[MDIA]=LAYOUT_ergodox(
71//left half
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
74 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
75 KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
77 KC_TRNS, KC_TRNS,
78 KC_TRNS,
79 KC_TRNS, KC_TRNS, KC_TRNS,
80 //right half
81 KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
82 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
83 KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
84 KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
85 KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
86 KC_TRNS, KC_TRNS,
87 KC_TRNS,
88 KC_TRNS, KC_TRNS, KC_WBAK),
89[SMLY]=LAYOUT_ergodox(
90//left half
91 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
92 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
93 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
94 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
95 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
96 KC_TRNS, KC_TRNS,
97 KC_TRNS,
98 KC_TRNS, KC_TRNS, KC_TRNS,
99 //right half
100 M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
101 KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
102 M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
103 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
104 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
105 KC_TRNS, KC_TRNS,
106 KC_TRNS,
107 KC_TRNS, KC_TRNS, KC_TRNS),
108[NUMB]=LAYOUT_ergodox(
109//left half
110 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
111 KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
112 KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
113 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
114 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
115 KC_TRNS, KC_TRNS,
116 KC_TRNS,
117 KC_TRNS, KC_TRNS, KC_TRNS,
118 //right half
119 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
120 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
121 KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS,
122 KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
123 KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS,
124 KC_TRNS, KC_TRNS,
125 KC_TRNS,
126 KC_TRNS, KC_TRNS, KC_TRNS),
127[EGOS]=LAYOUT_ergodox(
128//left half
129 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
130 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
134 KC_F1, KC_F2,
135 KC_F3,
136 KC_SPC, KC_LCTL, KC_F4,
137 //right half
138 M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
140 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
141 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
142 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
143 KC_TRNS, KC_TRNS,
144 KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_TRNS),
146};
147
148const uint16_t PROGMEM fn_actions[] = {
149
150};
151
152const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
153{
154static uint16_t start;
155switch(id) {
156case M_TOGGLE_5:
157//Macro: M_TOGGLE_5//-----------------------
158 if (record->event.pressed){
159 layer_state ^= (1<<5);
160 layer_state &= (1<<5);
161 }
162
163break;
164case M_CTRL_CMDC:
165//Macro: M_CTRL_CMDC//-----------------------
166if (record->event.pressed) {
167 start = timer_read();
168 return MACRO(D(LCTRL),END);
169 } else {
170 if (timer_elapsed(start) >150) {
171 return MACRO(U(LCTRL),END);
172 } else {
173 return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
174 }
175 }
176
177break;
178case M_DE_OSX_PLUS_CTRLALT:
179//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
180if (record->event.pressed) {
181 start = timer_read();
182 return MACRO(D(LCTRL),D(LALT),END);
183 } else {
184 if (timer_elapsed(start) >150) {
185 return MACRO(U(LCTRL),U(LALT),END);
186 } else {
187 return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
188 }
189 }
190
191break;
192case SM_KISS:
193//Macro: SM_KISS//-----------------------
194if (record->event.pressed) {
195 return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
196 }
197
198break;
199case SM_FROWN:
200//Macro: SM_FROWN//-----------------------
201if (record->event.pressed) {
202 return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
203 }
204
205break;
206case SM_CRY:
207//Macro: SM_CRY//-----------------------
208if (record->event.pressed) {
209 return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
210 }
211
212break;
213case SM_SMILE:
214//Macro: SM_SMILE//-----------------------
215if (record->event.pressed) {
216 return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
217 }
218
219break;
220case SM_SMIRK:
221//Macro: SM_SMIRK//-----------------------
222if (record->event.pressed) {
223 return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
224 }
225
226break;
227case M_LGUI_SHFT:
228//Macro: M_LGUI_SHFT//-----------------------
229if (record->event.pressed){
230 return MACRO(D(LGUI),D(LSFT),END);
231 }else{
232 return MACRO(U(LGUI),U(LSFT),END);
233 }
234
235break;
236case SM_HEART:
237//Macro: SM_HEART//-----------------------
238if (record->event.pressed) {
239 return MACRO(T(GRV),T(3),END);
240 }
241
242break;
243case SM_LAUGH:
244//Macro: SM_LAUGH//-----------------------
245if (record->event.pressed) {
246 return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
247 }
248
249break;
250case M_CTL_SFT_HASH:
251//Macro: M_CTL_SFT_HASH//-----------------------
252if (record->event.pressed) {
253 start = timer_read();
254 return MACRO(D(LCTRL),D(LSFT),END);
255 } else {
256 if (timer_elapsed(start) >150) {
257 return MACRO(U(LCTRL),U(LSFT),END);
258 } else {
259 return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
260 }
261 }
262
263break;
264case SM_SAD:
265//Macro: SM_SAD//-----------------------
266if (record->event.pressed) {
267 return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
268 }
269
270break;
271case M_DE_OSX_CIRC_CTRLCMD:
272//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
273if (record->event.pressed) {
274 start = timer_read();
275 return MACRO(D(LCTRL),D(LGUI),END);
276 } else {
277 if (timer_elapsed(start) >150) {
278 return MACRO(U(LCTRL),U(LGUI),END);
279 } else {
280 return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
281 }
282 }
283
284break;
285case M_CTRL_CMDV:
286//Macro: M_CTRL_CMDV//-----------------------
287if (record->event.pressed) {
288 start = timer_read();
289 return MACRO(D(LCTRL),END);
290 } else {
291 if (timer_elapsed(start) >150) {
292 return MACRO(U(LCTRL),END);
293 } else {
294 return MACRO(U(LCTRL),D(LGUI),T(V),U(LGUI),END);
295 }
296 }
297
298break;
299case M_MEH_SH_ACUT:
300//Macro: M_MEH_SH_ACUT//-----------------------
301if (record->event.pressed) {
302 start = timer_read();
303 return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
304 } else {
305 if (timer_elapsed(start) >150) {
306 return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
307 } else {
308 return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END);
309 }
310 }
311
312break;
313}
314return MACRO_NONE;
315};
316
317// Runs just one time when the keyboard initializes.
318void matrix_init_user(void) {
319
320};
321
322// Runs constantly in the background, in a loop.
323void matrix_scan_user(void) {
324
325uint8_t layer = biton32(layer_state);
326
327ergodox_board_led_off();
328ergodox_right_led_1_off();
329ergodox_right_led_2_off();
330ergodox_right_led_3_off();
331switch (layer) {
332
333 case SYMB:
334 ergodox_right_led_1_on();
335
336
337 break;
338 case MDIA:
339
340 ergodox_right_led_2_on();
341
342 break;
343 case SMLY:
344
345
346 ergodox_right_led_3_on();
347 break;
348 case NUMB:
349 ergodox_right_led_1_on();
350
351 ergodox_right_led_3_on();
352 break;
353 case EGOS:
354 ergodox_right_led_1_on();
355 ergodox_right_led_2_on();
356 ergodox_right_led_3_on();
357 break;
358default:
359// none
360break;
361}
362
363};
364
diff --git a/layouts/community/ergodox/osx_de/osx_de_highres.png.md b/layouts/community/ergodox/osx_de/osx_de_highres.png.md
new file mode 100644
index 000000000..ee3dc5350
--- /dev/null
+++ b/layouts/community/ergodox/osx_de/osx_de_highres.png.md
@@ -0,0 +1 @@
https://i.imgur.com/kvSzkXK.png
diff --git a/layouts/community/ergodox/osx_de/readme.md b/layouts/community/ergodox/osx_de/readme.md
new file mode 100644
index 000000000..5011a9dd6
--- /dev/null
+++ b/layouts/community/ergodox/osx_de/readme.md
@@ -0,0 +1,41 @@
1#Ergodox EZ für OSX
2
3Dies ist nur ein kleiner Tweak der bestehenden firmware für das ErgoDox-EZ-Keyboard. Leider passte das layout nicht wirklich für OSX, deswegen habe ich einige Anpassungen gemacht. Dabei wurden folgende features umgesetzt:
4
5- Die Umlaute sollten an einigermassen sinnvollen Plätzen liegen
6- der Umstieg sollte dadurch erleichtert werden, dass einige Tasten an ihren "normalen" Platz zurückgewandert sind. Z.B. ESC, Tab,...
7- die Leertaste ist jetzt auf der rechten seite, neben Enter. Dafür hat der linke Daumen nun Backspace und Delete.
8- die CMD- und Alt-Tasten sind in der Mitte einfach erreichbar.
9- es gibt eine neue Layer die für Spiele genutzt werden kann (egosooter wie Counter Strike). Dort liegen die wichtigsten Tasten auf der linken Seite, im Daumenblock z.B. space und ctrl sowie die F-Tasten 1-4. Diese Layer ist über die Symbollayer erreichbar.
10- Die Symbollayer wurde dahingehend angepasst, dass die klammern, etc nun auf beiden hälften der Tastatur zu finden sind
11- der Zehnerblock wurde in eine eigene Layer umgezogen
12- die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen
13
14# Erstellt Mit Dem ErgodoxLayoutGenerator
15
16Der ErgodoxLayoutGenerator ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
17Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
18
19
20
21------------------------------
22
23# ErgoDox EZ for OSX
24
25This is only a little tweak of the existing default layout for the ErgoDox keyboard. Unfortunately the default layout did not work well with german OSX, so I created som adjustments. These were the features added and changed:
26
27- the umlaut-keys should be at their useful place more or less
28- the switching should be made more easy so some other keys (like tab, esc) were moved to their default place
29- the space key can now be used with both hands
30- the CMD- and ALT-Keys moved to the middle, can be reached more easily.
31- there is a new layer for using the cursor-keys, placed like on the default keyboard. This makes them useable for games also
32- the symbollayer now has only symbols
33- the number block was moved to a special layer
34- meh and hyper went down to the thumb block
35
36# Created Using the ErgodoxLayoutGenerator
37
38The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
39
40The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
41