mirror of
https://github.com/qmk/qmk_userspace.git
synced 2026-07-29 20:54:18 -04:00
Made caps word/caps lock a tap dance that can be overridden by alt
This commit is contained in:
parent
9ace66abc1
commit
675c9787eb
6 changed files with 30 additions and 38 deletions
|
|
@ -27,9 +27,6 @@ enum CustomKeycodes {
|
||||||
#define TAB_FORWARD C(KC_TAB)
|
#define TAB_FORWARD C(KC_TAB)
|
||||||
#define TAB_BACKWARD (C(S(KC_TAB)))
|
#define TAB_BACKWARD (C(S(KC_TAB)))
|
||||||
|
|
||||||
// weird tap holds
|
|
||||||
#define CW_CL SFT_T(CAPS_WORD)
|
|
||||||
|
|
||||||
// layers
|
// layers
|
||||||
#define NUM_SPC LT(_NUM, KC_SPC)
|
#define NUM_SPC LT(_NUM, KC_SPC)
|
||||||
#define NAV_ENT LT(_NAV, KC_ENT)
|
#define NAV_ENT LT(_NAV, KC_ENT)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "caps_word.h"
|
#include "caps_word.h"
|
||||||
#include "../alias.h"
|
#include "../alias.h"
|
||||||
|
#include "../tap_dance/tap_dance.h"
|
||||||
|
|
||||||
bool caps_word_press_user(uint16_t keycode) {
|
bool caps_word_press_user(uint16_t keycode) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
|
@ -18,6 +19,7 @@ bool caps_word_press_user(uint16_t keycode) {
|
||||||
case KC_RGHT:
|
case KC_RGHT:
|
||||||
case KC_MINS:
|
case KC_MINS:
|
||||||
case KC_UNDS:
|
case KC_UNDS:
|
||||||
|
case TD(TD_CW_CL): // this makes toggling work
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_ortho_4x12(
|
[_BASE] = LAYOUT_ortho_4x12(
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
KC_TAB, GUI_A, ALT_S, SFT_D, CTL_F, CTL_G, CTL_H, CTL_J, SFT_K, ALT_L, GUI_SCLN, KC_QUOT,
|
KC_TAB, GUI_A, ALT_S, SFT_D, CTL_F, CTL_G, CTL_H, CTL_J, SFT_K, ALT_L, GUI_SCLN, KC_QUOT,
|
||||||
CW_CL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL,
|
TD(TD_CW_CL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL,
|
||||||
KC_NO, FUNC_PLAY, KC_LALT, TD(TD_CAD_LOCK_SLEEP), LAUNCH, NUM_SPC, NAV_ENT, KC_RALT, KC_LEFT, DOWN, UP, KC_RGHT
|
KC_NO, FUNC_PLAY, KC_LALT, TD(TD_CAD_LOCK_SLEEP), LAUNCH, NUM_SPC, NAV_ENT, KC_RALT, KC_LEFT, DOWN, UP, KC_RGHT
|
||||||
),
|
),
|
||||||
// gamer
|
// gamer
|
||||||
|
|
@ -61,35 +61,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case CW_CL: { // caps word is really complicated, eek
|
|
||||||
static bool tab_backward_held = false;
|
|
||||||
if (record->tap.count) {
|
|
||||||
if (record->event.pressed) {
|
|
||||||
uint8_t mods = get_mods();
|
|
||||||
if (mods & TABBING_TRIGGER_MODS) { // tabbing
|
|
||||||
del_mods(TABBING_TRIGGER_MODS);
|
|
||||||
register_code16(TAB_BACKWARD);
|
|
||||||
set_mods(mods);
|
|
||||||
tab_backward_held = true; // set the flag
|
|
||||||
} else { // caps word
|
|
||||||
caps_word_toggle();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (tab_backward_held) {
|
|
||||||
tab_backward_held = false; // clear the flag
|
|
||||||
unregister_code16(TAB_BACKWARD);
|
|
||||||
neutralize_flashing_mods();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else { // hold; caps lock
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code(KC_CAPS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make it possible to go from layer 3 to layer 2
|
// make it possible to go from layer 3 to layer 2
|
||||||
case NUM_SPC:
|
case NUM_SPC:
|
||||||
if (!record->tap.count) {
|
if (!record->tap.count) {
|
||||||
|
|
@ -235,6 +206,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const key_override_t CW_CL_TO_TAB_BACKWARDS =
|
||||||
|
ko_make_basic(TABBING_TRIGGER_MODS, TD(TD_CW_CL), TAB_BACKWARD);
|
||||||
|
|
||||||
const key_override_t Q_TO_KILL = ko_make_with_layers(MOD_MASK_GUI, KC_Q, A(KC_F4), 1 << _BASE);
|
const key_override_t Q_TO_KILL = ko_make_with_layers(MOD_MASK_GUI, KC_Q, A(KC_F4), 1 << _BASE);
|
||||||
|
|
||||||
const key_override_t COMM_TO_TAB_BACKWARDS =
|
const key_override_t COMM_TO_TAB_BACKWARDS =
|
||||||
|
|
@ -328,6 +302,7 @@ const key_override_t F2_TO_M = ko_make_with_layers(MOD_MASK_CTRL, KC_F2, C(KC_M)
|
||||||
|
|
||||||
// this globally defines all key overrides to be used
|
// this globally defines all key overrides to be used
|
||||||
const key_override_t* key_overrides[] = {
|
const key_override_t* key_overrides[] = {
|
||||||
|
&CW_CL_TO_TAB_BACKWARDS,
|
||||||
&COMM_TO_TAB_BACKWARDS,
|
&COMM_TO_TAB_BACKWARDS,
|
||||||
&TILDE_TO_TAB_BACKWARDS,
|
&TILDE_TO_TAB_BACKWARDS,
|
||||||
&Q_TO_KILL,
|
&Q_TO_KILL,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#include "./tap_dance.h"
|
#include "./tap_dance.h"
|
||||||
#include "../alias.h"
|
#include "../alias.h"
|
||||||
|
|
||||||
void CAD_lock_sleep(tap_dance_state_t* state, void* user_data) {
|
void CAD_lock_sleep(tap_dance_state_t* state, void*) {
|
||||||
switch (state->count) {
|
switch (state->count) {
|
||||||
case 1:
|
case 1:
|
||||||
tap_code16(CAD);
|
tap_code16(CAD);
|
||||||
|
|
@ -18,6 +18,27 @@ void CAD_lock_sleep(tap_dance_state_t* state, void* user_data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void caps_lock_caps_word_on_tap(tap_dance_state_t* state, void*) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1: // do nothing for the first tap
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
tap_code(KC_CAPS);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void caps_lock_caps_word_on_finish(tap_dance_state_t* state, void*) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
caps_word_toggle();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
tap_dance_action_t tap_dance_actions[] = {
|
||||||
[TD_CAD_LOCK_SLEEP] = ACTION_TAP_DANCE_FN(CAD_lock_sleep),
|
[TD_CAD_LOCK_SLEEP] = ACTION_TAP_DANCE_FN(CAD_lock_sleep),
|
||||||
|
[TD_CW_CL] = ACTION_TAP_DANCE_FN_ADVANCED(
|
||||||
|
caps_lock_caps_word_on_tap, caps_lock_caps_word_on_finish, NULL
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,5 @@
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TD_CAD_LOCK_SLEEP,
|
TD_CAD_LOCK_SLEEP,
|
||||||
|
TD_CW_CL,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -137,10 +137,6 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t* record) {
|
||||||
case ALT_UP:
|
case ALT_UP:
|
||||||
return 400;
|
return 400;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CW_CL: // have to hold for caps lock a little longer
|
|
||||||
return 300;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return TAPPING_TERM;
|
return TAPPING_TERM;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue