jberclaz / modelh

Replacement Model M controller board
8 stars 1 forks source link

When rapidly pressing two keys, an extra key is output #4

Closed Recolate closed 1 month ago

Recolate commented 3 months ago

Hi, thanks for this repo. It was extremely helpful in converting my Model M.

At first, it seemed like everything was fine, but I noticed when I typed up words like, "whatsoever" it would output as "whatsoeverc"

Holding down the "v" key while rapidly tapping the "e" and "r" will output "verc" and the same goes for other keys that are held down on that row. For example, holding down "b" and rapidly tapping "t" and "y" will output "btyn"

I'm basically completely ignorant, but maybe something is incorrect with the columns/rows in the firmware? I am curious if this is just a me issue or if anyone else can reproduce it.

Recolate commented 3 months ago

FWIW I did some digging and was able to fix this, at least on my end. I went around checking to see if there were any alternative deghosting algorithms within QMK to utilize, much like how there's options for debouncing and so on.

I found this repo, which was made for Unicomp's Mini M, and which features an alternative deghosting algorithm specifically for the Mini M: https://github.com/purdeaandrei/vial-qmk-mini-m After cloning the repo and defining this new deghosting algorithm in the Model H's "config.h" file, I have no more issues with extra keys being output. The above repo, however, is somewhat out of date.

fmunozs commented 3 months ago

I think this is not related to the firmware, but to the fact that the model m is not NKRO, I suppose the "deghosting" algorithm reduces some of the issues you found, but other keys combinations will reproduce the same problem.

Recolate commented 3 months ago

I think this is not related to the firmware, but to the fact that the model m is not NKRO, I suppose the "deghosting" algorithm reduces some of the issues you found, but other keys combinations will reproduce the same problem.

Yes, the 2KRO is likely the culprit, but, at least for me, the problem was only reproduceable on the Model H controller, and not the original one. Therefore IBM probably had some deghosting / blocking going for their controller as well. QMK also has this behavior by default, but perhaps it just wasn't robust enough for membrane buckling springs. I really don't know.

jberclaz commented 1 month ago

There's an issue in the current firmware, because the de-ghosting algorithm is not enabled. I've commited a fix to the qmk firmware. I'm going to push the fix to vial-qmk as soon as I have time and will publish an updated version of the firmware on my repo.

jberclaz commented 1 month ago

New firmware released with de-ghosting enabled.