summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGergely Nagy <algernon@madhouse-project.org>2016-06-22 08:37:00 +0200
committerGergely Nagy <algernon@madhouse-project.org>2016-06-22 08:41:38 +0200
commit2278956412ca7f970dc4d38a6c32d7b5301f9a90 (patch)
tree0eba6a7ccd873cbfbc75e2fa3ebc34041eb17140
parent98f0807359cfa78d25442b91ff4c5bbfc5679661 (diff)
downloadqmk_firmware-2278956412ca7f970dc4d38a6c32d7b5301f9a90.tar.gz
qmk_firmware-2278956412ca7f970dc4d38a6c32d7b5301f9a90.tar.xz
ergodox_ez: Update the algernon keymap to v1.2
Noticeable changes since the last pull request: * The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with certain operating systems. * The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted. * The `=` and `\` keys were swapped, `=` moved to the home row, on both the **base** and the **experimental** layers. * The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access. * The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer. * `LEAD v` types the firmware version, and the keymap version. * On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped. * The **Steno** layer gained a few more `#` and `*` keys, to make it easier on my fingers. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/Makefile18
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/config.h2
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/base-layer.pngbin96845 -> 105162 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/emacs-layer.pngbin114267 -> 0 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/experimental-layer.pngbin96956 -> 105172 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.pngbin78720 -> 67924 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/nav-n-media-layer.pngbin0 -> 94837 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.pngbin85970 -> 91140 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.pngbin65146 -> 69557 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/keymap.c486
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/readme.md176
11 files changed, 351 insertions, 331 deletions
diff --git a/keyboards/ergodox_ez/keymaps/algernon/Makefile b/keyboards/ergodox_ez/keymaps/algernon/Makefile
index 3db507c8f..cd7e9e9d2 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/Makefile
+++ b/keyboards/ergodox_ez/keymaps/algernon/Makefile
@@ -2,6 +2,24 @@ BOOTMAGIC_ENABLE=no
COMMAND_ENABLE=no
SLEEP_LED_ENABLE=no
UNICODE_ENABLE=no
+FORCE_NKRO ?= yes
+
+ifeq (${FORCE_NKRO},yes)
+OPT_DEFS += -DFORCE_NKRO
+endif
+
+KEYMAP_VERSION = $(shell \
+ if [ -d "${KEYMAP_PATH}/.git" ]; then \
+ cd "${KEYMAP_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
+ else echo QMK; fi)
+
+KEYMAP_BRANCH = $(shell \
+ if [ -d "${KEYMAP_PATH}/.git" ]; then \
+ cd "${KEYMAP_PATH}"; \
+ fi; \
+ git rev-parse --abbrev-ref HEAD 2>/dev/null)
+
+OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"
ifndef QUANTUM_DIR
include ../../../../Makefile
diff --git a/keyboards/ergodox_ez/keymaps/algernon/config.h b/keyboards/ergodox_ez/keymaps/algernon/config.h
index 4cb878ebc..9bb1025be 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/config.h
+++ b/keyboards/ergodox_ez/keymaps/algernon/config.h
@@ -24,6 +24,4 @@
#undef LEADER_TIMEOUT
#define LEADER_TIMEOUT 1000
-#define FORCE_NKRO
-
#endif
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/base-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/base-layer.png
index 1a7c0f480..c4e298b6b 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/images/base-layer.png
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/base-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/emacs-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/emacs-layer.png
deleted file mode 100644
index 1aa23cc00..000000000
--- a/keyboards/ergodox_ez/keymaps/algernon/images/emacs-layer.png
+++ /dev/null
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/experimental-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/experimental-layer.png
index c5e695b8c..81155851b 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/images/experimental-layer.png
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/experimental-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.png
index f1e5f9ec0..104a9544d 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.png
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/hun-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/nav-n-media-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/nav-n-media-layer.png
new file mode 100644
index 000000000..16d29e124
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/nav-n-media-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.png
index 283559b3a..698d11e5f 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.png
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/one-handed-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.png b/keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.png
index e747bfb41..fe3c03c93 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.png
+++ b/keyboards/ergodox_ez/keymaps/algernon/images/steno-layer.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/algernon/keymap.c b/keyboards/ergodox_ez/keymaps/algernon/keymap.c
index 4eea6874c..fdc63a813 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/algernon/keymap.c
@@ -15,13 +15,14 @@
enum {
BASE = 0,
+ EXPRM,
+ ARRW,
APPSEL,
HUN,
- EMACS,
+ NMDIA,
OHLFT,
OHRGT,
PLVR,
- EXPRM
};
/* Macros */
@@ -33,7 +34,6 @@ enum {
A_PLVR,
A_ESC,
A_MPN,
- A_COLN,
// Function / number keys
KF_1, // 1, F1
@@ -61,17 +61,6 @@ enum {
A_MDL,
A_MDR,
- // Emacs layer keys
- AE_VIS, // Visual mode
- AE_PSTDEL, // Paste/Delete
- AE_CPYC, // Copy/Cut
- AE_EMACS, // Emacs copy & paste mode
- AE_TERM, // Terminal copy & paste mode
- AE_OTHER, // Other copy & paste mode
- AE_INS, // Insert mode
- AE_OVR, // Overwrite mode
- AE_APPND, // Append
-
// Hungarian layer keys
HU_AA, // Á
HU_OO, // Ó
@@ -102,11 +91,13 @@ enum {
F_CTRL
};
-/* States & timers */
+/* Custom keycodes */
+
+enum {
+ CT_CLN = 0x7101
+};
-uint8_t m_visual_state = 0;
-static uint16_t m_cutdel_timer;
-static uint16_t m_copypaste_timer;
+/* States & timers */
uint16_t gui_timer = 0;
@@ -123,13 +114,8 @@ uint16_t oh_left_blink_timer = 0;
uint8_t oh_right_blink = 0;
uint16_t oh_right_blink_timer = 0;
-enum {
- CP_EMACS = 0,
- CP_TERM = 1,
- CP_OTHER = 2,
-};
-
-uint8_t cp_mode = CP_EMACS;
+uint8_t ct_cln_count = 0;
+uint16_t ct_cln_timer = 0;
/* The Keymap */
@@ -138,18 +124,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Base Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
+ * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | 1HND | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | = |
+ * | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
+ * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | = |
* |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
* | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
+ * | | | Left | Up | : | | - | Down | Rght | | |
* `-----------------------------------' `-----------------------------------'
* ,-------------. ,-------------.
- * | LAlt | GUI | |EMACS | 1HND |
+ * | LAlt | GUI | | MDIA | ARRW |
* ,------|------|------| |------+------+------.
* | | | Ctrl | | LEAD | | |
* |Backsp|LShift|------| |------| Enter| Space|
@@ -162,25 +148,116 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
-,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN)
+,KC_NO ,KC_NO ,KC_LEFT ,KC_UP ,CT_CLN
,F(F_ALT),F(F_GUI)
,F(F_CTRL)
,KC_BSPC,F(F_SFT),M(A_ESC)
// right hand
- ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
- ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_EQL
- ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
- ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
- ,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
+ ,M(OH_LEFT),M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
+ ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
+ ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
+ ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
+ ,KC_MINS,KC_DOWN,KC_RGHT ,KC_NO ,KC_NO
- ,OSL(EMACS),M(OH_LEFT)
+ ,OSL(NMDIA),OSL(ARRW)
,KC_LEAD
- ,F(F_HUN),KC_ENT ,KC_SPC
+ ,F(F_HUN) ,KC_ENT ,KC_SPC
),
-/* Keymap 1: Application select layer
+/* Keymap 1: Experimental layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | 1HND | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Next/Prev | ' | , | . | P | Y | [ | | ] | L | F | C | R | J | = |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
+ * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
+ * | Play/Pause| Z | G | V | K | X | | | | Q | M | W | B | / | Stop |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | Left | Up | : | | - | Down | Rght | | |
+ * `-----------------------------------' `-----------------------------------'
+ * ,-------------. ,-------------.
+ * | LAlt | GUI | | MDIA | ARRW |
+ * ,------|------|------| |------+------+------.
+ * | | | Ctrl | | LEAD | | |
+ * |Backsp|LShift|------| |------| Enter| Space|
+ * | | | ESC | | HUN | | |
+ * `--------------------' `--------------------'
+ */
+[EXPRM] = KEYMAP(
+// left hand
+ KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
+,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
+,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
+,KC_MPLY ,KC_Z ,KC_G ,KC_V ,KC_K ,KC_X ,KC_LPRN
+,KC_NO ,KC_NO ,KC_LEFT ,KC_UP ,CT_CLN
+
+ ,F(F_ALT),F(F_GUI)
+ ,F(F_CTRL)
+ ,KC_BSPC,F(F_SFT),M(A_ESC)
+
+ // right hand
+ ,M(OH_LEFT),M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
+ ,KC_RBRC ,KC_L ,KC_F ,KC_C ,KC_R ,KC_J ,KC_BSLS
+ ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
+ ,KC_RPRN ,KC_Q ,KC_M ,KC_W ,KC_B ,KC_SLSH ,KC_MSTP
+ ,KC_MINS,KC_DOWN,KC_RGHT ,KC_NO ,KC_NO
+
+ ,OSL(NMDIA),OSL(ARRW)
+ ,KC_LEAD
+ ,F(F_HUN) ,KC_ENT ,KC_SPC
+ ),
+
+/* Keymap 2: Arrow layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | | | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | |------| |------| | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | Home | PgUp | | | | PgDn | End | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+
+[ARRW] = KEYMAP(
+// left hand
+ 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_HOME ,KC_PGUP ,KC_TRNS
+
+ ,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 ,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_PGDN ,KC_END ,KC_TRNS ,KC_TRNS
+
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ),
+
+/* Keymap 3: Application select layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | |
@@ -227,7 +304,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
-/* Keymap 2: Hungarian Layer
+/* Keymap 4: Hungarian Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | | | | | | | | | | | | | | | |
@@ -251,73 +328,73 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[HUN] = KEYMAP(
// left hand
- KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS
+ KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO
,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
-,KC_TRNS ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO
+,KC_NO ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO
+,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_NO ,KC_NO
+ ,KC_NO
+ ,KC_NO ,KC_TRNS ,KC_TRNS
// right hand
,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO
,KC_NO
,F(F_BSE),KC_TRNS ,KC_TRNS
),
-/* Keymap 3: Spacemacs layer
+/* Keymap 5: Navigation & Media layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | MS Slow | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |ScrLCK| |ScrLCK| 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
+ * | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | |
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | MS Normal | | Home | Up | PgUp | |Visual| |Scroll| $ |MsUpL | MsUp |MsUpR | R |PrintScreen|
- * |-----------+------+------+------+------+------| Mode | | Up |------+------+------+------+------+-----------|
- * | MS Fast |APPEND| Left | Down | Right| INS |------| |------| D |MsLeft| MsDn |MsRght| | |
- * |-----------+------+------+------+------+------| Cut | |Scroll|------+------+------+------+------+-----------|
- * | Play/Pause| | End | Down | PgDn | X | Copy | | Down | |MsDnL | W |MsDnR | | Stop |
+ * | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen|
+ * |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------|
+ * | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | |
+ * |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------|
+ * | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * |EmacsM|TermM |OtherM| | | |Vol Up|Vol Dn| Mute | | |
+ * | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * | Alt | GUI | | BASE | MClk |
+ * | Mute | VlUp | | BASE | MClk |
* ,------|------|------| |------+------+------.
- * |Delete| | Ctrl | | Prev |Left |Right |
- * | |LShift|------| |------| Click| Click|
- * |Paste | | ESC | | Next | | |
+ * | | | VlDn | | Prev |Left |Right |
+ * | SPC | Enter|------| |------| Click| Click|
+ * | | | ESC | | Next | | |
* `--------------------' `--------------------'
*/
-[EMACS] = KEYMAP(
+[NMDIA] = KEYMAP(
// left hand
- KC_ACL0 ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,LGUI(KC_L)
-,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,M(AE_VIS)
-,KC_ACL2 ,M(AE_APPND) ,KC_LEFT ,KC_DOWN ,KC_RIGHT,M(AE_INS)
-,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_X ,M(AE_CPYC)
-,M(AE_EMACS),M(AE_TERM) ,M(AE_OTHER),KC_NO ,KC_NO
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,M(AE_PSTDEL),KC_TRNS ,KC_TRNS
+ KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L)
+,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO
+,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO
+,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO
+,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_MUTE ,KC_VOLU
+ ,KC_VOLD
+ ,KC_SPC,KC_ENTER,M(A_ESC)
// right hand
- ,LGUI(KC_L),M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_11)
- ,KC_WH_U ,KC_DLR ,M(A_MUL),KC_MS_U ,M(A_MUR),M(AE_OVR),KC_PSCR
- ,KC_D ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
- ,KC_WH_D ,KC_NO ,M(A_MDL),KC_W ,M(A_MDR),KC_NO ,KC_MSTP
- ,KC_VOLU ,KC_VOLD ,KC_MUTE ,KC_NO ,KC_NO
+ ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR
+ ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
+ ,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_TRNS ,KC_MS_BTN3
,KC_MPRV
,KC_MNXT ,KC_BTN1 ,KC_BTN2
),
-/* Keymap 5: One-handed, left side
+/* Keymap 6: One-handed, left side
*
* ,-----------------------------------------------------.
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A BSE|
@@ -362,7 +439,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_NO ,KC_NO ,KC_NO
),
-/* Keymap 6: One-handed, right side
+/* Keymap 7: One-handed, right side
*
* ,-----------------------------------------------------.
* | = F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A BSE|
@@ -407,15 +484,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_NO ,KC_NO ,KC_NO
),
-/* Keymap 7: Steno for Plover
+/* Keymap 8: Steno for Plover
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | BASE | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | # | # | # | # | # | | | | # | # | # | # | # | # |
+ * | | # | # | # | # | # | # | | # | # | # | # | # | # | # |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | T | P | H | |------| |------| | F | P | L | T | D |
- * |--------+ S +------+------+------+ * | | | | * +------+------+------+------+--------|
+ * |--------+ S +------+------+------+ * | * | | * | * +------+------+------+------+--------|
* | | | K | W | R | | | | | | R | B | G | S | Z |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
@@ -432,9 +509,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[PLVR] = KEYMAP(
// left hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR),
-KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, KC_NO,
+KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
-KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, KC_NO,
+KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
@@ -442,61 +519,15 @@ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
// right hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
+ PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
- KC_NO, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
KC_NO,PV_E, PV_U
),
-/* Keymap 8: Experimental layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | Next/Prev | ' | , | . | P | Y | [ | | ] | Q | F | C | R | J | = |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
- * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
- * | Play/Pause| Z | K | V | G | X | | | | L | M | W | B | / | Stop |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
- * `-----------------------------------' `-----------------------------------'
- * ,-------------. ,-------------.
- * | LAlt | GUI | |EMACS | 1HND |
- * ,------|------|------| |------+------+------.
- * | | | Ctrl | | LEAD | | |
- * |Backsp|LShift|------| |------| Enter| Space|
- * | | | ESC | | HUN | | |
- * `--------------------' `--------------------'
- */
-[EXPRM] = KEYMAP(
-// left hand
- KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
-,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
-,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
-,KC_MPLY ,KC_Z ,KC_K ,KC_V ,KC_G ,KC_X ,KC_LPRN
-,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN)
-
- ,F(F_ALT),F(F_GUI)
- ,F(F_CTRL)
- ,KC_BSPC,F(F_SFT),M(A_ESC)
-
- // right hand
- ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
- ,KC_RBRC ,KC_Q ,KC_F ,KC_C ,KC_R ,KC_J ,KC_EQL
- ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
- ,KC_RPRN ,KC_L ,KC_M ,KC_W ,KC_B ,KC_SLSH ,KC_MSTP
- ,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
-
- ,OSL(EMACS),M(OH_LEFT)
- ,KC_LEAD
- ,F(F_HUN),KC_ENT ,KC_SPC
- ),
-
-
};
const uint16_t PROGMEM fn_actions[] = {
@@ -616,26 +647,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
- case A_COLN:
- if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
- ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
- int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
-
- if (record->event.pressed) {
- if (oneshot)
- clear_oneshot_mods ();
- unregister_code (KC_LSFT);
-
- register_code (KC_SCLN);
- unregister_code (KC_SCLN);
- if (!oneshot)
- register_code (KC_LSFT);
- }
- } else {
- return MACRODOWN (D(RSFT), T(SCLN), U(RSFT), END);
- }
- break;
-
case A_MPN:
if (record->event.pressed) {
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
@@ -722,126 +733,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
mousekey_send();
break;
- /* EMACS layer stuff */
- case AE_EMACS:
- if (record->event.pressed) {
- cp_mode = CP_EMACS;
- }
- break;
-
- case AE_TERM:
- if (record->event.pressed) {
- cp_mode = CP_TERM;
- }
- break;
-
- case AE_OTHER:
- if (record->event.pressed) {
- cp_mode = CP_OTHER;
- }
- break;
-
- case AE_VIS:
- if (cp_mode == CP_EMACS && record->event.pressed) {
- return MACRO(T(V), END);
- }
- break;
-
- case AE_CPYC:
- if (record->event.pressed) {
- m_copypaste_timer = timer_read ();
- } else {
- if (timer_elapsed (m_copypaste_timer) > TAPPING_TERM) {
- // Long press: Cut
- switch (cp_mode) {
- case CP_EMACS:
- return MACRO(T(X), END);
- break;
- case CP_TERM:
- return MACRO(D(RCTRL), D(RSFT), T(X), U(RSFT), U(RCTRL), END);
- break;
- case CP_OTHER:
- return MACRO(D(RCTRL), T(X), U(RCTRL), END);
- break;
- }
- } else {
- // Short press: Copy
- switch (cp_mode) {
- case CP_EMACS:
- return MACRO(T(Y), END);
- break;
- case CP_TERM:
- return MACRO(D(RCTRL), D(RSFT), T(C), U(RSFT), U(RCTRL), END);
- break;
- case CP_OTHER:
- return MACRO(D(RCTRL), T(C), U(RCTRL), END);
- break;
- }
- }
- }
- break;
-
- case AE_PSTDEL:
- if (record->event.pressed) {
- m_cutdel_timer = timer_read ();
- } else {
- if (timer_elapsed (m_cutdel_timer) > TAPPING_TERM) {
- // Long press: Delete
- switch (cp_mode) {
- case CP_EMACS:
- return MACRO(T(D), END);
- break;
- case CP_TERM:
- case CP_OTHER:
- return MACRO(T(DEL), END);
- break;
- }
- } else {
- // Short press: Paste
- switch (cp_mode) {
- case CP_EMACS:
- if (keyboard_report->mods & MOD_BIT(KC_RSFT)) {
- unregister_code (KC_RSFT);
- return MACRO(U(RSFT), T(RBRC), T(P), D(RSFT), END);
- }
- else
- return MACRO(T(P), END);
- break;
- case CP_TERM:
- return MACRO(D(RCTRL), D(RSFT), T(V), U(RSFT), U(RCTRL), END);
- break;
- case CP_OTHER:
- return MACRO(D(RCTRL), T(V), U(RCTRL), END);
- break;
- }
- }
- }
- break;
-
- case AE_INS:
- if (record->event.pressed) {
- return MACRO(T(I), END);
- } else {
- layer_clear();
- }
- break;
-
- case AE_OVR:
- if (record->event.pressed) {
- return MACRO(T(R), END);
- } else {
- layer_clear();
- }
- break;
-
- case AE_APPND:
- if (record->event.pressed) {
- return MACRO(T(A), END);
- } else {
- layer_clear();
- }
- break;
-
/* Plover base */
case A_PLVR:
toggle_steno(record->event.pressed);
@@ -872,7 +763,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
break;
case APP_SLK:
- return MACRODOWN(T(S), T(C), T(U), T(D), T(C), T(L), T(O), T(U), T(D), T(ENT), END);
+ return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
case APP_EMCS:
return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
@@ -1000,6 +891,21 @@ void matrix_scan_user(void) {
if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
unregister_code (KC_LGUI);
+ if (ct_cln_timer && timer_elapsed (ct_cln_timer) > TAPPING_TERM) {
+ if (ct_cln_count == 1) {
+ register_code (KC_RSFT);
+ register_code (KC_SCLN);
+ unregister_code (KC_SCLN);
+ unregister_code (KC_RSFT);
+ } else if (ct_cln_count == 2) {
+ register_code (KC_SCLN);
+ unregister_code (KC_SCLN);
+ }
+
+ ct_cln_count = 0;
+ ct_cln_timer = 0;
+ }
+
if (layer != OHLFT)
oh_left_blink = 0;
if (layer != OHRGT)
@@ -1008,7 +914,7 @@ void matrix_scan_user(void) {
if (layer == HUN) {
ergodox_right_led_2_on();
ergodox_right_led_3_on();
- } else if (layer == EMACS) {
+ } else if (layer == NMDIA) {
ergodox_right_led_1_on();
ergodox_right_led_2_on();
} else if (layer == PLVR) {
@@ -1055,7 +961,7 @@ void matrix_scan_user(void) {
ergodox_right_led_1_on ();
} else {
ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
- if (layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM)
+ if (layer != OHLFT && layer != NMDIA && layer != PLVR && layer != EXPRM)
ergodox_right_led_1_off ();
}
@@ -1065,7 +971,7 @@ void matrix_scan_user(void) {
ergodox_right_led_2_on ();
} else {
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
- if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM)
+ if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != NMDIA && layer != PLVR && layer != EXPRM)
ergodox_right_led_2_off ();
}
@@ -1087,11 +993,9 @@ void matrix_scan_user(void) {
ang_do_unicode ();
}
-#ifdef QMK_VERSION
SEQ_ONE_KEY (KC_V) {
- SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
}
-#endif
SEQ_ONE_KEY (KC_L) {
/* λ */
@@ -1165,8 +1069,36 @@ void matrix_scan_user(void) {
ergodox_right_led_2_off ();
_delay_ms (100);
ergodox_right_led_3_off ();
-
}
}
}
}
+
+bool process_record_user (uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case CT_CLN:
+ if (record->event.pressed) {
+ ct_cln_count++;
+ ct_cln_timer = timer_read ();
+ } else {
+ }
+ return false;
+ break;
+
+ default:
+ if (ct_cln_count == 1) {
+ register_code (KC_RSFT);
+ register_code (KC_SCLN);
+ unregister_code (KC_SCLN);
+ unregister_code (KC_RSFT);
+ } else if (ct_cln_count == 2) {
+ register_code (KC_SCLN);
+ unregister_code (KC_SCLN);
+ }
+ ct_cln_count = 0;
+ ct_cln_timer = 0;
+ break;
+ }
+
+ return true;
+}
diff --git a/keyboards/ergodox_ez/keymaps/algernon/readme.md b/keyboards/ergodox_ez/keymaps/algernon/readme.md
index c66b33f3d..6b7e8fa2e 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/readme.md
+++ b/keyboards/ergodox_ez/keymaps/algernon/readme.md
@@ -10,13 +10,29 @@ history of the layout, see my
Some of the things in the layout only work when one uses Spacemacs and GNOME
under Linux. Your mileage may vary.
+## Table of Contents
+
+* [Layouts](#layouts)
+ - [Base layer](#base-layer)
+ - [Experimental layer](#experimental-layer)
+ - [Hungarian layer](#hungarian-layer)
+ - [Navigation and media layer](#navigation-and-media-layer)
+ - [One-handed layer](#one-handed-layer)
+ - [Steno layer](#steno-layer)
+ - [LED states](#led-states)
+* [Building](#building)
+ - [Using on Windows](#using-on-windows)
+* [Changelog](#changelog)
+* [License](#license)
+
+# Layouts
+
## Base layer
[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
-At its core, this is a Dvorak layout, with some minor changes (for example, `-`
-being on the left half, and on the innermost key of the bottom row on the
-right). The more interesting parts are how certain keys behave:
+At its core, this is a Dvorak layout, with some minor changes. The more
+interesting parts are how certain keys behave:
* The keys on the number row double as function keys, when held for a bit longer
than an usual tap. This allows me to use the function keys without having to
@@ -33,9 +49,13 @@ right). The more interesting parts are how certain keys behave:
normal layout.
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of
the one-shot modifiers are in-flight (as in, single-tapped, and not expired
- yet), it cancels all one-shot modifiers. Otherwise it sends the usual keycode.
-* The **Emacs** and **Hun** layer keys are one-shot, the **1Hand** and **STENO**
- keys are toggles.
+ yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if
+ active. Otherwise it sends the usual keycode.
+* The **Media**, **Arrow**, and **Hun** layer keys are one-shot, the **1Hand**
+ and **STENO** keys are toggles.
+* Toggling the **Arrow** layer toggles between the cursor arrows and the paging
+ keys on the bottom row.
+* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
* The **Lead** key allows me to type in a sequence of keys, and trigger some
actions:
- `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that
@@ -45,8 +65,19 @@ right). The more interesting parts are how certain keys behave:
- `LEAD y` types `\o/`.
- `LEAD w m` maximises the currently focused window.
- `LEAD e` makes the [experimental layer](#experimental-layer) the default.
- - `LEAD v` prints the firmware version, the keyboard and the keymap, if
- compiled with a QMK version that has these available.
+ - `LEAD v` prints the firmware version, the keyboard and the keymap.
+
+## Experimental layer
+
+[![Experimental layer](images/experimental-layer.png)](http://www.keyboard-layout-editor.com/#/gists/6ff50bf71248e05aab5b3fec4fae3d08)
+
+While using the standard Dvorak layout, I encountered a number of
+inconveniences, and on this layer, I am playing with ideas to make the layout
+feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too,
+had shortcomings I was not happy with. So now this is something inbetween, with
+own observations thrown in. How it works out in the long run remains to be seen.
+
+ [cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm
## Hungarian layer
@@ -57,32 +88,12 @@ variant. For some, which can have other diatribes, the long one is on top,
short's on bottom. Tapping any of the accented characters takes us back to the
base layer.
-## Emacs layer
-
-[![Emacs layer](images/emacs-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892)
-
-This layer is primarily for navigating text - and for some mousing and other
-things, because there was space. Most of the keys should be pretty
-self-explanatory, except for a few:
-
-* There are three keys on the bottom row of the left side, that change how some
- of the other keys - explained just below - work. The keys are for *Emacs
- mode* (the default), *Terminal mode*, and *Traditional mode*, respectively.
-* The *Visual mode* key (the top big key on the left side) sends the `v` key in
- *Emacs mode*, to enter Visual mode in Spacemacs. In all other modes, it is a
- no-op.
-* The *Copy/Cut* key (the bottom big key on the left side) sends the copy
- command on tap, the cut one when held for longer than a normal tap. The **copy
- command** is `y` in *Emacs mode*, `Ctrl-Shift-c` in *Terminal mode*, and
- `Ctrl-c` in *Traditional mode*. The **cut command** is `x` in *Emacs mode*,
- `Ctrl-Shift-x` in *Terminal Mode* and `Ctrl-x` in *Traditional mode*.
-* The *Paste/Delete* key (the leftmost key on the left thumb cluster) sends the
- paste command on tap, the delete one when held longer than a normal tap. The
- **paste command** is `p` in *Emacs mode*, `Ctrl-Shift-v` in *Terminal mode*,
- and `Ctrl-v` in *Traditional mode*. The **delete command** is `d` in *Emacs
- mode*, and `DEL` in the other two.
-* The `A`, `I` and `R` keys will - after sending themselves - clear the layer
- back to the base layer. This allows a quick escape from the layer.
+## Navigation and media layer
+
+[![Navigation and media layer](images/nav-n-media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892)
+
+This layer is primarily for navigating with the cursor or the mouse, and some
+media things.
## One-handed layer
@@ -113,33 +124,50 @@ This is to be used with [Plover](http://www.openstenoproject.org/plover/),
nothing really fancy here. The **STENO** key toggles the layer on and off, and
sends the toggle command to Plover too.
-## Experimental layer
-
-[![Experimental layer](images/experimental-layer.png)](http://www.keyboard-layout-editor.com/#/gists/6ff50bf71248e05aab5b3fec4fae3d08)
-
-While using the standard Dvorak layout, I encountered a number of
-inconveniences, and on this layer, I am playing with ideas to make the layout
-feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too,
-had shortcomings I was not happy with. So now this is something inbetween, with
-own observations thrown in. How it works out in the long run remains to be seen.
-
- [cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm
+## LED states
+
+The primary purpose of the LEDs is to show the modifier status, a secondary, to
+show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each
+have their designated LEDs: the *red*, *green* and *blue*, respectively. When a
+modifier is in a one-shot state, the respective LED will turn on with a dimmer
+light. If the modifier is toggled on, the brightness of the LED turns full.
+
+For the layers, the following rules apply:
+
+* When the [Experimental layer](#experimental-layer) is toggled on, LEDs will
+ light up from left to right in a sequence, then turn off. When the layer is
+ toggled off, the LEDs light up and turn off in the other direction. No LEDs
+ are on while the layer is active.
+* When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue*
+ LEDs are on.
+* When the [Navigation and media layer](#navigation-and-media-layer) is active,
+ the *red* and *green* ones are on.
+* When the [One-handed layer](#one-handed-layer) is active, the *green* LED is
+ on and bright, and either the *red* or the *blue* one is going to slowly
+ blink, depending on the currently active side.
+* For the [Steno layer](#steno-layer), all LEDs will be turned on.
+
+Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers
+use a stronger one, and modifiers override any layer preferences. For example,
+when on the one-handed layer, with the left side active (*red* light blinking),
+if `Shift` is on, the *red* light will be constantly on.
# Building
To make my workflow easier, this layout is maintained in
[its own repository][algernon:ez-layout]. To build it, you will need the
-[QMK][qmk] firmware checked out, and this repo either checked out, or symlinked
-to `keyboards/ergodox_ez/algernon`. One way to achieve that is this:
+[QMK][qmk] firmware checked out, and this repo either checked out to something
+like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this:
[algernon:ez-layout]: https://github.com/algernon/ergodox-layout
[qmk]: https://github.com/jackhumbert/qmk_firmware
```
$ git clone https://github.com/jackhumbert/qmk_firmware.git
-$ cd qmk_firmware/keyboards/ergodox_ez
-$ git clone https://github.com/algernon/ergodox-layout.git keymaps/algernon
-$ make KEYMAP=algernon
+$ cd qmk_firmware
+$ git clone https://github.com/algernon/ergodox-layout.git \
+ keyboards/ergodox_ez/keymaps/algernon-master
+$ make KEYBOARD=ergodox_ez KEYMAP=algernon-master
```
From time to time, updates may be submitted back to the QMK repository. If you
@@ -147,10 +175,54 @@ are reading it there, you can build the firmware like any other firmware
included with it (assuming you are in the root directory of the firmware):
```
-$ cd keyboards/ergodox_ez
-$ make KEYMAP=algernon
+$ make KEYBOARD=ergodox_ez KEYMAP=algernon
```
+## Using on Windows
+
+The keymap default to forcing NKRO, which seems to upset Windows, and except the
+modifiers, none of them work. If you experience this problem, recompile the
+firmware with `FORCE_NKRO=no` added to the `make` command line.
+
+# Changelog
+
+## v1.2 - 2016-06-22
+
+* The forced NKRO mode can be easily toggled off at compile-time, to make the
+ firmware compatible with [certain operating systems](#using-on-windows).
+* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to
+ be double-tapped, instead of shifted.
+* The `=` and `\` keys were swapped, `=` moved to the home row, on both the
+ [base](#base-layer) and the [experimental](#experimental-layer) layers.
+* The arrow and navigation keys were redone, they are now more accessible, but
+ the navigation keys require an extra tap to access.
+* The **Emacs** layer is gone, replaced by a simplified
+ [navigation and media](#navigation-and-media-layer) layer.
+* `LEAD v` types the firmware version, and the keymap version.
+* On the [experimental](#experimental-layer) layer, the `L` and `Q`, and the `K`
+ and `G` keys were swapped.
+* The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it
+ easier on my fingers.
+
+## v1.1 - 2016-06-14
+
+* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
+* A [Steno](#steno-layer) layer was added, to be used with Plover.
+* An [experimental](#experimental-layer) layer was added, something halfway
+ between Dvorak and Capewell-Dvorak. A work in progress.
+* `LEAD y` types `\o/`.
+* Some keys on the [Base](#base-layer) layer have been moved around:
+ - `?` moved to the left pinky, left of `Q`.
+ - `=` shifted one row down, but `F11` stayed where it was.
+ - `-` on the left half was replaced by `Tab`.
+ - `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
+ - `:` now inputs `;` when shifted.
+* `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers.
+
+## v1.0 - 2016-05-26
+
+Initial version.
+
# License
The layout, being a derivative of the original TMK firmware which is under the