KMKfw / kmk_firmware

Clackety Keyboards Powered by Python
https://kmkfw.zulipchat.com
Other
1.43k stars 482 forks source link

Add auto shift on key hold similar to QMK's auto_shift #665

Open CupricReki opened 1 year ago

CupricReki commented 1 year ago

Add the ability to hold a key for a predetermined time to send the shifted keypress.

https://docs.qmk.fm/#/feature_auto_shift

The feature could be improved upon by having the ability to control auto shift enabled by layer. For example, disabling autoshift on my gaming layer where I'll need to be holding keys without them being shift modified.

doesntfazer commented 1 year ago

I'd be interested in making this happen. I'll take a look tomorrow and see what all would be involved. Might be able to get this to work using existing modules. Might need a maintainers input as well.

CupricReki commented 1 year ago

What did you find? Does it seem like it would be difficult to implement?

doesntfazer commented 1 year ago

What did you find? Does it seem like it would be difficult to implement?

It doesn't seem to be too difficult to implement. It's going to take me some time though. remodeling my basement at the moment and my computer stuff is put up right now. All I have is my work computer.

But also, I just realized when I got the email who this was. Just looked at your username, it took a minute for it to click, It's funny running into you here though after our heated discussion we had on discord lol.

doesntfazer commented 1 year ago

Either way I'll send you the PR when I'm done with it.

doesntfazer commented 1 year ago

So you can pretty much get the same functionality using modtap. These are the setting that I found worked the best to accommodate quick typing.

ASQ = KC.MT(KC.Q, KC.LSFT(KC.Q), prefer_hold=False, tap_interrupted=True, tap_time=180)
ASW = KC.MT(KC.W, KC.LSFT(KC.W), prefer_hold=False, tap_interrupted=True, tap_time=180)
ASE = KC.MT(KC.E, KC.LSFT(KC.E), prefer_hold=False, tap_interrupted=True, tap_time=180)

I am going to continue to work on a module that would do this. Although it will probably end up being a submodule to holdtap.

CupricReki commented 1 year ago

With Autoshift enabled, KC.LT will not return to previous layer.

Autoshift should be AutoShift

KC.N0 - KC.N9 Should autoshift to symbols

Thanks for adding this module! Much appreciated.

Boshimanu commented 1 year ago

prefer_hold=False, tap_interrupted=True That is what I was searching for, Thanks👍

dgvigil commented 11 months ago

It would be helpful if you could set if autoshift was enabled on symbols and/or numbers, like https://docs.qmk.fm/#/feature_auto_shift?id=auto_shift_symbols-predefined-key-group

CupricReki commented 11 months ago

It would be helpful if you could set if autoshift was enabled on symbols and/or numbers, like https://docs.qmk.fm/#/feature_auto_shift?id=auto_shift_symbols-predefined-key-group

https://github.com/KMKfw/kmk_firmware/issues/665#issuecomment-1589050645