josefadamcik / SofleKeyboard

A split keyboard based on Lily58, Crkbd and Helix keyboards
https://josefadamcik.github.io/SofleKeyboard/
Other
1.94k stars 290 forks source link

Encoders on the offhand skipping steps (laggy) #153

Open ryuugaplays opened 2 years ago

ryuugaplays commented 2 years ago

Which Board? RGB

Which Board Revision? RGB = 2.1

What Software are you using? qmk

What is the issue? Encoders on the offhand is less responsive than the mainhand (master side with the USB) As a test, I have set both encoders to output the same keycodes (arrow keys left-right) when taking turns to spin each encoder, the master side is very snappy whereas the offhand (slave side that is not connected to USB) is generally less responsive when compared to the master side.

Things I have tried

None of the above have worked so far. No matter what, the offhand encoder will always be less responsive than the mainhand regardless of the handedness.

What you expected: Both sides to have equally snappy response

josefadamcik commented 2 years ago

Note: @ryuugaplays was asked to create a new bug when they commented on older one #62

Here is an old and fixed QMK issue: https://github.com/qmk/qmk_firmware/issues/7055 (3 years ago).

I haven't built the firmware myself for quite some time, but on my keyboard, the off-hand feels ok (1 click, one pulse). I can't really compare the feel on the left and right given how I have them configured for my personal layout.

I think going the i2c route doesn't make sense. When I researched it years ago, the QMK community's opinion was that it is not better than the serial bit-bang they use and it's not worth using/trying. Things might have changed, but I am not that active in the community nowadays.

What I am wondering is if it is possible QMK has a regression and somehow this is broken again?

222Phoenix commented 1 year ago

I ran into the same issue on my corne (I handwired an encoder on each side). Left (master) would perform an action every detent, but the right would skip here and there. What fixed it for me was adding this in the config;

define ENCODER_RESOLUTIONS_RIGHT { 2 }

I saw that you mentioned testing different resolution for each side, but not sure if you tried only mentioning the resolution on the affected slave side. Good luck.