Skip to main content

Customization

The Custom tab lets you program the joystick's buttons to perform network commands, serial commands, HTTP requests, or camera preset recalls.

Overview

The Custom page displays the custom buttons available for configuration. Each button has its own tab, and you can switch between them to configure different sets of commands.

Button TabNotes
Custom1General-purpose custom button
Custom2General-purpose custom button
Custom3General-purpose custom button
Custom4General-purpose custom button
Joystick (Custom5)Mapped to the physical trigger/button on a hardware joystick controller

Each button tab is configured independently with its own command type and command list.

Adding and Deleting Custom Buttons

Adding a Button

Click the Custom Add button (displayed alongside the existing button tabs) to create a new custom button. New buttons are appended in sequence: Custom6, Custom7, and so on.

Deleting a Button

Each user-added button (Custom6 and above) displays a Delete button in its tab. Click it to permanently remove that button and all its configured commands.

warning

Deleting a custom button is permanent and cannot be undone. All commands configured on that button will be lost.

Command Types

Each button has a Type selector. The available types are:

warning

Only one command type can be selected per custom button. Once you configure a button with a given type, all commands on that button must use that same type.

TCP Commands

TCP sends one or more raw TCP socket commands to a network device when the button is pressed. Commands are sent in order from top to bottom.

Configuration Fields

FieldDescription
IP AddressIPv4 address of the target device
PortTCP port number on the target device
Command TypeHEX Command — bytes entered as hexadecimal values
ASCII Command — plain text string
CommandThe command payload to send
DelayTime in seconds to wait after sending this command before sending the next (minimum: 0)

Managing Command Rows

  • Click + to add a new command row below the last row.
  • Click - on a row to remove that individual command.
  • Rows are numbered sequentially (1, 2, 3 …) and execute in that order.

UDP Commands

UDP is functionally identical to TCP in its configuration interface but sends commands over the UDP (connectionless) transport instead.

Configuration Fields

FieldDescription
IP AddressIPv4 address of the target device
PortUDP port number on the target device
Command TypeHEX Command or ASCII Command
CommandThe command payload to send
DelaySeconds to wait after sending before proceeding to the next command (minimum: 0)

Use + / - to add or remove rows. Rows execute top to bottom.

UART (Serial) Commands

UART sends commands over the system's serial interface. This is useful for controlling devices connected via RS-232/RS-485 rather than over a network.

Baud Rate

A Baud Rate selector at the top of the UART configuration applies to all commands on this button:

Available Baud Rates
1200
2400
4800
9600
19200
38400
115200

Configuration Fields

FieldDescription
Command TypeHEX Command or ASCII Command
CommandThe serial command payload
DelaySeconds to wait after sending before proceeding to the next command (minimum: 0)
note

UART commands have no IP Address or Port fields — the serial interface is a direct hardware connection, not a network connection.

Use + / - to add or remove rows. Rows execute top to bottom in the configured baud rate.

HTTP Trigger Commands

HTTP Trigger is the most advanced command type. It sends HTTP GET or POST requests to defined network devices and supports toggle behavior (different commands on first press vs. second press).

Step 1: Define HTTP Devices

Before configuring commands, you must define the HTTP devices (targets) this button will communicate with. The HTTP Devices table at the top of the HTTP Trigger configuration is a shared pool of devices available to all commands on this button.

HTTP Devices Table

ColumnDescription
IDAuto-assigned identifier. Read-only.
NameA friendly label for the device (e.g., Camera_1)
IPIPv4 address of the device
PortHTTP port (typically 80 for HTTP, 443 for HTTPS)
AuthenticationAuthentication method
UsernameCredential username (if authentication is enabled)
PasswordCredential password (if authentication is enabled)
Secure (HTTPS)Whether to use HTTPS for all requests to this device
DeleteRemoves the device from the pool
EditOpens the device editor dialog

Adding an HTTP Device

Click Add to open the device editor. Fill in the following fields:

FieldDescription
IDAuto-assigned. Read-only.
NameFriendly label for the device
IP AddressIPv4 address
PortPort number
AuthenticationBasic, Digest, or Off
UsernameRequired if Authentication is not Off
PasswordRequired if Authentication is not Off
Secure (HTTPS)Check to use HTTPS
note

