uloop-simulate-keyboard
Task
Simulate keyboard input on Unity PlayMode: $ARGUMENTS
Workflow
- Ensure Unity is in PlayMode (use
uloop control-play-mode --action Playif not) - Execute the appropriate
uloop simulate-keyboardcommand - Take a screenshot to verify the result:
uloop screenshot --capture-mode rendering - Report what happened
Tool Reference
uloop simulate-keyboard --action <action> --key <key> [options]
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--action |
enum | Press |
Press, KeyDown, KeyUp |
--key |
string | (required) | Key name matching Input System Key enum (e.g. W, Space, LeftShift, A, Enter). Case-insensitive. |
--duration |
number | 0 |
Hold duration in seconds for Press action (0 = one-shot tap). Ignored by KeyDown/KeyUp. |
Actions
| Action | Behavior | Use Case |
|---|---|---|
Press |
KeyDown → wait → KeyUp | One-shot tap (jump, use item) |
KeyDown |
KeyDown only (held until KeyUp) | Start continuous movement, hold sprint |
KeyUp |
KeyUp only (release held key) | Stop movement, release sprint |
KeyDown/KeyUp Rules
KeyDownfails if the key is already heldKeyUpfails if the key is not currently held- Multiple keys can be held simultaneously (e.g. W + LeftShift for sprint)
- All held keys are automatically released when PlayMode exits
Global Options
| Option | Description |
|---|---|
--project-path <path> |
Optional. Use only when the target Unity project is not the current directory. |
Examples
# One-shot key press (tap W once)
uloop simulate-keyboard --action Press --key W
# Jump (tap Space)
uloop simulate-keyboard --action Press --key Space
# Hold W for 2 seconds (move forward)
uloop simulate-keyboard --action Press --key W --duration 2.0
# Sprint forward (hold Shift + W, then release)
uloop simulate-keyboard --action KeyDown --key LeftShift
uloop simulate-keyboard --action KeyDown --key W
uloop screenshot --capture-mode rendering
uloop simulate-keyboard --action KeyUp --key W
uloop simulate-keyboard --action KeyUp --key LeftShift
Prerequisites
- Unity must be in PlayMode
- Input System package (
com.unity.inputsystem) must be installed - Active Input Handling must be set to Input System Package (New) or Both in Player Settings
- Game code must read input via Input System API (e.g.
Keyboard.current[Key.W].isPressed), not legacyInput.GetKey()
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-get-logs
Retrieve logs from Unity Console with filtering and search. Use when you need to: (1) Check for errors or warnings after compilation or play mode, (2) Debug issues by searching log messages, (3) Investigate failures with stack traces. Supports filtering by log type, text search, and regex.
2