Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Firmwares for keyboard controllers

Firmwares for custom controllers to replace stock Costar controllers allowing you to program your keyboard.

Firmwares include:

  • The Frosty Flake (for Cooler Master Quick Fire Rapid)
  • The Kitten Paw (for Filco Majestouch full size)
  • The Black Petal (for Rosewill full size)
  • The Pegasus Hoof (for Filco Majestouch Tenkeyless)

For more information, please see the Costar replacement controllers page on the Deskthority Wiki.


One goal of this project is to make a keyboard firmware for ATmega32U2 based daughter boards as simple (within reason) as possible. It is supposed to be a first introduction to how a keyboard works.

Features will be limited to the following topics:

  • Basic keyboard (nothing mouse or other devices)
  • Simplified layout definitions
  • Timer interrupt matrix scans
  • Basic de-bouncing
  • PWM control for LEDs

For more advanced features there are other keyboard firmwares already way ahead of this project. If you want to contribute by increasing clarity, understandability or simplicity, please do. Also feel free to fork, clone or copy selected parts to diverge however you like from the constraints of this project.

Other keyboard firmwares

Some other noteworthy keyboard firmware projects are:

Forks from this project:

Controller firmwares

Regular keyboard firmwares are located in the folder keyboards. Compiled binaries will end up in the folder binaries.


In order to compile firmwares, avr-gcc is required. Please ensure you have it installed before moving to next step.

You need to select the correct MODEL and LAYOUT variables in the Makefile

MODEL = [flake|paw|hoof|petal]
MCU = atmega32u2
F_CPU = 16000000
B_LOADER = \"jmp\ 0x7000\"

Then run the make command in a terminal. Always run a make clean first.

$ make clean && make

If the process is successful, you would find binary firmware with extension .hex inside the binaries folder.

Flashing the controller

Make sure you install dfu-programmer first.

$ dfu-programmer atmega32u2 erase
$ dfu-programmer atmega32u2 flash binaries/[flake|paw|hoof|petal]_[ANSI_ISO_JIS|DVORAK].hex
$ dfu-programmer atmega32u2 start

Testing and debugging firmwares

For debugging needs the firmware in the folder debugger can be used. This firmware registers as a keyboard. Every half second or so it will print a row with with (letter,number) pairs describing the rows and columns of the currently pressed keys. This can be useful to find hardware errors. The keyboard LEDs will also be flashed every cycle.

The tester firmares are for production testing only.

Compiling and Flashing

See above section under Controller firmwares.


costar_keyboard is free software released under the MIT license.

See the COPYING.MIT file or for more details.

Some files distributed as part of costar_keyboard are licensed under different licenses:

  • portions of Makefile: Public domain (by Eric B. Weddington, Jörg Wunsch et al.);
  • lib/keycode.h: GPL v2 or later (by Jun Wako);
  • lib/usb_keyboard_debug.c: MIT (by PJRC.COM, LLC).


Really simple firmware for the Costar replacement controllers







No releases published


No packages published