fix: Add delay to DemuxKeyMatrix along with columns_to_anodes and transpose options #9912
+72
−19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm using a nullbitsco nibble which has a 16x5 matrix with the multiplexed via two '138 3:8 decoders.
With no delay the DemuxKeyMatrix scanner was giving phantom key strokes on almost every key press, where (r,c) is
pressed but (r,c), (r+1,c) and sometimes (r+2,c) register. I tried the same 1us delay as the basic KeyMatrix but
still saw echoes, especially where many bits change in the demux input. The qmk implementation uses a 5us delay
which also works here.
In passing this class would be more flexible if it supported the same columns_to_anodes parameter as KeyMatrix, and perhaps a way to transpose rows and columns. For example with the nibble it's actually the columns that are multiplexed not the rows but I can work around by pretending they're rows and transposing back to the keymap.