Drivers and devices

Devices are managed by drivers. Each driver can create several devices. For example, the driver responsible for handling basic devices, uses Microsoft Direct Input to create devices such as a keyboard, a mouse or joysticks.

Here are the different devices currently supported by MiddleVR :


The trackers hold the position and/or orientation information of a device in space. This information is typically stored as a transformation matrix. The data can also be accessed more simply by asking for a position (a vector of three floats), and an orientation (a quaternion).


Axis typically store data and events about the axis of a joystick or a mouse, but this could represent any kind of analog information, such as a slider. This information is stored as an array of floats.


Buttons store buttons data. This information is stored as an array of booleans.


The Joystick device is used to store information about joysticks, gamepads, or similar devices. A joystick internally stores its information as both Axis and Buttons types.

Keyboard and mouse

MiddleVR can of course handle basic devices such as a keyboard or a mouse.


In most immersive cubes you interact with the simulation with a standard device called a Wand, or a Flystick.

This device is held in the hand and tracked in space. It commonly has several buttons and a two-axis joystick :

ART Flystick 2

ART Flystick 3

The Wand can be decomposed in three parts :

- its 3D position and orientation,

- the value of the joystick axis,

- the state of the buttons

MiddleVR includes standard interactions based on the Wand: navigation, grabbing of objects.

You first have to configure the three parts of the Wand before you can use those interactions.

Does MiddleVR support output devices such as force feedback or haptics devices ?

MiddleVR currently does not support force feedback or haptics devices.