Git hosting

plucky: Duckyscript toolchain

Clone

git clone https://depp.brause.cc/plucky.git

Files

Size Path
duckyscript/
tests/
usbdrv/
69 .gitignore
3283 DESIGN.md
35148 LICENSE
714 Makefile
3864 README.md
136 blink.c
61 example.duck
4344 keyboard.h
821 plucky.egg
25035 plucky.scm
9556 usb_hid_keys.h

README.md

About

A toolchain to turn a Digistump Digispark device into a cheap USB Rubber Ducky knock-off with a minimum amount of fuss. This wouldn't have been possible without the following projects:

Installation

Run chicken-install inside the project directory.

Workflow

Run the following inside the project directory:

plucky -i example.duck -l de -o keyboard.c
make
make deploy

Supported language

Duckyscript is a language resembling BASIC. Every line contains an all-caps command followed by arguments. The following commands are supported:

For compatibility with existing Duckyscript payloads, the following behavior is supported:

Keyboard layouts

Not everyone is using an US layout on their keyboard. To make sure the correct keys are typed, you can pick an alternative keyboard layout. The -l argument allows you to specify the name of a built-in layout or path to a layout file. Use --list-layouts to print a list of built-in layouts or check the duckyscript/sparkling/layouts directory.

The format is a list of S-Expressions, with each S-Expression describing how a character maps to a sequence of shortcuts. Each shortcut can either consist of a symbol (representing a key without modifier) or a list of symbols (representing a key with modifiers). This structure allows typing characters by using dead keys and more.

Incompatibilities and other deficiencies