relative_mouse_state/
relative-mouse-state.rs1extern crate sdl2;
2
3use sdl2::event::Event;
4use sdl2::mouse::MouseButton;
5use sdl2::keyboard::Keycode;
6use std::time::Duration;
7
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 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}