Agent skill
uloop-simulate-mouse-input
Simulate mouse input in PlayMode via Input System. Injects button clicks, mouse delta, and scroll wheel directly into Mouse.current. Use when you need to: (1) Click in games that read Mouse.current.leftButton.wasPressedThisFrame, (2) Right-click for actions like block placement, (3) Inject mouse delta for FPS camera control, (4) Inject scroll wheel for hotbar switching or zoom. For UI elements with IPointerClickHandler, use simulate-mouse-ui instead.
Install this agent skill to your Project
npx add-skill https://github.com/hatayama/unity-cli-loop/tree/main/Packages/src/Editor/Api/McpTools/SimulateMouseInput/Skill
SKILL.md
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)
Usually not needed — the CLI auto-detects the Unity project from the current working directory.
| Option | Description |
|---|---|
--project-path <path> |
Override auto-detection to target a specific Unity project |
-p, --port <port> |
Specify Unity TCP port directly |
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)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
uloop-simulate-mouse-ui
Simulate mouse click, long-press, and drag on PlayMode UI elements via EventSystem screen coordinates. Use when you need to: (1) Click buttons or interactive UI elements during PlayMode testing, (2) Drag UI elements from one position to another, (3) Hold a drag at a position for inspection before releasing, (4) Long-press UI elements that respond to sustained pointer-down. For game logic that reads Input System (e.g. WasPressedThisFrame), use simulate-mouse-input instead.
uloop-execute-menu-item
Execute Unity Editor menu commands programmatically. Use when you need to: (1) Trigger menu commands like save, build, or refresh, (2) Automate editor actions via menu paths, (3) Run custom menu items defined in project scripts.
uloop-find-game-objects
Find GameObjects in the active scene by various criteria. Use when you need to: (1) Search for objects by name, regex, or path, (2) Find objects with specific components, tags, or layers, (3) Get currently selected GameObjects in Unity Editor. Returns matching GameObjects with hierarchy paths and components.
uloop-simulate-keyboard
Simulate keyboard key input in PlayMode via Input System. Use when you need to: (1) Press game control keys like WASD, Space, or Shift during PlayMode, (2) Hold keys down for continuous movement or actions, (3) Combine multiple held keys for complex input like Shift+W for sprint.
uloop-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.
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.
Didn't find tool you were looking for?