From 262930c8d5e57beec044d932ef554a09e846f9ca Mon Sep 17 00:00:00 2001 From: Nathan Sharfi <me@ngalt.com> Date: Sat, 30 Apr 2016 22:12:13 -0700 Subject: [PATCH 1/4] ergodox-zweihander: initial commit --- .../keymaps/zweihander-osx/keymap.c | 184 ++++++++++++++++++ .../keymaps/zweihander-osx/readme.markdown | 40 ++++ 2 files changed, 224 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c new file mode 100644 index 000000000..cc94e1333 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -0,0 +1,184 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | ← | | → | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ⌦ | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ⌫ | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' / L⌘ | + * |--------+------+------+------+------+------| L⌘ | | L⌘ |------+------+------+------+------+--------| + * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / / ⌃| R⇧ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L⌃ | L⌥ | L⌘ | ← | → | | ↑ | ↓ | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | `~ | '" | | ⎋ | ⌫ | + * ,------|------|------| |------+--------+------. + * | | | PgUp | | PgDn | | | + * | | ⌫ |------| |------| ⇥ |Enter | + * | | | L⌥ | | L⌃ | | | + * `--------------------' `----------------------' + */ +// 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_EQL, 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, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, + KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT, + KC_GRV, KC_QUOT, + KC_PGUP, + KC_SPC,KC_BSPC,KC_LALT, + // 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_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_ESC, KC_BSPC, + KC_PGDN, + KC_LCTL, KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | / | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | = | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | ← | → | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | Home | | | + * | | |------| |------| | | + * | | | | | End | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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 hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_MINS, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_EQL, KC_TRNS, + KC_0, KC_DOT, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_HOME, + KC_END , KC_TRNS, KC_TRNS +), +/* Keymap 2: Media keys + * dim brighten + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | F14 | | F15 | | | | | | Power | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | |L⇧+Spc| Spc | ⏮ | ⏭ | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, /* F14 dims screen, F15 brightens */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END , 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 hand + KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , 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_TRNS +), +}; + +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) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + 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) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown new file mode 100644 index 000000000..8103c6b32 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown @@ -0,0 +1,40 @@ +# The Zweihander Layout + +This layout is tuned for people who… + + +## use OS X + +This layout doesn’t make any concessions for Windows use. While it should work fine in Windows, I’m not about to devote precious keyboard space to Windows-specific shortcuts. + + +## mouse left-handed while doing other things with the right hand + +I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder: + +- Back (⌘[) +- Forward (⌘]) +- Open and Close Parent Folder (⌥⌘↓) +- Go Up and Close Just-Left Folder (⌥⌘↑) +- Space (page down in browsers; Quick Look in the Finder) +- Shift-Space (page up in web browsers) + +Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word. + + +## use lots of modifier keys in OS X menu-item shortcuts + +I wanted to preserve the feel of a number of shortcuts that involve pressing lots of modifier keys at once; this is why the bottom left of the keyboard has shift, control, option, and command in the usual spaces. Further, some common shortcuts I press have a key on the right side of the keyboard. These shortcuts include: + +- Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫) +- Shut Down Without Asking for Confirmation (⇧⌥⌘ power) + + +## use Emacs-style shortcuts + +I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key. + + +## use spreadsheets + +All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer. From 8ec1d41a28d5223a147218bfb7fefd933b906d22 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi <me@ngalt.com> Date: Sat, 30 Apr 2016 22:36:09 -0700 Subject: [PATCH 2/4] Ergodox EZ: add zweihander-osx.hex --- .../keymaps/zweihander-osx/zweihander-osx.hex | Bin 0 -> 51772 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex new file mode 100644 index 0000000000000000000000000000000000000000..9b783c957c89c80b8caae9e9f5d35946b5556f38 GIT binary patch literal 51772 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 literal 0 HcmV?d00001 From 9b163d2feb332107794a0f6e3573afe92c40b7fe Mon Sep 17 00:00:00 2001 From: Nathan Sharfi <me@ngalt.com> Date: Sun, 1 May 2016 13:55:00 -0700 Subject: [PATCH 3/4] =?UTF-8?q?zweihander:=20Add=20=E2=8C=98`,=20=E2=8C=98?= =?UTF-8?q?=E2=87=A7`,=20=E2=8C=A5=E2=87=A5,=20=E2=8C=A5=E2=87=A7=E2=87=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../keymaps/zweihander-osx/keymap.c | 14 +++++++------- .../keymaps/zweihander-osx/readme.markdown | 5 +++++ .../keymaps/zweihander-osx/zweihander-osx.hex | Bin 51772 -> 51772 bytes 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index cc94e1333..f53232c3c 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -95,9 +95,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 2: Media keys * dim brighten * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | F14 | | F15 | | | | | | Power | + * | | | | | | | F14 | | F15 | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | + * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, - KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, - LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, - KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_F15 , LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , 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_TRNS diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown index 8103c6b32..7bce7c690 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown @@ -1,5 +1,7 @@ # The Zweihander Layout +NB: the backtick (\`) is special in Markdown. If I write ⌘\` in this readme, I mean “command-backtick”, not “command-backslash-backtick”. + This layout is tuned for people who… @@ -12,10 +14,13 @@ This layout doesn’t make any concessions for Windows use. While it should work I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder: +- Close Window (⌘W) - Back (⌘[) - Forward (⌘]) - Open and Close Parent Folder (⌥⌘↓) - Go Up and Close Just-Left Folder (⌥⌘↑) +- Cycle through open windows in current application (⌘\` and ⌘⇧\`) +- Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥) - Space (page down in browsers; Quick Look in the Finder) - Shift-Space (page up in web browsers) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex index 9b783c957c89c80b8caae9e9f5d35946b5556f38..3e313c3724e7b5d37fb688cd68a2a680af8ba60f 100644 GIT binary patch delta 139 zcmdlpg?Y~u<_&J_?uL#A7RCk!7DjGB>}+6U00M>v29_?oTvkBZ$PvglHZ^cGH8OBE z1+syP3>+;Xih$x4Kyd>%=gGb7(wat224<#)2F@mKKqXE<C9Y62fLaV3Eg*V;icBUa PvWYO68g72h9(o7>$DJSv delta 129 zcmdlpg?Y~u<_&J_?goYi2F3;k7DjGB>}+6U00KZUCs$rBD<Ey;2o*3jGH^BpvVn>W z94#S=Knj842Igjyd)cMs!CXTFXA?J|5+|U!Ff)K!3>+;c$Fs>XnY(R%&K`OQ0EONi Ay#N3J From fe022a508fdd39696e3b2b188df27d60b32f0d63 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi <me@ngalt.com> Date: Sun, 1 May 2016 15:12:38 -0700 Subject: [PATCH 4/4] =?UTF-8?q?zweihander:=20move=20dim/brighten=20to=201/?= =?UTF-8?q?2,=20add=20=E2=8C=98Q?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../keymaps/zweihander-osx/keymap.c | 16 ++++++++-------- .../keymaps/zweihander-osx/zweihander-osx.hex | Bin 51772 -> 51772 bytes 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index f53232c3c..d019b731f 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_END , KC_TRNS, KC_TRNS ), /* Keymap 2: Media keys - * dim brighten + * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | F14 | | F15 | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | + * | | F14 | F15 | | | | | | ⌘Q | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, /* F14 dims screen, F15 brightens */ + KC_TRNS, KC_F14 , KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, /* F14 dims screen, F15 brightens */ KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_F15 , LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, - KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, - LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, - KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , 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_TRNS diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex index 3e313c3724e7b5d37fb688cd68a2a680af8ba60f..b76c3ec8e84d0c5b703c8753d0a88873afb7aeae 100644 GIT binary patch delta 88 zcmdlpg?Y~u<_)oIOlFpo<JrWx%p4623=9nnTudj|v(-+vVdKy@H|OQD0ty*f0HweH W$br#@CI%KD^)SAP>t<ti&cguGL==Jm delta 89 zcmdlpg?Y~u<_)oIlb^5&PR?UvpPb9a!Q^N*xt^`o+|1Izz`ziQ-FUgIfV7bXkPQYP VK@b4aW{waV#y2q7Y|PGi7yv;G6~6!g