A custom mechanical keyboard project featuring per-key OLED displays for dynamic legends, status information, and highly personalized layouts.
OLED Keyboard is an experimental custom keyboard platform where each key can display its own icon, label, layer state, shortcut, or custom graphics.
The goal of this project is to explore the intersection of keyboard design, multi-panel display integration, power distribution, and user interaction.
This project combines:
- custom PCB design
- embedded firmware development
- OLED display integration
- keyboard matrix scanning
- USB communication
- dynamic key rendering
Depending on the firmware mode, each key can show:
- key labels
- shortcuts
- symbols
- macros
- layer indicators
- application-specific legends
- simple animations or status feedback
Traditional keyboards are static: the legend printed on a keycap never changes.
This project explores a more flexible and expressive approach where each key can adapt visually to:
- active layer
- language layout
- software context
- macro profile
- user preferences
The idea is to make a keyboard that is not only functional, but also programmable, informative, and visually unique.
- Per-key OLED displays
- Fully custom PCB
- Mechanical key switches
- Dynamic legends and layer indication
- Custom embedded firmware
- USB connectivity
- Macro and shortcut support
- Potential support for animations and contextual UI
Current hardware exploration includes:
- microcontroller: RP2040
- OLED display 0.64inch 64x64 pixels, RGB color, based on SSD1357 controller
- keyboard matrix scanning
- Kailh Choc V1 mechanical switch
- power distribution for many small displays
- SPI display communication
- optional rotary encoder support
- USB interface
The exact hardware architecture may evolve as the project progresses.
The project is roughly divided into the following blocks:
-
Keyboard matrix
Detects key presses using rows and columns. -
Display subsystem
Drives the OLED displays and refreshes per-key content. -
Firmware layer engine
Handles keymaps, layers, macros, and display content generation. -
USB HID interface
Sends keyboard events to the host computer. -
Power management
Ensures stable power delivery for the MCU, switches, and all displays.
This project involves several interesting engineering challenges:
- driving many OLED displays efficiently
- balancing refresh rate and power consumption
- routing high-density display interconnects on PCB while keeping the layout compact, especially do not create too large space between two keys
- scaling SPI/I2C buses
- memory usage for icons/fonts/framebuffers
- firmware architecture for real-time input + rendering
- mechanical integration and assembly
This project is currently in active development.
Current focus areas include:
- hardware architecture exploration
- PCB design
- display driving strategy
- firmware prototyping
- validation of power and signal integrity constraints
.
├── docs/ # Design notes, architecture, ideas, references
├── hardware/ # Schematics, PCB files, manufacturing outputs
├── firmware/ # Embedded firmware source code
├── images/ # Photos, renders, screenshots, diagrams
├── tools/ # Helper scripts, generators, utilities
└── README.md
The initial assembly of the keyboard is shown in the two figures below. At this stage, only one screen and one mechanical switch were mounted in order to validate the basic functionalities before proceeding with the soldering of the remaining components.
Initial assembly has been completed. Functional testing will be conducted in the next stage.

