Skip to content
Keyboard Controller, using Teensy 3.2 and ST7735 display. Editing key mappings, layers and sequences in real time. With also few display demos and a game.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.settings Clock new page, no labels. Inactive time show old if new below 5min. Jan 28, 2019
lib my font based on FreeSans9pt7b Jun 30, 2018
t3 KEY_MEDIA_CALC, no Eject, cleanup keylayouts.h May 6, 2018
.cproject tft led brightness from DAC, with npn transistor Apr 7, 2018
.gitignore added .gitignore Mar 14, 2018
Makefile Clock new page, no labels. Inactive time show old if new below 5min. Jan 28, 2019 fix link2 May 12, 2019

Keyboard Controler

This my own USB Keyboard Controler code for Teensy 3.2 with TFT ST7735 color display.

Called K.C. ("Kacey") for short.

It allows editing everything on keyboard display, in real time. No other tools needed.

More description of project on my website, with links to videos.



  • Mapping - menu, for remapping USB key codes to physical keys.
  • Layers
  • Sequences - editor for macros, passwords, etc.
  • In sequence commands - e.g. wait, change key delay, comment part, hide rest, and all mouse commands.
  • Visual keyboard - drawn on display with current mappings. Physical layout is done in cpp file.
  • Mouse keys - with move acceleration, also for wheel.


  • Setup in EEPROM - loading and saving full keyboard setup (parameters, mappings, sequences).
  • Anti-ghosting code - needed for foil keyboards without diodes.
  • Testing pages - showing pressed keys info, matrix ghosting, layer use, etc.
  • Keys list - for picking, with custom group colors and filtering.
  • Parameters - for Scan Setup, Mouse and Display, adjustable in menu.
  • Sequence preview in Mapping and Testing views. Mapped keys in Sequences view.


  • Many demos - with presets, e.g. Plasma, Wave, Fire, Polyhedrons 3D, etc.
  • Falling blocks game - with random generated blocks, many presets and custom options.
  • Clock with date (needs 3V battery) and Temperature reading from DS18B20 sensor.
  • Help pages with all GUI keys and colorful GUI Menu with 2 levels and 3 fonts.

Code used

It uses code from repositories, quite reduced and/or modified:

Since I am using a buffer (40kB for 160x128), all drawing code fills it. On each frame, buffer gets sent to display, thus no flickering. All unnecessary code for drawing from libraries was removed.

Displaying GUI and scanning keyboard (at 1kHz) gives about 30-50 drawn frames per second. Demos are slower 10-30.

Some of my code (anti-ghosting, Gui, demos) are adopted and were already present in my fork of kiibohd, done for my previous keyboards, info on My Website.


The keyboard is made of:

  • Teensy 3.2 (or 3.1), overclocked, stable at 144 MHz
  • TFT LCD display ST7735, 160 x 128, 16bit color RGB565. Red PCB with SD card slot. Terribly low viewing angle.
  • NPN transistor BC550. Connection from DAC A14 output through 4.7k resistor to base, collector to 3.3V, emitter through 47 ohm resistor to Display LED.
  • Optionally a DS18B20 1-wire temperature sensor with data pin through 4.7k resistor to 3.3V.


My sources are licensed GPLv3. For other sources used, see their repositories.

You can’t perform that action at this time.