Keyboard Builders' Digest /
On the VIK interface
Sadek Baroudi writes about the inception and significance of VIK, a standardized interface for keyboards (and more).
Published December 13, 2023
The story
I created a thing called VIK. It didn’t start as VIK. It started as Voltron. There’s a story behind the name, but we’ll get to that some other time.
I got into ergo mechanical keyboards a little over 3 years ago. I loved the concept of a keyboard that was actually designed for sustained comfort. I started hunting for a board that would be ideal for me. After doing some research, I decided to try out the Ergodox EZ, given it was backed by a company with support, and a clean software interface to configure it. Upon receiving it, I was ecstatic. It was hard to use, but it felt good. After a month or so, I was able to type on it comfortably. But, there was a problem. As I became more proficient with it, I also started to notice things I didn’t like about it. The thumb cluster felt a bit awkward, and my pinkies didn’t feel good reaching for certain keys.
I did more research, and found an endless supply of boards out there. I picked up a couple of pre-assembled boards, and they were better, but still weren’t exactly what I wanted. This was the point that I decided to design my own board, exactly as I wanted. I experimented with layouts and concluded what was best suited for me. I had it manufactured, assembled the pcb, wrote the firmware, and started using it. I was happy for a couple of months.
At this point, I wanted to add a lot of the cool features that I was seeing on a variety of boards on reddit, in discord servers, etc. So, I opened up KiCad, and went back at it. I added support for encoders, OLED, joysticks, whatever I could think of. I made a few more boards, kept adding features, and was having a blast doing it.
Once I heard about the cirque trackpad, pointing devices became particularly exciting. I used to have a trackpoint on my laptop keyboard, and I loved it! I could type and use the mouse without moving my hand off the keyboard. Why wasn’t there something like this available on ergo mechanical boards? The cirque was such a great way to do that, and it was just starting to get support in QMK firmware. So, I got it all working on my FFKB (faux fox keyboard), and it was glorious! Well, sort of… As it turned out, the cirque was pretty small, and it wasn’t really effective for all day use. It was great for basic stuff, but it got a bit tiring to use after a while.
What else could I do? Oh! A trackball. The Charybdis series had them, and it was also well supported by QMK! Sounds great. I added trackball support, received the PCBs, and started using those. This was it… The endgame was here. But, I had another problem. I was too invested into this hobby. Could I just stop? Honestly, yes, I could, but I wasn’t done.
I reflected back on the last 2+ years, and I wished I had been able to do all this without having to manufacture over 100 PCBs to get where I wanted. How could that have been easier and better?
What if… What if there was a way to use the same PCB and just test new features out as “keyboard modules”? What would it take to do that? Some features I built in used I2C, some used SPI, and some used direct GPIO. Aha!! If I created an interface that exposed all of those over a cable, then I could just have the keyboard provide those signals, and a module could consume them and support whatever features I wanted.
In comes VIK.
What is it
So, what is VIK? Put simply, it’s a standardized interface that allows you to connect one PCB to another PCB, using a specific cable type. To compare it to some other interfaces, you have Qwiic, Stemma, and Grove.
While these are all great, they do have some challenges. They are all 4 pin connectors, which means you only have 4 signals you can transmit, limiting you to I2C.
In order to support almost any single thing you’d want to add to a keyboard, VIK has 12 pins. This includes:
- 5V
- 3.3V
- GND
- MOSI (SPI)
- MISO (SPI)
- Chip Select (SPI)
- SDA (I2C)
- SCL (I2C)
- RGB LED OUT/IN (Addressable LEDs)
- GPIO 1 (General purpose GPIO)
- GPIO 2 (General purpose GPIO)
This is a lot to ask in terms of GPIO, but modern controllers have enough for a keyboard matrix with leftover to spare for the list above.
I’ll spare the details from this article, but you can read all about it in the VIK github repository.
How it can be used today
If you have a keyboard or controller that supports VIK, you can connect an existing module (or design your own) and connect it to the keyboard. Once you do that, you have effectively added features to your keyboard. If you ever get tired of that feature, or come up with something new, you can swap out the VIK module for a new one.
There are a collection of controllers, keyboards, and modules that already exist!
Note: SVLINKY is available to be manufactured from the open source repository, as well as a commercial offering.
How it can be used in the future
VIK was designed around keyboard PCBs and keyboard modules. Based on how VIK is specified, it’s not limited to keyboards. It’s a generic interface for data, power, and ground. Is that revolutionary? No. Can it be useful for something unrelated to keyboards? Definitely.
Also, there are things that currently are not specified with VIK. Can you chain modules? How about a VIK hub? I have some thoughts for VIK 2.0 to enable and answer these kinds of questions. If and when that does happen, you’ll likely hear about it 🙂.
Why am I sharing and promoting this
I want this to spread within the community for a variety of reasons. The more it gets adopted, the more useful it will be. So, I’d encourage people to explore it, use it, and develop against it. The more keyboards that support it, and the more modules that exist, the more value it will bring.
Below are some profiles that you might fall under, and it may help you see the value in it for your own purposes.
The keyboard user
Is there a keyboard layout that you like, but it doesn’t have the features you want? Get a VIK controller, use it on an existing keyboard, and connect a module to it. If you want something different in the future, swap it out for another module. When new modules are developed, you can have them!
The keyboard designer
If you are designing things, don’t spend all the time and money that I had to. Make prototyping easy! You can test new things without having to make new keyboard PCBs. Make new modules, test them out against an existing keyboard.
The community member
Do you have a great idea that you want to share? You’re no longer limited to building something really cool, but on a specific keyboard that may or may not get adopted because people don’t love every aspect of your keyboard design. Do it in the form of a VIK module and people will be able to use it on their preferred board. This means that as a community, we can share our work in a more consumable way.
Thanks
I just wanted to say thanks to the fingerpunch discord community. I sit in there and ramble off all my thoughts, and people humor me for whatever reason. The amount of feedback, ideas, and general banter there is probably my favorite part of this whole keyboard journey that I’ve been on.
If you like to geek out about keyboards, have ideas to share, and/or just like to chat about nonsense, please feel free to join the discord community via the link just above.
If you want to talk about VIK specifically, there is a channel in the server, see #vik
If you made it to the end of this article, I’m impressed with your resilience to boredom.
Sadek Baroudisadekbaroudi, sadekbaroudi#1258 | |
Location | California, USA |
Description | Got into ergo mech, started designing, fell in love, never looked back |
Joined | 2020 |
Niche | Unibody splits |
Fav. switch | Momoka Frog v3s, Gateron Red Ink V2s, Gateron KS-3 Milky Yellow Pros |
Fav. keycap profile | MT3, DES |
Links | fingerpunch.xyz, github, discord, reddit, instagram |
Published on Wed 13th Dec 2023. Featured in KBD #2023.