bevy_streamdeck 0.8.0

Elgato Stream Deck plugin for Bevy
Documentation
use bevy::{log::LogPlugin, prelude::*};
use bevy_streamdeck::{Color, StreamDeck, StreamDeckPlugin};
use rand::Rng;

fn main() {
    App::new()
        .add_plugins((MinimalPlugins, LogPlugin::default()))
        .add_plugins(StreamDeckPlugin)
        .insert_resource(Time::<Fixed>::from_seconds(0.5))
        .add_systems(FixedUpdate, change_color)
        .run();
}

fn change_color(streamdeck: Res<StreamDeck>) {
    let mut rng = rand::thread_rng();

    if let Some(kind) = streamdeck.kind() {
        let key = rng.gen_range(0..kind.keys());
        let color = Color::linear_rgb(rng.r#gen(), rng.r#gen(), rng.r#gen());

        streamdeck.set_key_color(key, color);
        for i in 0..kind.keys() {
            if i != key {
                streamdeck.reset_key(i);
            }
        }
    }
}