Many keyboards now come with shortcut keys for starting a web browser or controlling volume. I wanted to be able to define my own actions so created Quick Launch Keys.

Each key sends ctrl-alt-windows plus a number pad key from 1 to 8. No matter how long the key is held down for, it never repeats. This prevents multiple copies of a program being launched accidentally. The built in shortcuts feature of Windows can be used, but I prefer Directory Opus.

The code is based on the AVR-USB HIDKeys reference project. The main modification is the sending of a key-up code after the key-down code to prevent a key from repeating.

At the request of Björn Claesson, a Macro Keys version was created which sends two or more tabs followed by enter. The number of tabs sent corresponds to the key number. This is useful for operating GUI applications where tab is used to move the focus and enter to "click" a button.


Only minimal hardware is required. The keys are not multiplexed. No debouncing is done as debouncing is carried out as a side effect of the low polling speed.

Quick Launch Keys schematic
Quick Launch Keys schematic
Macro Keys Schematic
Macro Keys schematic
Quick Launch Keys
Quick Launch Keys

Connections for the Macro Keys are not shown on the schematic, see the table below:

 ATmega8  Key 
 Port C 0-5 Key 1-6
 Port B 0-5 Key 7-12
 Port D 0-1 Key 13-14
 Port D 4-7 Key 15-18