Features

Input recording, macro playback, macro editing including trigger configuration and playback settings.

Record Screen

Overview

AdaptivePlay lets you record controller inputs and play them back with configurable triggers. Recorded inputs are saved as macros that can be organized into folders, edited, exported, and shared.

The typical workflow is:

  1. Record controller inputs on the Record Screen.
  2. Save the recording as a named macro.
  3. Manage macros on the Macros Screen — organize into folders, configure triggers, and activate.
  4. Edit macros in the Macro Editor to fine-tune individual inputs, timing, and playback settings.
  5. Play — activate macros and use triggers to start and stop them during live gameplay.

You can also create macros from scratch in the editor without recording, or import macros shared by others.

Using input automation features during competitive online multiplayer gameplay may violate the terms of service of the game or platform and may result in account suspensions or bans. You are responsible for ensuring that your use complies with any applicable terms or policies. See the EULA for full details.

Record Screen

The Record Screen is where you capture controller inputs and play them before saving. It is split into two sections: Record Input Macro (for capturing inputs) and Playback (for playing what you recorded).

Each section has its own start and stop triggers, a play/record button, and a settings icon for configuring options. Below both sections, the current macro status is displayed — the macro name, duration, and a Save button when a recording is ready.

Record Screen with a recorded macro ready to save

Recording Inputs

To record, connect a controller to your phone via USB or Bluetooth, then tap the Record button (or use a configured Start Trigger). Inputs from the controller will start being recorded according to the recording options. The status area shows "Recording inputs..." in red while recording is active.

A controller must be connected to your phone before you can start recording. If no controller is detected, you'll see a "Connect a controller" message.

Recording stops when you tap the Stop button, use a configured Stop Trigger, or when a limit is reached (maximum 1 hour duration or storage limit of 5MB). If you navigates to a different screen or minimize app, the recording also stops and the macro is saved up to that point. If no inputs are detected during a recording, the recording is discarded and a message is shown.

Each input is saved as an individual macro entry the moment it is received from the controller. The exception is analog sticks — the left and right stick positions are always saved together in a single entry as per the remote play protocol. Every entry is stamped with a high-precision timestamp in the format MM:SS.sssss, where MM is minutes (00–59), SS is seconds (00–59), and sssss is five sub-second digits giving a resolution of 0.01 milliseconds (10 microseconds). The full timestamp range is 00:00.00000 to 59:59.99999, supporting recordings up to 1 hour.

Recording Options

Tap the gear icon next to the Record button to open the Recording Options. These settings control what gets recorded and how recording starts and stops.

Recording Options showing input filters

Input Filters

Each input type can be individually enabled or disabled. Disabled inputs are filtered out during recording so they don't appear in the final macro. For example, you might disable stick recording if you only want to capture button presses.

Recording Options showing notifications

Notifications

You can configure separate notifications for when recording starts and stops, so you get feedback without needing to look at the screen — useful when recording with triggers while focused on gameplay.

Recording Timing

Saving Recordings

When a recording is ready, its name and duration appear at the bottom of the screen. Name are incremented automatically for each recording.

A Save button also appears to the right of the macro name. Tap it to open the Save dialog, which shows a message indicating the macro will be saved to the Recorded Macros folder. Enter a name for the macro (up to 40 characters) and tap Save.

The macro's name and input entries are saved locally on the phone. Saved macros appear in the Recorded Macros folder on the Macros Screen. Newly saved macros are always saved with default trigger and playback settings:

Local recordings are stored in memory only, they are lost if you close the app. New recordings will also overwrite any existing recordings on this screen. Save your recorded macro if you want to keep it.

Playback

After recording, you can play back the macro using the Play button. During playback, the status area shows "Playing macro..." and the recorded inputs are sent to the console exactly as they were captured. If there is no active console connection, the macro will still play through its duration but inputs are not sent anywhere.

Playback is useful for verifying your recording before saving. You can play it back multiple times, adjust playback options, and re-record if needed. The local recording stays in memory until you record a new macro, or close the app.

Playback Options dialog

Playback Options

Tap the gear icon next to the Play button to open the Playback Options dialog. These settings apply to the current local recording.

Record/Playback Triggers

The Record Screen has four configurable triggers:

