Intro

The wring for the extra components is pretty straight forward, the button matrix is easy enough if you know what needs to get soldered.

Joystick

Adafruit Joystick
Adafruit Joystick

The PCB of the joystick has 5 pinouts, 2 for ground and voltage, 2 for the potentiometer outputs and one for the push button (which shorts ground when pressed).

The only important part here is choosing the correct pins for the analog output, not all pins on Pro Micro/Elite Cs are analog ones.

Joystick MCU
VCC VCC
Xout any analog pin
Yout any analog pin
Sel any digital
GND GND

I'm using F5 and F6 for the analog inputs.

RGB

RGB strip
RGB strip

Any LEDs supported by QMK

WS2812 high density strip

For the underglow I'm using a high density WS2812 strip, high density because it has 100 diodes per meter.

The wiring is even easier than the joysticks.

RGB MCU
VCC/5v VCC
Data any pin
GND GND

I used D6 for the RGB data

The strip itself is mounted inside of the keyboard, with the RGBs facing outwards lighting the inside of the case.
This scatters the light evenly so no single LEDs are directly visible in the underglow.

Mounted facing outside
Mounted like this

OLED

OLED
OLED

just the one I had lying around and fit into the case

0.91 OLED 128x32 SSD1306

The OLED has 4 pins, 2 for ground and voltage, and 2 for I2C.
One is for the clock (SCL/SCK), and another for data (SDA).
Pro Micros/Elite Cs only have 2 I2C pins, D1 (SDA) and D0 (SCL). So thats what we're going to use.

OLED MCU
GND GND
VCC VCC
SCK D0
SDA D1

Matrix

The QMK docs have a great in depth explanation on hand wiring a matrix.

But the TL;DR is:

  • switches are in rows & columns
  • a diode after every switch, before it connects its row
  • all diodes need to face in the same direction
Matrix wiring
Matrix wiring
Keyboard MCU
R0 D5
R1 D2
R2 D3
R3 D4
R4 D7
C0 E6
C1 B3
C2 B7
C3 B2
C4 B1
C5 B0
C6 F7

Result

The only thing left to do is configuring QMK, now that we have everything wired up properly.