CatpileDocs
Language Reference

Events

Events are where code execution begins. They fire when something happens — page loads, button clicks, mouse movement, key presses, messages, etc.

#
python
on <event_name>[(<target>)]:
    <body>
  • on keyword
  • Event name
  • Optional target in parentheses (a UI element, globalid, or page path)
  • Colon :
  • Indented body
#
CatLangIDSchema NameParametersDescription
on loaded:0LOADEDPage or script loads
on pressed(target):1PRESSEDtarget (object)Element is clicked
on key_pressed(key):2KEY_PRESSEDkey (key code)Key is pressed
on mouse_enter(target):3MOUSE_ENTERtarget (object)Mouse enters element
on mouse_leave(target):5MOUSE_LEAVEtarget (object)Mouse leaves element
on changed(target):10CHANGEDtarget (object)Element value changes
on mouse_down(target):11MOUSE_DOWNtarget (object)Mouse pressed on element
on mouse_up(target):12MOUSE_UPtarget (object)Mouse released on element
on right_click(target):13RIGHT_CLICKEDtarget (object)Element is right-clicked
on donation(target):7DONATIONtarget (object)Gamepass/product bought
on submit(target):8INPUT_SUBMITtarget (object)Input form submitted
on message:9MSG_RECEIVEDBroadcast message received
on crosssite_message:14CROSSSITE_MSGCross-site message received
#

Functions are reusable blocks defined with fn:

python
fn <name>(<params>):
    <body>
CatLangIDSchema NameParametersDescription
fn name(args):6FUNC_DEFname (string), argsDefine a callable function
python
fn add(a, b):
    return a + b

on loaded:
    result = func_run("add", 3, 5)
#

Events that act on a specific UI element take a target parameter:

python
on pressed(page.FileLoader.Load):
    log("Clicked!")

on changed("textInput"):
    log("Input changed")

on key_pressed("Enter"):
    log("Enter pressed")

Targets can be:

  • Raw global IDs: on pressed("@<"):
  • Page paths: on pressed(page.FileLoader.Load): (resolved via .catui)
  • Strings: on changed("textInput"):
#

loaded fires when the page/script loads and takes no parameters:

python
on loaded:
    log("Page ready")
    init_game()

Equivalent to CatWeb's "When website loaded..." block.

#

A script can have any number of events:

python
on loaded:
    DATA_LOADED = 0

on pressed("startButton"):
    run_game()

on message:
    handle_signal()
#

The special target (parent) refers to the element containing the script:

python
on pressed(page.Element.Button):
    hide("(parent)")

A CatWeb built-in that resolves to the script's container element.