Each trigger can be enabled or disabled independently using the toggle next to it. Tap the trigger row to open the Trigger Configuration screen where you can choose the trigger action (Single Press, Double Press, Hold, Release, Two-Button Combo) and the input to listen for. See the Trigger Types section for details on each action.

Record/Playback triggers are saved across app sessions but only apply whenever you're on the Record Screen.

Macros Screen

The Macros Screen is where you manage all your saved macros. It uses a folder-based layout — the main view shows your folders, and tapping a folder opens the list of macros inside it.

Macros Screen showing folder list view with user folders and Recorded Macros folder

Folders

Macros are organized into folders. There are two types:

Tap the + button to create a new folder. Each folder row shows the folder name and the number of macros it contains.

User folders have a 3-dot menu with the following options:

Macro list inside a folder showing macro rows with triggers, duration, and active toggles

Managing Macros

Tap a folder to view its macros. Each macro row shows:

The 3-dot menu on each macro offers:

Playing Macros

A macro must be activated before it can be played or triggered during gameplay. Toggle the switch on the left side of the macro row to activate it.

When a macro is activated:

Multiple macros can be played/triggered at the same time, up to a maximum of 10. Each macro adds inputs into a stack based system that resolves conflicts before sending the inputs over remote play. Raw controller inputs still work during macro playback and will resolve with macro inputs. If there is no active console connection, macros will still play through their duration but inputs are not sent anywhere.

The folder header shows the total number of macros and how many are currently active (e.g., "5 macros, 2 active"). A maximum of 10 macros can be active at the same time per folder.

When a macro is deactivated, it is unloaded from memory and its triggers stop listening for input.

Macro Triggers

Each saved macro has its own independent start trigger and stop trigger. These are configured per-macro and work while the macro is active on the Macros Screen.

To configure triggers, tap the Edit option from the macro's 3-dot menu to open the Macro Editor, then tap the trigger rows at the top. See Trigger Types for the available trigger actions.

Multiple active macros can have identical triggers, allowing you to control several macros collectively during gameplay. For example, you could have two macros triggered by R1 single press.

Copy & Move

Copy To creates a duplicate of the macro in one or more folders. A dialog appears with checkboxes for each folder — select the folders where you want copies to be placed and enter a name for the copy. The original macro is not affected.

Move To moves the macro to a different folder. Select the target folder from the list. If the macro is currently active, it will be automatically deactivated before moving.

Export & Import

Macros can be exported as JSON files and imported on another device or shared with other users.

Exporting: Tap Export from the macro's 3-dot menu. Choose the stick value format:

The exported JSON file includes all macro metadata (name, duration, triggers, playback speed, loop settings) and every input entry with timestamps. You can save it to any location on your phone or share it directly.

Importing: Tap the + button on the Macros Screen and choose Import Macro. Select a JSON file from your device. The app validates the file format, checks that it's compatible, and imports the macro into the current folder.

Exported JSON files are human-readable and can be edited in a text editor. This is useful for creating precise macros by hand or making bulk adjustments that would be tedious in the app's editor.

Editing Macros

The Macro Editor lets you view and modify every detail of a saved macro. Open it by tapping Edit from the macro's 3-dot menu on the Macros Screen.

The editor screen has a playback toolbar at the top, the macro's trigger configuration below it, and a scrollable list of all input entries. Each entry represents a single input event at a specific point in time.

Macro Editor showing entry list with timestamps, input descriptions, and playback controls

Entry List

The entry list displays every input in chronological order. Each row shows:

At the bottom of the list is the End marker, which shows the total macro duration including the end delay. The end delay is added to the last input entry timestamp.

You can add new entries using the + button in the playback toolbar

Editing Entries

Tap any entry row to open the Entry Editor dialog. Here you can modify:

Entry Editor dialog - buttons Entry Editor dialog - triggers
Entry Editor dialog - sticks Entry Editor dialog - touchpad

Delete an entry from the list.

Duplicate an entry using the copy icon in the editor's title bar in the top right — useful for creating repeated patterns.

Save to update the entry.

End Delay

The End Delay is the time between the last input entry and the end of the macro. It controls how long the final input states are held before the macro completes (or loops to the beginning).

For example, if your only entry is a button press at 0.50s and the end delay is 0.50s, the macro will hold that button pressed state for an additional 0.50 seconds before finishing, making the total duration 1.00s. Once the macro terminates after the end delay, all inputs are reset to their neutral states.

