summaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/zweihander-macos
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/zweihander-macos')
-rw-r--r--layouts/community/ergodox/zweihander-macos/keymap.c178
-rw-r--r--layouts/community/ergodox/zweihander-macos/readme.markdown73
-rw-r--r--layouts/community/ergodox/zweihander-macos/rules.mk3
3 files changed, 254 insertions, 0 deletions
diff --git a/layouts/community/ergodox/zweihander-macos/keymap.c b/layouts/community/ergodox/zweihander-macos/keymap.c
new file mode 100644
index 0000000000..6dd2b04f4b
--- /dev/null
+++ b/layouts/community/ergodox/zweihander-macos/keymap.c
@@ -0,0 +1,178 @@
+#include QMK_KEYBOARD_H
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+// Best viewed in Xcode in Menlo Regular.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | L1 | | L1 | 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| ' / R⌘ |
+ * |--------+------+------+------+------+------| L⌘ | | R⌘ |------+------+------+------+------+--------|
+ * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / /R⌥| R⇧ |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | L⌃ | L⌥ | L⌘ | ← | → | | ↑ | ↓ | [ | ] | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,---------------.
+ * | `~ | '" | | ⎋ | ⌫ |
+ * ,------|------|------| |------+--------+------.
+ * | | | PgUp | | PgDn | | |
+ * | | ⇥ |------| |------| ⇥ |Enter |
+ * | | | R⌥ | | R⌃ | | |
+ * `--------------------' `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = LAYOUT_ergodox( // layer 0 : default
+ // left hand
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB),
+ KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(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_TAB ,KC_RALT,
+ // right hand
+ TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ MO(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),RGUI_T(KC_QUOT),
+ KC_RGUI, KC_N, KC_M, KC_COMM,KC_DOT, RALT_T(KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_SPC ,
+ KC_ESC, KC_BSPC,
+ KC_PGDN,
+ KC_RCTL, 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 | . | ← | → | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = LAYOUT_ergodox(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_DQT ,KC_TRNS,
+ KC_TRNS,KC_LABK,KC_RABK,KC_LPRN,KC_RPRN,KC_QUOT,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_EQL ,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_COLN, 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F14 | F15 |PrtScr|SclLck| Pause| | | | ⌘W | ⌘⇧` | ⌘` | | | Power |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | F16 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | ⏯ | ⏮ | ⏭ | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | |VolUp |VolDn | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | End | | |
+ * | | |------| |------| ⌘C | ⌘V |
+ * | | | | | ⌘X | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = LAYOUT_ergodox(
+ KC_TRNS, KC_F14 , KC_F15 , KC_PSCR, KC_SLCK, KC_PAUS, 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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_HOME,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), KC_TRNS, KC_TRNS, KC_POWER,
+ 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_F16 ,
+ KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_END ,
+ LGUI(KC_X), LGUI(KC_C), LGUI(KC_V)
+),
+};
+
+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
+
+ 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/layouts/community/ergodox/zweihander-macos/readme.markdown b/layouts/community/ergodox/zweihander-macos/readme.markdown
new file mode 100644
index 0000000000..8921647bd3
--- /dev/null
+++ b/layouts/community/ergodox/zweihander-macos/readme.markdown
@@ -0,0 +1,73 @@
+# 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 README refers to two secondary layers: the Media Layer and the Symbol Layer. The Media Layer is accessed by holding ; (the semicolon) and has cursor-movement, window-management, and volume-adjustment keys on it. The Symbol Layer is accessed by holding either of the two tall keys between T and Y, or by tapping one of the small keys between 5 and 6. It has a 10-key keypad, parentheses and similar grouping punctuation, and F1–F12.
+
+This layout is tuned for people who…
+
+
+## use macOS
+
+While this layout works fine in Windows, it’s not tuned for it. No sane person who primarily uses Windows would put this many Windows keys on a keyboard layout. That said, Print Screen, Scroll Lock, and Pause are available in their usual order on the Media Layer if you need them.
+
+
+## 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 (hold ;) to speed up browsing in applications like Safari and Finder:
+
+- ⌘[ — Back
+- ⌘] — Forward
+- ⌥⌘↓ — Open Selection and Close Parent Folder
+- ⌥⌘↑ — Go Up and Close Just-Left Folder
+
+I also have a few keys dedicated to window management:
+
+- ⌘W — Close Window
+- ⌘\` — Move Focus to Next Window
+- ⌘⇧\` — Move Focus to Previous Window
+
+Cut, Copy, and Paste (⌘X, ⌘C, and ⌘V) are also available on the three bottommost right-thumb buttons if you hold ;.
+
+
+## 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 spots. Further I’ve added affordances so some key combinations are easier to press with just the right hand.
+
+I also put a second Backspace (⌫) key on the right half of the keyboard to make some particularly commonly-used keyboard shortcuts faster and more convenient for right-handed use:
+
+- ⌘⌫ — Move to Trash / Delete
+- ⇧⌥⌘⌫ — Empty Trash Without Asking for Confirmation
+
+⇧⌥⌘⌫ is much more satisfying to press when you do it like on a normal keyboard: one left-hand finger on each of ⇧, ⌥, and ⌘, and the right index finger on ⌫.
+
+Pressing and holding / will give you Option. This makes a number of keyboard shortcuts easy to press with just the right hand:
+
+- ⌥↑ — Move Line Up
+- ⌥↓ — Move Line Down
+- ⌥⇧↑ — Copy Line Up / Go To Previous Channel With Unread Messages
+- ⌥⇧↓ — Copy Line Down / Go To Next Channel With Unread Messages
+
+
+## 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 far left, so the leftmost thumb button on the right side is another Control key.
+
+Having trouble remembering which innermost thumb key is Alt and which is Control? The two’re like on the lower right of a normal keyboard — leftmost is Alt, rightmost is Control.
+
+
+## use spreadsheets
+
+All the common spreadsheet operations (+-*/=) are on the right side of the Symbol Layer. Make-numbers-bigger (+, \*) operations on the right; make-numbers-smaller (-, /) on the left. There’s also a colon there for entering times and maybe IPv6 addresses.
+
+
+## know the ↑↓←→ fn-key shortcuts for MacBooks
+
+Have you looked at the Page Up, Page Down, Home, and End keys on the EDSF keys and wondered why they’re arranged that way? They’re arranged the same way as the fn-key shortcuts on an Apple laptop’s arrow keys. On Apple keyboards with an\* fn key, if you press fn-↑, you’ll get Page Up; if you press fn-← you’ll get Home. Similarly, on Zweihander, ;-E is Page Up and ;-S is Home.
+
+
+## use Siri
+
+F16, accessed by holding ; and pressing the ' key next to it, is intended for Siri.
+
+\* I pronounce “fn” as “effin’”. Your mileage may vary.
diff --git a/layouts/community/ergodox/zweihander-macos/rules.mk b/layouts/community/ergodox/zweihander-macos/rules.mk
new file mode 100644
index 0000000000..8011660ced
--- /dev/null
+++ b/layouts/community/ergodox/zweihander-macos/rules.mk
@@ -0,0 +1,3 @@
+# Don’t do a tricolor flashing-light wave when the computer is shut down in Windows,
+# or when the machine is sleeping in macOS
+SLEEP_LED_ENABLE = no