Skip to content

BadUSB Script File format and Command Syntax

Original documentation here.

The Flipper Zero's BadUSB app uses extended Duckyscript syntax.
It is fully compatible with classic USB Rubber Ducky 1.0 scripts.

BadUSB has some additional commands and features:

  • Custom USB IDs
  • ALT+Numpad input method
  • The SYSRQ command
  • More functional keys

BadUSB can execute only scripts from .txt files. Scripts don't need to be compiled.
Both LF and CRLF (\n and \r\n) line endings are supported.
Empty lines are allowed.
You can use spaces or tabs for line indentation.

Script Commands

Comments

Just a single comment line.
The interpreter will ignore all text after the REM command.

Command Parameters
REM Comment text

Delays

Pause script execution by a defined time.

Command Parameters Notes
DELAY Delay value in ms Single delay
DEFAULT_DELAY Delay value in ms Add a delay before every command that appears after this
DEFAULTDELAY Delay value in ms Same as DEFAULT_DELAY

Special Keys

Command Notes
DOWNARROW / DOWN
LEFTARROW / LEFT
RIGHTARROW / RIGHT
UPARROW / UP
ENTER
DELETE
BACKSPACE
END
HOME
ESCAPE / ESC
INSERT
PAGEUP
PAGEDOWN
CAPSLOCK
NUMLOCK
SCROLLLOCK
PRINTSCREEN
BREAK Pause/Break key
PAUSE Pause/Break key
SPACE
TAB
MENU Context menu key
APP Same as MENU
Fx (where x is a number 1-12) F1-F12 keys

Modifier Keys

These can be combined with a special key command or a single character.

Command Notes
CONTROL/CTRL
SHIFT
ALT
WINDOWS/GUI
CTRL-ALT CTRL+ALT
CTRL-SHIFT CTRL+SHIFT
ALT-SHIFT ALT+SHIFT
ALT-GUI ALT+WIN
GUI-SHIFT WIN+SHIFT
GUI-CTRL WIN+CTRL

Holding and Releasing Keys

You can hold up to 5 keys simultaneously.

Command Parameters Notes
HOLD Special key or single character Press and hold key until RELEASE command
RELEASE Special key or single character Release key

Wait for User Input (Button Press)

Wait indefinitely for a button to be pressed.

Command Parameters Notes
WAIT_FOR_BUTTON_PRESS None Will wait for the user to press a button to continue script execution

Strings

Command Parameters Notes
STRING Text string Input a text string
STRINGLN Text string Input a text string and press ENTER after it

String delay

Add a delay between keypresses.

Command Parameters Notes
STRING_DELAY Delay value in ms Applied once to next appearing STRING command
STRINGDELAY Delay value in ms Same as STRING_DELAY

Repeat

Use this to repeat the last command that was executed.

Command Parameters Notes
REPEAT Number of additional repeats Repeat the previous command

ALT Codes (ALT+Numpad input)

On Windows and some Linux systems, you can print characters by holding ALT key and entering its code on Numpad.

Command Parameters Notes
ALTCHAR Character code Input a single character
ALTSTRING Text string Input a text string using ALT+Numpad method
ALTCODE Text string Same as ALTSTRING, appears in some Duckyscript implementations

SysRq

Send SysRq command

Command Parameters
SYSRQ Single character

USB device ID

You can set the custom ID of the Flipper USB HID device.
ID command should be in the first line of script, it is executed before script run.

Command Parameters
ID VID:PID Manufacturer:Product

E.g., ID 1234:abcd Flipper Devices:Flipper Zero

  • VID and PID are hex codes and are mandatory.
  • Manufacturer and Product are text strings and are optional.