A bundle of keyboard layouts for digistump AVR boards including many layouts.
Extension of the Digispark Keyboard library, originally included in the DigistumpArduino drivers for the Arduino IDE.
(c) ANYGATE 2026 - Licensed under GNU GPL
Tested & working on:
- macOS
- Windows 10 & 11
- Kali Linux
- Ubuntu 20 & 22
Adaptation of Layouts
- digistump (US)
- adnan-alhomssi (De)
- Maiux92 (It)
- Robotechnic (Fr)
All users are on Github
V-USB driver by OBJECTIVE DEVELOPMENT GmbH. Distributed under GNU GPL v2 by digistump.
The library works like the original.
Sends a specific Key, e.g. the Windows key (128).
Prints a string.
Delay to keep the device alive when plugged in.
Windows keeps checking if the device is alive, so by using DigiKeyboard.delay(); it keeps it alive even during a pause. The default Arduino delay won't.
Listed with the Language followed by the language code in brackets:
- US (Us)
- German (De)
- Italian (It)
- French (Fr)
- Download (or clone) this repository.
- Copy the downloaded or cloned folder.
- Go to your Documents folder, then to the Arduino folder. If there is a "libraries" folder simply open it, if not create one and then continue.
- Paste the DigiKeypack folder here.
- Restart your Arduino IDE
And you're done!
It is really simple to use. Simply include the header file with the desired layout and use it like the original library.
To select a layout, simply add the language code (see documentation above) at the end of "DigiKeyboard", so that it would be like this: #include DigiKeyboard[lang].h
For the US layout would that be: #include "DigiKeyboardUs.h"
Examples for all layouts (Windows):
//Including the US layout
#include "DigiKeyboardUs.h"
void setup() {
DigiKeyboard.sendKeyStroke(0); //Pressing nothing (used for older systems)
DigiKeyboard.sendKeyStroke(0, 128); //Pressing the Windows-key
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Notepad"); //Writes "Notepad" in the search bar.
DigiKeyboard.delay(300); //300ms delay
DigiKeyboard.sendKeyStroke(KEY_ENTER); //Pressing enter
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Hello world!"); //Writes "Hello world!" into Notepad
}
void loop () {
//Do nothing.
}//Including the German layout
#include "DigiKeyboardDe.h"
void setup() {
DigiKeyboard.sendKeyStroke(0); //Pressing nothing (used for older systems)
DigiKeyboard.sendKeyStroke(0, 128); //Pressing the Windows-key
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Notepad"); //Writes "Notepad" in the search bar.
DigiKeyboard.delay(300); //300ms delay
DigiKeyboard.sendKeyStroke(KEY_ENTER); //Pressing enter
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Hello world!"); //Writes "Hello world!" into Notepad
}
void loop () {
//Do nothing.
}//Including the Italian layout
#include "DigiKeyboardIt.h"
void setup() {
DigiKeyboard.sendKeyStroke(0); //Pressing nothing (used for older systems)
DigiKeyboard.sendKeyStroke(0, 128); //Pressing the Windows-key
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Notepad"); //Writes "Notepad" in the search bar.
DigiKeyboard.delay(300); //300ms delay
DigiKeyboard.sendKeyStroke(KEY_ENTER); //Pressing enter
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Hello world!"); //Writes "Hello world!" into Notepad
}
void loop () {
//Do nothing.
}//Including the French layout
#include "DigiKeyboardFr.h"
void setup() {
DigiKeyboard.sendKeyStroke(0); //Pressing nothing (used for older systems)
DigiKeyboard.sendKeyStroke(0, 128); //Pressing the Windows-key
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Notepad"); //Writes "Notepad" in the search bar.
DigiKeyboard.delay(300); //300ms delay
DigiKeyboard.sendKeyStroke(KEY_ENTER); //Pressing enter
DigiKeyboard.delay(1000); //Wait a second
DigiKeyboard.print("Hello world!"); //Writes "Hello world!" into Notepad
}
void loop () {
//Do nothing.
}