-
-
Notifications
You must be signed in to change notification settings - Fork 40.2k
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
Split transport mirror #11046
Split transport mirror #11046
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we back out all the non SPLIT_TRANSPORT_MIRROR
to decouple it from the sync timer PR. That way this one can potentially land first, and allow some of the previous non split common behaviours on split keyboards with oled.
Ya, let me do that right now @zvecr |
5c86350
to
c620897
Compare
c620897
to
648946c
Compare
1f67268
to
872b0dd
Compare
shakes fist in #10730 |
So, correct me if I'm wrong, then if you want to process stuff on the secondary side, you'd need hooks like the rgb matrix one to be able to handle keypress events, for stuff such as audio clicky, haptic feedback, etc? Or to manually enable the keypress processing? |
Correct, in theory, depending on the system, many only care about electrical key presses, in which case they can do what split rgb matrix does and just hooks in at that level reducing the need to process the keycode record system. This approach also reduces the need to worry about triggering certain keycodes on the slave side if you do not intend to do so (Like reset) |
So, in that case, anything that wants or needs to use the matrix info on the secondary side would then need to edit the keyboard.c file, so that it can get updates, or set the If that's the case, then we shouldn't we have a separate callback to handle that? This way, other features can hook into it (such as haptic feedback or audio clicky, oled) Or just ... revert the code changes to keyboard.c, and add As for |
Correct
Right, that is what I was thinking, but didn't want to go down that path just yet until more systems want to use it. Plus I hate naming new apis. Ideally, we would have a call registration system where new systems could register for certain types of events instead of having to hard code the call sites like this in the first place. But that is more of a ground up rewrite of a lot of the core tmk / qmk code base.
Reset today does not have that check you are talking about. That check only existed on the older split rgb matrix pr and never landed in QMK. (Just looked to verify) |
HAHAHAHAHA. I'm 1000% right there with you. But I think that having the API there first is very important, as it heads off weird/bad issues. As for the reset, I swear it had it. :( |
Alright, I'll add an API to start this new logic branch handling and use that in rgb matrix. |
Thank you for your contribution! |
5cfbba4
to
c484551
Compare
@drashna Updated the PR to include the new entry point we talked about. |
c484551
to
b35caf0
Compare
Just a heads-up, something with this commit has broken the massdrop boards -- probably something to do with RGB, considering they're not split. Will do some investigation. |
And this change apparently also broke 3 keyboards which used
|
Then I'd suggest we find out whether these boards can migrate to split_common, given that there's more changes in the pipeline. |
But these boards actually use the matrix implementation from For
Looks like the real bug here is that (Ideally the code should compile with |
Right... though I'm currently looking towards pulling out the specific functions that are actually transport-specific, so that we have a proper abstraction over the top. SPI-based comms can in theory implement a single function and pick up the rest for free. That's the intention with the #11930 branch as it stands, at least. |
* Split transport mirror support * Updated RGB Matrix to respond to electrical events instead of key events * split matrix slave fix
Description
Added a define option for split keyboards to transport the master matrix to the slave side. This allows systems (such as rgb matrix's key reactive animations) to be processed on the slave side instead of the master side, or mirrored in the case of the up coming split rgb matrix split support.
Types of Changes
Issues Fixed or Closed by This PR
Checklist