ergodox: Update algernon's keymap to v1.8
ADORE ----- * Major rearrangements were made, to reduce pinky use, and to balance out the hand usage. Tools ----- * The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered. * The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned. Miscellaneous ------------- * Fixed the **Steno** toggle key. * My wife is now present on the keyboard too. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>master
parent
86065dca4d
commit
aa9c6e9f59
|
@ -0,0 +1,145 @@
|
||||||
|
## v1.8
|
||||||
|
|
||||||
|
*2016-10-03*
|
||||||
|
|
||||||
|
### ADORE
|
||||||
|
|
||||||
|
* Major rearrangements were made, to reduce pinky use, and to balance out the hand usage.
|
||||||
|
|
||||||
|
### Tools
|
||||||
|
|
||||||
|
* The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered.
|
||||||
|
* The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned.
|
||||||
|
|
||||||
|
### Miscellaneous
|
||||||
|
|
||||||
|
* Fixed the [Steno](#steno-layer) toggle key.
|
||||||
|
|
||||||
|
## v1.7
|
||||||
|
|
||||||
|
*2016-09-18*
|
||||||
|
|
||||||
|
### Overall changes
|
||||||
|
|
||||||
|
* The number row has been completely rearranged on both the [Base](#base-layer) and the [ADORE](#adore-layer) layers.
|
||||||
|
* The number/function key behavior was changed: function keys are now on the **Media**.
|
||||||
|
* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the [Base](#base-layer) and [ADORE](#adore-layer) layers.
|
||||||
|
* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped.
|
||||||
|
* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it.
|
||||||
|
|
||||||
|
### ADORE
|
||||||
|
|
||||||
|
* `Y` and `X` have been swapped again.
|
||||||
|
|
||||||
|
### Media/Navigation layer
|
||||||
|
|
||||||
|
* The function keys are now on this layer.
|
||||||
|
* Mouse keys have been removed.
|
||||||
|
* Media start/stop/prev/next have been removed.
|
||||||
|
* `Print screen` has been removed.
|
||||||
|
* There is only one screen lock key now.
|
||||||
|
|
||||||
|
### Heatmap
|
||||||
|
|
||||||
|
* Fixed a few issues in the finger-stats calculation.
|
||||||
|
* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool.
|
||||||
|
* The heatmap tool will now colorize the stats by default.
|
||||||
|
* The periodic stats are now printed in a more compact format.
|
||||||
|
|
||||||
|
### Tools
|
||||||
|
|
||||||
|
* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes.
|
||||||
|
* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator.
|
||||||
|
* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side.
|
||||||
|
|
||||||
|
## v1.6
|
||||||
|
|
||||||
|
*2016-08-24*
|
||||||
|
|
||||||
|
### Base layer changes
|
||||||
|
|
||||||
|
* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`.
|
||||||
|
* The `:;` and `-_` keys are now available on the base layer, on their [ADORE](#adore-layer) location, too, just below `[{(`/`]})`.
|
||||||
|
* The `Apps` key has been replaced by `F12`.
|
||||||
|
* The `-`/`_` is no longer a tap-dance key.
|
||||||
|
|
||||||
|
### ADORE layer changes
|
||||||
|
|
||||||
|
* Adjustments were made to the [ADORE](#adore-layer) layer, to separate some inconvenient combinations.
|
||||||
|
|
||||||
|
### Miscellaneous changes
|
||||||
|
|
||||||
|
* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one.
|
||||||
|
* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off.
|
||||||
|
* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now.
|
||||||
|
|
||||||
|
### Heatmap
|
||||||
|
|
||||||
|
* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off.
|
||||||
|
* The heatmap generator received a lot of updates.
|
||||||
|
|
||||||
|
## v1.5
|
||||||
|
|
||||||
|
*2016-08-12*
|
||||||
|
|
||||||
|
* The **1HAND** layer has been removed.
|
||||||
|
* A `Delete` key is now available on the right thumb cluster.
|
||||||
|
* The [ADORE](#adore-layer) layer received a major update, see the layout image above.
|
||||||
|
* It is now possible to enable automatic logging for the [ADORE](#adore-layer) layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default.
|
||||||
|
* The `~` key and the `Media Next/Prev` key have been swapped on the [base layer](#base-layer).
|
||||||
|
* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
|
||||||
|
* There is some experimental support for entering Unicode symbols.
|
||||||
|
|
||||||
|
## v1.4
|
||||||
|
|
||||||
|
*2016-07-29*
|
||||||
|
|
||||||
|
* When toggling the key logging on or off, the LEDs will do a little dance.
|
||||||
|
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
|
||||||
|
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
|
||||||
|
* The `-`/`_` key was turned into a tap-dance key too.
|
||||||
|
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
|
||||||
|
|
||||||
|
## v1.3
|
||||||
|
|
||||||
|
*2016-07-06*
|
||||||
|
|
||||||
|
* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a [heatmap](#heatmap) out of the logs.
|
||||||
|
* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the [base layer](#base-layer) for an image that shows where arrows are.
|
||||||
|
* The **experimental** layer has been redone, and is now called [ADORE](#adore-layer), and as such, can be enabled by `LEAD a` now.
|
||||||
|
* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
|
||||||
|
|
||||||
|
## 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** 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](#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** 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** layer too, not just modifiers.
|
||||||
|
|
||||||
|
## v1.0
|
||||||
|
|
||||||
|
*2016-05-26*
|
||||||
|
|
||||||
|
Initial version.
|
Binary file not shown.
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
Binary file not shown.
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 63 KiB |
|
@ -160,11 +160,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
* | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
|
* | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
|
||||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||||
* | `~ | X | W | G | L | M | ( | | ) | F | H | C | P | Y | \ |
|
* | \ | X | W | C | H | F | ( | | ) | M | G | L | P | / | `~ |
|
||||||
* |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
|
* |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
|
||||||
* | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = |
|
* | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = |
|
||||||
* |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------|
|
* |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------|
|
||||||
* | | Z | Q | ' | , | . | | | pane | B | K | V | J | / | |
|
* | | Z | Q | ' | , | . | | | pane | B | K | V | Y | J | |
|
||||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||||
* | | | | | : | | - | | | | |
|
* | | | | | : | | - | | | | |
|
||||||
* `-----------------------------------' `-----------------------------------'
|
* `-----------------------------------' `-----------------------------------'
|
||||||
|
@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[ADORE] = KEYMAP(
|
[ADORE] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
KC_MPLY ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11
|
KC_MPLY ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11
|
||||||
,KC_GRV ,KC_X ,KC_W ,KC_G ,KC_L ,KC_M ,TD(CT_LBP)
|
,KC_BSLS ,KC_X ,KC_W ,KC_C ,KC_H ,KC_F ,TD(CT_LBP)
|
||||||
,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U
|
,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U
|
||||||
,KC_NO ,KC_Z ,KC_Q ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX)
|
,KC_NO ,KC_Z ,KC_Q ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX)
|
||||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
|
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
|
||||||
|
@ -190,9 +190,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
// right hand
|
// right hand
|
||||||
,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR)
|
,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR)
|
||||||
,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS
|
,TD(CT_RBP),KC_M ,KC_G ,KC_L ,KC_P ,KC_SLSH ,KC_GRV
|
||||||
,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL
|
,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL
|
||||||
,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO
|
,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_Y ,KC_J ,KC_NO
|
||||||
,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||||
|
|
||||||
,OSL(NMDIA),KC_DEL
|
,OSL(NMDIA),KC_DEL
|
||||||
|
@ -386,7 +386,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap 6: Steno for Plover
|
/* Keymap 6: Steno for Plover
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | | | | | | | BASE | | | | | | | | |
|
* | | | | | | | | | | | | | | | BASE |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | # | # | # | # | # | # | | # | # | # | # | # | # | # |
|
* | | # | # | # | # | # | # | | # | # | # | # | # | # | # |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
@ -407,7 +407,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[PLVR] = KEYMAP(
|
[PLVR] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR),
|
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,
|
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_LT, PV_LP, PV_LH, PV_STAR,
|
||||||
KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
|
KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
|
||||||
|
@ -417,7 +417,7 @@ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
PV_A, PV_O, KC_NO,
|
PV_A, PV_O, KC_NO,
|
||||||
|
|
||||||
// right hand
|
// right hand
|
||||||
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, M(A_PLVR),
|
||||||
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_NUM,
|
||||||
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
|
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
|
||||||
PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
|
PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
|
||||||
|
@ -617,6 +617,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
register_code (KC_LGUI);
|
register_code (KC_LGUI);
|
||||||
if (record->tap.count && !record->tap.interrupted) {
|
if (record->tap.count && !record->tap.interrupted) {
|
||||||
if (record->tap.count >= 2) {
|
if (record->tap.count >= 2) {
|
||||||
|
uprintf("CMD:appsel_start\n");
|
||||||
layer_on (APPSEL);
|
layer_on (APPSEL);
|
||||||
set_oneshot_layer (APPSEL, ONESHOT_START);
|
set_oneshot_layer (APPSEL, ONESHOT_START);
|
||||||
}
|
}
|
||||||
|
@ -695,15 +696,15 @@ void matrix_init_user(void) {
|
||||||
|
|
||||||
LEADER_EXTERNS();
|
LEADER_EXTERNS();
|
||||||
|
|
||||||
static void ang_tap (uint8_t code, ...) {
|
static void ang_tap (uint16_t code, ...) {
|
||||||
uint8_t kc = code;
|
uint16_t kc = code;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, code);
|
va_start(ap, code);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
register_code(kc);
|
register_code16(kc);
|
||||||
unregister_code(kc);
|
unregister_code16(kc);
|
||||||
wait_ms(50);
|
wait_ms(50);
|
||||||
kc = va_arg(ap, int);
|
kc = va_arg(ap, int);
|
||||||
} while (kc != 0);
|
} while (kc != 0);
|
||||||
|
@ -866,6 +867,17 @@ void matrix_scan_user(void) {
|
||||||
leading = false;
|
leading = false;
|
||||||
leader_end ();
|
leader_end ();
|
||||||
|
|
||||||
|
SEQ_ONE_KEY (KC_C) {
|
||||||
|
ang_tap (LSFT(KC_C), KC_S, KC_I, KC_L, KC_L, KC_RALT, KC_QUOT, KC_A, KC_M, KC_A, KC_S,
|
||||||
|
KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SEQ_ONE_KEY (KC_G) {
|
||||||
|
ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O,
|
||||||
|
KC_RALT, KC_EQL, KC_O,
|
||||||
|
KC_RALT, KC_EQL, KC_O, 0);
|
||||||
|
}
|
||||||
|
|
||||||
#if KEYLOGGER_ENABLE
|
#if KEYLOGGER_ENABLE
|
||||||
SEQ_ONE_KEY (KC_D) {
|
SEQ_ONE_KEY (KC_D) {
|
||||||
ergodox_led_all_on();
|
ergodox_led_all_on();
|
||||||
|
@ -875,11 +887,6 @@ void matrix_scan_user(void) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SEQ_ONE_KEY (KC_Q) {
|
|
||||||
register_code16 (LCTL(KC_1));
|
|
||||||
unregister_code16 (LCTL(KC_1));
|
|
||||||
}
|
|
||||||
|
|
||||||
SEQ_ONE_KEY (KC_T) {
|
SEQ_ONE_KEY (KC_T) {
|
||||||
time_travel = !time_travel;
|
time_travel = !time_travel;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs]
|
||||||
- [Unicode Symbol Input](#unicode-symbol-input)
|
- [Unicode Symbol Input](#unicode-symbol-input)
|
||||||
* [Building](#building)
|
* [Building](#building)
|
||||||
- [Using on Windows](#using-on-windows)
|
- [Using on Windows](#using-on-windows)
|
||||||
* [Changelog](#changelog)
|
* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
# Layouts
|
# Layouts
|
||||||
|
@ -145,137 +145,6 @@ $ make keyboard=ergodox keymap=algernon
|
||||||
|
|
||||||
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.
|
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.7
|
|
||||||
|
|
||||||
*2016-09-18*
|
|
||||||
|
|
||||||
### Overall changes
|
|
||||||
|
|
||||||
* The number row has been completely rearranged on both the [Base](#base-layer) and the [ADORE](#adore-layer) layers.
|
|
||||||
* The number/function key behavior was changed: function keys are now on the **Media**.
|
|
||||||
* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the [Base](#base-layer) and [ADORE](#adore-layer) layers.
|
|
||||||
* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped.
|
|
||||||
* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it.
|
|
||||||
|
|
||||||
### ADORE
|
|
||||||
|
|
||||||
* `Y` and `X` have been swapped again.
|
|
||||||
|
|
||||||
### Media/Navigation layer
|
|
||||||
|
|
||||||
* The function keys are now on this layer.
|
|
||||||
* Mouse keys have been removed.
|
|
||||||
* Media start/stop/prev/next have been removed.
|
|
||||||
* `Print screen` has been removed.
|
|
||||||
* There is only one screen lock key now.
|
|
||||||
|
|
||||||
### Heatmap
|
|
||||||
|
|
||||||
* Fixed a few issues in the finger-stats calculation.
|
|
||||||
* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool.
|
|
||||||
* The heatmap tool will now colorize the stats by default.
|
|
||||||
* The periodic stats are now printed in a more compact format.
|
|
||||||
|
|
||||||
### Tools
|
|
||||||
|
|
||||||
* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes.
|
|
||||||
* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator.
|
|
||||||
* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side.
|
|
||||||
|
|
||||||
## v1.6
|
|
||||||
|
|
||||||
*2016-08-24*
|
|
||||||
|
|
||||||
### Base layer changes
|
|
||||||
|
|
||||||
* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`.
|
|
||||||
* The `:;` and `-_` keys are now available on the base layer, on their [ADORE](#adore-layer) location, too, just below `[{(`/`]})`.
|
|
||||||
* The `Apps` key has been replaced by `F12`.
|
|
||||||
* The `-`/`_` is no longer a tap-dance key.
|
|
||||||
|
|
||||||
### ADORE layer changes
|
|
||||||
|
|
||||||
* Adjustments were made to the [ADORE](#adore-layer) layer, to separate some inconvenient combinations.
|
|
||||||
|
|
||||||
### Miscellaneous changes
|
|
||||||
|
|
||||||
* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one.
|
|
||||||
* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off.
|
|
||||||
* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now.
|
|
||||||
|
|
||||||
### Heatmap
|
|
||||||
|
|
||||||
* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off.
|
|
||||||
* The heatmap generator received a lot of updates.
|
|
||||||
|
|
||||||
## v1.5
|
|
||||||
|
|
||||||
*2016-08-12*
|
|
||||||
|
|
||||||
* The **1HAND** layer has been removed.
|
|
||||||
* A `Delete` key is now available on the right thumb cluster.
|
|
||||||
* The [ADORE](#adore-layer) layer received a major update, see the layout image above.
|
|
||||||
* It is now possible to enable automatic logging for the [ADORE](#adore-layer) layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default.
|
|
||||||
* The `~` key and the `Media Next/Prev` key have been swapped on the [base layer](#base-layer).
|
|
||||||
* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
|
|
||||||
* There is some experimental support for entering Unicode symbols.
|
|
||||||
|
|
||||||
## v1.4
|
|
||||||
|
|
||||||
*2016-07-29*
|
|
||||||
|
|
||||||
* When toggling the key logging on or off, the LEDs will do a little dance.
|
|
||||||
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
|
|
||||||
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
|
|
||||||
* The `-`/`_` key was turned into a tap-dance key too.
|
|
||||||
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
|
|
||||||
|
|
||||||
## v1.3
|
|
||||||
|
|
||||||
*2016-07-06*
|
|
||||||
|
|
||||||
* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a [heatmap](#heatmap) out of the logs.
|
|
||||||
* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the [base layer](#base-layer) for an image that shows where arrows are.
|
|
||||||
* The **experimental** layer has been redone, and is now called [ADORE](#adore-layer), and as such, can be enabled by `LEAD a` now.
|
|
||||||
* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
|
|
||||||
|
|
||||||
## 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** 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](#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** 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** layer too, not just modifiers.
|
|
||||||
|
|
||||||
## v1.0
|
|
||||||
|
|
||||||
*2016-05-26*
|
|
||||||
|
|
||||||
Initial version.
|
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
|
The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
|
||||||
|
|
|
@ -111,11 +111,11 @@
|
||||||
"x": 3.5,
|
"x": 3.5,
|
||||||
"a": 6
|
"a": 6
|
||||||
},
|
},
|
||||||
"G",
|
"C",
|
||||||
{
|
{
|
||||||
"x": 10.5
|
"x": 10.5
|
||||||
},
|
},
|
||||||
"C"
|
"L"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -128,11 +128,11 @@
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"a": 6
|
"a": 6
|
||||||
},
|
},
|
||||||
"L",
|
"H",
|
||||||
{
|
{
|
||||||
"x": 8.5
|
"x": 8.5
|
||||||
},
|
},
|
||||||
"H",
|
"G",
|
||||||
{
|
{
|
||||||
"x": 1
|
"x": 1
|
||||||
},
|
},
|
||||||
|
@ -143,7 +143,7 @@
|
||||||
"y": -0.875,
|
"y": -0.875,
|
||||||
"x": 5.5
|
"x": 5.5
|
||||||
},
|
},
|
||||||
"M",
|
"F",
|
||||||
{
|
{
|
||||||
"a": 4,
|
"a": 4,
|
||||||
"fa": [0, 0, 0],
|
"fa": [0, 0, 0],
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
{
|
{
|
||||||
"a": 6
|
"a": 6
|
||||||
},
|
},
|
||||||
"F"
|
"M"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -167,7 +167,7 @@
|
||||||
"a": 4,
|
"a": 4,
|
||||||
"w": 1.5
|
"w": 1.5
|
||||||
},
|
},
|
||||||
"\n\n~\n`",
|
"\n\n|\n\\",
|
||||||
{
|
{
|
||||||
"a": 6,
|
"a": 6,
|
||||||
"f": 3
|
"f": 3
|
||||||
|
@ -175,14 +175,14 @@
|
||||||
"X",
|
"X",
|
||||||
{
|
{
|
||||||
"x": 14.5,
|
"x": 14.5,
|
||||||
"a": 6
|
"a": 4
|
||||||
},
|
},
|
||||||
"Y",
|
"/\n?",
|
||||||
{
|
{
|
||||||
"a": 4,
|
"a": 4,
|
||||||
"w": 1.5
|
"w": 1.5
|
||||||
},
|
},
|
||||||
"|\n\\"
|
"~\n`"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -312,7 +312,7 @@
|
||||||
{
|
{
|
||||||
"x": 1
|
"x": 1
|
||||||
},
|
},
|
||||||
"J"
|
"Y"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -342,10 +342,9 @@
|
||||||
},
|
},
|
||||||
"Z",
|
"Z",
|
||||||
{
|
{
|
||||||
"x": 14.5,
|
"x": 14.5
|
||||||
"a": 4
|
|
||||||
},
|
},
|
||||||
"?\n/",
|
"J",
|
||||||
{
|
{
|
||||||
"f": 9,
|
"f": 9,
|
||||||
"g": true,
|
"g": true,
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
LAST_APPSEL_START=0
|
||||||
|
|
||||||
cmd_wm () {
|
cmd_wm () {
|
||||||
WIN="$(xdotool getactivewindow)"
|
WIN="$(xdotool getactivewindow)"
|
||||||
wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
|
wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
|
||||||
|
@ -34,6 +36,16 @@ cmd_appsel_chrome () {
|
||||||
_cmd_appsel chromium
|
_cmd_appsel chromium
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd_appsel_start () {
|
||||||
|
APPSEL_START=$(date +%s)
|
||||||
|
if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
LAST_APPSEL_START=$APPSEL_START
|
||||||
|
notify-send -t 1000 "Please select an application!" -c device -u low \
|
||||||
|
-i /usr/share/icons/Adwaita/24x24/devices/video-display.png
|
||||||
|
}
|
||||||
|
|
||||||
cmd_help () {
|
cmd_help () {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Use the source, Luke!
|
Use the source, Luke!
|
||||||
|
|
|
@ -145,6 +145,11 @@ class Heatmap(object):
|
||||||
usage[0][4] = usage[0][4] + self.log[(c, r)]
|
usage[0][4] = usage[0][4] + self.log[(c, r)]
|
||||||
else:
|
else:
|
||||||
usage[1][0] = usage[1][0] + self.log[(c, r)]
|
usage[1][0] = usage[1][0] + self.log[(c, r)]
|
||||||
|
elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys
|
||||||
|
if c <= 6: # left side
|
||||||
|
usage[0][4] = usage[0][4] + self.log[(c, r)]
|
||||||
|
else:
|
||||||
|
usage[1][0] = usage[1][0] + self.log[(c, r)]
|
||||||
else:
|
else:
|
||||||
fc = c
|
fc = c
|
||||||
hand = 0
|
hand = 0
|
||||||
|
|
|
@ -15,20 +15,20 @@ charmap = {
|
||||||
'6': [[11, 0]], '&': [[2, 5], [11, 0]],
|
'6': [[11, 0]], '&': [[2, 5], [11, 0]],
|
||||||
'8': [[12, 0]],
|
'8': [[12, 0]],
|
||||||
|
|
||||||
'`': [[0, 1]], '~': [[2, 5], [0, 1]],
|
'\\': [[0, 1]], '|': [[2, 5], [0, 1]],
|
||||||
'y': [[1, 1]], 'Y': [[2, 5], [1, 1]],
|
'x': [[1, 1]], 'X': [[2, 5], [1, 1]],
|
||||||
'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
|
'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
|
||||||
'g': [[3, 1]], 'G': [[2, 5], [3, 1]],
|
'c': [[3, 1]], 'C': [[2, 5], [3, 1]],
|
||||||
'l': [[4, 1]], 'L': [[2, 5], [4, 1]],
|
'h': [[4, 1]], 'H': [[2, 5], [4, 1]],
|
||||||
'm': [[5, 1]], 'M': [[2, 5], [5, 1]],
|
'f': [[5, 1]], 'F': [[2, 5], [5, 1]],
|
||||||
'[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
|
'[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
|
||||||
']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
|
']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
|
||||||
'f': [[8, 1]], 'F': [[2, 5], [8, 1]],
|
'm': [[8, 1]], 'M': [[2, 5], [8, 1]],
|
||||||
'h': [[9, 1]], 'H': [[2, 5], [9, 1]],
|
'g': [[9, 1]], 'G': [[2, 5], [9, 1]],
|
||||||
'c': [[10, 1]], 'C': [[2, 5], [10, 1]],
|
'l': [[10, 1]], 'L': [[2, 5], [10, 1]],
|
||||||
'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
|
'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
|
||||||
'x': [[12, 1]], 'X': [[2, 5], [12, 1]],
|
'/': [[12, 1]], '?': [[2, 5], [12, 1]],
|
||||||
'\\': [[13, 1]], '|': [[2, 5], [13, 1]],
|
'`': [[13, 1]], '~': [[2, 5], [13, 1]],
|
||||||
|
|
||||||
'\t': [[0, 2]],
|
'\t': [[0, 2]],
|
||||||
'a': [[1, 2]], 'A': [[2, 5], [1, 2]],
|
'a': [[1, 2]], 'A': [[2, 5], [1, 2]],
|
||||||
|
@ -51,8 +51,8 @@ charmap = {
|
||||||
'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
|
'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
|
||||||
'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
|
'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
|
||||||
'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
|
'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
|
||||||
'j': [[11, 3]], 'J': [[2, 5], [11, 3]],
|
'y': [[11, 3]], 'Y': [[2, 5], [11, 3]],
|
||||||
'/': [[12, 3]], '?': [[2, 5], [12, 3]],
|
'j': [[12, 3]], 'J': [[2, 5], [12, 3]],
|
||||||
|
|
||||||
':': [[4, 4]], ';': [[4, 4], [4, 4]],
|
':': [[4, 4]], ';': [[4, 4], [4, 4]],
|
||||||
'-': [[9, 4]], '_': [[2, 5], [9, 4]],
|
'-': [[9, 4]], '_': [[2, 5], [9, 4]],
|
||||||
|
|
Loading…
Reference in New Issue