Tap the End row at the bottom of the entry list to adjust the end delay.

Triggers

The trigger configuration rows appear above the entry list. Each macro has a Start Trigger and a Stop Trigger, each with an enable/disable toggle.

Tap a trigger row to open the full Trigger Configuration screen where you can select the trigger action, input, and options. See the Trigger Types section for details on each action. Changes are reflected immediately — you can test triggers during playback in the editor.

Trigger changes are part of the macro's editable state and are included when you save.

Playback Options dialog in Macro Editor

Playback & Speed

The playback toolbar at the top of the editor lets you play the macro. Tap the Play button to start playback; the entry list and all editing controls are disabled while playing so you can focus on the output.

Tap the gear icon in the playback toolbar to open the Playback Options dialog, which includes:

Playback speed and loop settings are saved per-macro. When speed is not 1.0x, the current speed is displayed next to the Play button (e.g., "0.7x speed"). When looping is configured, a badge shows the loop count or infinity symbol. The stick display format is a global setting and is not saved per-macro.

Undo & Redo

All edits in the Macro Editor can be undone and redone. This includes adding, deleting, and modifying entries, changing the end delay, toggling triggers, modifying trigger configurations, and changing playback settings.

Undo and Redo buttons appear at the bottom of the screen when there are actions to reverse or reapply. Up to 50 levels of undo history are maintained.

The editor tracks whether you have unsaved changes. If you try to leave with unsaved changes, a dialog will ask whether you want to Save, Discard, or Cancel. The Save button in the editor is only enabled when changes have been made.

Trigger Types

Triggers determine how macros start and stop during live gameplay. Both the Record Screen and saved macros support configurable start and stop triggers. Each trigger has an action (how to activate it) and one or more inputs (what to press).

Trigger Configuration screen - input selector

Single Press

Activates when you press the input.

For button the trigger fires on the transition from released to pressed — a single deliberate press.

For L2/R2 Triggers, the trigger fires when the value enters the lower and upper bound set for the input.

For sticks, the trigger fires when stick enters the selected zones.

Double Press

Activates when you press the input twice within 500 milliseconds. The first press starts a timing window — a release must then be registered - followed by a second press occuring within that window, for the trigger to fire. If the window expires without a second press, nothing happens and the next press starts a new window.

For L2/R2 Triggers, a press is considered when the value enters the lower and upper bound set for the input. A release is considered a value of 0.

For sticks, a press is considered when stick enters the selected zones. A release is considered when stick enters deadzone (X,Y value of 0).

Double Press is useful when you want to use a button for its normal in-game function on a single press, but trigger a macro on a double press.

Trigger Configuration screen - hold and release

Hold

Activates when you hold the trigger input for a specified duration. The timer starts when the input is pressed and fires when the configured hold time is reached. If you release before the time is up, the trigger does not fire.

For L2/R2 Triggers, the trigger fires when the value is held between the lower and upper bound for the hold duration.

For sticks, the trigger fires when stick is held inside the selected zones for the hold duration.

Hold duration is configurable from 0.01 seconds to 20.00 seconds. Adjust it using the slider on the trigger configuration screen, or tap the value to type an exact number in seconds.

Hold triggers are useful for activating macros with an intentional sustained press, avoiding accidental activations from quick taps.

Release

Activates when you release the input after pressing it. The trigger fires on the transition from pressed to released.

For L2/R2 Triggers a release is considered a value of 0.

For sticks a release is considered when stick enters deadzone (X,Y value of 0).

Release is commonly used for stop triggers — for example, hold a button to play a macro, release the button to stop it. Combined with a Single Press or Hold start trigger on the same input, this creates a natural "hold-to-play" behavior.

Trigger Configuration screen - two-button combo

Two-Button Combo

Activates when two inputs are pressed together within 200 milliseconds. You configure both Input 1 and Input 2 — the trigger fires when both are held simultaneously.

The inputs can be any combination: two buttons, a button and a trigger, a button and a stick zone, etc. The order doesn't matter — pressing either input first starts the window, and pressing the second within 200ms fires the trigger.

For L2/R2 Triggers, a press is considered when the value enters the lower and upper bound set for the input.

For sticks, a press is considered when stick enters the selected zones.

