]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Add Swiss German layout for Ergodox Infinity
authorAndreas Schmidt <andreas.remigius@gmail.com>
Sat, 21 Jan 2017 15:24:41 +0000 (16:24 +0100)
committerAndreas Schmidt <andreas.remigius@gmail.com>
Sat, 21 Jan 2017 15:24:41 +0000 (16:24 +0100)
- Add Swiss German layout for Ergodox Infinity based on default
    layout for Ergodox EZ.
- Minor changes in the event loop to prevent flashing display
    background lights.

keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.json [new file with mode: 0644]
keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.png [new file with mode: 0644]
keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_1_2.png [new file with mode: 0644]
keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_2_3.json [new file with mode: 0644]
keyboards/ergodox/keymaps/swissgerman_infinity/keymap.c [new file with mode: 0644]
keyboards/ergodox/keymaps/swissgerman_infinity/readme.md [new file with mode: 0644]

diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.json b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.json
new file mode 100644 (file)
index 0000000..7a0397f
--- /dev/null
@@ -0,0 +1,417 @@
+[
+  {
+    "backcolor": "#ffffff"
+  },
+  [
+    {
+      "x": 3.5
+    },
+    "#\n3",
+    {
+      "x": 10.5
+    },
+    "*\n8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@\n2",
+    {
+      "x": 1
+    },
+    "$\n4",
+    {
+      "x": 8.5
+    },
+    "&\n7",
+    {
+      "x": 1
+    },
+    "(\n9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "%\n5",
+    {
+      "a": 7
+    },
+    "<i class='fa fa-arrow-left'></i>",
+    {
+      "x": 4.5
+    },
+    "<i class='fa fa-arrow-right'></i>",
+    {
+      "a": 4
+    },
+    "^\n6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "w": 1.5
+    },
+    "°\n§",
+    "!\n1",
+    {
+      "x": 14.5
+    },
+    ")\n0",
+    {
+      "w": 1.5
+    },
+    "?\n'\n\n'"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "E",
+    {
+      "x": 10.5
+    },
+    "I"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "W",
+    {
+      "x": 1
+    },
+    "R",
+    {
+      "x": 8.5
+    },
+    "U",
+    {
+      "x": 1
+    },
+    "O"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "T",
+    {
+      "c": "#b56b6b",
+      "a": 6,
+      "h": 1.5
+    },
+    "Toggle Code Layer",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Toggle Code Layer",
+    {
+      "c": "#cccccc",
+      "a": 4
+    },
+    "Y"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Delete",
+    {
+      "a": 4
+    },
+    "Q",
+    {
+      "x": 14.5
+    },
+    "P",
+    {
+      "w": 1.5
+    },
+    "è\nü\n\n["
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "D",
+    {
+      "x": 10.5
+    },
+    "K"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "S",
+    {
+      "x": 1
+    },
+    "F",
+    {
+      "x": 8.5
+    },
+    "J",
+    {
+      "x": 1
+    },
+    "L"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "G",
+    {
+      "x": 6.5
+    },
+    "H"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Backspace",
+    {
+      "c": "#79c777",
+      "a": 4
+    },
+    "A\n\nLyr3",
+    {
+      "x": 14.5
+    },
+    "é\nö\nLyr3",
+    {
+      "c": "#748adb",
+      "w": 1.5
+    },
+    "à\nä\nCmd\n{"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "c": "#cccccc",
+      "a": 6,
+      "h": 1.5
+    },
+    "Hyper",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "Meh"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "a": 4
+    },
+    "C",
+    {
+      "x": 10.5
+    },
+    ";\n,"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "c": "#748adb"
+    },
+    "X\n\nAlt",
+    {
+      "x": 1,
+      "c": "#cccccc"
+    },
+    "V",
+    {
+      "x": 8.5
+    },
+    "M",
+    {
+      "x": 1,
+      "c": "#748adb"
+    },
+    ":\n.\nAlt"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "c": "#cccccc"
+    },
+    "B",
+    {
+      "x": 6.5
+    },
+    "N"
+  ],
+  [
+    {
+      "y": -0.875,
+      "a": 6,
+      "w": 1.5
+    },
+    "Shift",
+    {
+      "c": "#748adb",
+      "a": 4
+    },
+    "Z\n\nCtrl",
+    {
+      "x": 14.5
+    },
+    "_\n-\nCtrl",
+    {
+      "c": "#cccccc",
+      "a": 6,
+      "w": 1.5
+    },
+    "Shift"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-left'></i>",
+    {
+      "x": 10.5
+    },
+    "<i class='fa fa-arrow-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "a": 4
+    },
+    "£\n$\n\n}",
+    {
+      "x": 1,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-right'></i>",
+    {
+      "x": 10.5,
+      "a": 6
+    },
+    "AltGr"
+  ],
+  [
+    {
+      "y": -0.9950000000000001,
+      "x": 14,
+      "a": 7
+    },
+    "<i class='fa fa-arrow-up'></i>"
+  ],
+  [
+    {
+      "y": -0.7549999999999999,
+      "x": 0.5,
+      "c": "#b56b6b",
+      "a": 4
+    },
+    ">\n<\nCode Layer\n\\",
+    {
+      "c": "#cccccc"
+    },
+    "`\n^\n\n~",
+    {
+      "x": 14.5
+    },
+    "!\n¨\n\n]",
+    {
+      "c": "#b56b6b"
+    },
+    "\n\nCode Layer"
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1,
+      "c": "#748adb"
+    },
+    "Apps\nAlt",
+    {
+      "c": "#cccccc",
+      "a": 6
+    },
+    "Win / Cmd"
+  ],
+  [
+    {
+      "h": 2
+    },
+    "Space",
+    {
+      "h": 2
+    },
+    "Back Space",
+    "Home"
+  ],
+  [
+    {
+      "x": 2
+    },
+    "End"
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "Alt",
+    {
+      "c": "#748adb",
+      "a": 4
+    },
+    "Esc\nCtrl"
+  ],
+  [
+    {
+      "x": -3,
+      "c": "#cccccc",
+      "a": 6
+    },
+    "Pg Up",
+    {
+      "h": 2
+    },
+    "Tab",
+    {
+      "h": 2
+    },
+    "Enter"
+  ],
+  [
+    {
+      "x": -3
+    },
+    "Pg Dn"
+  ]
+]
diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.png b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.png
new file mode 100644 (file)
index 0000000..aff6af8
Binary files /dev/null and b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout.png differ
diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_1_2.png b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_1_2.png
new file mode 100644 (file)
index 0000000..835816b
Binary files /dev/null and b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_1_2.png differ
diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_2_3.json b/keyboards/ergodox/keymaps/swissgerman_infinity/keyboard-layout_2_3.json
new file mode 100644 (file)
index 0000000..e3d3660
--- /dev/null
@@ -0,0 +1,429 @@
+[
+  {
+    "backcolor": "#ffffff"
+  },
+  [
+    {
+      "x": 3.5,
+      "t": "#b81c1c"
+    },
+    "F3",
+    {
+      "x": 10.5
+    },
+    "F8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "F2",
+    {
+      "x": 1
+    },
+    "F4",
+    {
+      "x": 8.5
+    },
+    "F7",
+    {
+      "x": 1
+    },
+    "F9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "F5",
+    {
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "x": 4.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "F6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000\n\n\n#529151",
+      "w": 1.5
+    },
+    "\n\n\nFlash",
+    {
+      "t": "#b81c1c"
+    },
+    "F1",
+    {
+      "x": 14.5
+    },
+    "F10",
+    {
+      "t": "#b81c1c\n\n\n#529151",
+      "w": 1.5
+    },
+    "F11\n\n\nFlash"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5
+    },
+    "{\n\n\n<i class='fa fa-arrow-circle-up'></i>",
+    {
+      "x": 10.5,
+      "t": "#b81c1c"
+    },
+    "8"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5
+    },
+    "@",
+    {
+      "x": 1
+    },
+    "}",
+    {
+      "x": 8.5
+    },
+    "7",
+    {
+      "x": 1
+    },
+    "9"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "|",
+    {
+      "t": "#000000",
+      "a": 7,
+      "h": 1.5
+    },
+    "",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "<i class='fa fa-arrow-up'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "!",
+    {
+      "x": 14.5
+    },
+    "*",
+    {
+      "w": 1.5
+    },
+    "F12"
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "(\n\n\n<i class='fa fa-arrow-circle-down'></i>",
+    {
+      "x": 10.5,
+      "t": "#b81c1c"
+    },
+    "5"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "$\n\n\n<i class='fa fa-arrow-circle-left'></i>",
+    {
+      "x": 1
+    },
+    ")\n\n\n<i class='fa fa-arrow-circle-right'></i>",
+    {
+      "x": 8.5,
+      "t": "#b81c1c"
+    },
+    "4",
+    {
+      "x": 1
+    },
+    "6"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5
+    },
+    "`",
+    {
+      "x": 6.5
+    },
+    "<i class='fa fa-arrow-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "#",
+    {
+      "x": 14.5
+    },
+    "+",
+    {
+      "t": "#000000\n\n\n#529151",
+      "w": 1.5
+    },
+    "\n\n\n<i class='fa fa-play'></i><i class='fa fa-pause'></i>"
+  ],
+  [
+    {
+      "y": -0.625,
+      "x": 6.5,
+      "t": "#000000",
+      "a": 7,
+      "h": 1.5
+    },
+    "",
+    {
+      "x": 4.5,
+      "h": 1.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 3.5,
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "[",
+    {
+      "x": 10.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "2\n\n\n<i class='fa fa-fast-backward'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#b81c1c"
+    },
+    "^",
+    {
+      "x": 1
+    },
+    "]",
+    {
+      "x": 8.5
+    },
+    "1",
+    {
+      "x": 1,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "3\n\n\n<i class='fa fa-fast-forward'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 5.5,
+      "t": "#b81c1c"
+    },
+    "~",
+    {
+      "x": 6.5
+    },
+    "&"
+  ],
+  [
+    {
+      "y": -0.875,
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "%",
+    {
+      "x": 14.5
+    },
+    "\\",
+    {
+      "t": "#000000",
+      "a": 7,
+      "w": 1.5
+    },
+    ""
+  ],
+  [
+    {
+      "y": -0.375,
+      "x": 3.5,
+      "t": "#000000\n\n\n#529151",
+      "a": 4
+    },
+    "\n\n\nleft click",
+    {
+      "x": 10.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    ".\n\n\n<i class='fa fa-volume-down'></i>"
+  ],
+  [
+    {
+      "y": -0.875,
+      "x": 2.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "x": 1,
+      "t": "#000000\n\n\n#529151",
+      "a": 4
+    },
+    "\n\n\nright click",
+    {
+      "x": 8.5,
+      "t": "#b81c1c\n\n\n#529151"
+    },
+    "?\n\n\n<i class='fa fa-volume-up'></i>",
+    {
+      "x": 1,
+      "t": "#b81c1c"
+    },
+    "0"
+  ],
+  [
+    {
+      "y": -0.75,
+      "x": 0.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    {
+      "t": "#b81c1c",
+      "a": 4
+    },
+    "EPRM RST",
+    {
+      "x": 14.5,
+      "t": "#000000",
+      "a": 7
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "r": 30,
+      "rx": 6.5,
+      "ry": 4.25,
+      "y": -1,
+      "x": 1
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "h": 2
+    },
+    "",
+    {
+      "h": 2
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "x": 2
+    },
+    ""
+  ],
+  [
+    {
+      "r": -30,
+      "rx": 13,
+      "y": -1,
+      "x": -3
+    },
+    "",
+    ""
+  ],
+  [
+    {
+      "x": -3
+    },
+    "",
+    {
+      "h": 2
+    },
+    "",
+    {
+      "t": "#000000\n\n\n#529151",
+      "a": 4,
+      "h": 2
+    },
+    "\n\n\nWeb back"
+  ],
+  [
+    {
+      "x": -3,
+      "t": "#000000",
+      "a": 7
+    },
+    ""
+  ]
+]
diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/keymap.c b/keyboards/ergodox/keymaps/swissgerman_infinity/keymap.c
new file mode 100644 (file)
index 0000000..0ccb7f4
--- /dev/null
@@ -0,0 +1,252 @@
+#include "ergodox.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "visualizer/lcd_backlight.h"
+#include "string.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+#define EPRM M(1) // Macro 1: Reset EEPROM
+#define HTML_LI M(10)
+#define HTML_UL M(11)
+#define HTML_OL M(12)
+#define HTML_CODE M(13)
+
+#define SEND_TAG(TAG) do {\
+    send_key(KC_NONUS_BSLASH); \
+    SEND_STRING(TAG); \
+    send_larger_than(); \
+    send_key(KC_NONUS_BSLASH); \
+    SEND_STRING("&"); \
+    SEND_STRING(TAG); \
+    send_larger_than(); \
+    go_back_based_on_tag(TAG); \
+  } while (0)
+
+void send_key(uint16_t keycode);
+void go_back_based_on_tag(char* tag);
+void send_larger_than(void);
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   §    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   '    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Z  |   U  |   I  |   O  |   P  |   ü    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   | A /L2|   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |ö / L2|ä / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Y/Ctrl|X/Alt |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |./Alt |-/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |< / L1|   ^  |   $  | Left | Right|                                       |  Up  | Down |AltGr |   ¨  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_GRV,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        LT(MDIA, KC_A),KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  ALT_T(KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        LT(SYMB,KC_NONUS_BSLASH), KC_EQL, KC_BSLS,  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+       KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+       TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_LBRC,
+       KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+       MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,ALT_T(KC_DOT), CTL_T(KC_SLSH),   KC_RSFT,
+                             KC_UP,  KC_DOWN,KC_RALT,KC_RBRC, KC_FN1,
+             KC_LALT,CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |Version |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      | EPRM |      |      |      |                                       |   ?  |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       M(0),   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), ACTION_MODS_KEY(MOD_RALT, KC_2),  ACTION_MODS_KEY(MOD_RALT, KC_QUOT), ACTION_MODS_KEY(MOD_RALT, KC_BSLS),ACTION_MODS_KEY(MOD_RALT,KC_7),KC_TRNS,
+       KC_TRNS,ACTION_MODS_KEY(MOD_RALT,KC_3),KC_BSLS, ACTION_MODS_KEY(MOD_LSFT, KC_8), ACTION_MODS_KEY(MOD_RSFT, KC_9),ACTION_MODS_KEY(MOD_LSFT,KC_EQL),
+       KC_TRNS,ACTION_MODS_KEY(MOD_LSFT,KC_5),KC_EQL, ACTION_MODS_KEY(MOD_RALT, KC_LBRC), ACTION_MODS_KEY(MOD_RALT, KC_RBRC),ACTION_MODS_KEY(MOD_RALT,KC_EQL),KC_TRNS,
+          KC_TRNS,EPRM,KC_TRNS,KC_NONUS_BSLASH, ACTION_MODS_KEY(MOD_LSFT, KC_NONUS_BSLASH)/*KC_TRNS,KC_TRNS*/,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    ACTION_MODS_KEY(MOD_RSFT,KC_3), KC_F12,
+       KC_DOWN, KC_4,   KC_5,    KC_6,    ACTION_MODS_KEY(MOD_RSFT,KC_1), KC_TRNS,
+       KC_TRNS, ACTION_MODS_KEY(MOD_RSFT,KC_6), KC_1,   KC_2,    KC_3,  ACTION_MODS_KEY(MOD_RALT,KC_NONUS_BSLASH), KC_TRNS,
+       ACTION_MODS_KEY(MOD_RSFT,KC_MINS),KC_DOT,  KC_0,   KC_EQL, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      | RESET  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |H_UL  |      |H_OL  |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |H_LI  |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |H_CODE|      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, HTML_CODE, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+       KC_TRNS,  KC_TRNS, HTML_UL, KC_TRNS, HTML_OL, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, HTML_LI, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      case 0:
+        if (record->event.pressed) {
+          SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+        }
+        break;
+      case 1:
+        if (record->event.pressed) { // For resetting EEPROM
+          eeconfig_init();
+        }
+        break;
+      case 10:
+       if (record->event.pressed) {
+         SEND_TAG("li");
+       }
+       break;
+      case 11:
+       if (record->event.pressed) {
+         SEND_TAG("ul");
+       }
+       break;
+      case 12:
+       if (record->event.pressed) {
+         SEND_TAG("ol");
+       }
+       break;
+      case 13:
+       if (record->event.pressed) {
+         SEND_TAG("code");
+       }
+       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);
+
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+    case 0:
+      ergodox_board_led_off();
+      lcd_backlight_hal_color(0, 0, 0);
+      break;
+    case 1:
+      lcd_backlight_hal_color(5000, 0, 0);
+      break;
+    case 2:
+      lcd_backlight_hal_color(0, 5000, 0);
+      break;
+    default:
+      // none
+      break;
+    }
+
+};
+
+void send_key(uint16_t keycode) {
+  register_code(keycode);
+  unregister_code(keycode);
+}
+
+void go_back_based_on_tag(char* tag) {
+  const int BRACKETS_AND_SLASH_LENGTH = 3;
+  
+  for (int i=0; i < strlen(tag) + BRACKETS_AND_SLASH_LENGTH; i++) {
+    send_key(KC_LEFT);
+  }
+}
+
+void send_larger_than() {
+  register_code(KC_LSFT);
+  send_key(KC_NONUS_BSLASH);
+  unregister_code(KC_LSFT);
+
+}
diff --git a/keyboards/ergodox/keymaps/swissgerman_infinity/readme.md b/keyboards/ergodox/keymaps/swissgerman_infinity/readme.md
new file mode 100644 (file)
index 0000000..1c35f74
--- /dev/null
@@ -0,0 +1,14 @@
+# ErgoDox Infinity Swiss German Configuration
+
+Swiss German keyboard layout based on the Ergodox EZ default layout.
+
+Keyboard diagrams created with the [keyboard layout editor](http://www.keyboard-layout-editor.com).
+
+Diagram sources: [default layer](keyboard-layout.json), [layer 2 & 3](keyboard-layout_2_3.json)
+
+![Layout Layer 0](keyboard-layout.png)
+![Layout Layer 1&2](keyboard-layout_1_2.png)
+
+## Changelog
+* Jan 21, 2017:
+  * Initial version.