VIK - a new open standard for interconnecting keyboards to modules
Hey all! I've been working on a new standard for interconnecting a main keyboard pcb to modules.
What does this mean? If a keyboard pcb supports the interface via a connector and some basic wiring, it will allow you to use the available open source modules.
I designed an open source keyboard called vulpes minora to prove out the concept, along with 4 modules that you can connect to it. Even before officially announcing it, there are have been 3 keyboards that have adopted it, along with 2 modules developed (Great work by zzeneg , Ariamelon, and Ben!)
Here is a link to see the full list of supported keyboards and modules.
The VIK repository is here, and it highlights how it works, how to implement support for it (for both a keyboard and a module), along with working examples.
If more people adopt it, more people will be incentivized to make modules, and we'll all benefit from it. No more days of "hey, check out this cirque trackpad, let's figure out a way to hack it onto existing boards!". Instead, it will be "Hey, we should design a VIK module that supports this new cool thing!". Then people will be able to just swap in the new thing, write some basic firmware, and fold it into their existing keyboards.
Thinking out loud here, but if it starts to get popular, we could even work with the QMK folk to potentially create some standardized way of supporting modules (from a firmware perspective) in a more streamlined way.
Anyway, questions and feedback very much welcome.
If you'd like to discuss it in more depth, please feel free to join the fingerpunch discord server, and chat me up (sadekbaroudi) in the #vik channel.
If I'm reading this right, you're basically combining power, I2C (I3C - same pins), SPI, 1-wire RGB LED data (neopixel), and some extra for additional I/Os on an FPC. I like it. I had similar occur to me but never ended up developing it past "wouldn't it be cool...".
Nice work. I'll have to play around with this once I've got my dev boards setup.
So glad to see this coming along - the idea of modularizing things will make it so much easier for folks to tinker with existing boards and truly customize them to their own needs.
I hope so! Adoption is key. I'd like to actually offer that if there is an open source board that anyone would like me to add VIK support to, and the maintainer will accept a PR for it, I'll gladly do the work.
Can I take you up on that offer? :) I already have a board with a 12 pin fpc connector for the cirque trackpad but I suppose it mainly needs one level of redirection to support the VIK standard?
After having a hard time trying to hand solder a fpc connector and just giving up, I would suggest a more regular pin header sort of thing, maybe with two rows? (the ones with 2.54.mm pitch), or something through hole at least.
Otherwise, you are forcing people to either pay for assembly to jlc / pcbway and the sort or fork more money on tips, flux, braid, etc. Fpc is not handsolder friendly. That is, if you are aiming at the diy community.
While probably not a problem for a shop, it makes it more expensive for a few units and complicates (while probably only a bit) the ordering process.
Just my opinion after a bad soldering day.
edit: Note that I love the idea, would help to expand keyboards a great deal and can build the community.
(sorry for the delayed response, I don't have notifications set up for lemmy)
Yeah, I realize that hand soldering fpc is not easy. However, the alternatives were much more bulky connectors. I actually did add a footprint in VIK that allows you to use a 2 row pin header, as you had described! It's in the repository, though the README doesn't highlight it at all!
With these, you can use a very commonly available, like this one:
https://a.co/d/glcPKeg
If you search for "fpc 12 pin 0.5mm breakout", you'll find a bunch of these same ones.
So, adding support for a board using these shouldn't be too bad! Also, I just made a new controller that has a VIK connector built in, so you can make any pro micro compatible keyboard VIK enabled :)