summaryrefslogtreecommitdiffstats
path: root/layouts/community/ergodox/osx_de
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-08-24 04:29:07 +0200
committerGitHub <noreply@github.com>2017-08-24 04:29:07 +0200
commitd2ff66a985b938e87fffe55c1d9f1dc55e356f91 (patch)
tree561b3e203033849573a17f5ac6248077ab687676 /layouts/community/ergodox/osx_de
parent7260fc3eef98fb7b0e2ed24d3d0d14cf2e613000 (diff)
downloadqmk_firmware-d2ff66a985b938e87fffe55c1d9f1dc55e356f91.tar.gz
qmk_firmware-d2ff66a985b938e87fffe55c1d9f1dc55e356f91.tar.xz
Creates a layouts/ folder for keymaps shared between keyboards (#1609)
* include variables and .h files as pp directives * start layout compilation * split ergodoxes up * don't compile all layouts for everything * might seg fault * reset layouts variable * actually reset layouts * include rules.mk instead * remove includes from rules.mk * update variable setting * load visualizer from path * adds some more examples * adds more layouts * more boards added * more boards added * adds documentation for layouts * use lowercase names for LAYOUT_ * add layout.json files for each layout * add community folder, default keymaps for layouts * touch-up default layouts * touch-up layouts, some keyboard rules.mk * update documentation for layouts * fix up serial/i2c switches
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 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_german_osx.h"
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define SMLY 3
+#define NUMB 4
+#define EGOS 5
+
+#define M_CTRL_CMDV 0
+#define M_CTRL_CMDC 1
+#define M_MEH_SH_ACUT 2
+#define M_LGUI_SHFT 3
+#define M_CTL_SFT_HASH 4
+#define M_DE_OSX_CIRC_CTRLCMD 5
+#define M_DE_OSX_PLUS_CTRLALT 6
+#define SM_SMILE 7
+#define SM_SMIRK 8
+#define SM_CRY 9
+#define SM_SAD 10
+#define SM_HEART 11
+#define SM_LAUGH 12
+#define SM_KISS 13
+#define SM_FROWN 14
+#define M_TOGGLE_5 15
+
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE]=LAYOUT_ergodox(
+//left half
+ KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH),
+ KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI,
+ KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G,
+ KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT,
+ LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN,
+ M(M_MEH_SH_ACUT), TG(MDIA),
+ KC_HOME,
+ KC_BSPC, KC_DEL, LT(SMLY,KC_END),
+ //right half
+ M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS,
+ KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE,
+ DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE),
+ KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT,
+ KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS),
+ TG(NUMB), ALL_T(DE_OSX_ACUT),
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_SPC),
+[SYMB]=LAYOUT_ergodox(
+//left half
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
+ //right half
+ M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM,
+ DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH,
+ KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4),
+ DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
+ KC_F15, KC_TRNS, KC_TRNS),
+[MDIA]=LAYOUT_ergodox(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK),
+[SMLY]=LAYOUT_ergodox(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
+ M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[NUMB]=LAYOUT_ergodox(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS,
+ KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
+ KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[EGOS]=LAYOUT_ergodox(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F1, KC_F2,
+ KC_F3,
+ KC_SPC, KC_LCTL, KC_F4,
+ //right half
+ M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+static uint16_t start;
+switch(id) {
+case M_TOGGLE_5:
+//Macro: M_TOGGLE_5//-----------------------
+ if (record->event.pressed){
+ layer_state ^= (1<<5);
+ layer_state &= (1<<5);
+ }
+
+break;
+case M_CTRL_CMDC:
+//Macro: M_CTRL_CMDC//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),END);
+ } else {
+ return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
+ }
+ }
+
+break;
+case M_DE_OSX_PLUS_CTRLALT:
+//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),D(LALT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LALT),END);
+ } else {
+ return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
+ }
+ }
+
+break;
+case SM_KISS:
+//Macro: SM_KISS//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
+ }
+
+break;
+case SM_FROWN:
+//Macro: SM_FROWN//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
+ }
+
+break;
+case SM_CRY:
+//Macro: SM_CRY//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+ }
+
+break;
+case SM_SMILE:
+//Macro: SM_SMILE//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+ }
+
+break;
+case SM_SMIRK:
+//Macro: SM_SMIRK//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+ }
+
+break;
+case M_LGUI_SHFT:
+//Macro: M_LGUI_SHFT//-----------------------
+if (record->event.pressed){
+ return MACRO(D(LGUI),D(LSFT),END);
+ }else{
+ return MACRO(U(LGUI),U(LSFT),END);
+ }
+
+break;
+case SM_HEART:
+//Macro: SM_HEART//-----------------------
+if (record->event.pressed) {
+ return MACRO(T(GRV),T(3),END);
+ }
+
+break;
+case SM_LAUGH:
+//Macro: SM_LAUGH//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
+ }
+
+break;
+case M_CTL_SFT_HASH:
+//Macro: M_CTL_SFT_HASH//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),D(LSFT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LSFT),END);
+ } else {
+ return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
+ }
+ }
+
+break;
+case SM_SAD:
+//Macro: SM_SAD//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+ }
+
+break;
+case M_DE_OSX_CIRC_CTRLCMD:
+//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),D(LGUI),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LGUI),END);
+ } else {
+ return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
+ }
+ }
+
+break;
+case M_CTRL_CMDV:
+//Macro: M_CTRL_CMDV//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),END);
+ } else {
+ return MACRO(U(LCTRL),D(LGUI),T(V),U(LGUI),END);
+ }
+ }
+
+break;
+case M_MEH_SH_ACUT:
+//Macro: M_MEH_SH_ACUT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+ } else {
+ return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END);
+ }
+ }
+
+break;
+}
+return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+uint8_t layer = biton32(layer_state);
+
+ergodox_board_led_off();
+ergodox_right_led_1_off();
+ergodox_right_led_2_off();
+ergodox_right_led_3_off();
+switch (layer) {
+
+ case SYMB:
+ ergodox_right_led_1_on();
+
+
+ break;
+ case MDIA:
+
+ ergodox_right_led_2_on();
+
+ break;
+ case SMLY:
+
+
+ ergodox_right_led_3_on();
+ break;
+ case NUMB:
+ ergodox_right_led_1_on();
+
+ ergodox_right_led_3_on();
+ break;
+ case EGOS:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ break;
+default:
+// none
+break;
+}
+
+};
+
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 @@
+#Ergodox EZ für OSX
+
+Dies 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:
+
+- Die Umlaute sollten an einigermassen sinnvollen Plätzen liegen
+- der Umstieg sollte dadurch erleichtert werden, dass einige Tasten an ihren "normalen" Platz zurückgewandert sind. Z.B. ESC, Tab,...
+- die Leertaste ist jetzt auf der rechten seite, neben Enter. Dafür hat der linke Daumen nun Backspace und Delete.
+- die CMD- und Alt-Tasten sind in der Mitte einfach erreichbar.
+- 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.
+- Die Symbollayer wurde dahingehend angepasst, dass die klammern, etc nun auf beiden hälften der Tastatur zu finden sind
+- der Zehnerblock wurde in eine eigene Layer umgezogen
+- die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen
+
+# Erstellt Mit Dem ErgodoxLayoutGenerator
+
+Der 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.
+Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
+
+
+
+------------------------------
+
+# ErgoDox EZ for OSX
+
+This 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:
+
+- the umlaut-keys should be at their useful place more or less
+- the switching should be made more easy so some other keys (like tab, esc) were moved to their default place
+- the space key can now be used with both hands
+- the CMD- and ALT-Keys moved to the middle, can be reached more easily.
+- there is a new layer for using the cursor-keys, placed like on the default keyboard. This makes them useable for games also
+- the symbollayer now has only symbols
+- the number block was moved to a special layer
+- meh and hyper went down to the thumb block
+
+# Created Using the ErgodoxLayoutGenerator
+
+The 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.
+
+The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
+