# Daydream Controller

The Daydream controller combines a simple, intuitive user interface with [3DoF](https://developers.google.com/vr/discover/degrees-of-freedom)
functionality for expressive design. All Daydream apps require the Daydream
controller so as a developer you can design experiences for a standardized input
model.

![](https://developers.google.com/static/vr/images/daydream_controller_small.png)

Some common ways the Daydream controller can be used are:

- **Ray-pointer**: Interacting with 2D UI in worldspace. For example, choosing files from a 2D file-selector in a media app or selecting icons from a 2D in-app inventory screen.
- **Gesture-based input**: Using the controller as a proxy for a physical motion, such as throwing a frisbee or swinging a baseball bat.
- **Movement** : Using the controller to allow the user to move around the environment, for example, through the use of [teleportation](https://developers.google.com/vr/elements/teleportation).

## Features

The Daydream Controller includes the following features:

| Controller feature | Description |
|---|---|
| **3DoF tracking** | See the [degrees of freedom](https://developers.google.com/vr/discover/degrees-of-freedom) page. |
| **Touchpad** | - Can detect touching, swiping and clicking. - Fully customizable for your app. - Example uses include scrolling through a menu or moving through the environment. |
| **App button** | - Fully customizable for your app. - Example uses include opening an in-app menu or performing a special action. |
| **Daydream button** | - Press to open the Daydream Dashboard. - Press and hold to recenter your view and controller. - Cannot be customized. |
| **Volume buttons** | - Can be used to adjust your app volume. - Cannot be customized. |
| **Status light** | [Displays controller status](https://support.google.com/daydream/answer/7184597). |
| **Wrist-strap holes** | Can be used to attach the provided wrist-strap. |