Combo triggers are useful for avoiding conflicts with normal gameplay inputs. Since it requires two simultaneous inputs, accidental activations are unlikely.

Trigger Inputs

The following input types can be used as trigger inputs:

Trigger input selection - buttons

Buttons

Any controller button can be a trigger input: Cross, Circle, Square, Triangle, L1, R1, L3, R3, D-Pad Up/Down/Left/Right, Options, Share, PS Button, and Touchpad Button.

Analog Triggers (L2 / R2)

The L2 and R2 analog triggers can be used with a configurable activation range. The range defines how far you need to pull the trigger before it counts as "pressed" (default: 50–255). A dual slider on the trigger configuration screen lets you set the lower and upper bounds.

For example, setting the range to 200–255 means only a near-full pull activates the trigger, while setting it to 10–255 makes it activate on any slight pull.

Analog Sticks (Left / Right)

Stick inputs use a zone-based system. The stick's range is divided into 16 zones: 8 inner zones (closer to center, from the deadzone to 70% tilt) and 8 outer zones (from 70% to full tilt). Each zone covers a 45-degree slice in one of eight directions: Right, Up-Right, Up, Up-Left, Left, Down-Left, Down, and Down-Right.

Trigger input selection - analog sticks

You select which zones activate the trigger. For example, selecting all "Up" outer zones creates a trigger that fires when you push the stick fully upward. Selecting all inner zones creates a trigger that fires on a gentle half-tilt in any direction.

Passthrough

The Passthrough setting controls whether the trigger input is sent to the console before and during trigger activation.

Passthrough applies to raw controller input only, not to the macro's playback inputs. The macro will always send its inputs to the console regardless of the passthrough setting.

Passthrough for Recording

On the Record Screen, passthrough has additional behavior related to whether the trigger input gets recorded into the macro.

Record Start Trigger:

Record Stop Trigger:

Playback Speed

Playback speed controls how fast or slow a macro plays. The speed range is 0.5x (half speed, twice as slow) to 10.0x (ten times faster), adjustable in 0.1x increments.

Speed is set per-macro for saved macros (in the Macro Editor's playback options) and as a global setting for local recordings on the Record Screen. The speed value is stored internally and applied to all entry timestamps — a 1-second macro at 2.0x plays in 0.5 seconds; at 0.5x it plays in 2 seconds.

The speed setting is displayed throughout the app:

Speed is independent of loop settings — a macro set to 2.0x speed with 3 loops will play the full macro at double speed, three times in a row.

Sample Macros

On first install, AdaptivePlay creates a Sample Macros folder with example macros demonstrating common use cases. These are fully editable and can be modified, copied, or deleted like any other macro.

Sample Macros folder showing pre-built example macros

Repeat Square (Toggle)

Rapidly repeats the Square button. Press Square once to start, press again to stop. Uses Single Press trigger with passthrough off so the initial press doesn't register as an input. Loops infinitely with seamless looping.

Repeat Cross (Hold)

Rapidly repeats the Cross button while held. Press Cross to start, release Cross to stop. Uses Single Press start trigger and Release stop trigger. Demonstrates the "hold-to-play" pattern — the macro plays only while you're holding the button.

Alternating Triggers

Alternating L2 and R2 trigger taps. Toggled on/off with D-Pad Left. Runs at 0.7x speed demonstrating speed adjustment.

Hold L-Stick Forward

Locks the left stick in the full-up position for continuous forward movement. Activated by holding the left stick up for 1 second (Hold trigger on the outer-up stick zone), stopped by pressing the left stick down (Single Press on outer-down zone). Passthrough is enabled so you can steer left and right while the macro is active.

Repeat R2 Trigger (Hold R1)

Rapidly repeats R2 trigger pulls. Activated by pressing R1, stopped by releasing R1. Passthrough is enabled so R1 still reaches the console. Demonstrates using one button to activate a macro on a different button.

AFK Stick Rotation

Rotates both sticks clockwise in a full circle over 4 seconds, preventing game idle timeouts. Toggled on/off with L3 (left stick press). Both sticks move in sync through 36 positions at 10-degree increments. Loops infinitely with seamless looping.

Limits

When a limit is reached, the app displays a message and prevents the action. For example, attempting to activate an 11th macro will show a notification that the active limit has been reached.

Troubleshooting

Trigger is not firing

Import fails

Recorded macro has missing inputs