~ruther/qmk_firmware

aa9c6e9f59c5e45c6ea71cd3aa8fb037e88c11b6 — Gergely Nagy 9 years ago 86065dc
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>
A keyboards/ergodox/keymaps/algernon/NEWS.md => keyboards/ergodox/keymaps/algernon/NEWS.md +145 -0
@@ 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.

M keyboards/ergodox/keymaps/algernon/images/adore-layer.png => keyboards/ergodox/keymaps/algernon/images/adore-layer.png +0 -0
M keyboards/ergodox/keymaps/algernon/images/steno-layer.png => keyboards/ergodox/keymaps/algernon/images/steno-layer.png +0 -0
M keyboards/ergodox/keymaps/algernon/keymap.c => keyboards/ergodox/keymaps/algernon/keymap.c +24 -17
@@ 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 |
 * |-----------+------+------+------+------+-------------|           |------+------+------+------+------+------+-----------|
 * |        `~ |   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   | =         |
 * |-----------+------+------+------+------+------| 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(
// left hand
 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
,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)


@@ 190,9 190,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

                                                                // right hand
                                                               ,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
                                                               ,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

                                                               ,OSL(NMDIA),KC_DEL


@@ 386,7 386,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 6: Steno for Plover
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |        |      |      |      |      |      | BASE |           |      |      |      |      |      |      |        |
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |  BASE  |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |   #  |   #  |   #  |   #  |   #  |   #  |           |  #   |  #   |  #   |   #  |   #  |  #   |   #    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|


@@ 407,7 407,7 @@ 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,  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_LS,  PV_LT,  PV_LP,   PV_LH,  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,

                                                 // 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_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,


@@ 617,6 617,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
          register_code (KC_LGUI);
          if (record->tap.count && !record->tap.interrupted) {
            if (record->tap.count >= 2) {
              uprintf("CMD:appsel_start\n");
              layer_on (APPSEL);
              set_oneshot_layer (APPSEL, ONESHOT_START);
            }


@@ 695,15 696,15 @@ void matrix_init_user(void) {

LEADER_EXTERNS();

static void ang_tap (uint8_t code, ...) {
  uint8_t kc = code;
static void ang_tap (uint16_t code, ...) {
  uint16_t kc = code;
  va_list ap;

  va_start(ap, code);

  do {
    register_code(kc);
    unregister_code(kc);
    register_code16(kc);
    unregister_code16(kc);
    wait_ms(50);
    kc = va_arg(ap, int);
  } while (kc != 0);


@@ 866,6 867,17 @@ void matrix_scan_user(void) {
    leading = false;
    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
    SEQ_ONE_KEY (KC_D) {
      ergodox_led_all_on();


@@ 875,11 887,6 @@ void matrix_scan_user(void) {
    }
#endif

    SEQ_ONE_KEY (KC_Q) {
      register_code16 (LCTL(KC_1));
      unregister_code16 (LCTL(KC_1));
    }

    SEQ_ONE_KEY (KC_T) {
      time_travel = !time_travel;
    }

M keyboards/ergodox/keymaps/algernon/readme.md => keyboards/ergodox/keymaps/algernon/readme.md +1 -132
@@ 27,7 27,7 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs] 
    - [Unicode Symbol Input](#unicode-symbol-input)
* [Building](#building)
    - [Using on Windows](#using-on-windows)
* [Changelog](#changelog)
* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme)
* [License](#license)

# 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.

# 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

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.

M keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json => keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json +13 -14
@@ 111,11 111,11 @@
      "x": 3.5,
      "a": 6
    },
    "G",
    "C",
    {
      "x": 10.5
    },
    "C"
    "L"
  ],
  [
    {


@@ 128,11 128,11 @@
      "x": 1,
      "a": 6
    },
    "L",
    "H",
    {
      "x": 8.5
    },
    "H",
    "G",
    {
      "x": 1
    },


@@ 143,7 143,7 @@
      "y": -0.875,
      "x": 5.5
    },
    "M",
    "F",
    {
      "a": 4,
      "fa": [0, 0, 0],


@@ 158,7 158,7 @@
    {
      "a": 6
    },
    "F"
    "M"
  ],
  [
    {


@@ 167,7 167,7 @@
      "a": 4,
      "w": 1.5
    },
    "\n\n~\n`",
    "\n\n|\n\\",
    {
      "a": 6,
      "f": 3


@@ 175,14 175,14 @@
    "X",
    {
      "x": 14.5,
      "a": 6
      "a": 4
    },
    "Y",
    "/\n?",
    {
      "a": 4,
      "w": 1.5
    },
    "|\n\\"
    "~\n`"
  ],
  [
    {


@@ 312,7 312,7 @@
    {
      "x": 1
    },
    "J"
    "Y"
  ],
  [
    {


@@ 342,10 342,9 @@
    },
    "Z",
    {
      "x": 14.5,
      "a": 4
      "x": 14.5
    },
    "?\n/",
    "J",
    {
      "f": 9,
      "g": true,

M keyboards/ergodox/keymaps/algernon/tools/hid-commands => keyboards/ergodox/keymaps/algernon/tools/hid-commands +12 -0
@@ 1,6 1,8 @@
#!/bin/bash
set -e

LAST_APPSEL_START=0

cmd_wm () {
    WIN="$(xdotool getactivewindow)"
    wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz


@@ 34,6 36,16 @@ cmd_appsel_chrome () {
    _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 () {
    cat <<EOF
Use the source, Luke!

M keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py => keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py +5 -0
@@ 145,6 145,11 @@ class Heatmap(object):
                    usage[0][4] = usage[0][4] + self.log[(c, r)]
                else:
                    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:
                fc = c
                hand = 0

M keyboards/ergodox/keymaps/algernon/tools/text-to-log.py => keyboards/ergodox/keymaps/algernon/tools/text-to-log.py +12 -12
@@ 15,20 15,20 @@ charmap = {
    '6': [[11, 0]], '&': [[2, 5], [11, 0]],
    '8': [[12, 0]],

    '`': [[0, 1]], '~': [[2, 5], [0, 1]],
    'y': [[1, 1]], 'Y': [[2, 5], [1, 1]],
    '\\': [[0, 1]], '|': [[2, 5], [0, 1]],
    'x': [[1, 1]], 'X': [[2, 5], [1, 1]],
    'w': [[2, 1]], 'W': [[2, 5], [2, 1]],
    'g': [[3, 1]], 'G': [[2, 5], [3, 1]],
    'l': [[4, 1]], 'L': [[2, 5], [4, 1]],
    'm': [[5, 1]], 'M': [[2, 5], [5, 1]],
    'c': [[3, 1]], 'C': [[2, 5], [3, 1]],
    'h': [[4, 1]], 'H': [[2, 5], [4, 1]],
    'f': [[5, 1]], 'F': [[2, 5], [5, 1]],
    '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]],
    ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]],
    'f': [[8, 1]], 'F': [[2, 5], [8, 1]],
    'h': [[9, 1]], 'H': [[2, 5], [9, 1]],
    'c': [[10, 1]], 'C': [[2, 5], [10, 1]],
    'm': [[8, 1]], 'M': [[2, 5], [8, 1]],
    'g': [[9, 1]], 'G': [[2, 5], [9, 1]],
    'l': [[10, 1]], 'L': [[2, 5], [10, 1]],
    'p': [[11, 1]], 'P': [[2, 5], [11, 1]],
    'x': [[12, 1]], 'X': [[2, 5], [12, 1]],
    '\\': [[13, 1]], '|': [[2, 5], [13, 1]],
    '/': [[12, 1]], '?': [[2, 5], [12, 1]],
    '`': [[13, 1]], '~': [[2, 5], [13, 1]],

    '\t': [[0, 2]],
    'a': [[1, 2]], 'A': [[2, 5], [1, 2]],


@@ 51,8 51,8 @@ charmap = {
    'b': [[8, 3]], 'B': [[2, 5], [8, 3]],
    'k': [[9, 3]], 'K': [[2, 5], [9, 3]],
    'v': [[10, 3]], 'V': [[2, 5], [10, 3]],
    'j': [[11, 3]], 'J': [[2, 5], [11, 3]],
    '/': [[12, 3]], '?': [[2, 5], [12, 3]],
    'y': [[11, 3]], 'Y': [[2, 5], [11, 3]],
    'j': [[12, 3]], 'J': [[2, 5], [12, 3]],

    ':': [[4, 4]], ';': [[4, 4], [4, 4]],
    '-': [[9, 4]], '_': [[2, 5], [9, 4]],