~ruther/qmk_firmware

e9ff66d8ad341917ff270c9f33b83d86fe0fb6c4 — Chris Salch 1 year, 10 months ago e430807
Adds a way to separate tab from AUTO_SHIFT_SPECIAL. (#20996)

M docs/feature_auto_shift.md => docs/feature_auto_shift.md +43 -4
@@ 133,7 133,17 @@ groups in the below fallback switch.
### NO_AUTO_SHIFT_SPECIAL (simple define)

Do not Auto Shift special keys, which include -\_, =+, [{, ]}, ;:, '", ,<, .>,
and /?
/?, and the KC_TAB.

### NO_AUTO_SHIFT_TAB (simple define)

Do not Auto Shift KC_TAB but leave Auto Shift enabled for the other special
characters.

### NO_AUTO_SHIFT_SYMBOLS (simple define)

Do not Auto Shift symbol keys, which include -\_, =+, [{, ]}, ;:, '", ,<, .>,
and /?.

### NO_AUTO_SHIFT_NUMERIC (simple define)



@@ 143,9 153,13 @@ Do not Auto Shift numeric keys, zero through nine.

Do not Auto Shift alpha characters, which include A through Z.

### AUTO_SHIFT_ENTER (simple define)

Auto Shift the enter key.

### Auto Shift Per Key

There are functions that allows you to determine which keys shold be autoshifted, much like the tap-hold keys.
There are functions that allows you to determine which keys should be autoshifted, much like the tap-hold keys.

The first of these, used to simply add a key to Auto Shift, is `get_custom_auto_shifted_key`:



@@ 172,9 186,15 @@ bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
        case KC_1 ... KC_0:
#    endif
#    ifndef NO_AUTO_SHIFT_SPECIAL
#    ifndef NO_AUTO_SHIFT_TAB
        case KC_TAB:
        case KC_MINUS ... KC_SLASH:
        case KC_NONUS_BACKSLASH:
#    endif
#    ifndef NO_AUTO_SHIFT_SYMBOLS
        case AUTO_SHIFT_SYMBOLS:
#    endif
#    endif
#    ifdef AUTO_SHIFT_ENTER
        case KC_ENT:
#    endif
            return true;
    }


@@ 192,6 212,25 @@ Enables keyrepeat.

Disables automatically keyrepeating when `AUTO_SHIFT_TIMEOUT` is exceeded.


### AUTO_SHIFT_ALPHA (predefined key group)

A predefined group of keys representing A through Z.

### AUTO_SHIFT_NUMERIC (predefined key group)

A predefined group of keys representing 0 through 9. Note, these are defined as
1 through 0 since that is the order they normally appear in.

### AUTO_SHIFT_SYMBOLS (predefined key group)

A predefined group of keys representing symbolic characters which include -\_, =+, [{, ]}, ;:, '", ,<, .>,
and /?.

### AUTO_SHIFT_SPECIAL (predefined key group)

A predefined group of keys that combines AUTO_SHIFT_SYMBOLS and KC_TAB.

## Custom Shifted Values

Especially on small keyboards, the default shifted value for many keys is not

M quantum/process_keycode/process_auto_shift.c => quantum/process_keycode/process_auto_shift.c +9 -1
@@ 75,7 75,15 @@ __attribute__((weak)) bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *r
        case AUTO_SHIFT_NUMERIC:
#    endif
#    ifndef NO_AUTO_SHIFT_SPECIAL
        case AUTO_SHIFT_SPECIAL:
#        ifndef NO_AUTO_SHIFT_TAB
        case KC_TAB:
#        endif
#        ifndef NO_AUTO_SHIFT_SYMBOLS
        case AUTO_SHIFT_SYMBOLS:
#        endif
#    endif
#    ifdef AUTO_SHIFT_ENTER
        case KC_ENT:
#    endif
            return true;
    }

M quantum/process_keycode/process_auto_shift.h => quantum/process_keycode/process_auto_shift.h +6 -2
@@ 28,10 28,14 @@
// clang-format off
#define AUTO_SHIFT_ALPHA KC_A ... KC_Z
#define AUTO_SHIFT_NUMERIC KC_1 ... KC_0
#define AUTO_SHIFT_SYMBOLS          \
             KC_MINUS ... KC_SLASH: \
        case KC_NONUS_BACKSLASH

// Kept to avoid breaking existing keymaps.
#define AUTO_SHIFT_SPECIAL          \
             KC_TAB:                \
        case KC_MINUS ... KC_SLASH: \
        case KC_NONUS_BACKSLASH
        case AUTO_SHIFT_SYMBOLS
// clang-format on

bool process_auto_shift(uint16_t keycode, keyrecord_t *record);

Do not follow this link