-
-
Notifications
You must be signed in to change notification settings - Fork 39.8k
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
RGB Matrix Support for Split Keyboards #9613
Conversation
Update readme.md
* Initial work for consolidation of board files and default ChibiOS configs. * Migrate F401/F411 black pills for testing. * Add early init bootloader jump flag. * Add support for I2C in order to use i2c_scanner keymap. * Add F401/F411 HSE bypass to get things booting. * Exempt "hooked" ChibiOS conf files from updater script. * Fix up ordering for bootloader_defs file check. * Match previous $(KEYBOARD_PATHS) value for Proton-C, updated for all board configs.
… inline functions (qmk#9055)
Good first start, but there is a reason why the slave half needs to enable keyboard evaluation which is reactive rgb matrix animations. With out that hook, the reactive effects will not work, and I don't see anything in this PR to improve that. |
I'll sync the states and directly tap into Working on that right now |
Thanks for taking this over. RL has been a major issue lately for me. |
You're welcome. I'm happy to take this over. First mayor contribution to an OS project for me. I'm also really lucky that the whole situation rn hasn't affected me really at all. Wishing you the best! |
Works now, but I'm unhappy with the solution, as keypress evaluation is turned on. A solution would be to make extensive use of c macros to remove all keypress evaluations that are unwanted. Both solutions are very unsatisfying. |
common split code already has a check for |
But But to my understanding #5998 has a lot bugs, because of slave side keyboard evaluation. |
Thanks to @sigprof I found a solution that works nicely. Sadly slave still can't show the current layer information |
It's now working as expected. There are only some major problems with the design and how future proof it might be. |
It's less of that. But it's a lot of changes. Additionally it's missing some things like state syncing, so it's always sending the matrix code. Breaking up the PR into chunks (like the sync timers) would make it easier to get merged in, as it would be easier to review, which would make it faster to get in. |
Okay. Didn't opened an issue for the sync timer yet, if people wanted to suggest a radically different way for this. EDIT: Issue is open. See #9665. |
Looks like we're going to need a rebase on top of |
Whatya mean? My idea honestly was to do #9665 first from a clean slate on (develop branch). I know what to change and it isn't much. My troubles are: |
I am running your code successfully on my split keyboard. Communication is via serial link on an stm32f103. Please let me know if I can help testing the changes. 🙂 |
Yeah that's fine - it's more that in this PR's files list above, it's got tons of changes from the branch which isn't part of your PR. But... if you're going to refactor with a clean slate, then I'll mark this as "on hold" until #9665 and any other prerequisites are sorted. EDIT: Scratch that, "awaiting pr" instead. |
550bb6a
to
9d827f9
Compare
1d4c0cd
to
65c27a3
Compare
a1b96ba
to
3430907
Compare
I can confirm this is working great with my Lily58L. Also I noticed that this branch includes Lily58L support, which is strictly beyond the scope of this branch. I will submit a PR for basic Lily58L support with RGBLIGHT, at least then the matrix modifications in this branch for the keyboard will be relevant. |
Should be closed for the updated pr: #11055 |
This is an advancement from #5998
The idea is to implement the rgb matrix module for split keyboards, as it is currently missing.
Description
This is some basics to get RGB matrix support onto split keyboards. The main change of idea between this and #5998
is, that this feature line does not enable keyboard evaluation on the slave side, but instead the config is always synced from master to slave only if changes occur. (very similar to how the RGB lighting module works).
As such both keyboards cannot get out of sync, has it can happen on #5998.
For interactive animations, the state of the master is transferred to slave, but only rgb matrix specific functions for keyboard evaluation are triggered.
timer.c
is now sync'd between halvesStill to do
LT(_LOWER, KC_BSPC)
was used. (an LT modifier on master side doesn't seem to be so problematic)timer.c
is synced with an static offset to account for transfer delay. If issues occur it might be more plausible to implement a real timer sync protocol similar to Cristian's Algorithmrgb_matrix
on slave sidemake all
as definitions fromsync_timer
weren't foundKnown issues
Types of Changes
Issues Fixed or Closed by This PR
Checklist