The QMK customized Firmware

To transform an Arduino develpment board in a USB keyboard converter, the software has to deal with two basic functions:

  • Scan the rows and columns matrix (X-Y) formed by the keys, detecting which ones are being pressed.
  • Send through the USB interfase, the codes corresponding to the pressed keys to the host (PC/Raspberry/Android), considering wich Layout were selected and which Modification Keys (Alt/Shift/Control) were pressed. 

To achieve that and after trying with Arduino scketchs and others tools, I ended up using Quantum Mechanical Keyboard Firmware, a very powerful firmware used by mechanical commercial keyboards like the «gamers» keyboards.

As I mentioned before, my code is open and it can (and should!) be modified as many times as the user wants. I’d like to recieve any proposal able to improve my original layouts!!

Main features ot the firmware

The firmware I developed includes the following features:

1. Five different Keyboard layouts (called also mappings):

    • For Operative Systems (Windows, Linux, Android, macOS) use.
    • For Commodore-64, VIC-20, Commodore-16, Commodore-116 and Commodore Plus/4 emulation.
    • For Commodore-128 emulation.
    • For Commodore PET Graphics Keyboard emulation.
    • For Commodore PET Business Keyboard emulation.

2. Switching through layouts using shortcuts.

3. Indication of selected layout using different colors of a RGB LED (not available for Plus/4).

4. Support for two Commodore/Atari Joysticks (for emulation).

Due to the fact the QMK code has to be compiled, there are a version of the firmware for each board and they has to be wired in the way described here, due to having different pins arrangement.

Go to the Download/Firmware page to download it.

For Chipset ATMEL 90USB1286:

  • Teensy++2.0 (and clones)

For Chipset ATMEL Mega32u4:

  • Arduino Leonardo
  • Arduino Micro
  • Teensy 2.0.
  • Pro Micro (LED RGB not supported).

For Chipset ARM:

  • Rapberry RP2040 (Pi Pico)