#wheel #racing #controller #logitech #g29

lib-g29

A library for interfacing with the Logitech G29 racing wheel

1 stable release

new 1.0.0 Apr 3, 2024

#1 in #racing

Download history 140/week @ 2024-04-01

140 downloads per month

MIT license

59KB
1.5K SLoC

G29

Description

Rust crate for using the logitech G29 steering wheel with force feedback. More Force Feedback options coming soon.

Currently the events feature is a bit slow in my opinion, so I'm working on optimization.

Thanks to @nightmode for their NodeJS library that I frequently referenced. logitech-g29

Features

  • Events (help me make this more performant)

Example

use g29::{Options, G29};

fn main() {
    let g29 = G29::connect(Options::default());

    g29.register_event_handler(
        g29::events::Event::PlaystationButtonReleased,
        playstation_button_released_handler,
    );

    g29.register_event_handler(g29::events::Event::Throttle, throttle_handler);

    g29.register_event_handler(g29::events::Event::Brake, brake_handler);

    g29.register_event_handler(g29::events::Event::Clutch, clutch_handler);

    while g29.connected() {}
}

fn playstation_button_released_handler(g29: &mut G29) {
    g29.disconnect();
    println!("Playstation button released");
}

fn throttle_handler(g29: &mut G29) {
    println!("Throttle: {}", g29.throttle());
}

fn brake_handler(g29: &mut G29) {
    println!("Brake: {}", g29.brake());
}

fn clutch_handler(g29: &mut G29) {
    println!("Clutch: {}", g29.clutch());
}

Dependencies

~2–11MB
~89K SLoC