Keyboard Builders' Digest
5% off of Invokeys' tasty switches!
Keyboard Builders' Digest /

On the VIK interface

Sadek Baroudi writes about the inception and significance of VIK, a standardized interface for keyboards (and more).

Sadek Baroudi
Published December 13, 2023
This post is part of the KBD.NEWS Advent Calendar 2023. The previous article was: PCB design, stonework, and combining them together by wayduh. Stay tuned and check back for more articles tomorrow!

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.

Pic:

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!

Pic: A SVLINKY controller (which has a VIK connector built in) connected to a VIK Azoteq trackpad module

A SVLINKY controller (which has a VIK connector built in) connected to a VIK Azoteq trackpad module

Pic: A SVLINKY controller connected to an optical sensor module for a trackball build

A SVLINKY controller connected to an optical sensor module for a trackball build

Pic: A picture of the fully assembled build of the previous image

A picture of the fully assembled build of the previous image

Note: SVLINKY is available to be manufactured from the open source repository, as well as a commercial offering.

Pic: VIK directly built into an open source keyboard called vulpes minora, connected to a cirque trackpad / scroll ring module

VIK directly built into an open source keyboard called vulpes minora, connected to a cirque trackpad / scroll ring module

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.

I have a collection of keyboards, but the ones I use primarily are: ffkb v3 and rock on v3.1.

Sadek Baroudi

sadekbaroudi, sadekbaroudi#1258
LocationCalifornia, USA
DescriptionGot into ergo mech, started designing, fell in love, never looked back
Joined2020
NicheUnibody splits
Fav. switchMomoka Frog v3s, Gateron Red Ink V2s, Gateron KS-3 Milky Yellow Pros
Fav. keycap profileMT3, DES
Linksfingerpunch.xyz, github, discord, reddit, instagram
Do you like this post? Share, donate, subscribe, tip me off!

Published on Wed 13th Dec 2023. Featured in KBD #2023.


Related

A brief history of keyboard encoding

Daniel shares with us some of the fruits of research into computer keyboard history conducted over recent years. In this case, the surprising variety of methods by which keyboards determined which keys are being pressed.

Building keyboards with lasers

Ming-Gih Lam walks through the process of how to build keyboard cases using vector graphics software and a laser cutter.

ZMK: A History

Pete Johanson sums up the early days of ZMK, everyone's favorite wireless first firmware, and looks into the future.

How to organize a keyboard meetup

Gordon Diggs, the man behind the NYC Mechanical Keyboard Meetups, gives us some tips on how to organize a meetup.

Forcy McForceFace

Jesse Vincent, cofounder of Keyboardio, describes building a force tester out of an old 3D printer: Forcy McForceFace.

PCB design, stonework, and combining them together

WayduhKBD sums up the year including learning PCB design and combining two hobbies.

×
top