extern crate glfw;
use glfw::{Action, Context, CursorMode, Key};
fn main() {
let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();
let (mut window, events) = glfw.create_window(800, 600, "Hello, I am a window.", glfw::WindowMode::Windowed)
.expect("Failed to create GLFW window.");
window.set_cursor_mode(CursorMode::Disabled);
window.make_current();
window.set_cursor_pos_polling(true);
window.set_key_polling(true);
while !window.should_close() {
glfw.poll_events();
for (_, event) in glfw::flush_messages(&events) {
handle_window_event(&mut window, event);
}
}
}
fn handle_window_event(window: &mut glfw::Window, event: glfw::WindowEvent) {
match event {
glfw::WindowEvent::CursorPos(xpos, ypos) => println!("Cursor position: ({:?}, {:?})", xpos, ypos),
glfw::WindowEvent::Key(Key::Escape, _, Action::Press, _) => window.set_should_close(true),
glfw::WindowEvent::Key(Key::Space, _, Action::Press, _) => {
match window.get_cursor_mode() {
CursorMode::Disabled => window.set_cursor_mode(CursorMode::Normal),
CursorMode::Normal => window.set_cursor_mode(CursorMode::Disabled),
_ => {}
}
}
_ => {}
}
}