The Vive controller and its buttons/features are shown in Figure 1:
When a VR application starts, some of the buttons will already have functions bound to them; the rest are available to be bound to arbitrary tools dynamically.
The menu button on either controller is set to interact with displayed graphical user interface (GUI) elements such as dialog windows, sliders, or buttons, or to pop up an application's main menu when pressed while pointed at empty space.
To interact with GUI elements, point the controller at a GUI element (where the pointing direction is out of the front of the “tracking donut.” When a controller is pointed at a GUI element, a red ray will appear, indicating where on the GUI element interaction will happen. While the red ray is visible, GUI elements can be controlled exactly as if the controller were a regular 2D mouse. Clicking the menu button will select buttons; holding the button and then moving the controller will drag sliders, and so forth.
If the menu button is pressed and held while not pointing at an existing GUI element, the VR application's main menu will pop up. To interact with the main menu, move the controller to highlight menu items or move between sub-menus while the button is pressed, and select an entry by releasing the button. To close the menu without making a selection, simply point away from the menu and release the menu button.
The grip buttons on both controllers work together to navigate through virtual space, which essentially means that displayed objects can be translated, rotated, or scaled. To “pick up” space, press and hold one grip button on one controller (the two grip buttons on the same controller act as one button). This will attach the virtual space to the controller, so moving the controller (translating or rotating) will translate or rotate virtual space. This is easier in practice than it sounds.
For example, to pick up and examine an object, reach out with the controller (touch the object with the front of the controller's “tracking donut”), and press and hold either of the controller's grip buttons. Then move your hand as if you were holding a physical object.
To scale virtual space, i.e., to make objects appear smaller or larger, first grab space with the grip button on one controller, and then grab some other point of space with the other controller's grip button. Then, moving your hands together will shrink virtual space (and all objects contained therein), and moving your hands apart will grow virtual space.
Important: Virtual space grows/shrinks around the position of the controller whose grip button was pressed first. So, in order to grow or shrink a virtual object, first reach out to the object with one controller, grab it with that controller's grip button, and then grab and pull with the other controller. That way, the object will remain attached to the first controller. If you grab a point in empty space and then pull your hands apart, space will grow around that point, which will make objects grow, but also make them move away, which will be confusing at first.
By default, the touchpad on either controller is set up to work as an additional set of five virtual buttons. When you gently touch the touchpad with your thumb (without pressing down), a green overlay will appear superimposed over the touchpad on the controller's virtual representation. This overlay indicates four buttons on the periphery of the touchpad (front, left, right, back), and a fifth circular button in the center. The overlay will also indicate your thumb's current position on the touchpad.
To press one of the virtual buttons, place your thumb onto the touchpad, move it into the desired virtual button's area (use the thumb position indicator as feedback), and then press down on the touchpad to press the selected virtual button.