1use winit_input_map::*;
2use gilrs::Gilrs;
3use winit::{event::*, application::*, window::*, event_loop::*};
4fn main() {
5 let input = input_map!();
6
7 let gilrs = Gilrs::new().unwrap();
8 let event_loop = EventLoop::new().unwrap();
9 event_loop.run_app(&mut App { window: None, input, gilrs }).unwrap();
10}
11struct App { window: Option<Window>, input: InputMap<()>, gilrs: Gilrs }
12impl ApplicationHandler for App {
13 fn resumed(&mut self, event_loop: &ActiveEventLoop) {
14 self.window = Some(event_loop.create_window(Window::default_attributes()).unwrap());
15 }
16 fn window_event(&mut self, event_loop: &ActiveEventLoop, _: WindowId, event: WindowEvent) {
17 self.input.update_with_window_event(&event);
18 if let WindowEvent::CloseRequested = &event { event_loop.exit() }
19 }
20 fn device_event(&mut self, _: &ActiveEventLoop, id: DeviceId, event: DeviceEvent) {
21 self.input.update_with_device_event(id, &event);
22 }
23 fn about_to_wait(&mut self, _: &ActiveEventLoop) {
24 self.input.update_with_gilrs(&mut self.gilrs);
25
26 self.input.init();
29 }
30}
31