uloop-simulate-mouse-input
Task
Simulate mouse input via Input System in Unity PlayMode: $ARGUMENTS
Workflow
- Ensure Unity is in PlayMode (use
uloop control-play-mode --action Playif not) - For Click/LongPress: determine the target screen position (use
uloop screenshotto find coordinates) - Execute the appropriate
uloop simulate-mouse-inputcommand - Take a screenshot to verify the result:
uloop screenshot --capture-mode rendering - Report what happened
Tool Reference
uloop simulate-mouse-input --action <action> [options]
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--action |
enum | Click |
Click, LongPress, MoveDelta, SmoothDelta, Scroll |
--x |
number | 0 |
Target X position (origin: top-left). Used by Click and LongPress. |
--y |
number | 0 |
Target Y position (origin: top-left). Used by Click and LongPress. |
--button |
enum | Left |
Mouse button: Left, Right, Middle. Used by Click and LongPress. |
--duration |
number | 0 |
Hold duration for LongPress, or interpolation duration for SmoothDelta (seconds). For Click, 0 = one-shot tap. |
--delta-x |
number | 0 |
Delta X in pixels for MoveDelta/SmoothDelta. Positive = right. |
--delta-y |
number | 0 |
Delta Y in pixels for MoveDelta/SmoothDelta. Positive = up. |
--scroll-x |
number | 0 |
Horizontal scroll delta for Scroll action. |
--scroll-y |
number | 0 |
Vertical scroll delta for Scroll action. Typically 120 per notch. |
Actions
| Action | What it injects | Description |
|---|---|---|
Click |
Mouse.current button press → release | Inject a button click so game logic detects wasPressedThisFrame |
LongPress |
Mouse.current button press → hold → release | Hold a button for --duration seconds |
MoveDelta |
Mouse.current.delta | Inject mouse movement delta one-shot (e.g. for FPS camera look) |
SmoothDelta |
Mouse.current.delta (per-frame) | Inject mouse delta smoothly over --duration seconds (human-like camera pan) |
Scroll |
Mouse.current.scroll | Inject scroll wheel input (e.g. for hotbar or zoom) |
Global Options (all optional, mutually exclusive)
| Option | Description |
|---|---|
--project-path <path> |
Optional. Use only when the target Unity project is not the current directory. |
When to use this vs simulate-mouse-ui
| Scenario | Tool |
|---|---|
| Click a Unity UI Button (IPointerClickHandler) | simulate-mouse-ui |
Destroy a block in Minecraft (reads Mouse.current.leftButton) |
simulate-mouse-input |
| Place a block with right-click | simulate-mouse-input --button Right |
| Drag a UI slider | simulate-mouse-ui --action Drag |
| Look around with mouse (FPS camera) | simulate-mouse-input --action MoveDelta |
| Scroll hotbar slots | simulate-mouse-input --action Scroll |
Examples
# Left-click at screen center (for game logic)
uloop simulate-mouse-input --action Click --x 400 --y 300
# Right-click at screen center (e.g. place block)
uloop simulate-mouse-input --action Click --x 400 --y 300 --button Right
# Hold left-click for 2 seconds (e.g. mine block)
uloop simulate-mouse-input --action LongPress --x 400 --y 300 --duration 2.0
# Look right (FPS camera)
uloop simulate-mouse-input --action MoveDelta --delta-x 100 --delta-y 0
# Scroll up (e.g. previous hotbar slot)
uloop simulate-mouse-input --action Scroll --scroll-y 120
# Scroll down (e.g. next hotbar slot)
uloop simulate-mouse-input --action Scroll --scroll-y -120
# Smooth camera pan right over 0.5 seconds
uloop simulate-mouse-input --action SmoothDelta --delta-x 300 --delta-y 0 --duration 0.5
Prerequisites
- Unity must be in PlayMode
- Input System package must be installed (
com.unity.inputsystem) - Active Input Handling must be set to
Input System Package (New)orBothin Player Settings - Game code must read input via Input System API (e.g.
Mouse.current.leftButton.wasPressedThisFrame)
More from hatayama/unity-cli-loop
uloop-control-play-mode
Control Unity Editor play mode (play/stop/pause). Use when you need to: (1) Start play mode to test game behavior, (2) Stop play mode to return to edit mode, (3) Pause play mode for frame-by-frame inspection.
3uloop-run-tests
Execute Unity Test Runner and get detailed results. Use when you need to: (1) Run EditMode or PlayMode unit tests, (2) Verify code changes pass all tests, (3) Diagnose test failures with error messages and stack traces. Auto-saves NUnit XML results on failure.
2uloop-compile
Compile Unity project and report errors/warnings. Use when you need to: (1) Verify code compiles after C# file edits, (2) Check for compile errors before testing, (3) Force full recompilation with Domain Reload. Returns error and warning counts.
2uloop-screenshot
Capture screenshots of Unity Editor windows as PNG files. Use when you need to: (1) Screenshot Game View, Scene View, Console, Inspector, or other windows, (2) Capture current visual state for debugging or documentation, (3) Save editor window appearance as image files.
2uloop-launch
Launch Unity project with matching Editor version via uloop CLI. Use when you need to: (1) Open a Unity project with the correct Editor version, (2) Restart Unity to apply changes, (3) Switch build target when launching.
2uloop-record-input
Record keyboard and mouse input during PlayMode into a JSON file. Use when you need to: (1) Capture human gameplay input for later replay, (2) Record input sequences for E2E testing, (3) Save input for bug reproduction.
2