use bevy::{ input::mouse::{MouseButtonInput, MouseMotion}, prelude::*, window::CursorMoved, }; fn main() { App::build() .add_default_plugins() .init_resource::() .add_system(mouse_click_system.system()) .add_system(mouse_input_event_system.system()) .run(); } fn mouse_click_system(mouse_button_input: Res>) { if mouse_button_input.just_pressed(MouseButton::Left) { println!("left mouse clicked"); } if mouse_button_input.just_released(MouseButton::Left) { println!("left mouse released"); } } #[derive(Default)] struct State { mouse_button_event_reader: EventReader, mouse_motion_event_reader: EventReader, cursor_moved_event_reader: EventReader, } /// prints out all mouse events as they come in fn mouse_input_event_system( mut state: ResMut, mouse_button_input_events: Res>, mouse_motion_events: Res>, cursor_moved_events: Res>, ) { for event in state .mouse_button_event_reader .iter(&mouse_button_input_events) { println!("{:?}", event); } for event in state.mouse_motion_event_reader.iter(&mouse_motion_events) { println!("{:?}", event); } for event in state.cursor_moved_event_reader.iter(&cursor_moved_events) { println!("{:?}", event); } }