# Pendant controls

> Every control of the v5 Steam Deck teach pendant, including the hold-to-enable trigger, joint and Cartesian jog, teaching, arming, stop, navigation, touch and keyboard, and the Steam Input layout.

URL: https://advancedmetalresearch.com/docs/reference/pendant-controls
Section: RosieOS docs / Reference
Last updated: 2026-10-10

This is the control map of the v5 teach pendant on a Steam Deck, as the app implements it. Press **Menu** on the pendant to see the same guide on screen. For how to use them, see [Program from the Steam Deck pendant](https://advancedmetalresearch.com/docs/guides/program-from-the-pendant).

> [!WARNING] **Energised motion.** This moves the robot. RosieOS has no software E-stop: keep the hardware E-stop within reach and clear the cell before you arm. Jog, moves and Home are checked against joint limits only, not against collisions. See the [safety model](https://advancedmetalresearch.com/docs/get-started/safety-model).

The v5 pendant is not qualified for real motion, and its stick, trigger and rear-button handling has not been qualified on hardware. **R2** is a software deadman, not a safety-rated enabling device.

## Jog

Jogging works on the **JOG** page only, with a cell connected, and only while **R2** is held.

| Input | Action |
|---|---|
| **R2** | Hold to enable jog. Release stops. |
| **R2** + left stick ▲▼ | Joints: jog the selected joint. Up is the positive direction. |
| **R2** + left stick | Cartesian: move X and Y. Up is X+, left is Y+. |
| **R2** + right stick ▲▼ | Cartesian: move Z |
| **R2** + right stick ◀▶ | Cartesian: turn about Z |
| **L2** + **R2** + left stick | Cartesian: tilt about X and Y |
| **D-pad** ▲▼ | Select the joint |
| **D-pad** ◀▶ | Jog speed: 5, 10, 25, 50, 75 or 100 % |
| **L3** | Switch between Joints and Cartesian |

Rules the app enforces:

- **One axis at a time.** Cartesian jog moves only the axis with the largest stick deflection.
- **Commit threshold.** A stick direction counts once it is past 0.35 of full travel. The sticks have a 12 % dead zone. **R2** and **L2** count as held past a quarter of their travel.
- **Neutral first.** After a page change, a Joints or Cartesian switch, a new direction, loss of window focus (for example the Steam overlay), or a lost controller, the hold ends. No new jog starts until the controls have returned to neutral.
- **Step mode.** With **STEP** chosen on the Cartesian panel, each push makes one bounded move of the linear or angular step size. Centre the stick before the next.
- **Lost controller.** The pendant reports `Controller disconnected; jogging stopped` and looks for the pad again every second.

## Teach, arm and stop

| Input | Action |
|---|---|
| **A** or **L4** | Record a waypoint at the measured pose. In a dialog: OK. |
| **X** or **L5** | Reteach the selected waypoint |
| **Y** or **R4** | Record a via pose for the selected waypoint |
| **R2** + **A** | Arm or disarm. A real machine asks for a second press: **CONFIRM ARM · A**. |
| **B** or **R5** | Stop the robot, from every page and dialog. **B** also cancels the open dialog. |
| **Esc**, header **■ STOP** | Stop the robot |

Stop also disarms. It is a software stop, not the hardware E-stop.

## Navigate

| Input | Action |
|---|---|
| **L1** / **R1** | Previous / next page |
| **View** | CELL page |
| **Menu** | Open the controls guide. **A** closes it; **B** stops and closes it. |
| **D-pad** ▲▼ | Joint on JOG, row on PROGRAM |
| Right stick, without **R2** | Orbit the 3D view. With **L2**: zoom. |
| **R3** | Reset the 3D view |
| Right trackpad | Pointer and click |
| Left trackpad | Scroll |
| **Steam** + **X** | On-screen keyboard, for text fields |

The RUN, TELEMETRY and CELL pages are touch pages. In the 3D view: drag orbits, pinch zooms, two fingers pan and a double tap resets the view; the **+**, **−** and **FIT** buttons zoom by touch.

## Keyboard

The rear buttons arrive as function keys through the Steam Input layout. A keyboard gives the same keys:

| Key | Action |
|---|---|
| **F1** | Record a waypoint |
| **F2** | Reteach |
| **F3** | Record a via pose |
| **F4**, **Esc** | Stop |

## Steam Input layout

`steamdeck/real/v5/controller.vdf` is the pendant's Steam Input layout, titled "Rosie Pendant v5". Install it as the layout of the pendant's Steam shortcut. See [Build and install the pendant](https://advancedmetalresearch.com/docs/guides/install-the-pendant#add-it-to-steam).

| Deck control | Sends |
|---|---|
| A, B, X, Y | Gamepad A, B, X, Y |
| L1, R1 | Left and right shoulder |
| View, Menu | Gamepad select and start |
| L2, R2 | Analogue triggers |
| Left and right sticks | Joysticks, with their clicks as L3 and R3 |
| D-pad | D-pad |
| L4 (upper left rear) | F1 |
| L5 (lower left rear) | F2 |
| R4 (upper right rear) | F3 |
| R5 (lower right rear) | F4 |
| Right trackpad | Absolute mouse, click on press |
| Left trackpad | Scroll wheel |

The Steam and Quick Access buttons stay system controls.

## Related pages

- [Program from the Steam Deck pendant](https://advancedmetalresearch.com/docs/guides/program-from-the-pendant)
- [Teach waypoints and moves](https://advancedmetalresearch.com/docs/guides/teach-waypoints)
- [Safety model](https://advancedmetalresearch.com/docs/get-started/safety-model)

## Sources

Written from these files in the RosieOS repository (https://github.com/advanced-metal-research/RosieOS):

- `steamdeck/real/v5/src/window.cpp:55-58,98-101,176-187,378-523,794-873`
- `steamdeck/real/v5/src/input.hpp:6-49`
- `steamdeck/real/v5/src/controller.hpp:9-30`
- `steamdeck/real/v5/src/controller.cpp:14-57`
- `steamdeck/real/v5/src/pages.hpp:44-66`
- `steamdeck/real/v5/src/jog_page.cpp:18-22,245-300`
- `steamdeck/real/v5/controller.vdf`
