ATTiny85 as USB input device

Hello and welcome to our blog post today.


Those who sit on the PC a lot know the problem: there are a variety of programs, and each program offers a variety of keyboard shortcuts. Thanks to the keyboard shortcuts, frequently used functions should be faster to perform.

This also works quite well for everyday things like "copy" and "paste", but there are also keyboard shortcuts that require a little more finger acrobatics, or combinations that are rarely used, and therefore quickly forgotten.

Now there are ATTiny85 the ability to use a microcontroller as a USB input device. So the module can send keyboard commands i have set to my PC - for example, when a button is pressed.

So I want to get some VERY robust buttons to perform certain keyboard shortcuts with my fist (such as Alt+F4 to close a program). In addition, I have an old foot button from a keyboard - ideal for activating "push-to-talk".

Whoever uses the instructions in our eBook to ATTiny85 is certainly aware of the biggest hurdle in the project:

The small module does not work exactly as one is used to from a nano or Uno. After plugging in, the module enters programming mode for only a few seconds. During this time, the code can be uploaded.

First, we need to make sure that our module is recognized and appears in Windows Device Manager. To do this, we press the Windows key + R for "run" (wouldn't it be nice to have an extra button for it?), and in the "Run" window we enter the command "devmgmt.msc" at "Open:" (wouldn't it be great if this would do this to a macro?).

Now, when the module is plugged in, there should be an entry "libusb-win32 devices" with the entry "Digispark Bootloader".


If the module appears as an "Unknown Device", please make sure that the latest drivers are installed. These can be found at:

Please also make sure that the link for the Digistump module has been added under "File" -> "Preferences" for "Additional Board Manager URLs" (

Now we can check via the board manager whether the package for "Digistump AVR Boards by Digistump" is installed or if necessary reinstall:


Now to the build-up. I use a simple button, and connect GND to GND, and S to one of the 6 pins of the ATTiny. Of course, you can select multiple buttons or other sensors at will.

The 6 pins offer us the following options:

All pins can be used as digital I/Os.
Pin 0 x I2C SDA, PWM 
Pin 1 x PWM 
Pin 2 x I2C SCK, Analog In
Pin 3 x Analog In (also used as USB+ when connected via USB)
Pin 4 x PWM, Analog (also used as USB when connected via USB)
Pin 5 - Analog In


As an example of this post, I wrote the following sketch:



#include "DigiKeyboard.h"
Int buttonPin = 0; Here the button is connected

Void Setup() {   pinMode(buttonPin, Input);   digitalWrite(buttonPin, High);

Void Loop() {   DigiKeyboard.sendKeyStroke(0);   If (digitalRead(buttonPin) == Low){     DigiKeyboard.sendKeyStroke(KEY_R , MOD_GUI_LEFT); Win+R Combination of Deeds     DigiKeyboard.Delay(50); Wait a short time     DigiKeyboard.println("devmgmt.msc"); Call device manager     DigiKeyboard.Delay(1000);   }

Now I can open the device manager in Windows at the touch of a button.

Of course, there are countless ways to use this in practice. For example, you could use foot buttons to switch between programs or to save a great game scene using shadowplay. Live streamers can conveniently create a multi-button control panel to switch between scenes, or mute the microphone.


I hope today's contribution has brought you new ideas and wish everyone a nice weekend.

Yours Markus Neumann







Projects for beginners




Guten Tag. Ich bin ein wenig spät, ich weis. Ich werde es mal ausprobieren, klingt nach Spass.

Hier noch ein paar Tips:
Windows key + R for “run” (wouldn’t it be nice to have an extra button for it?)
Ja, den gibt es, in Windows 10 kann man die Windowstaste kurz drücken und dann den Befehl, wie bei “run” direkt eingeben.

enter the command “devmgmt.msc” at “Open:” (wouldn’t it be great if this would do this to a macro?).
Ja auch das geht mit Windows 10, schneller: rechtsklick auf das Startmenu und es öffnet sich ein Menu mit allem was der Admin so braucht.

Bernd Albrecht

Bernd Albrecht

@ Daniel:
Zunächst meine Frage: Haben Sie alles nachgemacht und ausprobiert, was dort beschrieben ist. Insbesondere die Frage, ob der Treiber für ATTiny 85 Digistump mit schon installiert ist und die Arduino IDE das Board bereits kennt (“Datei” → “Voreinstellungen” bei “Zusätzliche Boardverwalter-URLs”, der Link für das Digistump Modul hinzugefügt wurde (
Haben Sie sich das eBook zum ATTiny angeschaut?
Was haben Sie an dem Sketch nicht verstanden? Mit der Zeile
wird Text einschließlich gesendet.
Tragen Sie hier einfach „&“ zwischen den Klammern ein.
Die Besonderheit beim ATTiny ist, dass der Micro Controller erst eingesteckt wird, wenn die Arduino IDE beim Programm upload nach dem Kompilieren dazu auffordert.



möchte den attini85 als usb Tastertur programmieren sodass ich mit einem & Zeichen einem Programm das & Zeichen als mute Befehl zuweisen kann können sie mir dafür die codezeilen schicken bin Anfänger auf dem gebiet vielen dank im vorraus.



impossible to buy ebook in english for atiny85
only deutsh and italiano



Diese Anleitung habe ich befolgt, auch die eures eBook. Digistump-Treiber etc. installiert … nur der Attiny85 wird nicht erkannt. Woran könnte es liegen? Mein Win7 arbeitet mit allen Arduino-kompatiblen Boards gut zusammen.
Danke für einen Hinweis.

Markus Neumann

Markus Neumann

Hallo RalfK,
Vielen Dank für den Hinweis.
Das eBook finden Sie unter
Ich habe im Beitrag einen Link zum eBook hinzugefügt.



Wo finde ich die Doku dazu? (Es heist: Wer der Anleitung in unserem eBook zum ATTiny85 gefolgt ist…)

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. Install ESP32 now from the board manager
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP programming via WLAN