PTZOptics cameras use Digest authentication by default. The interface's default Authentication method in the Add Device dialog is Basic. For better security, select Digest unless the target device requires Basic.

Current_Cam

Current_Cam is a permanent entry that is always present in the HTTP Devices table. Unlike manually added devices, it does not use a static IP address or authentication configuration. Instead, it dynamically pulls the IP address and credentials from whichever device is currently selected on the Devices page.

This makes Current_Cam useful when you want a custom button to always target the active camera, regardless of which camera is selected at the time the button is pressed. If the active camera changes on the Devices page, any command pointed at Current_Cam will automatically target the new selection.

note

Current_Cam will appear as ID 1 in the HTTP Devices table. It can be selected as the Device in any command row just like a manually added device.

Click Save to add the device to the pool. It will appear in the HTTP Devices table and become available in the Device dropdown when configuring commands.

Step 2: Configure Commands

Commands are organized into one or two press sections depending on whether toggle mode is enabled.

Single Press (Default)

By default, one FIRST PRESS section is shown. All commands in this section fire when the button is pressed.

Toggle Mode (Enable Two-Press Behavior)

Check the Enable toggle checkbox to activate toggle mode. A SECOND PRESS section appears alongside the FIRST PRESS section.

PressBehavior
First PressExecutes all commands in the FIRST PRESS section
Second PressExecutes all commands in the SECOND PRESS section
Third PressReverts to First Press behavior, and so on

This is useful for on/off toggles — for example, turning auto-tracking on with the first press and off with the second press. Each press can have its own independent set of commands.

Command Table (FIRST PRESS / SECOND PRESS)

Each press section has a command table with the following columns:

ColumnDescription
TypeThe kind of command: GET, POST, or Delay
DeviceThe HTTP device from the pool to send this command to
CommandThe URL path or query string for GET/POST requests
DeleteRemoves this command row
ModifyOpens the command editor dialog

Click Add within a press section to open the command editor.

Command Editor — GET

FieldDescription
TypeGET
DeviceSelect from defined HTTP devices
CommandURL path and query string e.g., /cgi-bin/ptzctrl.cgi?ptzcmd&recallpos&1

The full request URL is composed as:
http[s]://<device IP>:<device Port><Command>

Command Editor — POST

FieldDescription
TypePOST
DeviceSelect from defined HTTP devices
CommandURL path (endpoint)
Content-TypeText/HTML, JSON, or URL Encoded
BodyThe POST request body

Command Editor — Delay

FieldDescription
TypeDelay
Delay LengthTime in seconds to wait before executing the next command

Use Delay rows to insert a pause between commands — for example, waiting for a device to process a command before sending the next one.

Super Preset

Super Preset allows a single button press to simultaneously recall presets on up to 8 cameras across different groups, plus an optional HTTP-CGI command.

Camera Preset Rows (Rows 1–8)

Each of the 8 rows represents one camera preset to recall. Enable a row by checking its checkbox.

FieldDescription
CheckboxEnable this row. Disabled rows are ignored when the button is pressed.
GroupThe camera group — GROUP1 through GROUP4
Camera IDThe camera slot within the group — 1 through 7
PresetThe preset number to recall — 0 through 253
note

Super Preset supports Groups 1–4 only. Group 5 is not available in this view.

Row 9: HTTP-CGI Command

Row 9 is a special row for sending a single HTTP-CGI string command alongside the preset recalls.

FieldDescription
CheckboxEnable this row
HTTP-CGI StringA full URL to call e.g., http://ip:port/cgi-bin/ptzctrl.cgi?ptzcmd&zoomin&7
note

The HTTP-CGI string is a complete URL including protocol, host, port, and query parameters. It is sent as a simple HTTP GET request.

Use Case Example

You can use Super Preset to create a "scene" button that simultaneously:

  • Recalls preset 5 on Camera 1 in Group 1 (a wide shot)
  • Recalls preset 2 on Camera 3 in Group 2 (a close-up on a second camera)
  • Sends an HTTP-CGI command to trigger an external device (e.g., a video switcher)

All actions fire simultaneously when the button is pressed.