summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.travis.yml2
-rw-r--r--Makefile30
-rw-r--r--doc/basic_how_keyboards_work.md96
-rw-r--r--keyboards/ergodox/keymaps/algernon/keymap.c1
-rw-r--r--keyboards/ergodox/keymaps/default/keymap.c1
-rw-r--r--keyboards/ergodox/keymaps/j3rn/keymap.c39
-rw-r--r--keyboards/ergodox/keymaps/j3rn/readme.md9
-rw-r--r--keyboards/ergodox/keymaps/josh/keymap.c1
-rw-r--r--keyboards/ergodox/keymaps/zweihander-osx/keymap.c26
-rw-r--r--keyboards/ergodox/keymaps/zweihander-osx/makefile.mk2
-rw-r--r--keyboards/ergodox/keymaps/zweihander-osx/readme.markdown2
-rw-r--r--keyboards/ergodox/keymaps/zweihander-osx/zweihander-osx.hex1151
-rw-r--r--keyboards/ergodox/readme.md15
-rw-r--r--keyboards/planck/keymaps/cbbrowne/keymap.c1
-rw-r--r--keyboards/planck/keymaps/experimental/keymap.c1
-rw-r--r--keyboards/planck/keymaps/jeebak/Makefile25
-rw-r--r--keyboards/planck/keymaps/jeebak/keymap.c364
-rw-r--r--keyboards/planck/keymaps/jeebak/readme.md107
-rw-r--r--quantum/audio/song_list.h8
-rw-r--r--readme.md7
-rw-r--r--tmk_core/rules.mk96
-rw-r--r--util/ergodox_ez.html1
-rw-r--r--util/travis_compiled_push.sh2
24 files changed, 1889 insertions, 101 deletions
diff --git a/.gitignore b/.gitignore
index 8491433524..8c85d6ffa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ build/
.build/
*.bak
.vagrant/
+quantum/version.h
.idea/
CMakeLists.txt
.DS_STORE
@@ -26,4 +27,4 @@ CMakeLists.txt
.project
.settings/
.idea
-.browse.VC.db* \ No newline at end of file
+.browse.VC.db*
diff --git a/.travis.yml b/.travis.yml
index 26deac0ceb..297cf19a68 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,7 +10,7 @@ env:
global:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
script:
-- make all-keyboards-quick AUTOGEN=true
+- make all-keyboards AUTOGEN=true
addons:
apt:
packages:
diff --git a/Makefile b/Makefile
index 980ab26b22..053c8532af 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,9 @@ endif
.DEFAULT_GOAL := all
space := $(subst ,, )
-starting_makefile := $(subst $(space),_SPACE_,$(abspath $(firstword $(MAKEFILE_LIST))))
-mkfile_path := $(subst $(space),_SPACE_,$(abspath $(lastword $(MAKEFILE_LIST))))
+ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1))
+starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST)))
+mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST))))
abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path)))
ifneq (,$(findstring /keyboards/,$(starting_makefile)))
@@ -83,10 +84,8 @@ endif
ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","")
KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c
- ifndef ARCH
- ifneq ("$(wildcard $(KEYBOARD_PATH)/Makefile)","")
- include $(KEYBOARD_PATH)/Makefile
- endif
+ ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile))
+ -include $(KEYBOARD_PATH)/Makefile
endif
else
$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist)
@@ -101,7 +100,9 @@ ifdef SUBPROJECT
ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c
- -include $(SUBPROJECT_PATH)/Makefile
+ ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile))
+ -include $(SUBPROJECT_PATH)/Makefile
+ endif
else
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
endif
@@ -119,14 +120,18 @@ endif
KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","")
KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c
- -include $(KEYMAP_PATH)/Makefile
+ ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile))
+ -include $(KEYMAP_PATH)/Makefile
+ endif
else
ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","")
$(error "$(KEYMAP_PATH)/keymap.c" does not exist)
else
KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c
- -include $(KEYMAP_PATH)/Makefile
+ ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile))
+ -include $(KEYMAP_PATH)/Makefile
+ endif
endif
endif
@@ -135,7 +140,8 @@ ifdef SUBPROJECT
else
TARGET ?= $(KEYBOARD)_$(KEYMAP)
endif
-BUILD_DIR = .build
+
+BUILD_DIR = $(TOP_DIR)/.build
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
@@ -265,4 +271,6 @@ include $(TMK_PATH)/rules.mk
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
-OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\" -DQMK_BUILDDATE=\"$(BUILD_DATE)\"
+
+$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h)
+$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) \ No newline at end of file
diff --git a/doc/basic_how_keyboards_work.md b/doc/basic_how_keyboards_work.md
new file mode 100644
index 0000000000..73c3f5c5fc
--- /dev/null
+++ b/doc/basic_how_keyboards_work.md
@@ -0,0 +1,96 @@
+# How keys are registered, and interpreted by computers
+
+In this file, you can will learn the concepts of how keyboards work over USB,
+and you'll be able to better understand what you can expect from changing your
+firmware directly.
+
+## Schematic view
+
+Whenever you type on 1 particular key, here is the chain of actions taking
+place:
+
+``` text
++------+ +-----+ +----------+ +----------+ +----+
+| User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |
++------+ +-----+ +----------+ +----------+ |----+
+```
+
+This scheme is a very simple view of what's going on, and more details follow
+in the next sections.
+
+## 1. You Press a Key
+
+Whenever you press a key, the firmware of your keyboard can register this event.
+It can register when the key is pressed, held and released.
+
+This usually happens with a [periodic scan of key presses with a frequency around 100 hz](https://github.com/benblazak/ergodox-firmware/blob/master/references.md#typical-keyboard-information).
+This speed often is limited by the mechanical key response time, the protocol
+to transfer those key presses (here USB HID), and by the software it is used in.
+
+## 2. What the Firmware Sends
+
+The [HID specification](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf)
+tells what a keyboard can actually send through USB to have a chance to be
+properly recognised. This includes a pre-defined list of keycodes which are
+simple numbers from `0x00` to `0xE7`. The firmware assigns a keycode to each
+key of the keyboard.
+
+The firmware does not send actually letters or characters, but only keycodes.
+Thus, by modifying the firmware, you only can modify what keycode is sent over
+USB for a given key.
+
+## 3. What the Operating System Does
+
+Once the keycode reaches the operating system, a piece of software has to have
+it match an actual character thanks to a keyboard layout. For example, if your
+layout is set to QWERTY, a sample of the matching table is as follow:
+
+``` text
+| keycode | character |
+|---------+-----------|
+| 0x04 | a/A |
+| 0x05 | b/B |
+| 0x06 | c/C |
+| ... | ... |
+| 0x1C | y/Y |
+| 0x1D | z/Z |
+| ... | ... |
+|---------+-----------|
+```
+
+## Back to the firmware
+
+As the layout is generally fixed (unless you create your own), the firmware can
+actually call a keycode by its layout name directly to ease things for you.
+
+This is exactly what is done here with `KC_A` actually representing `0x04` in
+QWERTY. The full list can be found in `keycode.txt`.
+
+## List of Characters You Can Send
+
+Putting aside shortcuts, having a limited set of keycodes mapped to a limited
+layout means that **the list of characters you can assign to a given key only
+is the ones present in the layout**.
+
+For example, this means that if you have a QWERTY US layout, and you want to
+assign 1 key to produce `€` (euro currency symbol), you are unable to do so,
+because the QWERTY US layout does not have such mapping. You could fix that by
+using a QWERTY UK layout, or a QWERTY US International.
+
+You may wonder why a keyboard layout containing all of Unicode is not devised
+then? The limited number of keycode available through USB simply disallow such
+a thing.
+
+## How to (Maybe) Enter Unicode Characters
+
+You can have the firmware send *sequences of keys* to use the [software Unicode
+Input
+Method](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input) of
+the target operating system, thus effectively entering characters independently
+of the layout defined in the OS.
+
+Yet, it does come with multiple disadvantages:
+
+ - Tied to a specific OS a a time (need recompilation when changing OS);
+ - Within a given OS, does not work in all software;
+ - Limited to a subset of Unicode on some systems.
diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c
index 6a14ef4676..c4de53da27 100644
--- a/keyboards/ergodox/keymaps/algernon/keymap.c
+++ b/keyboards/ergodox/keymaps/algernon/keymap.c
@@ -12,6 +12,7 @@
#include "keymap_plover.h"
#include "eeconfig.h"
#include "wait.h"
+#include "version.h"
/* Layers */
diff --git a/keyboards/ergodox/keymaps/default/keymap.c b/keyboards/ergodox/keymaps/default/keymap.c
index f1a83f4e79..1b80cb3a23 100644
--- a/keyboards/ergodox/keymaps/default/keymap.c
+++ b/keyboards/ergodox/keymaps/default/keymap.c
@@ -1,6 +1,7 @@
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
+#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
diff --git a/keyboards/ergodox/keymaps/j3rn/keymap.c b/keyboards/ergodox/keymaps/j3rn/keymap.c
index 43c8f30a35..e6f6cf44ec 100644
--- a/keyboards/ergodox/keymaps/j3rn/keymap.c
+++ b/keyboards/ergodox/keymaps/j3rn/keymap.c
@@ -14,18 +14,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * |Ctrl/Esc|A / L2| S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | ~L1 | ~L2 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * | ~L1 | Alt |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | Home | | PgUp |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | End | | PgDn | | |
* |Space | LGui |------| |------| Tab |Enter |
- * | | |Shift | | Alt | | |
+ * | | | ~L2 | | ~L1 | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
@@ -34,13 +34,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS,
- CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
- KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ KC_FN1, KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_HOME,
KC_END,
- KC_SPC, KC_LGUI, KC_LSHIFT,
+ KC_SPC, KC_LGUI, KC_FN2,
// right hand
KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
@@ -50,20 +50,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PGUP, CTL_T(KC_ESC),
KC_PGDN,
- KC_LALT, KC_TAB, KC_ENT
+ KC_FN1, KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | . | 0 | = | |
+ * | | | | | | | 0 | 0 | . | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
@@ -76,20 +76,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// SYMBOLS
[SYMB] = KEYMAP(
// left hand
- KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
- KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_0, KC_0, KC_DOT, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -97,9 +98,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | | | | | | | |
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | | | | | | | | | Lclk | Rclk | | |
+ * | | | | | | | | | | | | Lclk | Rclk | | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -117,7 +118,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_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, 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,
@@ -126,8 +127,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_F12,
KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, 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,
diff --git a/keyboards/ergodox/keymaps/j3rn/readme.md b/keyboards/ergodox/keymaps/j3rn/readme.md
index fc4b640426..178aba7730 100644
--- a/keyboards/ergodox/keymaps/j3rn/readme.md
+++ b/keyboards/ergodox/keymaps/j3rn/readme.md
@@ -1,4 +1,4 @@
-# J3RN's Mac-centric ErgoDox EZ keymap
+# J3RN's Mac-Centric ErgoDox EZ keymap
## Motivation
@@ -14,6 +14,7 @@ This layout more closely resembles that of the Mac keyboard, and has some other
- **The key to the right of "0" is Backspace instead of "-"** (misleadingly labeled "delete" on the Mac's keyboard). There was no room to fit in "-" and "=" between "0" and Backspace, unfortunately.
- **The key to the left of "Q" is Tab instead of Delete.**
- **The rightmost big key on the left thumb is CMD (LGui) instead of Backspace.**
+- **The key to the left of Alt-Shift is an Alt key**. This is close to it's position on the Mac keyboard, though slightly further left.
### Other changes
@@ -23,7 +24,9 @@ This layout more closely resembles that of the Mac keyboard, and has some other
- **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better.
- **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold."
- **The Home and End buttons have been shifted up on the left thumb, and Shift inserted below them.** This makes doing Shift-5 and other such combinations less painful.
-- **The Page Up and Page Down buttons have been shifted up on the right thumb, and Alt was moved from above them to below them.** I use Alt more than Page Up or Page Down (mostly in terminal applications), and thought that it deserved a more accessible location.
-
+- **The Page Up and Page Down buttons have been shifted up on the right thumb.** I don't use either of these keys often, and wanted to free up some real estate.
+- **The bottommost-inner keys on the left and right thumb are momentary L2 and momentary L1, respectively**. I have found that both modes are useful, and this seemed like a reasonably accessible place to put these.
+- **Traditional numpad layout.** The base of most numpads is a double-wide "0" key to the left of a "." key. This is reflected in my layout by having two "0" keys to the left of a "." key.
+- **The function keys (F1-F12) have been moved to L2.** They were in the way in L1.
**I'm always open to feedback and/or suggestions!**
diff --git a/keyboards/ergodox/keymaps/josh/keymap.c b/keyboards/ergodox/keymaps/josh/keymap.c
index 488b214273..b5463873a9 100644
--- a/keyboards/ergodox/keymaps/josh/keymap.c
+++ b/keyboards/ergodox/keymaps/josh/keymap.c
@@ -1,6 +1,7 @@
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
+#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/keymap.c b/keyboards/ergodox/keymaps/zweihander-osx/keymap.c
index 40b1d7d6dd..d6d66fd55d 100644
--- a/keyboards/ergodox/keymaps/zweihander-osx/keymap.c
+++ b/keyboards/ergodox/keymaps/zweihander-osx/keymap.c
@@ -11,7 +11,7 @@
#define BBED 2 // BBEdit
#define TMNL 3 // Terminal
#define SAFA 4 // Safari
-#define ALFRED_LEAD_TIME 100 // time, in milliseconds, to let Alfred come to the fore and accept keyboard input
+#define ALFRED_LEAD_TIME 250 // time, in milliseconds, to let Alfred come to the fore and accept keyboard input
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | `~ | '" | | ⎋ | ⌫ |
* ,------|------|------| |------+--------+------.
* | | | PgUp | | PgDn | | |
- * | | ⌫ |------| |------| ⇥ |Enter |
+ * | | ⇥ |------| |------| ⇥ |Enter |
* | | | L⌥ | | L⌃ | | |
* `--------------------' `----------------------'
*/
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT,
KC_GRV, KC_QUOT,
KC_PGUP,
- KC_SPC,KC_BSPC,KC_LALT,
+ KC_SPC,KC_TAB ,KC_LALT,
// 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,
@@ -66,25 +66,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | < | > | ( | ) | ' |------| |------| - | 4 | 5 | 6 | + | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | & | 1 | 2 | 3 | = | |
+ * | | | | | | = | | | | : | 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_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_DQUO,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_TRNS,KC_TRNS,
+ 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,
@@ -93,11 +93,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_HOME,
- KC_END , KC_TRNS, KC_TRNS
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media keys
*
@@ -131,13 +131,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_HOME,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
- LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), KC_TRNS, KC_TRNS, KC_PWR,
+ LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), 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_END ,
LGUI(KC_X), LGUI(KC_C), LGUI(KC_V)
),
};
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk b/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk
new file mode 100644
index 0000000000..6e3d088a43
--- /dev/null
+++ b/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk
@@ -0,0 +1,2 @@
+# Don’t do a tricolor wave when the computer is shut down in Windows
+SLEEP_LED_ENABLE = no
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown b/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown
index 7bce7c6909..3b7f52941a 100644
--- a/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown
+++ b/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown
@@ -42,4 +42,4 @@ I press C-a, C-e, and C-k all the time. It’s difficult to press these key comb
## use spreadsheets
-All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer.
+All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer. There’s also a colon there for entering times and maybe IPv6 addresses. Not that I expect people to type IPv6 addresses into a spreadsheet, but, y’know.
diff --git a/keyboards/ergodox/keymaps/zweihander-osx/zweihander-osx.hex b/keyboards/ergodox/keymaps/zweihander-osx/zweihander-osx.hex
new file mode 100644
index 0000000000..832504b02a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/zweihander-osx/zweihander-osx.hex
@@ -0,0 +1,1151 @@
+:100000000C94D3020C941A030C941A030C941A0344
+:100010000C941A030C941A030C941A030C941A03EC
+:100020000C941A030C941A030C94B71F0C94892097
+:100030000C941A030C941A030C941A030C941A03CC
+:100040000C941A030C94FC1A0C941A030C941A03C3
+:100050000C941A030C9414160C941A030C941A039F
+:100060000C941A030C941A030C941A030C941A039C
+:100070000C941A030C941A030C941A030C941A038C
+:100080000C941A030C941A030C941A030C941A037C
+:100090000C941A030C941A030C941A030C941A036C
+:1000A0000C941A030C941A030C941A03730C730C1B
+:1000B000A20CA20CD80CF80C290E290E030D290E47
+:1000C000B30DB30D1A0E290E290E230EC00DC00D4F
+:1000D000C00DC00DC00DC00DC00DC00DC00DC00DB8
+:1000E000C00DC00DC00DC00DC00DC00DD20DDF0D77
+:1000F000E60DED0DF70DF620182106221821062237
+:100100005D2180210622D521E821750A01E2012C1A
+:10011000022C02E274FA011602160104020401091B
+:1001200002090104020401150215010C020C012848
+:10013000022800750A01E2012C022C02E274FA0185
+:10014000170217010802080115021501100210011B
+:100150000C020C0111021101040204010F020F0133
+:1001600028022800750A01E2012C022C02E274FA2E
+:100170000105020501050205010802080107020741
+:10018000010C020C011702170128022800750A0150
+:10019000E30116021602E301E3012B022B02E30145
+:1001A000E30115021502E300750A01E301160216C8
+:1001B00002E301E3012B022B02E3000000F0A12E79
+:1001C000004C002A00E100E00000001E00140004C2
+:1001D000001D00E200E2001F001A0016001B00E3F1
+:1001E000002B00200008000700060050002C002112
+:1001F000001500090019004F004B00220017000AEB
+:1002000000050000003500015301510000E300002B
+:10021000003400015301510000E3000000290023D5
+:10022000001C000B00110000002A00240018000D23
+:1002300000100052004E0025000C000E0036005148
+:10024000002800260012000F0037002F002B002787
+:10025000001300334238613000E0002D00310034DB
+:1002600068E5002C00000001000100010001000110
+:100270000000003A002F0036020100010001003B9F
+:1002800000300037020100010001003C002F02266F
+:10029000020100010001003D0030022702010001BF
+:1002A0000001003E00340234002E00000001000175
+:1002B0000001000000010000000100010001000039
+:1002C000000100000001003F0038002D0033020053
+:1002D0000001004000240021001E00270001004111
+:1002E00000250022001F00370001004200260023E5
+:1002F00000200050000100430025022E022E004F76
+:10030000000100440045000100010001000000015F
+:10031000000100010001000100000069000100016E
+:10032000000100010001006A000100043001000129
+:1003300000010001004B004E00010001000100011E
+:100340000001300100010001004A000100033001FA
+:100350000002300000010001000100000001000067
+:100360000001001408010000000100000001001A53
+:100370000830082F082C0200000100350A520C50EA
+:10038000002C00A9004D00350852005100AC00AA15
+:100390000019080100510C4F00AB00A8000608012D
+:1003A0000001000100010001001B08A5000100AED2
+:1003B000000100010000000000000000000000003B
+:1003C0000000010204060A0F17202C3A4A5D7187CB
+:1003D0009DB3C7DAE9F5FCFFFCF5E9DAC7B39D8701
+:1003E000715D4A3A2C20170F0A0604020100000032
+:1003F0000000000000000016034500720067006F57
+:100400000044006F007800200045005A00000016EC
+:10041000034500720067006F0044006F0078002001
+:100420000045005A0000000403090409026D00049D
+:100430000100A0FA090400000103010100092111D3
+:100440000100012240000705810308000A09040198
+:10045000000103010200092111010001224D0007E2
+:1004600005820308000A09040200010300000009D4
+:1004700021110100012236000705830308000A0943
+:1004800004030001030000000921110100012239C9
+:10049000000705840310000112011001000000088C
+:1004A000EDFE071301000102000105010906A1018B
+:1004B000050719E029E71500250195087501810256
+:1004C0000508190129059505750191029501750326
+:1004D0009101050719002977150025019578750107
+:1004E0008102C005010980A101850216810026B79D
+:1004F000001A81002AB700751095018100C0050C13
+:100500000901A1018503160100269C021A01002A97
+:100510009C02751095018100C005010902A1010925
+:1005200001A1000509190129051500250195057589
+:100530000181029501750381010501093009311519
+:1005400081257F95027508810609381581257F95DB
+:100550000175088106050C0A38021581257F950171
+:1005600075088106C0C005010906A101050719E04B
+:1005700029E7150025019508750181029501750887
+:10058000810105081901290595057501910295015B
+:1005900075039