Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Docs Crates.io version

gamepads

Rust gamepad input library with a focus on ease of use. Supports haptic feedback (dual rumble / vibrations) on the web, and can be used as a macroquad plugin.

use gamepads::Gamepads;

fn main() {
    let mut gamepads = Gamepads::new();

    loop {
        gamepads.poll();

        for gamepad in gamepads.all() {
            println!("Gamepad id: {:?}", gamepad.id());
            for button in gamepad.all_currently_pressed() {
                println!("Pressed button: {:?}", button);
            }
            println!("Left thumbstick: {:?}", gamepad.left_stick());
            println!("Right thumbstick: {:?}", gamepad.right_stick());
        }

        std::thread::sleep(std::time::Duration::from_millis(500));
   }
}

See the crate documentation and the examples for documentation and sample code.

What it is

  • On desktop this library is implemented on top of gilrs.
  • On web this is implemented on top of the Gamepad API exposed by browsers, including support for haptic feedback (aka "dual rumble" or "force feedback").
    • It can be used in a wasm-bindgen-using project without any setup necessary.
    • It can be used without wasm-bindgen (by specifying default-features = false), allowing it to be used as a macroquad plugin (see more below) or in a direct wasm build (example).

How to use as a macroquad plugin

For non-web targets, nothing special needs to be done to use this library with macroquad. But for a web build to work properly, two things needs to be done.

First, since macroquad does not use wasm-bindgen, that feature in gamepads needs to be turned off by setting default-features = false:

gamepads = { version = "*", default-features = false }

Second, a javascript plug-in (source) needs to be registered in the page embedding the built wasm file:

<script src="https://not-fl3.github.io/miniquad-samples/mq_js_bundle.js"></script>
<script src="https://fornwall.github.io/gamepads/js/macroquad-gamepads-0.1.js"></script>
<script>
load("your-wasm-file.wasm");
</script>

See the gamepads-macroquad example.

Feedback

Please report any issues found or discuss questions and ideas!

About

Rust gamepad input library with a focus on ease of use.

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages