aboutsummaryrefslogtreecommitdiffstats
path: root/layouts/community/ergodox/algernon/keymap.c
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 /layouts/community/ergodox/algernon/keymap.c
parentcc52ac5b1634f61c8333bb653be0bc3d0a3c3da6 (diff)
downloadfirmware-1cd336dde4dad00864cfef643c501e2a32704426.tar.gz
firmware-1cd336dde4dad00864cfef643c501e2a32704426.tar.bz2
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>
Diffstat (limited to 'layouts/community/ergodox/algernon/keymap.c')
-rw-r--r--layouts/community/ergodox/algernon/keymap.c124
1 files changed, 105 insertions, 19 deletions
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 {
A_MPN,
// Application select keys
- APP_SLK, // Slack
+ APP_SLK, // Slack
APP_EMCS, // Emacs
APP_TERM, // Terminal
APP_CHRM, // Chrome
APP_MSIC, // Music
+ APP_SOCL, // Social
+ APP_PMGR, // Password manager
+ APP_SCL2, // Social #2
// Hungarian layer keys
HU_AA, // Á
@@ -252,7 +255,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 3: Application select layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | |
+ * | |Music |Slack |Emacs |Term |Chrome| | | |Social|PWMgr |Scl2 | | | |
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
* | | | | | | | | | | | | | | | |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
@@ -283,16 +286,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS
- // right hand
- ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,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
+ // right hand
+ ,KC_TRNS ,M(APP_SOCL) ,M(APP_PMGR) ,M(APP_SCL2) ,KC_NO ,KC_NO ,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_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
),
@@ -376,8 +379,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// right hand
,KC_TRNS ,KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,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_UP ,KC_NO ,KC_NO ,KC_NO
+ ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RGHT ,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
@@ -536,10 +539,10 @@ static void ang_handle_num_row(uint8_t id, keyrecord_t *record) {
kc = KC_8;
break;
case A_3:
- kc = KC_6;
+ kc = KC_4;
break;
case A_1:
- kc = KC_4;
+ kc = KC_6;
break;
case A_0:
@@ -630,10 +633,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed) {
register_code (KC_LGUI);
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);
set_oneshot_layer (APPSEL, ONESHOT_START);
+ } else if (record->tap.count >= 3) {
+ uprintf("CMD:appsel_helper\n");
+ layer_off (APPSEL);
+ clear_oneshot_layer_state (ONESHOT_PRESSED);
}
} else {
record->tap.count = 0;
@@ -673,6 +680,21 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
uprintf("CMD:appsel_music\n");
break;
+ case APP_SOCL:
+ if (record->event.pressed)
+ uprintf("CMD:appsel_social\n");
+ break;
+
+ case APP_PMGR:
+ if (record->event.pressed)
+ uprintf("CMD:appsel_pwmgr\n");
+ break;
+
+ case APP_SCL2:
+ if (record->event.pressed)
+ uprintf("CMD:appsel_social2\n");
+ break;
+
// number row and symbols
case A_1 ... A_0:
ang_handle_num_row(id, record);
@@ -844,14 +866,53 @@ _td_sr_reset (qk_tap_dance_state_t *state, void *user_data) {
}
}
+static void
+_td_brackets_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ if (state->keycode == TD(CT_LBP))
+ register_code16 (KC_LBRC);
+ else
+ register_code16 (KC_RBRC);
+ } else if (state->count == 2) {
+ if (state->keycode == TD(CT_LBP))
+ register_code16 (KC_LPRN);
+ else
+ register_code16 (KC_RPRN);
+ } else if (state->count == 3) {
+ unicode_input_start();
+
+ if (state->keycode == TD(CT_LBP))
+ register_hex (0x300c);
+ else
+ register_hex (0x300d);
+
+ unicode_input_finish();
+ }
+}
+
+static void
+_td_brackets_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ if (state->keycode == TD(CT_LBP))
+ unregister_code16 (KC_LBRC);
+ else
+ unregister_code16 (KC_RBRC);
+ } else if (state->count == 2) {
+ if (state->keycode == TD(CT_LBP))
+ unregister_code16 (KC_LPRN);
+ else
+ unregister_code16 (KC_RPRN);
+ }
+}
+
qk_tap_dance_action_t tap_dance_actions[] = {
[CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
,[CT_TA] = {
.fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
.user_data = (void *)&((td_ta_state_t) { false, false })
}
- ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN)
- ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
+ ,[CT_LBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset)
+ ,[CT_RBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset)
,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
,[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) {
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_K) {
+ ang_tap (KC_SPC, LSFT(KC_7), KC_SPC, 0);
+ register_code(KC_LCTL);
+ register_code(KC_LSFT);
+ register_code(KC_U);
+ unregister_code(KC_U);
+ unregister_code(KC_LSFT);
+ unregister_code(KC_LCTL);
+ ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0);
+ register_code (KC_ENT);
+ unregister_code (KC_ENT);
+ ang_tap (KC_END, 0);
+ register_code(KC_LCTL);
+ register_code(KC_LSFT);
+ register_code(KC_U);
+ unregister_code(KC_U);
+ unregister_code(KC_LSFT);
+ unregister_code(KC_LCTL);
+ ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0);
+ register_code (KC_SPC);
+ unregister_code (KC_SPC);
+ }
+
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,
@@ -1040,7 +1124,9 @@ const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
UCIS_SYM("pi", 0x03c0),
UCIS_SYM("mouse", 0x1f401),
UCIS_SYM("micro", 0x00b5),
- UCIS_SYM("tm", 0x2122)
+ UCIS_SYM("tm", 0x2122),
+ UCIS_SYM("child", 0x1f476),
+ UCIS_SYM("family", 0x1F46A)
);
bool process_record_user (uint16_t keycode, keyrecord_t *record) {