Metadata-Version: 2.1
Name: XInput-Python
Version: 0.2.0
Summary: A simple to use interface to the XInput API for Python
Home-page: https://github.com/Zuzu-Typ/XInput-Python
Author: Zuzu_Typ
Author-email: zuzu.typ@gmail.com
License: zlib/libpng license
Keywords: XInput xinput-controller xinput-wrapper directx controller controller-api wrapper windows
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: zlib/libpng License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown

# 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](https://pypi.org) 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\.

