Joystick, tablet and USB HID device support.
This module provides a unified interface to almost any input device, besides
the regular mouse and keyboard support provided by
Window
. At the lowest
level, get_devices()
can be used to retrieve a list of all supported
devices, including joysticks, tablets, space controllers, wheels, pedals, remote
controls, keyboards and mice. The set of returned devices varies greatly
depending on the operating system (and, of course, what’s plugged in).
At this level pyglet does not try to interpret what a particular device is,
merely what controls it provides. A Control
can be either a button,
whose value is either True
or False
, or a relative or absolute-valued
axis, whose value is a float. Sometimes the name of a control can be provided
(for example, x
, representing the horizontal axis of a joystick), but often
not. In these cases the device API may still be useful – the user will have
to be asked to press each button in turn or move each axis separately to
identify them.
Higher-level interfaces are provided for joysticks, tablets and the Apple remote control. These devices can usually be identified by pyglet positively, and a base level of functionality for each one provided through a common interface.
To use an input device:
get_devices()
, get_apple_remote()
or
get_joysticks()
to retrieve and identify the device.get_devices()
), query the
devices list of controls and determine which ones you are interested in. For
high-level interfaces the set of controls is provided by the interface.Device.open()
to begin receiving events on the device. You can
begin querying the control values after this time; they will be updated
asynchronously.Device.close()
when you are finished with the device (not
needed if your application quits at this time).To use a tablet, follow the procedure above using get_tablets()
, but
note that no control list is available; instead, calling Tablet.open()
returns a TabletCanvas
onto which you should set your event
handlers.
New in version 1.2.
Device
(display, name)¶Bases: object
Input device.
Variables: |
|
---|
close
()¶Close the device.
get_controls
()¶Get a list of controls provided by the device.
Return type: | list of Control |
---|
open
(window=None, exclusive=False)¶Open the device to begin receiving input from it.
Parameters: |
|
---|
Control
(name, raw_name=None)¶Bases: pyglet.event.EventDispatcher
Single value input provided by a device.
A control’s value can be queried when the device is open. Event handlers can be attached to the control to be called when the value changes.
The min and max properties are provided as advertised by the device; in some cases the control’s value will be outside this range.
Variables: |
|
---|
Events
on_change
(value)¶The value changed.
Parameters: | value (float) – Current value of the control. |
---|
Attributes
value
¶Current value of the control.
The range of the value is device-dependent; for absolute controls
the range is given by min
and max
(however the value may exceed
this range); for relative controls the range is undefined.
Type: | float |
---|
RelativeAxis
(name, raw_name=None)¶Bases: pyglet.input.base.Control
An axis whose value represents a relative change from the previous value.
RX
= ‘rx’¶Name of the rotational-X axis control
RY
= ‘ry’¶Name of the rotational-Y axis control
RZ
= ‘rz’¶Name of the rotational-Z axis control
WHEEL
= ‘wheel’¶Name of the scroll wheel control
X
= ‘x’¶Name of the horizontal axis control
Y
= ‘y’¶Name of the vertical axis control
Z
= ‘z’¶Name of the Z axis control.
value
¶AbsoluteAxis
(name, min, max, raw_name=None)¶Bases: pyglet.input.base.Control
An axis whose value represents a physical measurement from the device.
The value is advertised to range over min
and max
.
Variables: |
|
---|
HAT
= ‘hat’¶Name of the hat (POV) control, when a single control enumerates all of the hat’s positions.
HAT_X
= ‘hat_x’¶Name of the hat’s (POV’s) horizontal control, when the hat position is described by two orthogonal controls.
HAT_Y
= ‘hat_y’¶Name of the hat’s (POV’s) vertical control, when the hat position is described by two orthogonal controls.
RX
= ‘rx’¶Name of the rotational-X axis control
RY
= ‘ry’¶Name of the rotational-Y axis control
RZ
= ‘rz’¶Name of the rotational-Z axis control
X
= ‘x’¶Name of the horizontal axis control
Y
= ‘y’¶Name of the vertical axis control
Z
= ‘z’¶Name of the Z axis control.
Button
(name, raw_name=None)¶Bases: pyglet.input.base.Control
A control whose value is boolean.
Events
on_press
()¶The button was pressed.
on_release
()¶The button was released.
Attributes
value
¶Joystick
(device)¶Bases: pyglet.event.EventDispatcher
High-level interface for joystick-like devices. This includes analogue and digital joysticks, gamepads, game controllers, and possibly even steering wheels and other input devices. There is unfortunately no way to distinguish between these different device types.
To use a joystick, first call open, then in your game loop examine the values of x, y, and so on. These values are normalized to the range [-1.0, 1.0].
To receive events when the value of an axis changes, attach an
on_joyaxis_motion event handler to the joystick. The Joystick
instance,
axis name, and current value are passed as parameters to this event.
To handle button events, you should attach on_joybutton_press and
on_joy_button_release event handlers to the joystick. Both the Joystick
instance and the index of the changed button are passed as parameters to
these events.
Alternately, you may attach event handlers to each individual button in button_controls to receive on_press or on_release events.
To use the hat switch, attach an on_joyhat_motion event handler to the joystick. The handler will be called with both the hat_x and hat_y values whenever the value of the hat switch changes.
The device name can be queried to get the name of the joystick.
Variables: |
|
---|
Methods
open
(window=None, exclusive=False)¶Open the joystick device. See Device.open.
close
()¶Close the joystick device. See Device.close.
Events
on_joyaxis_motion
(joystick, axis, value)¶The value of a joystick axis changed.
Parameters: |
|
---|
on_joyhat_motion
(joystick, hat_x, hat_y)¶The value of the joystick hat switch changed.
Parameters: |
|
---|
A button on the joystick was pressed.
Parameters: |
|
---|
A button on the joystick was released.
Parameters: |
|
---|
AppleRemote
(device)¶Bases: pyglet.event.EventDispatcher
High-level interface for Apple remote control.
This interface provides access to the 6 button controls on the remote. Pressing and holding certain buttons on the remote is interpreted as a separate control.
Variables: |
|
---|
Methods
open
(window=None, exclusive=False)¶Open the device. See Device.open.
close
()¶Close the device. See Device.close.
Events
A button on the remote was pressed.
Only the ‘up’ and ‘down’ buttons will generate an event when the button is first pressed. All other buttons on the remote will wait until the button is released and then send both the press and release events at the same time.
Parameters: | button (unicode) – The name of the button that was pressed. The valid names are ‘up’, ‘down’, ‘left’, ‘right’, ‘left_hold’, ‘right_hold’, ‘menu’, ‘menu_hold’, ‘select’, and ‘select_hold’ |
---|
A button on the remote was released.
The ‘select_hold’ and ‘menu_hold’ button release events are sent immediately after the corresponding press events regardless of whether or not the user has released the button.
Parameters: | button (unicode) – The name of the button that was released. The valid names are ‘up’, ‘down’, ‘left’, ‘right’, ‘left_hold’, ‘right_hold’, ‘menu’, ‘menu_hold’, ‘select’, and ‘select_hold’ |
---|
Tablet
¶High-level interface to tablet devices.
Unlike other devices, tablets must be opened for a specific window, and cannot be opened exclusively. The open method returns a TabletCanvas object, which supports the events provided by the tablet.
Currently only one tablet device can be used, though it can be opened on multiple windows. If more than one tablet is connected, the behaviour is undefined.
get_apple_remote
(display=None)¶Get the Apple remote control device.
The Apple remote is the small white 6-button remote control that accompanies most recent Apple desktops and laptops. The remote can only be used with Mac OS X.
Parameters: | display (Display) – Currently ignored. |
---|---|
Return type: | AppleRemote |
Returns: | The remote device, or None if the computer does not support it. |
get_devices
(display=None)¶Get a list of all attached input devices.
Parameters: | display (Display) – The display device to query for input devices. Ignored on Mac OS X and Windows. On Linux, defaults to the default display device. |
---|---|
Return type: | list of Device |
get_joysticks
(display=None)¶Get a list of attached joysticks.
Parameters: | display (Display) – The display device to query for input devices. Ignored on Mac OS X and Windows. On Linux, defaults to the default display device. |
---|---|
Return type: | list of Joystick |
get_tablets
(display=None)¶Get a list of tablets.
This function may return a valid tablet device even if one is not attached (for example, it is not possible on Mac OS X to determine if a tablet device is connected). Despite returning a list of tablets, pyglet does not currently support multiple tablets, and the behaviour is undefined if more than one is attached.
Parameters: | display (Display) – The display device to query for input devices. Ignored on Mac OS X and Windows. On Linux, defaults to the default display device. |
---|---|
Return type: | list of Tablet |