AlpsComeback wrote: ↑08 Nov 2023, 00:17
It also makes it more difficult to use one QMK branch for my F77 and the main QMK branch for my other supported keyboards.
Ah, okay...if you have a bunch of different QMK-powered keyboards & you're trying to maintain a common code base and feature-set amongst all of them, then that makes sense.
AlpsComeback wrote: ↑08 Nov 2023, 00:17
That note about literal space limitations within the ATmega chips was something I wasn't aware of, so that's good to know.
There are of course many ATmega-powered keyboards out there that QMK supports, with traditional (non-capsense) matrices. The capsense support code itself is not obese by any means, but it does add not-insignificant additional heft to the code size. So the capsense boards that also use ATmega are already at a disadvantage, resources-wise. Add to this that the Xwhatsit controller design was based off of the ATmega32U2, which has fewer USB endpoints and 40% of the SRAM (1K vs. 2.5K) when compared to the more widely used (though slightly more expensive) ATmega32U4. This leads to some tight runtime space and fewer possible simultaneous features (e.g., things like ExtraKeys / MouseKeys / Command keys / debug console / etc.). Since the 32U4 is not pin-compatible with the 32U2, most of the Xwhatsit redesigns have favored keeping the 32U2 for the sake of simplicity rather than taking the opportunity to re-design around a beefier micro. So now we are kind of stuck with it, at least for the keyboards already built and sold so far.
When building Vial-enabled firmwares, I ran into the SRAM constraints early on: basing off of the Vial 0.4-era codebase proved to be no problem, but when I tried to update to newer Vial build trees, I would experience crashes and instability, likely due to lack of available SRAM / stack overflow. The only way to work around it without really diving deep into the code and rewriting a bunch of stuff is to start disabling features in the build...features that were already working just fine in previous versions on the same keyboard controller. It got even worse with more recent code, where now building with the same feature-sets as before results in a firmware binary that is too big to even fit into flash.
The resource constraints issue doesn't seem to merely be limited to trying to build with VIA/Vial support (which admitted add a hefty amount of code all on their own to the build!), as there are reports of people trying to take the capsense code, merging it with current QMK master, building & flashing, and running into instability that also smacks of stack overflow in scenarios where this previously was not an issue.
The glimmer of hope on the horizon is that Rico from this community has been diligently working on a new capsense controller design based around the Raspberry Pi RP2040 micro, which is *significantly* more powerful than the aging ATmega line, and an amazing price to boot. Resource-wise, it eats current QMK+Vial for breakfast. The unfortunate part is that you'll have to completely swap out your controller on your keyboard if you want to take advantage of this when the time comes, of course. So get prepared to break out your soldering iron...(ugh)
AlpsComeback wrote: ↑08 Nov 2023, 00:17
I was able to get the fork with F77 support working a long while ago, but upon trying it again recently, something kept going wrong. The instructions I was looking at may have been out of date. I can give it another shot going off the instructions linked on modelfkeyboards.com, but it feels somewhat piecemeal with different parts of it on different websites.
Is this
Google doc from modelfkeyboards.com the most up-to-date set of instructions available?
If all you want is just basic QMK, then yeah, basically just clone the purdea.ro git repo and build straight from that. Really should work out of the box, and there's nothing piecemeal about it.
I'd guess that the "piecemeal" vibe you were getting probably largely came from other people (perhaps such as myself, heh) coming up with their own "remixes" of QMK firmwares and sharing them with the public. If you wanted to build something with Vial support, for example, you'd have to clone from the Vial repo, likely roll back to an earlier commit that will work stably on the Xwhatsit and fit within the resource constraints of its microcontroller, pull the capsense files from the purdea.ro repo and merge them with the Vial tree, and then build.
When I do releases of these, I include a basic shell build script that shows exactly what sources I'm pulling from and how all of the parts fit together. So if you want to do something more sophisticated than simply build from the capsense QMK fork, you could take a look at my build script for some inspiration, I suppose.
My most recent public release is
posted here. Though I'm gearing up to do another release, likely in a matter of days (once I hear back from Ellipse that the new boards I added support for all seem to work fine with it).