duckyPad-Pro

duckyPad “Turing Complete” Mega-Update: Feb 2026

Happy New Year! Please enjoy a major update that makes your duckyPad even more powerful!

This update features a complete scripting engine overhaul, adds many long-requested features, and significantly expands duckyScript’s capabilities, making it even more general-purpose and versatile than ever before.

Highlights:

Changelog Archive

Click me for older update notes

Update Firmware

Click & follow guides below:

Download Latest Apps

Try It Out!

Table of Contents

Syntax Shakeup

In a 32-bit World

C-Style Format Specifiers are now supported when printing variables!

Use it to adjust print format and padding.

To add a specifier: Immediately after the variable name, type %, then a data-type indicator letter.

VAR $foo = -10

STRING Value is: $foo%d
STRING Value is: $foo%u
STRING Value is: $foo%x
STRING Value is: $foo%X
Value is: -10
Value is: 4294967286
Value is: fffffff6
Value is: FFFFFFF6

Numerical Padding


⚠️ This method replaces _STR_PRINT_FORMAT and _STR_PRINT_PADDING, which have been removed.


Proper Function Calls

Functions now support arguments, return values, local variables, and recursive calls, making them much more powerful and versatile.

FUN FUN FUN

You can now use FUN and END_FUN to declare functions.

Old FUNCTION and END_FUNCTION still works of course.

Back to Basics

As before, plain functions are handy for performing repetitive tasks.

FUN print_addr()
    STRINGLN 123 Ducky Lane
    STRINGLN Pond City, QU 12345
END_FUN

print_addr() // call it

Arguments and Returns

But now, you can also pass arguments into a function and specify a return value.

FUN add_number(a, b)
    RETURN a + b
END_FUN

VAR total = add_number(10, 20)

Variable Scoping

Variables declared outside functions have global scope, they can be accessed anywhere.

Variables declared inside functions now have local scope, they are only accessible within the function.

If a local variable has the same name as a global variable, the local var takes priority within that function.

// Both global scope
VAR x = 10
VAR y = 20

FUN scope_demo()
    VAR x = 5 // This x is local, will shadow the global x.
    x = x + y
    STRINGLN Local x is: $x
END_FUN
Local x is: 25

Nested / Recursive Calls

You can now also call the same function within itself!

FUN factorial(n)
    IF n <= 1
        RETURN 1
    END_IF
    RETURN n * factorial(n - 1)
END_FUN

VAR fact = factorial(5)

duckyPad Standard Library

With much more powerful function calls, a set of handy helper functions are provided as a StdLib.

To use them, add USE_STDLIB in your code.

More Info / Contribute

USE_STDLIB

STRINGLN Press Key 3 to continue...
WAITKEY(3)

VAR high_score = MAX(100, 500)

STRINGLN The high score is: $high_score

User Headers

You can now also create your own header for custom helper functions and more.

Built-in Functions

Some built-in functions have been added.

They are always available, intended for low-level tinkering.

PUTS()     RANDINT()
RANDCHR()  HIDTX()
RANDUINT()

1024 Bytes of user scratch memory is available with PEEK() and POKE() commands.

Syntax Highlighter

Now available for VS Code and Sublime Text

New Commands

Mouse Side Buttons

FMOUSE: Forward side button

BMOUSE: Backward side button

Horizontal Mouse Scrolling

Scroll mouse wheel Horizontal h lines, and Vertical v lines.

OLED Center-Aligned Print

Prints message Center-Aligned on the current Y cursor position.

OLED Shape Drawing

OLED_CIRCLE and OLED_RECT now supports drawing in color black.

“Random Letter” Commands

Types a random letter. Added from official duckyScript specs.

RANDOM_LOWERCASE_LETTER    RANDOM_NUMBER
RANDOM_UPPERCASE_LETTER    RANDOM_SPECIAL
RANDOM_LETTER              RANDOM_CHAR
RANDOM_NUMBER
REPEAT 7
// types 8 random numbers

For more granular control, use RANDCHR() built-in function.

New Reserved Variables

PASS Command

Does nothing, can be used as empty statement block.

Performance & Bugfixes

Flappy Duck

Glad you made it this far!

Please enjoy a flappy bird clone showcasing many of the new features in this update!

flappy duck screenshot

Additional Reading

How’d It Go?

Let me know if you run into any bugs or have comments / suggestions.