#keyboard-input #mouse-input #input #keyboard #mouse #touch

buttons

A simple API for storing and querying input state

7 releases (breaking)

Uses new Rust 2024

0.6.0 Feb 26, 2025
0.5.0 Jul 22, 2023
0.4.0 Nov 14, 2022
0.3.1 Dec 23, 2020
0.1.0 Jan 1, 2019

#617 in Game dev

Download history 3/week @ 2024-12-09 5/week @ 2025-02-03 134/week @ 2025-02-24 35/week @ 2025-03-03 1/week @ 2025-03-10

170 downloads per month

CC0 license

43KB
1K SLoC

buttons

Crates.io Docs.rs

A simple Rust crate for managing and querying input state.

Usage

With winit

(Enabling the winit feature.)

let mut event_loop = winit::event_loop::EventLoop::new();
let mut keyboard = buttons::winit::keyboard();
let mut mouse = buttons::winit::mouse();
let mut touch = buttons::winit::touch();

// Track input
event_loop.run(move |event, _, _| {
    keyboard.handle_event(&event);
    mouse.handle_event(&event);
    touch.handle_event(&event);

    // Check state
    if keyboard.pressed(VirtualKeyCode::Escape)
        || mouse.released(MouseButton::Right)
        || touch.first_touch().is_some()
    {
        // Do something
    }
});

Dependencies

~0–17MB
~263K SLoC