1 extern crate sdl2; 2 3 use sdl2::event::Event; 4 use sdl2::mouse::MouseButton; 5 use sdl2::keyboard::Keycode; 6 use std::time::Duration; 7 main() -> Result<(), String>8pub fn main() -> Result<(), String> { 9 let sdl_context = sdl2::init()?; 10 let video_subsystem = sdl_context.video()?; 11 12 let _window = video_subsystem.window("Mouse", 800, 600) 13 .position_centered() 14 .build() 15 .map_err(|e| e.to_string())?; 16 17 let mut events = sdl_context.event_pump()?; 18 let mut state; 19 20 'running: loop { 21 for event in events.poll_iter() { 22 match event { 23 Event::KeyDown { keycode: Some(Keycode::Escape), .. } | 24 Event::Quit { .. } => break 'running, 25 _ => {} 26 } 27 } 28 29 // get a mouse state using mouse_state() so as not to call 30 // relative_mouse_state() twice and get a false position reading 31 if events.mouse_state().is_mouse_button_pressed(MouseButton::Left) { 32 state = events.relative_mouse_state(); 33 println!("Relative - X = {:?}, Y = {:?}", state.x(), state.y()); 34 } 35 36 std::thread::sleep(Duration::from_millis(100)); 37 } 38 39 Ok(()) 40 } 41