> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowdeck.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Hardware and Appearance

> Press simulator hardware buttons, toggle the hardware keyboard, and switch light or dark appearance

Use simulator hardware commands for device-level controls that are not tied to a specific app UI.

## flowdeck simulator button

Press a simulator hardware button.

```bash theme={null}
flowdeck simulator button home
flowdeck simulator button swipe-home
flowdeck simulator button app-switcher
flowdeck simulator button lock --hold 2.0
flowdeck simulator button side-button --hold 1.0
flowdeck simulator button siri --simulator "iPhone 16"
flowdeck simulator button home --json
```

### Button Options

| Option                       | Short | Description                    |
| ---------------------------- | ----- | ------------------------------ |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID  |
| `--hold <seconds>`           |       | Hold the button for a duration |
| `--json`                     | `-j`  | Output as JSON                 |
| `--examples`                 | `-e`  | Show usage examples            |

### Supported Buttons

* `home`
* `swipe-home`
* `lock`
* `siri`
* `applepay`
* `app-switcher`
* `side-button`
* `volumeup`
* `volumedown`

<Note>
  Volume buttons may not be supported by the simulator HID backend on every runtime.
</Note>

## flowdeck simulator memory-warning

Simulate a memory warning, matching Simulator.app's **Debug > Simulate Memory Warning** action.

```bash theme={null}
flowdeck simulator memory-warning
flowdeck simulator memory-warning --simulator "iPhone 16"
flowdeck simulator memory-warning --json
```

### Memory Warning Options

| Option                       | Short | Description                   |
| ---------------------------- | ----- | ----------------------------- |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID |
| `--json`                     | `-j`  | Output as JSON                |
| `--examples`                 | `-e`  | Show usage examples           |

## flowdeck simulator ca-debug

Toggle CoreAnimation debug overlays on a simulator.

```bash theme={null}
flowdeck simulator ca-debug blended on
flowdeck simulator ca-debug offscreen off --simulator "iPhone 16"
flowdeck simulator ca-debug slow-animations on --json
```

### CoreAnimation Debug Options

| Option                       | Short | Description                   |
| ---------------------------- | ----- | ----------------------------- |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID |
| `--json`                     | `-j`  | Output as JSON                |
| `--examples`                 | `-e`  | Show usage examples           |

### CoreAnimation Debug Values

* `blended`
* `copies`
* `misaligned`
* `offscreen`
* `slow-animations`

State accepts `on` or `off`.

## flowdeck simulator appearance

Get or set the simulator appearance (light or dark). Mirrors `flowdeck simulator orientation`: `get` is the default subcommand, `set` writes a value.

```bash theme={null}
flowdeck simulator appearance               # Print booted simulator appearance
flowdeck simulator appearance get           # Same as above
flowdeck simulator appearance set light
flowdeck simulator appearance set dark --simulator "iPhone 16"
flowdeck simulator appearance set dark --json
flowdeck simulator appearance get --json
```

### flowdeck simulator appearance get

Print the current appearance for the targeted simulator. Outputs one of `light`, `dark`, `unsupported`, or `unknown` (passed through from `simctl ui ... appearance`).

| Option                       | Short | Description                   |
| ---------------------------- | ----- | ----------------------------- |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID |
| `--json`                     | `-j`  | Output as JSON                |
| `--examples`                 | `-e`  | Show usage examples           |

### flowdeck simulator appearance set

Set the appearance to `light` or `dark`.

| Option                       | Short | Description                   |
| ---------------------------- | ----- | ----------------------------- |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID |
| `--json`                     | `-j`  | Output as JSON                |
| `--examples`                 | `-e`  | Show usage examples           |

### Supported Values

* `light`
* `dark`

<Note>
  Older `flowdeck ui simulator button`, `flowdeck ui simulator set-appearance` (also accepts `appearance` as an alias), and `flowdeck ui simulator orientation` commands still work for compatibility, but new scripts should use `flowdeck simulator ...`.
</Note>

## flowdeck simulator keyboard

Control simulator keyboard settings. Currently exposes the hardware keyboard subcommand, which connects or disconnects the simulated hardware keyboard. This mirrors Simulator.app's **I/O > Keyboard > Connect Hardware Keyboard** toggle and is equivalent to `simctl ui <udid> keyboard` operations.

```bash theme={null}
# Connect the hardware keyboard
flowdeck simulator keyboard hardware on

# Disconnect the hardware keyboard (shows the software keyboard on focus)
flowdeck simulator keyboard hardware off

# Target a specific simulator
flowdeck simulator keyboard hardware off --simulator "iPhone 16"

# JSON output
flowdeck simulator keyboard hardware on --json
```

### flowdeck simulator keyboard hardware

Connect or disconnect the simulator hardware keyboard. The state argument accepts `on`/`off`, `enabled`/`disabled`, `true`/`false`, `1`/`0`, or `connected`/`disconnected`.

| Option                       | Short | Description                                                          |
| ---------------------------- | ----- | -------------------------------------------------------------------- |
| `<state>`                    |       | Keyboard state: `on`/`off` (or `enabled`/`disabled`, `true`/`false`) |
| `--simulator <name-or-udid>` | `-S`  | Target simulator name or UDID                                        |
| `--json`                     | `-j`  | Output as JSON                                                       |
| `--dry-run`                  |       | Preview the keyboard state change without changing the simulator     |
| `--examples`                 | `-e`  | Show usage examples                                                  |

### JSON Output

With `--json`, `simulator keyboard hardware` reports the requested state and resolved UDID:

```json theme={null}
{
  "success": true,
  "type": "simulator_keyboard_hardware",
  "enabled": true,
  "udid": "12345678-1234-1234-1234-123456789ABC"
}
```

<Note>
  Disconnecting the hardware keyboard (`off`) forces the software keyboard to appear when a text field gains focus — useful for testing keyboard UI and text-entry flows. Connect it back (`on`) to type via the host keyboard.
</Note>
