glutJoystickFunc
Prev | GLUT | Next

## Name

glutJoystickFunc — sets the joystick callback for the current window.

## C Specification

`void `glutJoystickFunc`` | `(` | `void (*`func`)(unsigned int buttonMask, int x, int y, int z), int `pollInterval`);`

## Python Specification

``glutJoystickFunc`` | `(` | ``func`, `pollInterval`) → `None``

## Parameters

`func`
  The new joystick callback function.
`pollInterval`
  Joystick polling interval in milliseconds.

## Description

`glutJoystickFunc` sets the joystick callback for the current window.

The joystick callback is called either due to polling of the joystick at the uniform timer interval specified by `pollInterval` (in milliseconds) or in response to calling `glutForceJoystickFunc`. If the `pollInterval` is non-positive, no joystick polling is performed and the GLUT application must frequently (usually from an idle callback) call `glutForceJoystickFunc`.

The joystick buttons are reported by the callback's `buttonMask` parameter. The constants `GLUT_JOYSTICK_BUTTON_A` (0x1), `GLUT_JOYSTICK_BUTTON_B` (0x2), `GLUT_JOYSTICK_BUTTON_C` (0x4), and `GLUT_JOYSTICK_BUTTON_D` (0x8) are provided for programming convience.

The x, y, and z callback parameters report the X, Y, and Z axes of the joystick. The joystick is centered at (0,0,0). X, Y, and Z are scaled to range between -1000 and 1000. Moving the joystick left reports negative X; right reports positive X. Pulling the stick towards you reports negative Y; push the stick away from you reports positive Y. If the joystick has a third axis (rudder or up/down), down reports negative Z; up reports positive Z.

Passing a `NULL` func to `glutJoystickFunc` disables the generation of joystick callbacks. Without a joystick callback registered, `glutForceJoystickFunc` does nothing.

When a new window is created, no joystick callback is initially registered.

## Limitations

The GLUT joystick callback only reports the first 3 axes and 32 buttons. GLUT supports only a single joystick.

## Glut Implementation Notes For X11

The current implementation of GLUT for X11 supports the joystick API, but not joystick input. A future implementation of GLUT for X11 may add joystick support.

## Glut Implementation Notes For Win32

The current implementation of GLUT for Win32 supports the joystick API and joystick input, but does so through the dated `joySetCapture` and `joyGetPosEx` Win32 Multimedia API. The current GLUT joystick support for Win32 has all the limitations of the Win32 Multimedia API joystick support. A future implementation of GLUT for Win32 may use DirectInput.

## Glut Implementation Notes For Non-Analog Joysticks

If the connected joystick does not return (x,y,z) as a continuous range (for example, an 8 position Atari 2600 joystick), the implementation should report the most extreme (x,y,z) location. That is, if a 2D joystick is pushed to the upper left, report (-1000,1000,0).

## See Also

glutForceJoystickFunc, glutMotionFunc, glutMouseFunc, glutSpaceballButtonFunc, glutSpaceballMotionFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutDeviceGet

Prev | Up | Next
glutInitWindowPosition | Home | glutKeyboardFunc