GilRs - Game Input Library for Rust
GilRs abstract platform specific APIs to provide unified interfaces for working with gamepads.
Main features:
- Unified gamepad layout - buttons and axes are represented by familiar names
- Support for SDL2 mappings including
SDL_GAMECONTROLLERCONFIG
environment variable which Steam uses - Hotplugging - GilRs will try to assign new ID for new gamepads and reuse same ID for gamepads which reconnected
- Force feedback (rumble)
- Power information (is gamepad wired, current battery status)
The project's main repository is on GitLab although there is also a GitHub mirror. Please use GitLab's issue tracker and merge requests.
This repository contains submodule - after you clone it, don't forget to run
git submodule init; git submodule update
(or clone with --recursive
flag)
or you will get compile errors.
Example
[]
= "0.4.0"
use ;
let mut gilrs = new;
// Iterate over all connected gamepads
for in gilrs.gamepads
loop
Supported features
Input | Hotplugging | Mappings | Force feedback | |
---|---|---|---|---|
Linux | ✓ | ✓ | ✓ | ✓ |
Windows (XInput) | ✓ | ✓ | n/a | ❌ |
Windows (DInput) | ❌ | ❌ | ❌ | ❌ |
OS X | ❌ | ❌ | ❌ | ❌ |
Android | ❌ | ❌ | ❌ | ❌ |
Platform specific notes
Linux
On Linux, GilRs read (and write, in case of force feedback) directly from appropriate
/dev/input/event*
file. This mean that user have to have read and write access to this file.
On most distros it shouldn't be a problem, but if it is, you will have to create udev rule.
To build GilRs, you will need pkg-config and libudev .pc file. On some
distributions this file is packaged in separate archive (for example libudev-dev
in Debian).
License
This project is licensed under the terms of both the Apache License (Version 2.0) and the MIT license. See LICENSE-APACHE and LICENSE-MIT for details.