23 releases (12 breaking)
0.13.0 | Mar 4, 2023 |
---|---|
0.12.4 | Jan 29, 2022 |
0.12.2 | Aug 3, 2021 |
0.12.0 | Jul 7, 2021 |
0.3.0 | Feb 4, 2018 |
#180 in Hardware support
57 downloads per month
Used in 10 crates
(2 directly)
130KB
2.5K
SLoC
Stick
Platform-agnostic asynchronous gamepad, joystick and flightstick library
Stick supports getting controller input from a large variety of gamepads, joysticks, flightsticks, and other controllers. Stick also supports left/right rumble haptic effects.
Why Does Stick Exist?
The main reason is that I hadn't heard of gilrs when I started stick back in 2017 when gilrs was only a year old and had less than 500 all-time downloads. Now, I think there are many other reasons for stick to exist despite gilrs:
- Executor-agnostic
async/.await
for gamepads, joysticks, etc (I recommend using thepasts
crate for a simple single-threaded executor). - Low-level hotplugging support (you assign the gamepad ID's)
- Meaningful Event Names (
ActionA
andActionB
instead ofSouth
andEast
) - Minimal dependencies
- Dual licensed with the Boost license (permission to use without attribution in the binary's UI) - making it great for game development.
- Not game-specific, doesn't depend on a "standard gamepad" model (which doesn't work due to the variety of controllers in existence) - therefore can also be used in robotics, control centers, advanced flight simulations, etc.
- Support more types of gamepads/joysticks than gilrs, and (WIP) unified support across platforms.
Platform Support
- Linux
- Windows
Planned Platform Support
- MacOS
- BSD
- Redox
- Fuchsia
- Android
- iOS
- Web Assembly
- Nintendo Switch (And other game consoles)
- Others
Table of Contents
API
API documentation can be found on docs.rs.
Features
You may enable the following features
- sdb: Enabled by default, the Stick database controller remappings
- gcdb: The SDL game controller database remappings
Upgrade
You can use the changelog to facilitate upgrading this crate as a dependency.
License
Licensed under any of
- Apache License, Version 2.0, (LICENSE_APACHE_2_0.txt or https://www.apache.org/licenses/LICENSE-2.0)
- MIT License, (LICENSE_MIT.txt or https://mit-license.org/)
- Boost Software License, Version 1.0, (LICENSE_BOOST_1_0.txt or https://www.boost.org/LICENSE_1_0.txt)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as described above, without any additional terms or conditions.
Help
If you want help using or contributing to this library, feel free to send me an email at aldaronlau@gmail.com.
Dependencies
~200KB