35次发布

0.10.9 2024年7月28日
0.10.7 2024年4月28日
0.10.6 2024年3月16日
0.10.4 2023年12月3日
0.3.1 2016年9月23日

#9 in 游戏开发

Download history 20062/week @ 2024-05-03 17851/week @ 2024-05-10 19588/week @ 2024-05-17 20427/week @ 2024-05-24 21097/week @ 2024-05-31 17453/week @ 2024-06-07 20121/week @ 2024-06-14 17335/week @ 2024-06-21 17268/week @ 2024-06-28 22318/week @ 2024-07-05 21939/week @ 2024-07-12 22232/week @ 2024-07-19 24707/week @ 2024-07-26 21367/week @ 2024-08-02 28915/week @ 2024-08-09 21935/week @ 2024-08-16

100,768 每月下载
139 个Crate(45个直接) 中使用

Apache-2.0/MIT

380KB
9K SLoC

吉尔Rs - Rust游戏输入库

pipeline status Crates.io Documentation Minimum rustc version

文档(master)

吉尔Rs抽象了平台特定的API,以提供统一的接口来处理游戏手柄。

主要功能

  • 统一的游戏手柄布局——按钮和轴用熟悉的名称表示
  • 支持SDL2映射,包括Steam使用的环境变量SDL_GAMECONTROLLERCONFIG
  • 热插拔——吉尔Rs将尝试为新游戏手柄分配新的ID,并重新使用重新连接的游戏手柄的同一ID
  • 震动(rumble)反馈
  • 电源信息(游戏手柄是否有线,当前电池状态)

项目的主要仓库位于GitLab上 是GitLab,尽管还有一个 GitHub镜像。请使用GitLab的问题跟踪器和合并请求。

此仓库包含子模块;在您克隆它之后,不要忘记运行 git submodule init; git submodule update(或使用--recursive标志进行克隆)或您将遇到编译错误。

示例

[dependencies]
gilrs = "0.10.3"
use gilrs::{Gilrs, Button, Event};

let mut gilrs = Gilrs::new().unwrap();

// Iterate over all connected gamepads
for (_id, gamepad) in gilrs.gamepads() {
    println!("{} is {:?}", gamepad.name(), gamepad.power_info());
}

let mut active_gamepad = None;

loop {
    // Examine new events
    while let Some(Event { id, event, time }) = gilrs.next_event() {
        println!("{:?} New event from {}: {:?}", time, id, event);
        active_gamepad = Some(id);
    }

    // You can also use cached gamepad state
    if let Some(gamepad) = active_gamepad.map(|id| gilrs.gamepad(id)) {
        if gamepad.is_pressed(Button::South) {
            println!("Button South is pressed (XBox - A, PS - X)");
        }
    }
}

支持的功能

输入 热插拔 震动反馈
Linux/BSD(evdev)
Windows(XInput)
OS X
Wasm n/a
Android

平台特定说明

Linux/BSD(evdev)

使用evdev,吉尔Rs直接从适当的 /dev/input/event* 文件读取(在需要震动反馈的情况下写入)。这意味着用户必须具有对此文件的读写访问权限。在大多数发行版中,这不应该是一个问题,但如果有问题,您将不得不创建udev规则。在FreeBSD上,通用HID游戏手柄使用hgame(4),并通过webcamd使用特殊的Linux驱动程序。

要构建吉尔Rs,您需要pkg-config和libudev .pc文件。在某些发行版中,此文件包含在单独的存档中(例如,Debian中的libudev-dev,FreeBSD中的libudev-devd)。

Wasm

Wasm实现使用stdweb,或带有wasm-bindgen功能的wasm-bindgen。对于stdweb,您需要cargo-web来构建wasm32-unknown-unknown的gilrs。对于wasm-bindgen,您需要wasm-bindgen命令行工具或类似wasm-pack的工具。与其他平台不同,事件仅在您调用Gilrs::next_event()时才会生成。

有关使用Wasm运行示例的说明,请参阅./gilrs/examples/wasm/README.md

许可证

本项目受Apache许可证(版本2.0)和MIT许可证的条款约束。有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。

依赖关系

~0.3–26MB
~356K SLoC