aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGergely Nagy <algernon@madhouse-project.org>2017-10-01 15:37:41 +0200
committerJack Humbert <jack.humb@gmail.com>2017-10-03 07:54:56 -1000
commit1cd336dde4dad00864cfef643c501e2a32704426 (patch)
treed176c4af27b93310680afe207d46199867b8d0e9
parentcc52ac5b1634f61c8333bb653be0bc3d0a3c3da6 (diff)
downloadqmk_firmware-1cd336dde4dad00864cfef643c501e2a32704426.tar.gz
qmk_firmware-1cd336dde4dad00864cfef643c501e2a32704426.zip
ergodox: Update algernon's layout to v1.11
Overall changes =============== * Updated to work with QMK master. * The `$` and `^` symbols on the number row were swapped on both the base and the ADORE layers. * The bracket tap-dance keys can now be used to input Japanese brackets, `「` and `」` with a third tap. * The second column of the top row on the right side will act as a "Social" application selector on the `AppSel` layer. * The third key on the same column will select a password manager. * The `GUI` key will now launch `rofi` when triple-tapped. Miscellaneous ============= * The `👶` symbol can be entered with UCIS. * The `👪` symbol can be entered with UCIS. Tools ===== * `tools/hid-commands` can now find the `Mstdn`, not just `Slack`, as the "Slack"/chat app. * `tools/hid-commands` can now find the Plex web app as a music/media player. * `tools/hid-commands` now understands the "Social" application selector. It raises the `Mstdn` and `Tweetdeck` windows, but keeps focus on the previous window. * `tools/hid-commands` now understands the "Social2" application selector, which raises `Signal` and `Viber`, but keeps focus on the previous window. * `tools/hid-commands` is now able to select a password manager (KeePass*). * `tools/hid-commands` can now run `rofi` when receiving an `appsel_helper` command (triggered by a triple-tapped `GUI` key). Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
-rw-r--r--layouts/community/ergodox/algernon/NEWS.md27
-rw-r--r--layouts/community/ergodox/algernon/keymap.c124
-rw-r--r--layouts/community/ergodox/algernon/readme.md23
-rw-r--r--layouts/community/ergodox/algernon/rules.mk8
-rwxr-xr-x[-rw-r--r--]layouts/community/ergodox/algernon/tools/hid-commands39
-rwxr-xr-x[-rw-r--r--]layouts/community/ergodox/algernon/tools/log-to-heatmap.py0
-rwxr-xr-x[-rw-r--r--]layouts/community/ergodox/algernon/tools/text-to-log.py0
7 files changed, 181 insertions, 40 deletions
diff --git a/layouts/community/ergodox/algernon/NEWS.md b/layouts/community/ergodox/algernon/NEWS.md
index ee9d60670..1bc2b5dc6 100644
--- a/layouts/community/ergodox/algernon/NEWS.md
+++ b/layouts/community/ergodox/algernon/NEWS.md
@@ -1,5 +1,32 @@
1<!-- -*- mode: markdown; fill-column: 8192 -*- --> 1<!-- -*- mode: markdown; fill-column: 8192 -*- -->
2 2
3## v1.11
4
5*2017-10-01*
6
7### Overall changes
8
9* Updated to work with QMK master.
10* The `$` and `^` symbols on the number row were swapped on both the base and the ADORE layers.
11* The bracket tap-dance keys can now be used to input Japanese brackets, `「` and `」` with a third tap.
12* The second column of the top row on the right side will act as a "Social" application selector on the `AppSel` layer.
13* The third key on the same column will select a password manager.
14* The `GUI` key will now launch `rofi` when triple-tapped.
15
16### Miscellaneous
17
18* The `👶` symbol can be entered with UCIS.
19* The `👪` symbol can be entered with UCIS.
20
21### Tools
22
23* `tools/hid-commands` can now find the `Mstdn`, not just `Slack`, as the "Slack"/chat app.
24* `tools/hid-commands` can now find the Plex web app as a music/media player.
25* `tools/hid-commands` now understands the "Social" application selector. It raises the `Mstdn` and `Tweetdeck` windows, but keeps focus on the previous window.
26* `tools/hid-commands` now understands the "Social2" application selector, which raises `Signal` and `Viber`, but keeps focus on the previous window.
27* `tools/hid-commands` is now able to select a password manager (KeePass*).
28* `tools/hid-commands` can now run `rofi` when receiving an `appsel_helper` command (triggered by a triple-tapped `GUI` key).
29
3## v1.10 30## v1.10
4 31
5*2016-12-28* 32*2016-12-28*
diff --git a/layouts/community/ergodox/algernon/keymap.c b/layouts/community/ergodox/algernon/keymap.c
index 8be54986f..ebdc4ab4e 100644
--- a/layouts/community/ergodox/algernon/keymap.c
+++ b/layouts/community/ergodox/algernon/keymap.c
@@ -36,11 +36,14 @@ enum {
36 A_MPN, 36 A_MPN,
37 37
38 // Application select keys 38 // Application select keys
39 APP_SLK, // Slack 39 APP_SLK, // Slack
40 APP_EMCS, // Emacs 40 APP_EMCS, // Emacs
41 APP_TERM, // Terminal 41 APP_TERM, // Terminal
42 APP_CHRM, // Chrome 42 APP_CHRM, // Chrome
43 APP_MSIC, // Music 43 APP_MSIC, // Music
44 APP_SOCL, // Social
45 APP_PMGR, // Password manager
46 APP_SCL2, // Social #2
44 47
45 // Hungarian layer keys 48 // Hungarian layer keys
46 HU_AA, // Á 49 HU_AA, // Á
@@ -252,7 +255,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
252/* Keymap 3: Application select layer 255/* Keymap 3: Application select layer
253 * 256 *
254 * ,-----------------------------------------------------. ,-----------------------------------------------------. 257 * ,-----------------------------------------------------. ,-----------------------------------------------------.
255 * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | | 258 * | |Music |Slack |Emacs |Term |Chrome| | | |Social|PWMgr |Scl2 | | | |
256 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 259 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
257 * | | | | | | | | | | | | | | | | 260 * | | | | | | | | | | | | | | | |
258 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| 261 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
@@ -283,16 +286,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
283 ,KC_TRNS 286 ,KC_TRNS
284 ,KC_TRNS ,KC_TRNS ,KC_TRNS 287 ,KC_TRNS ,KC_TRNS ,KC_TRNS
285 288
286 // right hand 289 // right hand
287 ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS 290 ,KC_TRNS ,M(APP_SOCL) ,M(APP_PMGR) ,M(APP_SCL2) ,KC_NO ,KC_NO ,KC_TRNS
288 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS 291 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
289 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS 292 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
290 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS 293 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
291 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS 294 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
292 295
293 ,KC_TRNS ,KC_TRNS 296 ,KC_TRNS ,KC_TRNS
294 ,KC_TRNS 297 ,KC_TRNS
295 ,KC_TRNS ,KC_TRNS ,KC_TRNS 298 ,KC_TRNS ,KC_TRNS ,KC_TRNS
296 ), 299 ),
297 300
298 301
@@ -376,8 +379,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
376 379
377 // right hand 380 // right hand
378 ,KC_TRNS ,KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO 381 ,KC_TRNS ,KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO
379 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 382 ,KC_NO ,KC_NO ,KC_NO ,KC_UP ,KC_NO ,KC_NO ,KC_NO
380 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 383 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_NO ,KC_NO
381 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 384 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
382 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 385 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
383 386
@@ -536,10 +539,10 @@ static void ang_handle_num_row(uint8_t id, keyrecord_t *record) {
536 kc = KC_8; 539 kc = KC_8;
537 break; 540 break;
538 case A_3: 541 case A_3:
539 kc = KC_6; 542 kc = KC_4;
540 break; 543 break;
541 case A_1: 544 case A_1:
542 kc = KC_4; 545 kc = KC_6;
543 break; 546 break;
544 547
545 case A_0: 548 case A_0:
@@ -630,10 +633,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
630 if (record->event.pressed) { 633 if (record->event.pressed) {
631 register_code (KC_LGUI); 634 register_code (KC_LGUI);
632 if (record->tap.count && !record->tap.interrupted) { 635 if (record->tap.count && !record->tap.interrupted) {
633 if (record->tap.count >= 2) { 636 if (record->tap.count == 2) {
634 uprintf("CMD:appsel_start\n"); 637 uprintf("CMD:appsel_start\n");
635 layer_on (APPSEL); 638 layer_on (APPSEL);
636 set_oneshot_layer (APPSEL, ONESHOT_START); 639 set_oneshot_layer (APPSEL, ONESHOT_START);
640 } else if (record->tap.count >= 3) {
641 uprintf("CMD:appsel_helper\n");
642 layer_off (APPSEL);
643 clear_oneshot_layer_state (ONESHOT_PRESSED);
637 } 644 }
638 } else { 645 } else {
639 record->tap.count = 0; 646 record->tap.count = 0;
@@ -673,6 +680,21 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
673 uprintf("CMD:appsel_music\n"); 680 uprintf("CMD:appsel_music\n");
674 break; 681 break;
675 682
683 case APP_SOCL:
684 if (record->event.pressed)
685 uprintf("CMD:appsel_social\n");
686 break;
687
688 case APP_PMGR:
689 if (record->event.pressed)
690 uprintf("CMD:appsel_pwmgr\n");
691 break;
692
693 case APP_SCL2:
694 if (record->event.pressed)
695 uprintf("CMD:appsel_social2\n");
696 break;
697
676 // number row and symbols 698 // number row and symbols
677 case A_1 ... A_0: 699 case A_1 ... A_0:
678 ang_handle_num_row(id, record); 700 ang_handle_num_row(id, record);
@@ -844,14 +866,53 @@ _td_sr_reset (qk_tap_dance_state_t *state, void *user_data) {
844 } 866 }
845} 867}
846 868
869static void
870_td_brackets_finished (qk_tap_dance_state_t *state, void *user_data) {
871 if (state->count == 1) {
872 if (state->keycode == TD(CT_LBP))
873 register_code16 (KC_LBRC);
874 else
875 register_code16 (KC_RBRC);
876 } else if (state->count == 2) {
877 if (state->keycode == TD(CT_LBP))
878 register_code16 (KC_LPRN);
879 else
880 register_code16 (KC_RPRN);
881 } else if (state->count == 3) {
882 unicode_input_start();
883
884 if (state->keycode == TD(CT_LBP))
885 register_hex (0x300c);
886 else
887 register_hex (0x300d);
888
889 unicode_input_finish();
890 }
891}
892
893static void
894_td_brackets_reset (qk_tap_dance_state_t *state, void *user_data) {
895 if (state->count == 1) {
896 if (state->keycode == TD(CT_LBP))
897 unregister_code16 (KC_LBRC);
898 else
899 unregister_code16 (KC_RBRC);
900 } else if (state->count == 2) {
901 if (state->keycode == TD(CT_LBP))
902 unregister_code16 (KC_LPRN);
903 else
904 unregister_code16 (KC_RPRN);
905 }
906}
907
847qk_tap_dance_action_t tap_dance_actions[] = { 908qk_tap_dance_action_t tap_dance_actions[] = {
848 [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) 909 [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
849 ,[CT_TA] = { 910 ,[CT_TA] = {
850 .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset }, 911 .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
851 .user_data = (void *)&((td_ta_state_t) { false, false }) 912 .user_data = (void *)&((td_ta_state_t) { false, false })
852 } 913 }
853 ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN) 914 ,[CT_LBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset)
854 ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) 915 ,[CT_RBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset)
855 ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished) 916 ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
856 ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select) 917 ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
857 ,[CT_SR] = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset) 918 ,[CT_SR] = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset)
@@ -934,6 +995,29 @@ void matrix_scan_user(void) {
934 KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0); 995 KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0);
935 } 996 }
936 997
998 SEQ_ONE_KEY (KC_K) {
999 ang_tap (KC_SPC, LSFT(KC_7), KC_SPC, 0);
1000 register_code(KC_LCTL);
1001 register_code(KC_LSFT);
1002 register_code(KC_U);
1003 unregister_code(KC_U);
1004 unregister_code(KC_LSFT);
1005 unregister_code(KC_LCTL);
1006 ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0);
1007 register_code (KC_ENT);
1008 unregister_code (KC_ENT);
1009 ang_tap (KC_END, 0);
1010 register_code(KC_LCTL);
1011 register_code(KC_LSFT);
1012 register_code(KC_U);
1013 unregister_code(KC_U);
1014 unregister_code(KC_LSFT);
1015 unregister_code(KC_LCTL);
1016 ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0);
1017 register_code (KC_SPC);
1018 unregister_code (KC_SPC);
1019 }
1020
937 SEQ_ONE_KEY (KC_G) { 1021 SEQ_ONE_KEY (KC_G) {
938 ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O, 1022 ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O,
939 KC_RALT, KC_EQL, KC_O, 1023 KC_RALT, KC_EQL, KC_O,
@@ -1040,7 +1124,9 @@ const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
1040 UCIS_SYM("pi", 0x03c0), 1124 UCIS_SYM("pi", 0x03c0),
1041 UCIS_SYM("mouse", 0x1f401), 1125 UCIS_SYM("mouse", 0x1f401),
1042 UCIS_SYM("micro", 0x00b5), 1126 UCIS_SYM("micro", 0x00b5),
1043 UCIS_SYM("tm", 0x2122) 1127 UCIS_SYM("tm", 0x2122),
1128 UCIS_SYM("child", 0x1f476),
1129 UCIS_SYM("family", 0x1F46A)
1044); 1130);
1045 1131
1046bool process_record_user (uint16_t keycode, keyrecord_t *record) { 1132bool process_record_user (uint16_t keycode, keyrecord_t *record) {
diff --git a/layouts/community/ergodox/algernon/readme.md b/layouts/community/ergodox/algernon/readme.md
index 4c1fb15ff..03b094edb 100644
--- a/layouts/community/ergodox/algernon/readme.md
+++ b/layouts/community/ergodox/algernon/readme.md
@@ -34,13 +34,13 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs]
34 34
35## Base layer 35## Base layer
36 36
37[![Base layer](https://i.imgur.com/q1MDvq4.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b) 37[![Base layer](https://github.com/algernon/ergodox-layout/raw/master/images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
38 38
39At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave: 39At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
40 40
41* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer. 41* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer.
42* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap. 42* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap.
43* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout. 43* The `GUI` key is special, because while a single tap works as usual, when double-tapped, it turns the number row into an application selector, and when triple tapped, it runs an application selector program on the host.
44* 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. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. 44* 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. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode.
45* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle. 45* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle.
46* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`. 46* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`.
@@ -57,12 +57,12 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest
57 - `LEAD d` toggles logging keypress positions to the HID console. 57 - `LEAD d` toggles logging keypress positions to the HID console.
58 - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. 58 - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader.
59 - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode. 59 - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode.
60 60
61The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front. 61The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front.
62 62
63## ADORE layer 63## ADORE layer
64 64
65[![ADORE layer](https://i.imgur.com/r3LnQAA.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a) 65[![ADORE layer](https://github.com/algernon/ergodox-layout/raw/master/images/adore-layer.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
66 66
67My experimental layout, that I keep tweaking. No full description here, because things are very much in flux. 67My experimental layout, that I keep tweaking. No full description here, because things are very much in flux.
68 68
@@ -70,7 +70,7 @@ Note that the **HUN** layer does not work well with ADORE: it still has the same
70 70
71## Steno layer 71## Steno layer
72 72
73[![Steno layer for Plover](https://i.imgur.com/PgifhBF.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667) 73[![Steno layer for Plover](https://github.com/algernon/ergodox-layout/raw/master/images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
74 74
75This 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. 75This 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.
76 76
@@ -110,7 +110,7 @@ Included with the firmware is a small tool that can parse these logs, and create
110 110
111The generated heatmap looks somewhat like this: 111The generated heatmap looks somewhat like this:
112 112
113 ![Heatmap](https://i.imgur.com/tly9XSy.png) 113 ![Heatmap](https://github.com/algernon/ergodox-layout/raw/master/images/heatmap.png)
114 114
115## Layer notification 115## Layer notification
116 116
@@ -118,7 +118,7 @@ There is a very small tool in `tools/layer-notify`, that listens to the HID cons
118 118
119# Building 119# Building
120 120
121To 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 to something like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this: 121To 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 to something like `layouts/community/algernon_master`, or symlinked there. One way to achieve that is this:
122 122
123 [algernon:ez-layout]: https://github.com/algernon/ergodox-layout 123 [algernon:ez-layout]: https://github.com/algernon/ergodox-layout
124 [qmk]: https://github.com/qmk/qmk_firmware 124 [qmk]: https://github.com/qmk/qmk_firmware
@@ -127,14 +127,14 @@ To make my workflow easier, this layout is maintained in [its own repository][al
127$ git clone https://github.com/qmk/qmk_firmware.git 127$ git clone https://github.com/qmk/qmk_firmware.git
128$ cd qmk_firmware 128$ cd qmk_firmware
129$ git clone https://github.com/algernon/ergodox-layout.git \ 129$ git clone https://github.com/algernon/ergodox-layout.git \
130 keyboards/ergodox/keymaps/algernon-master 130 layouts/community/ergodox/algernon_master
131$ make keyboard=ergodox keymap=algernon-master 131$ make ergodox_ez-algernon_master
132``` 132```
133 133
134From time to time, updates may be submitted back to the QMK repository. If you 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): 134From time to time, updates may be submitted back to the QMK repository. If you 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):
135 135
136``` 136```
137$ make keyboard=ergodox keymap=algernon 137$ make ergodox_ez-algernon
138``` 138```
139 139
140## Using on Windows 140## Using on Windows
@@ -144,6 +144,3 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the
144# License 144# License
145 145
146The 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. 146The 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.
147
148![nav-n-media-layer.png](https://i.imgur.com/AReX8C9.png)
149![hun-layer.png](https://i.imgur.com/uPGBl9J.png) \ No newline at end of file
diff --git a/layouts/community/ergodox/algernon/rules.mk b/layouts/community/ergodox/algernon/rules.mk
index 4487dd812..f795a8676 100644
--- a/layouts/community/ergodox/algernon/rules.mk
+++ b/layouts/community/ergodox/algernon/rules.mk
@@ -1,15 +1,15 @@
1BOOTMAGIC_ENABLE=no 1BOOTMAGIC_ENABLE=no
2COMMAND_ENABLE=no 2COMMAND_ENABLE=no
3SLEEP_LED_ENABLE=no 3SLEEP_LED_ENABLE=no
4FORCE_NKRO = yes 4FORCE_NKRO ?= yes
5DEBUG_ENABLE = no 5DEBUG_ENABLE = no
6CONSOLE_ENABLE = no 6CONSOLE_ENABLE = no
7TAP_DANCE_ENABLE = yes 7TAP_DANCE_ENABLE = yes
8KEYLOGGER_ENABLE = yes 8KEYLOGGER_ENABLE ?= yes
9UCIS_ENABLE = yes 9UCIS_ENABLE = yes
10MOUSEKEY_ENABLE = no 10MOUSEKEY_ENABLE = no
11 11
12AUTOLOG_ENABLE = no 12AUTOLOG_ENABLE ?= no
13 13
14ifeq (${FORCE_NKRO},yes) 14ifeq (${FORCE_NKRO},yes)
15OPT_DEFS += -DFORCE_NKRO 15OPT_DEFS += -DFORCE_NKRO
@@ -39,5 +39,3 @@ LAYOUT_ergodox_BRANCH = $(shell \
39 git rev-parse --abbrev-ref HEAD 2>/dev/null) 39 git rev-parse --abbrev-ref HEAD 2>/dev/null)
40 40
41OPT_DEFS += -DLAYOUT_ergodox_VERSION=\"$(LAYOUT_ergodox_VERSION)\\\#$(LAYOUT_ergodox_BRANCH)\" 41OPT_DEFS += -DLAYOUT_ergodox_VERSION=\"$(LAYOUT_ergodox_VERSION)\\\#$(LAYOUT_ergodox_BRANCH)\"
42
43
diff --git a/layouts/community/ergodox/algernon/tools/hid-commands b/layouts/community/ergodox/algernon/tools/hid-commands
index 54ca7556a..86bff2978 100644..100755
--- a/layouts/community/ergodox/algernon/tools/hid-commands
+++ b/layouts/community/ergodox/algernon/tools/hid-commands
@@ -10,6 +10,10 @@ cmd_wm () {
10 wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz 10 wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz
11} 11}
12 12
13cmd_appsel_helper () {
14 rofi -show window
15}
16
13_cmd_appsel () { 17_cmd_appsel () {
14 wmctrl -x -a $1 || true 18 wmctrl -x -a $1 || true
15 xdotool key Escape 19 xdotool key Escape
@@ -17,12 +21,14 @@ _cmd_appsel () {
17 21
18cmd_appsel_music () { 22cmd_appsel_music () {
19 wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \ 23 wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \
20 wmctrl -x -a banshee || wmctrl -x -a kodi || true 24 wmctrl -x -a banshee || wmctrl -x -a kodi || \
25 wmctrl -x -a plex || true
21 xdotool key Escape 26 xdotool key Escape
22} 27}
23 28
24cmd_appsel_slack () { 29cmd_appsel_slack () {
25 _cmd_appsel slack 30 wmctrl -x -a slack || wmctrl -x -a Mstdn || true
31 xdotool key Escape
26} 32}
27 33
28cmd_appsel_emacs () { 34cmd_appsel_emacs () {
@@ -34,7 +40,8 @@ cmd_appsel_term () {
34} 40}
35 41
36cmd_appsel_chrome () { 42cmd_appsel_chrome () {
37 _cmd_appsel chrom 43 wmctrl -x -a chrom || wmctrl -x -a Chrome || true
44 xdotool key Escape
38} 45}
39 46
40cmd_appsel_start () { 47cmd_appsel_start () {
@@ -51,6 +58,32 @@ cmd_appsel_start () {
51 -i /usr/share/icons/Adwaita/24x24/devices/video-display.png 58 -i /usr/share/icons/Adwaita/24x24/devices/video-display.png
52} 59}
53 60
61cmd_appsel_social () {
62 # Save the current window
63 a=$(xdotool getactivewindow)
64 # Raise & Focus Mstdn & Tweetdeck
65 wmctrl -x -a trunk.mad-scientist.club.Google-chrome || true; wmctrl -x -a tweetdeck || true
66 # Focus the previously active window
67 xdotool windowfocus $a || true; xdotool windowactivate $a || true
68
69 xdotool key Escape
70}
71
72cmd_appsel_social2 () {
73 # Save the current window
74 a=$(xdotool getactivewindow)
75 # Raise & Focus Viber & Signal
76 wmctrl -x -a Viber || true; wmctrl -a Signal || true
77 # Focus the previously active window
78 xdotool windowfocus $a || true; xdotool windowactivate $a || true
79
80 xdotool key Escape
81}
82
83cmd_appsel_pwmgr () {
84 _cmd_appsel keepass
85}
86
54cmd_reflash () { 87cmd_reflash () {
55 teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true 88 teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true
56} 89}
diff --git a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py b/layouts/community/ergodox/algernon/tools/log-to-heatmap.py
index e927e0e39..e927e0e39 100644..100755
--- a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py
+++ b/layouts/community/ergodox/algernon/tools/log-to-heatmap.py
diff --git a/layouts/community/ergodox/algernon/tools/text-to-log.py b/layouts/community/ergodox/algernon/tools/text-to-log.py
index f080c32cd..f080c32cd 100644..100755
--- a/layouts/community/ergodox/algernon/tools/text-to-log.py
+++ b/layouts/community/ergodox/algernon/tools/text-to-log.py