Update the ergodox/algernon keymap to v1.7
Overall changes =============== * The number row has been completely rearranged on both the **Base** and the **ADORE** 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** and **ADORE** 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. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
This commit is contained in:
parent
a258358b6c
commit
3e128552d9
13 changed files with 619 additions and 478 deletions
|
@ -8,7 +8,6 @@
|
|||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "action_util.h"
|
||||
#include "mousekey.h"
|
||||
#include "timer.h"
|
||||
#include "keymap_plover.h"
|
||||
#include "eeconfig.h"
|
||||
|
@ -36,18 +35,6 @@ enum {
|
|||
A_PLVR,
|
||||
A_MPN,
|
||||
|
||||
// Function / number keys
|
||||
KF_1, // 1, F1
|
||||
KF_2, // 2, F2
|
||||
KF_3, // ...
|
||||
KF_4,
|
||||
KF_5,
|
||||
KF_6,
|
||||
KF_7,
|
||||
KF_8,
|
||||
KF_9,
|
||||
KF_10,
|
||||
|
||||
// Application select keys
|
||||
APP_SLK, // Slack
|
||||
APP_EMCS, // Emacs
|
||||
|
@ -55,17 +42,6 @@ enum {
|
|||
APP_CHRM, // Chrome
|
||||
APP_MSIC, // Music
|
||||
|
||||
// Diagonal mouse movement
|
||||
A_MUL,
|
||||
A_MUR,
|
||||
A_MDL,
|
||||
A_MDR,
|
||||
|
||||
// Mouse acceleration
|
||||
A_ACL0,
|
||||
A_ACL1,
|
||||
A_ACL2,
|
||||
|
||||
// Hungarian layer keys
|
||||
HU_AA, // Á
|
||||
HU_OO, // Ó
|
||||
|
@ -76,6 +52,18 @@ enum {
|
|||
HU_UE, // Ü
|
||||
HU_OEE, // Ő
|
||||
HU_UEE, // Ű
|
||||
|
||||
// number/symbol keys
|
||||
A_1, // 1
|
||||
A_2, // 2
|
||||
A_3, // ...
|
||||
A_4,
|
||||
A_5,
|
||||
A_6,
|
||||
A_7,
|
||||
A_8,
|
||||
A_9,
|
||||
A_0,
|
||||
};
|
||||
|
||||
/* Fn keys */
|
||||
|
@ -95,7 +83,9 @@ enum {
|
|||
CT_CLN = 0,
|
||||
CT_TA,
|
||||
CT_LBP,
|
||||
CT_RBP
|
||||
CT_RBP,
|
||||
CT_TMUX,
|
||||
CT_TPS,
|
||||
};
|
||||
|
||||
/* States & timers */
|
||||
|
@ -114,6 +104,8 @@ bool log_enable = false;
|
|||
|
||||
bool time_travel = false;
|
||||
|
||||
static uint8_t is_adore = 0;
|
||||
|
||||
/* The Keymap */
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
@ -121,13 +113,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
/* Keymap 0: Base Layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
|
||||
* | Next/Prev | 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ |
|
||||
* |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
|
||||
* | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow |
|
||||
* |-----------+------+------+------+------+------| : | | - |------+------+------+------+------+-----------|
|
||||
* | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop |
|
||||
* |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------|
|
||||
* | Play/Pause| / | Q | J | K | X | | | Pane | B | M | W | V | Z | Stop |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | : | | - | | | | |
|
||||
* `-----------------------------------' `-----------------------------------'
|
||||
|
@ -141,22 +133,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
*/
|
||||
[BASE] = KEYMAP(
|
||||
// left hand
|
||||
M(A_MPN) ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
|
||||
,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP)
|
||||
,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
|
||||
,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_CLN)
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
|
||||
M(A_MPN) ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11
|
||||
,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP)
|
||||
,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
|
||||
,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_TMUX)
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
|
||||
|
||||
,F(F_ALT),F(F_GUI)
|
||||
,F(F_CTRL)
|
||||
,KC_BSPC,F(F_SFT),KC_ESC
|
||||
|
||||
// right hand
|
||||
,KC_F12 ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
|
||||
,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
|
||||
,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
|
||||
,KC_MINS ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
|
||||
,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,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_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
|
||||
,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
|
||||
,TD(CT_TPS),KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
|
||||
,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
|
||||
,OSL(NMDIA),KC_DEL
|
||||
,KC_LEAD
|
||||
|
@ -166,15 +158,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
/* Keymap 1: Adore layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
|
||||
* | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | `~ | Y | W | G | L | M | ( | | ) | F | H | C | P | X | \ |
|
||||
* | `~ | X | W | G | L | M | ( | | ) | F | H | C | P | Y | \ |
|
||||
* |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
|
||||
* | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | Z | Q | ' | , | . | : | | - | B | K | V | J | / | |
|
||||
* |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------|
|
||||
* | | Z | Q | ' | , | . | | | pane | B | K | V | J | / | |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | : | | - | | | | |
|
||||
* `-----------------------------------' `-----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | LAlt | GUI | | MDIA | Del |
|
||||
|
@ -186,22 +178,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
*/
|
||||
[ADORE] = KEYMAP(
|
||||
// left hand
|
||||
KC_MPLY ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
|
||||
,KC_GRV ,KC_Y ,KC_W ,KC_G ,KC_L ,KC_M ,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_CLN)
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
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)
|
||||
,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)
|
||||
|
||||
,F(F_ALT),F(F_GUI)
|
||||
,F(F_CTRL)
|
||||
,KC_BSPC,F(F_SFT),KC_ESC
|
||||
|
||||
// right hand
|
||||
,KC_F12 ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
|
||||
,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_X ,KC_BSLS
|
||||
,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL
|
||||
,KC_MINS ,KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,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
|
||||
,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
|
||||
,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
|
||||
,OSL(NMDIA),KC_DEL
|
||||
,F(F_HUN)
|
||||
|
@ -350,45 +342,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
/* Keymap 5: Navigation & Media layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | |
|
||||
* | | F9 | F7 | F5 | F3 | F1 | | |ScrLCK| F10 | F2 | F4 | F6 | F8 | |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen|
|
||||
* |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------|
|
||||
* | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | |
|
||||
* |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------|
|
||||
* | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop |
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | |------| |------| | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Mute | VlUp | | BASE | MClk |
|
||||
* | Mute | VlUp | | BASE | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | VlDn | | Prev |Left |Right |
|
||||
* | SPC | Enter|------| |------| Click| Click|
|
||||
* | | | ESC | | Next | | |
|
||||
* | | | VlDn | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NMDIA] = KEYMAP(
|
||||
// left hand
|
||||
M(A_ACL0) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L)
|
||||
,M(A_ACL1) ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO
|
||||
,M(A_ACL2) ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO
|
||||
,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO
|
||||
KC_NO ,KC_F9 ,KC_F7 ,KC_F5 ,KC_F3 ,KC_F1 ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_MUTE ,KC_VOLU
|
||||
,KC_VOLD
|
||||
,KC_SPC,KC_ENTER,KC_ESC
|
||||
,KC_NO ,KC_NO ,KC_TRNS
|
||||
|
||||
// right hand
|
||||
,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR
|
||||
,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
|
||||
,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP
|
||||
,LGUI(KC_L),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_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
|
||||
,KC_TRNS ,KC_MS_BTN3
|
||||
,KC_MPRV
|
||||
,KC_MNXT ,KC_BTN1 ,KC_BTN2
|
||||
,KC_TRNS ,KC_NO
|
||||
,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO
|
||||
),
|
||||
|
||||
/* Keymap 6: Steno for Plover
|
||||
|
@ -514,40 +506,62 @@ static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_c
|
|||
return MACRO_NONE;
|
||||
}
|
||||
|
||||
static bool from_appsel;
|
||||
static void ang_handle_num_row(uint8_t id, keyrecord_t *record) {
|
||||
uint8_t idx = id - A_1;
|
||||
uint8_t kc;
|
||||
static bool shifted[10];
|
||||
|
||||
static void ang_handle_kf (keyrecord_t *record, uint8_t id)
|
||||
{
|
||||
uint8_t code = id - KF_1;
|
||||
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
|
||||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
|
||||
if (record->event.pressed)
|
||||
shifted[idx] = true;
|
||||
}
|
||||
|
||||
if (!shifted[idx]) {
|
||||
kc = idx + KC_1;
|
||||
} else {
|
||||
switch (id) {
|
||||
case A_8:
|
||||
case A_9:
|
||||
shifted[idx] = false;
|
||||
return;
|
||||
|
||||
case A_7:
|
||||
kc = KC_2;
|
||||
break;
|
||||
case A_5:
|
||||
kc = KC_8;
|
||||
break;
|
||||
case A_3:
|
||||
kc = KC_6;
|
||||
break;
|
||||
case A_1:
|
||||
kc = KC_4;
|
||||
break;
|
||||
|
||||
case A_0:
|
||||
kc = KC_5;
|
||||
break;
|
||||
case A_2:
|
||||
kc = KC_1;
|
||||
break;
|
||||
case A_4:
|
||||
kc = KC_3;
|
||||
break;
|
||||
case A_6:
|
||||
kc = KC_7;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (record->event.pressed) {
|
||||
kf_timers[code] = timer_read ();
|
||||
register_code (kc);
|
||||
} else {
|
||||
uint8_t kc_base;
|
||||
|
||||
if (from_appsel) {
|
||||
from_appsel = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM) {
|
||||
// Long press
|
||||
kc_base = KC_F1;
|
||||
} else {
|
||||
kc_base = KC_1;
|
||||
}
|
||||
kf_timers[code] = 0;
|
||||
code += kc_base;
|
||||
|
||||
register_code (code);
|
||||
unregister_code (code);
|
||||
unregister_code (kc);
|
||||
shifted[idx] = false;
|
||||
}
|
||||
}
|
||||
|
||||
static struct {
|
||||
uint8_t idx;
|
||||
} m_accel_state;
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {
|
||||
|
@ -592,70 +606,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||
case HU_UEE:
|
||||
return ang_do_hun (record, KC_EQL, KC_U);
|
||||
|
||||
#if MOUSEKEY_ENABLE
|
||||
/* Mouse movement */
|
||||
case A_MUL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MUR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_ACL0 ... A_ACL2:
|
||||
if (record->event.pressed) {
|
||||
uint8_t idx = id - A_ACL0;
|
||||
if (m_accel_state.idx == id) {
|
||||
mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0);
|
||||
m_accel_state.idx = 0;
|
||||
} else {
|
||||
if (m_accel_state.idx) {
|
||||
mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0);
|
||||
m_accel_state.idx = 0;
|
||||
}
|
||||
mousekey_on(KC_ACL0 + idx);
|
||||
m_accel_state.idx = id;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
/* Plover base */
|
||||
case A_PLVR:
|
||||
toggle_steno(record->event.pressed);
|
||||
|
@ -667,7 +617,6 @@ 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) {
|
||||
register_code (KC_W);
|
||||
layer_on (APPSEL);
|
||||
set_oneshot_layer (APPSEL, ONESHOT_START);
|
||||
}
|
||||
|
@ -678,7 +627,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||
} else {
|
||||
if (record->tap.count >= 2)
|
||||
{
|
||||
unregister_code (KC_W);
|
||||
clear_oneshot_layer_state (ONESHOT_PRESSED);
|
||||
}
|
||||
gui_timer = timer_read ();
|
||||
|
@ -686,43 +634,39 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||
break;
|
||||
|
||||
case APP_SLK:
|
||||
from_appsel = true;
|
||||
return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
|
||||
if (record->event.pressed)
|
||||
uprintf("CMD:appsel_slack\n");
|
||||
break;
|
||||
|
||||
case APP_EMCS:
|
||||
from_appsel = true;
|
||||
return MACRODOWN(T(G), T(N), T(U), T(SPC), T(E), T(M), T(A), T(C), T(S), T(SPC), T(2), T(4), T(ENT), END);
|
||||
if (record->event.pressed)
|
||||
uprintf("CMD:appsel_emacs\n");
|
||||
break;
|
||||
|
||||
case APP_TERM:
|
||||
from_appsel = true;
|
||||
if (!record->event.pressed) {
|
||||
register_code(KC_ESC);
|
||||
unregister_code(KC_ESC);
|
||||
wait_ms(TAPPING_TERM + 25);
|
||||
register_code(KC_DEL);
|
||||
unregister_code(KC_DEL);
|
||||
}
|
||||
if (record->event.pressed)
|
||||
uprintf("CMD:appsel_term\n");
|
||||
break;
|
||||
|
||||
case APP_CHRM:
|
||||
from_appsel = true;
|
||||
return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
|
||||
if (record->event.pressed)
|
||||
uprintf("CMD:appsel_chrome\n");
|
||||
break;
|
||||
|
||||
case APP_MSIC:
|
||||
from_appsel = true;
|
||||
return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
|
||||
if (record->event.pressed)
|
||||
uprintf("CMD:appsel_music\n");
|
||||
break;
|
||||
|
||||
/* Function keys */
|
||||
case KF_1 ... KF_10:
|
||||
ang_handle_kf (record, id);
|
||||
// number row and symbols
|
||||
case A_1 ... A_0:
|
||||
ang_handle_num_row(id, record);
|
||||
break;
|
||||
}
|
||||
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
static uint8_t is_adore = 0;
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
uint8_t dl;
|
||||
|
@ -805,6 +749,36 @@ static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data
|
|||
layer_off (ARRW);
|
||||
}
|
||||
|
||||
static void ang_tap_dance_tmux_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
register_code(KC_LALT);
|
||||
register_code(KC_SPC);
|
||||
unregister_code(KC_SPC);
|
||||
unregister_code(KC_LALT);
|
||||
} else {
|
||||
register_code(KC_LCTL);
|
||||
register_code(KC_A);
|
||||
unregister_code(KC_A);
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
}
|
||||
|
||||
static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *user_data) {
|
||||
uint8_t kc = KC_P;
|
||||
|
||||
if (state->count >= 2) {
|
||||
kc = KC_Z;
|
||||
}
|
||||
|
||||
register_code(KC_LALT);
|
||||
register_code(KC_SPC);
|
||||
unregister_code(KC_SPC);
|
||||
unregister_code(KC_LALT);
|
||||
|
||||
register_code(kc);
|
||||
unregister_code(kc);
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
|
||||
,[CT_TA] = {
|
||||
|
@ -813,12 +787,23 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||
}
|
||||
,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN)
|
||||
,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
|
||||
,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
|
||||
,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
static uint32_t prev_layer_state;
|
||||
uint8_t layer = biton32(layer_state);
|
||||
bool is_arrow = false;
|
||||
static char *layer_lookup[] = {"Dvorak", "ADORE", "Arrows", "AppSel", "Hungarian", "Nav/Media", "Plover"};
|
||||
|
||||
if (layer_state != prev_layer_state) {
|
||||
prev_layer_state = layer_state;
|
||||
if (layer_lookup[layer])
|
||||
uprintf("LAYER: %s\n", layer_lookup[layer]);
|
||||
}
|
||||
|
||||
|
||||
if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
|
||||
unregister_code (KC_LGUI);
|
||||
|
@ -929,18 +914,7 @@ void matrix_scan_user(void) {
|
|||
}
|
||||
|
||||
SEQ_TWO_KEYS (KC_W, KC_M) {
|
||||
register_code (KC_LALT);
|
||||
register_code (KC_F2);
|
||||
unregister_code (KC_F2);
|
||||
unregister_code (KC_LALT);
|
||||
|
||||
wait_ms (1000);
|
||||
|
||||
ang_tap (KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0);
|
||||
register_code (KC_LGUI);
|
||||
register_code (KC_UP);
|
||||
unregister_code (KC_UP);
|
||||
unregister_code (KC_LGUI);
|
||||
uprintf("CMD:wm\n");
|
||||
}
|
||||
|
||||
SEQ_ONE_KEY (KC_A) {
|
||||
|
@ -999,8 +973,11 @@ const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
|
|||
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
|
||||
#if KEYLOGGER_ENABLE
|
||||
if (log_enable) {
|
||||
xprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col,
|
||||
record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak");
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
if ((layer == ADORE) || (layer == BASE))
|
||||
uprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col,
|
||||
record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1047,8 +1024,8 @@ void qk_ucis_symbol_fallback (void) {
|
|||
for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
|
||||
uint8_t code;
|
||||
|
||||
if (qk_ucis_state.codes[i] > KF_1)
|
||||
code = qk_ucis_state.codes[i] - KF_1 + KC_1;
|
||||
if ((qk_ucis_state.codes[i] >= M(A_1)) && (qk_ucis_state.codes[i] <= M(A_0)))
|
||||
code = qk_ucis_state.codes[i] - M(A_1) + KC_1;
|
||||
else
|
||||
code = qk_ucis_state.codes[i];
|
||||
register_code(code);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue