Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Defect: QMK Auto Shift breaks chording #67

Open
bhansconnect opened this issue Jan 9, 2024 · 2 comments
Open

Defect: QMK Auto Shift breaks chording #67

bhansconnect opened this issue Jan 9, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@bhansconnect
Copy link

Describe the bug
If a QMK keyboard with the auto shift feature enabled is connected to a CharaChorder X, chording will not work at all. Even the Esc + G chord will fail.

The keyboard will still be able to type, but upon letting go of all keys, the last pressed key will repeat forever. This specific part is the same defect as described in #32, just caused by auto shift instead of tap dance.

To Reproduce
Steps to reproduce the behavior:

  1. Enable AutoShift on a QMK keyboard
  2. Flash the device
  3. Plug it into a CharaChorder x
  4. Attempt to chord anything

Expected behavior
If I press a chord like bc, it should output because instead of just outputting bc. Also, if I tap c, it should just output a single c instead of repeating the character forever.

Please complete the following information:

  • OS: MacOS 14.2.1
  • CharaChorder Device: CharaChorder X
  • CCOS Version: 1.1.3

Additional context
Used a Corne crkbd with QMK. Should theoretically affect any QMK keyboard with autoshift enabled.

@bhansconnect bhansconnect added the bug Something isn't working label Jan 9, 2024
@github-project-automation github-project-automation bot moved this to To Review in CCOS Development Jan 9, 2024
@bhansconnect
Copy link
Author

Found part of a fix but not a full fix:

#define TAP_CODE_DELAY <num>. Apparently when using auto shift, qmk will default to 0 delay when pressing a key that isn't shifted. As a result, the key press and release events will be fired one after another. I think that CCOS misses the release event and just gets stuck with the key press down.

Sadly, this is not a full fix for my issue above. I still have no chording. My guess is that the artificial key presses are generate such that the charachorder doesn't register all presses at the same time. Instead it sees them as only slightly overlapping or something like that. As a result, chording never triggers.

@Theaninova
Copy link

I think what's going on

When you press a key, a timer starts, and if you have not released the key after the AUTO_SHIFT_TIMEOUT period, then a shifted version of the key is emitted. If the time is less than the AUTO_SHIFT_TIMEOUT time, or you press another key, then the normal state is emitted.

Auto-shift does not output anything until you release the key. It's critical for ccos to be able to get precise timings, simply having a "tap" is not enough since events only get send after each release which looks like sequential taps to ccos.

So I don't think this is gonna ever work unfortunately, and I'd recommend having a shift key either way for chording.

@jdestgermain jdestgermain moved this from To Review to Backlog in CCOS Development Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Backlog
Development

No branches or pull requests

2 participants