A simple to use interface to the XInput API for Python
Project description
XInput-Python
A simple to use interface to the XInput API for Python.
XInput-Python provides a few simple methods that can be used to query controller information.
Tiny Documentation
XInput is Windows only
Installation
XInput-Python is available from the PyPI using
pip install XInput-Python
It can be inmported like this:
import XInput
Using XInput-Python
XInput-Python provides a few functions:
get_connected() -> (bool, bool, bool, bool)
Query which controllers are connected (note: don't query each frame)
get_state(user_index) -> State
Get the State of the controller user_index
get_button_values(state) -> dict
Returns a dictionary, showing which buttons are currently being pressed.
get_trigger_values(state) -> (LT, RT)
Returns a tuple with the values of the left and right triggers in range 0.0
to 1.0
get_thumb_values(state) -> ((LX, LY), (RX, RY))
Returns the values of the thumb sticks, expressed in X and Y ranging from 0.0
to 1.0
set_vibration(user_index, left_speed, right_speed) -> bool (Success)
Sets the vibration of the left and right motors of user_index
to values between 0
and 65535
or in range 0.0
to 1.0
respectively.
get_battery_information(user_index) -> (<type>, <level>)
Returns the battery information for user_index
Using Events
You can also use the Event-system:
events = get_events()
get_events
will return a generator that yields instances of the Event
class.
The Event
class always has the following members:
Event.user_index
(range 0 to 3) - the id of the controller that issued this event
Event.type
- which type of event was issued
The following events exist:
XInput.EVENT_CONNECTED == 1
- a controller with this user_index
was connected (this event will even occur if the controller was connected before the script was started)
XInput.EVENT_DISCONNECTED == 2
- a controller with this user_index
was disconnected
XInput.EVENT_BUTTON_PRESSED == 3
- a button was pressed on the controller user_index
XInput.EVENT_BUTTON_RELEASED == 4
- a button was released on the controller user_index
XInput.EVENT_TRIGGER_MOVED == 5
- a trigger was moved on the controller user_index
XInput.EVENT_STICK_MOVED == 6
- a thumb stick was moved on the controller user_index
Button Events
All button related Events have the following additional members:
Event.button_id
- the XInput numerical representation of the button
Event.button
- a literal representation of the button
The following buttons exist:
"DPAD_UP" == 1
"DPAD_DOWN" == 2
"DPAD_LEFT" == 4
"DPAD_RIGHT" == 8
"START" == 16
"BACK" == 32
"LEFT_THUMB" == 64
"RIGHT_THUMB" == 128
"LEFT_SHOULDER" == 256
"RIGHT_SHOULDER" == 512
"A" == 4096
"B" == 8192
"X" == 16384
"Y" == 32768
Trigger Events
All trigger related Events have the following additional members:
Event.trigger
(either XInput.LEFT == 0
or XInput.RIGHT == 1
) - which trigger was moved
Event.value
(range 0.0 to 1.0) - by how much the trigger is currently pressed
Stick Events
All thumb stick related Events have the following additional members:
Event.stick
(either XInput.LEFT == 0
or XInput.RIGHT == 1
) - which stick was moved
Event.x
(range -1.0 to 1.0) - the position of the stick on the X axis
Event.y
(range -1.0 to 1.0) - the position of the stick on the Y axis
Event.value
(range 0.0 to 1.0) - the distance of the stick from it's center position
Event.dir
(tuple of X and Y) - the direction the stick is currently pointing
Demo
Run XInput.py
as main (python XInput.py
) to see a vidual representation of the controller input.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for XInput_Python-0.2.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eebdedad65f9cc85d08e6a993100f6e081c6d1a565c8ae23143ec84fe06fe71 |
|
MD5 | 16cc123dc83e56258bfc4a4bcc47b8b5 |
|
BLAKE2b-256 | b6d66fd6c8476c2c2b49b4e48929505f671cf4209d183b4fdae6f21ab1c14f97 |