From 8114adecce0de72625373c3e9fb09b88b13f2325 Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Tue, 12 Jan 2021 19:48:42 -0800 Subject: [PATCH 1/3] Add Per Key functionality for AutoShift --- quantum/process_keycode/process_auto_shift.c | 20 +++++++++++++------- quantum/process_keycode/process_auto_shift.h | 1 + 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c index a2d315408b09..7fc2c979c6af 100644 --- a/quantum/process_keycode/process_auto_shift.c +++ b/quantum/process_keycode/process_auto_shift.c @@ -216,7 +216,18 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { # endif } } + if (get_auto_shifted_key(keycode, record)) { + if (record->event.pressed) { + return autoshift_press(keycode, now, record); + } else { + autoshift_end(keycode, now, false); + return false; + } + } + return true; +} +__attribute__((weak)) bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { switch (keycode) { # ifndef NO_AUTO_SHIFT_ALPHA case KC_A ... KC_Z: @@ -229,14 +240,9 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { case KC_MINUS ... KC_SLASH: case KC_NONUS_BSLASH: # endif - if (record->event.pressed) { - return autoshift_press(keycode, now, record); - } else { - autoshift_end(keycode, now, false); - return false; - } + return true; } - return true; + return false; } #endif diff --git a/quantum/process_keycode/process_auto_shift.h b/quantum/process_keycode/process_auto_shift.h index 5b2718f11ca6..0045ff5314bc 100644 --- a/quantum/process_keycode/process_auto_shift.h +++ b/quantum/process_keycode/process_auto_shift.h @@ -31,3 +31,4 @@ bool get_autoshift_state(void); uint16_t get_autoshift_timeout(void); void set_autoshift_timeout(uint16_t timeout); void autoshift_matrix_scan(void); +bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record); From b51d5474d45f70a2356978c5021789a77583098e Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Tue, 12 Jan 2021 19:56:31 -0800 Subject: [PATCH 2/3] Add documenation --- docs/feature_auto_shift.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md index 8e04d9dd38cf..ec7eeaaa0cae 100644 --- a/docs/feature_auto_shift.md +++ b/docs/feature_auto_shift.md @@ -109,6 +109,33 @@ Do not Auto Shift numeric keys, zero through nine. Do not Auto Shift alpha characters, which include A through Z. +### Auto Shift Per Key + +This is a function that allows you to determine which keys shold be autoshifted, much like the tap-hold keys. + +The default function looks like this: + +```c +bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { +# ifndef NO_AUTO_SHIFT_ALPHA + case KC_A ... KC_Z: +# endif +# ifndef NO_AUTO_SHIFT_NUMERIC + case KC_1 ... KC_0: +# endif +# ifndef NO_AUTO_SHIFT_SPECIAL + case KC_TAB: + case KC_MINUS ... KC_SLASH: + case KC_NONUS_BSLASH: +# endif + return true; + } + return false; +} +``` +This functionality is enabled by default, and does not need a define. + ### AUTO_SHIFT_REPEAT (simple define) Enables keyrepeat. From ed3f7788678196ca3e90b81bfc88ce470e59af81 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Fri, 15 Jan 2021 08:13:36 -0800 Subject: [PATCH 3/3] FIx indentation to be uniform Co-authored-by: Ryan --- quantum/process_keycode/process_auto_shift.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/process_keycode/process_auto_shift.h b/quantum/process_keycode/process_auto_shift.h index 0045ff5314bc..00a9ab036fe3 100644 --- a/quantum/process_keycode/process_auto_shift.h +++ b/quantum/process_keycode/process_auto_shift.h @@ -31,4 +31,4 @@ bool get_autoshift_state(void); uint16_t get_autoshift_timeout(void); void set_autoshift_timeout(uint16_t timeout); void autoshift_matrix_scan(void); -bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record); +bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record);