# Drive the simulator

Studio shows the simulator live, in the device's real frame. Click, drag, scroll and type on it from your Mac, press its buttons, and change its settings.

## Use the app

Both of these are on by default, in the device panel’s **Interaction** menu:

| Toggle | What it does |
| --- | --- |
| Pointer interaction | Your clicks, drags and scrolls drive the simulator. Turn it off to look without touching. |
| Keyboard capture | Your Mac’s keystrokes go to the simulator while it has focus. Click the simulator to give it focus; click anywhere else in Studio to take it back. |

### Touch and scroll

| To | Do this |
| --- | --- |
| Tap | Click. |
| Drag or swipe | Click and drag. |
| Scroll | Scroll with your trackpad or mouse wheel over the screen. It moves a finger on the simulator, so lists scroll, bounce and snap as they do under a real finger, and a long scroll keeps going. Over a Studio popover drawn on the screen, such as the notifications, the popover scrolls instead. |
| Go home or back | Drag up from the bottom edge, or in from the left edge, as you would with a finger. |
| Press a button | Home, Lock, the volume buttons and Shake are in the Hardware menu. With the real device frame, you can also press the side buttons on it. |

### Type

| Key | What happens |
| --- | --- |
| Letters, numbers, symbols | Typed into the focused field, with your keyboard layout and capitals. |
| Return | Presses the keyboard’s return key: it submits a form or runs the field’s submit action, as the app decides. |
| Tab | Sent to the app. iOS only moves to the next field if the app handles Tab itself. |
| Delete, arrows, Escape, Page Up and Down | Sent as the same keys on a hardware keyboard. |
| `⌘ C` and `⌘ V` | Copy and paste between your Mac and the simulator. |
| Other ⌘ and ⌃ shortcuts | Sent to the app, such as ⌘A to select all. Studio’s own shortcuts keep working. |

These are real touches and key presses, the same as using the simulator directly.

## Keep the on-screen keyboard

iOS hides its on-screen keyboard once you type from a hardware keyboard. Turn on **Keep software keyboard** in the **Interaction** menu to keep it showing. It needs the app launched with Squiggle attached, and is remembered for each device.

## Change the simulator’s settings

Three menus in the device panel change the simulator itself. When the simulator can’t report a value, the menu shows a dash instead of guessing.

| Menu | What it changes |
| --- | --- |
| System | Dark appearance, Increase contrast, text size (XS to AX5), and the status bar: Clean shows 9:41 with full signal and battery, Reset gives it back. |
| Location | A city, a moving route (City Run, City Bicycle Ride, Freeway Drive), or no location. |
| Permissions | Grant or revoke each of the app’s permissions, or all of them. Granting all may restart the app. |

> **Permission ticks show what you granted here**
>
> The simulator can’t report a permission back, so a tick means you granted it from this menu, not that it is granted now.

## Save the screen you’re on

In the device panel’s **Capture** menu, **Save slot** saves the current screen and the data behind it, named by the time, such as `studio-20261017-091504`. **Load a slot** lists the newest eight and puts one back, so you start on a deep screen instead of tapping your way there. These are the same slots as `squiggle save` and `squiggle load`. For what a slot holds and why a load is refused, see [Save and restore your app’s state](https://squiggle.sh/docs/reference/sdk#save-and-restore-your-apprsquos-state). To find which saved values make a flow fail, see [App state](https://squiggle.sh/docs/flows/state).

## Take a screenshot or record the screen

In the **Capture** menu, **Screenshot** saves a PNG of the screen and **Record screen** records a video until you choose **Stop screen recording**. Both go to the Gallery (`⌘ 0`), newest first, beside the screenshots your agent takes. Open one to see it large; `←` and `→` step through them and `Esc` goes back to the grid. **Record session**, in the same menu, records a session for [Replay](https://squiggle.sh/docs/replay) instead.

## The device frame

Studio draws your simulator in its real frame, read from your Xcode install. Devices with a home button, and a rotated device, get a drawn frame instead. In the **Interaction** menu, turn off **Real device skin** for the drawn frame everywhere, or **Device bezel** for no frame.

To save CPU while you aren’t watching, turn off **Live stream** in the same menu: the screen freezes on its last frame until you turn it back on.
