From b3a57c21a78479601981b7bcd5550e1ddd4d3fb4 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Thu, 4 Jun 2020 22:48:53 -0700 Subject: [PATCH] input: simpler input interface via an `Input` resource --- crates/bevy_input/src/input.rs | 72 ++++++ crates/bevy_input/src/keyboard.rs | 4 +- crates/bevy_input/src/lib.rs | 9 +- crates/bevy_input/src/system.rs | 6 +- crates/bevy_winit/src/converters.rs | 328 ++++++++++++++-------------- examples/input/input_keyboard.rs | 44 ++-- 6 files changed, 264 insertions(+), 199 deletions(-) create mode 100644 crates/bevy_input/src/input.rs diff --git a/crates/bevy_input/src/input.rs b/crates/bevy_input/src/input.rs new file mode 100644 index 0000000000..7840f9476c --- /dev/null +++ b/crates/bevy_input/src/input.rs @@ -0,0 +1,72 @@ +use crate::keyboard::{KeyCode, KeyboardInput, ElementState}; +use bevy_app::{EventReader, Events}; +use legion::prelude::{Res, ResMut}; +use std::collections::HashSet; + +#[derive(Default)] +pub struct Input { + pressed_keys: HashSet, + just_pressed_keys: HashSet, + just_released_keys: HashSet, +} + +impl Input { + pub fn press_key(&mut self, key_code: KeyCode) { + if !self.key_pressed(key_code) { + self.just_pressed_keys.insert(key_code); + } + + self.pressed_keys.insert(key_code); + } + + pub fn release_key(&mut self, key_code: KeyCode) { + self.pressed_keys.remove(&key_code); + self.just_released_keys.insert(key_code); + } + + pub fn key_pressed(&self, key_code: KeyCode) -> bool { + self.pressed_keys.contains(&key_code) + } + + pub fn key_just_pressed(&self, key_code: KeyCode) -> bool { + self.just_pressed_keys.contains(&key_code) + } + + pub fn key_just_released(&self, key_code: KeyCode) -> bool { + self.just_released_keys.contains(&key_code) + } + + pub fn update(&mut self) { + self.just_pressed_keys.clear(); + self.just_released_keys.clear(); + } +} + +#[derive(Default)] +pub struct InputState { + keyboard_input_event_reader: EventReader, +} + +pub fn input_system( + mut state: ResMut, + mut input: ResMut, + keyboard_input_events: Res>, +) { + input.update(); + for event in state + .keyboard_input_event_reader + .iter(&keyboard_input_events) + { + if let KeyboardInput { + key_code: Some(key_code), + state, + .. + } = event + { + match state { + ElementState::Pressed => input.press_key(*key_code), + ElementState::Released => input.release_key(*key_code), + } + } + } +} diff --git a/crates/bevy_input/src/keyboard.rs b/crates/bevy_input/src/keyboard.rs index 39e6ba6779..7c3afb4dd9 100644 --- a/crates/bevy_input/src/keyboard.rs +++ b/crates/bevy_input/src/keyboard.rs @@ -1,7 +1,7 @@ #[derive(Debug, Clone)] pub struct KeyboardInput { pub scan_code: u32, - pub virtual_key_code: Option, + pub key_code: Option, pub state: ElementState, } @@ -22,7 +22,7 @@ impl ElementState { #[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)] #[repr(u32)] -pub enum VirtualKeyCode { +pub enum KeyCode { /// The '1' key over the letters. Key1, /// The '2' key over the letters. diff --git a/crates/bevy_input/src/lib.rs b/crates/bevy_input/src/lib.rs index e517bccf32..e4448f25ac 100644 --- a/crates/bevy_input/src/lib.rs +++ b/crates/bevy_input/src/lib.rs @@ -1,10 +1,14 @@ +mod input; pub mod keyboard; pub mod mouse; pub mod system; +pub use input::*; + use bevy_app::{AppBuilder, AppPlugin}; use keyboard::KeyboardInput; use mouse::{MouseButtonInput, MouseMotionInput}; +use legion::prelude::IntoSystem; #[derive(Default)] pub struct InputPlugin; @@ -13,6 +17,9 @@ impl AppPlugin for InputPlugin { fn build(&self, app: &mut AppBuilder) { app.add_event::() .add_event::() - .add_event::(); + .add_event::() + .init_resource::() + .init_resource::() + .add_system_to_stage(bevy_app::stage::EVENT_UPDATE, input_system.system()); } } diff --git a/crates/bevy_input/src/system.rs b/crates/bevy_input/src/system.rs index 47576f72c0..532db00384 100644 --- a/crates/bevy_input/src/system.rs +++ b/crates/bevy_input/src/system.rs @@ -1,4 +1,4 @@ -use crate::keyboard::{ElementState, KeyboardInput, VirtualKeyCode}; +use crate::keyboard::{ElementState, KeyboardInput, KeyCode}; use bevy_app::{AppExit, EventReader, Events}; use legion::prelude::*; @@ -7,9 +7,9 @@ pub fn exit_on_esc_system(_resources: &mut Resources) -> Box { (move |keyboard_input_events: Res>, mut app_exit_events: ResMut>| { for event in keyboard_input_event_reader.iter(&keyboard_input_events) { - if let Some(virtual_key_code) = event.virtual_key_code { + if let Some(key_code) = event.key_code { if event.state == ElementState::Pressed - && virtual_key_code == VirtualKeyCode::Escape + && key_code == KeyCode::Escape { app_exit_events.send(AppExit); } diff --git a/crates/bevy_winit/src/converters.rs b/crates/bevy_winit/src/converters.rs index daae5cb311..b4ed70898b 100644 --- a/crates/bevy_winit/src/converters.rs +++ b/crates/bevy_winit/src/converters.rs @@ -1,5 +1,5 @@ use bevy_input::{ - keyboard::{ElementState, KeyboardInput, VirtualKeyCode}, + keyboard::{ElementState, KeyboardInput, KeyCode}, mouse::MouseButton, }; @@ -7,7 +7,7 @@ pub fn convert_keyboard_input(keyboard_input: &winit::event::KeyboardInput) -> K KeyboardInput { scan_code: keyboard_input.scancode, state: convert_element_state(keyboard_input.state), - virtual_key_code: keyboard_input + key_code: keyboard_input .virtual_keycode .map(|v| convert_virtual_key_code(v)), } @@ -29,168 +29,168 @@ pub fn convert_mouse_button(mouse_button: winit::event::MouseButton) -> MouseBut } } -pub fn convert_virtual_key_code(virtual_key_code: winit::event::VirtualKeyCode) -> VirtualKeyCode { +pub fn convert_virtual_key_code(virtual_key_code: winit::event::VirtualKeyCode) -> KeyCode { match virtual_key_code { - winit::event::VirtualKeyCode::Key1 => VirtualKeyCode::Key1, - winit::event::VirtualKeyCode::Key2 => VirtualKeyCode::Key2, - winit::event::VirtualKeyCode::Key3 => VirtualKeyCode::Key3, - winit::event::VirtualKeyCode::Key4 => VirtualKeyCode::Key4, - winit::event::VirtualKeyCode::Key5 => VirtualKeyCode::Key5, - winit::event::VirtualKeyCode::Key6 => VirtualKeyCode::Key6, - winit::event::VirtualKeyCode::Key7 => VirtualKeyCode::Key7, - winit::event::VirtualKeyCode::Key8 => VirtualKeyCode::Key8, - winit::event::VirtualKeyCode::Key9 => VirtualKeyCode::Key9, - winit::event::VirtualKeyCode::Key0 => VirtualKeyCode::Key0, - winit::event::VirtualKeyCode::A => VirtualKeyCode::A, - winit::event::VirtualKeyCode::B => VirtualKeyCode::B, - winit::event::VirtualKeyCode::C => VirtualKeyCode::C, - winit::event::VirtualKeyCode::D => VirtualKeyCode::D, - winit::event::VirtualKeyCode::E => VirtualKeyCode::E, - winit::event::VirtualKeyCode::F => VirtualKeyCode::F, - winit::event::VirtualKeyCode::G => VirtualKeyCode::G, - winit::event::VirtualKeyCode::H => VirtualKeyCode::H, - winit::event::VirtualKeyCode::I => VirtualKeyCode::I, - winit::event::VirtualKeyCode::J => VirtualKeyCode::J, - winit::event::VirtualKeyCode::K => VirtualKeyCode::K, - winit::event::VirtualKeyCode::L => VirtualKeyCode::L, - winit::event::VirtualKeyCode::M => VirtualKeyCode::M, - winit::event::VirtualKeyCode::N => VirtualKeyCode::N, - winit::event::VirtualKeyCode::O => VirtualKeyCode::O, - winit::event::VirtualKeyCode::P => VirtualKeyCode::P, - winit::event::VirtualKeyCode::Q => VirtualKeyCode::Q, - winit::event::VirtualKeyCode::R => VirtualKeyCode::R, - winit::event::VirtualKeyCode::S => VirtualKeyCode::S, - winit::event::VirtualKeyCode::T => VirtualKeyCode::T, - winit::event::VirtualKeyCode::U => VirtualKeyCode::U, - winit::event::VirtualKeyCode::V => VirtualKeyCode::V, - winit::event::VirtualKeyCode::W => VirtualKeyCode::W, - winit::event::VirtualKeyCode::X => VirtualKeyCode::X, - winit::event::VirtualKeyCode::Y => VirtualKeyCode::Y, - winit::event::VirtualKeyCode::Z => VirtualKeyCode::Z, - winit::event::VirtualKeyCode::Escape => VirtualKeyCode::Escape, - winit::event::VirtualKeyCode::F1 => VirtualKeyCode::F1, - winit::event::VirtualKeyCode::F2 => VirtualKeyCode::F2, - winit::event::VirtualKeyCode::F3 => VirtualKeyCode::F3, - winit::event::VirtualKeyCode::F4 => VirtualKeyCode::F4, - winit::event::VirtualKeyCode::F5 => VirtualKeyCode::F5, - winit::event::VirtualKeyCode::F6 => VirtualKeyCode::F6, - winit::event::VirtualKeyCode::F7 => VirtualKeyCode::F7, - winit::event::VirtualKeyCode::F8 => VirtualKeyCode::F8, - winit::event::VirtualKeyCode::F9 => VirtualKeyCode::F9, - winit::event::VirtualKeyCode::F10 => VirtualKeyCode::F10, - winit::event::VirtualKeyCode::F11 => VirtualKeyCode::F11, - winit::event::VirtualKeyCode::F12 => VirtualKeyCode::F12, - winit::event::VirtualKeyCode::F13 => VirtualKeyCode::F13, - winit::event::VirtualKeyCode::F14 => VirtualKeyCode::F14, - winit::event::VirtualKeyCode::F15 => VirtualKeyCode::F15, - winit::event::VirtualKeyCode::F16 => VirtualKeyCode::F16, - winit::event::VirtualKeyCode::F17 => VirtualKeyCode::F17, - winit::event::VirtualKeyCode::F18 => VirtualKeyCode::F18, - winit::event::VirtualKeyCode::F19 => VirtualKeyCode::F19, - winit::event::VirtualKeyCode::F20 => VirtualKeyCode::F20, - winit::event::VirtualKeyCode::F21 => VirtualKeyCode::F21, - winit::event::VirtualKeyCode::F22 => VirtualKeyCode::F22, - winit::event::VirtualKeyCode::F23 => VirtualKeyCode::F23, - winit::event::VirtualKeyCode::F24 => VirtualKeyCode::F24, - winit::event::VirtualKeyCode::Snapshot => VirtualKeyCode::Snapshot, - winit::event::VirtualKeyCode::Scroll => VirtualKeyCode::Scroll, - winit::event::VirtualKeyCode::Pause => VirtualKeyCode::Pause, - winit::event::VirtualKeyCode::Insert => VirtualKeyCode::Insert, - winit::event::VirtualKeyCode::Home => VirtualKeyCode::Home, - winit::event::VirtualKeyCode::Delete => VirtualKeyCode::Delete, - winit::event::VirtualKeyCode::End => VirtualKeyCode::End, - winit::event::VirtualKeyCode::PageDown => VirtualKeyCode::PageDown, - winit::event::VirtualKeyCode::PageUp => VirtualKeyCode::PageUp, - winit::event::VirtualKeyCode::Left => VirtualKeyCode::Left, - winit::event::VirtualKeyCode::Up => VirtualKeyCode::Up, - winit::event::VirtualKeyCode::Right => VirtualKeyCode::Right, - winit::event::VirtualKeyCode::Down => VirtualKeyCode::Down, - winit::event::VirtualKeyCode::Back => VirtualKeyCode::Back, - winit::event::VirtualKeyCode::Return => VirtualKeyCode::Return, - winit::event::VirtualKeyCode::Space => VirtualKeyCode::Space, - winit::event::VirtualKeyCode::Compose => VirtualKeyCode::Compose, - winit::event::VirtualKeyCode::Caret => VirtualKeyCode::Caret, - winit::event::VirtualKeyCode::Numlock => VirtualKeyCode::Numlock, - winit::event::VirtualKeyCode::Numpad0 => VirtualKeyCode::Numpad0, - winit::event::VirtualKeyCode::Numpad1 => VirtualKeyCode::Numpad1, - winit::event::VirtualKeyCode::Numpad2 => VirtualKeyCode::Numpad2, - winit::event::VirtualKeyCode::Numpad3 => VirtualKeyCode::Numpad3, - winit::event::VirtualKeyCode::Numpad4 => VirtualKeyCode::Numpad4, - winit::event::VirtualKeyCode::Numpad5 => VirtualKeyCode::Numpad5, - winit::event::VirtualKeyCode::Numpad6 => VirtualKeyCode::Numpad6, - winit::event::VirtualKeyCode::Numpad7 => VirtualKeyCode::Numpad7, - winit::event::VirtualKeyCode::Numpad8 => VirtualKeyCode::Numpad8, - winit::event::VirtualKeyCode::Numpad9 => VirtualKeyCode::Numpad9, - winit::event::VirtualKeyCode::AbntC1 => VirtualKeyCode::AbntC1, - winit::event::VirtualKeyCode::AbntC2 => VirtualKeyCode::AbntC2, - winit::event::VirtualKeyCode::Add => VirtualKeyCode::Add, - winit::event::VirtualKeyCode::Apostrophe => VirtualKeyCode::Apostrophe, - winit::event::VirtualKeyCode::Apps => VirtualKeyCode::Apps, - winit::event::VirtualKeyCode::At => VirtualKeyCode::At, - winit::event::VirtualKeyCode::Ax => VirtualKeyCode::Ax, - winit::event::VirtualKeyCode::Backslash => VirtualKeyCode::Backslash, - winit::event::VirtualKeyCode::Calculator => VirtualKeyCode::Calculator, - winit::event::VirtualKeyCode::Capital => VirtualKeyCode::Capital, - winit::event::VirtualKeyCode::Colon => VirtualKeyCode::Colon, - winit::event::VirtualKeyCode::Comma => VirtualKeyCode::Comma, - winit::event::VirtualKeyCode::Convert => VirtualKeyCode::Convert, - winit::event::VirtualKeyCode::Decimal => VirtualKeyCode::Decimal, - winit::event::VirtualKeyCode::Divide => VirtualKeyCode::Divide, - winit::event::VirtualKeyCode::Equals => VirtualKeyCode::Equals, - winit::event::VirtualKeyCode::Grave => VirtualKeyCode::Grave, - winit::event::VirtualKeyCode::Kana => VirtualKeyCode::Kana, - winit::event::VirtualKeyCode::Kanji => VirtualKeyCode::Kanji, - winit::event::VirtualKeyCode::LAlt => VirtualKeyCode::LAlt, - winit::event::VirtualKeyCode::LBracket => VirtualKeyCode::LBracket, - winit::event::VirtualKeyCode::LControl => VirtualKeyCode::LControl, - winit::event::VirtualKeyCode::LShift => VirtualKeyCode::LShift, - winit::event::VirtualKeyCode::LWin => VirtualKeyCode::LWin, - winit::event::VirtualKeyCode::Mail => VirtualKeyCode::Mail, - winit::event::VirtualKeyCode::MediaSelect => VirtualKeyCode::MediaSelect, - winit::event::VirtualKeyCode::MediaStop => VirtualKeyCode::MediaStop, - winit::event::VirtualKeyCode::Minus => VirtualKeyCode::Minus, - winit::event::VirtualKeyCode::Multiply => VirtualKeyCode::Multiply, - winit::event::VirtualKeyCode::Mute => VirtualKeyCode::Mute, - winit::event::VirtualKeyCode::MyComputer => VirtualKeyCode::MyComputer, - winit::event::VirtualKeyCode::NavigateForward => VirtualKeyCode::NavigateForward, - winit::event::VirtualKeyCode::NavigateBackward => VirtualKeyCode::NavigateBackward, - winit::event::VirtualKeyCode::NextTrack => VirtualKeyCode::NextTrack, - winit::event::VirtualKeyCode::NoConvert => VirtualKeyCode::NoConvert, - winit::event::VirtualKeyCode::NumpadComma => VirtualKeyCode::NumpadComma, - winit::event::VirtualKeyCode::NumpadEnter => VirtualKeyCode::NumpadEnter, - winit::event::VirtualKeyCode::NumpadEquals => VirtualKeyCode::NumpadEquals, - winit::event::VirtualKeyCode::OEM102 => VirtualKeyCode::OEM102, - winit::event::VirtualKeyCode::Period => VirtualKeyCode::Period, - winit::event::VirtualKeyCode::PlayPause => VirtualKeyCode::PlayPause, - winit::event::VirtualKeyCode::Power => VirtualKeyCode::Power, - winit::event::VirtualKeyCode::PrevTrack => VirtualKeyCode::PrevTrack, - winit::event::VirtualKeyCode::RAlt => VirtualKeyCode::RAlt, - winit::event::VirtualKeyCode::RBracket => VirtualKeyCode::RBracket, - winit::event::VirtualKeyCode::RControl => VirtualKeyCode::RControl, - winit::event::VirtualKeyCode::RShift => VirtualKeyCode::RShift, - winit::event::VirtualKeyCode::RWin => VirtualKeyCode::RWin, - winit::event::VirtualKeyCode::Semicolon => VirtualKeyCode::Semicolon, - winit::event::VirtualKeyCode::Slash => VirtualKeyCode::Slash, - winit::event::VirtualKeyCode::Sleep => VirtualKeyCode::Sleep, - winit::event::VirtualKeyCode::Stop => VirtualKeyCode::Stop, - winit::event::VirtualKeyCode::Subtract => VirtualKeyCode::Subtract, - winit::event::VirtualKeyCode::Sysrq => VirtualKeyCode::Sysrq, - winit::event::VirtualKeyCode::Tab => VirtualKeyCode::Tab, - winit::event::VirtualKeyCode::Underline => VirtualKeyCode::Underline, - winit::event::VirtualKeyCode::Unlabeled => VirtualKeyCode::Unlabeled, - winit::event::VirtualKeyCode::VolumeDown => VirtualKeyCode::VolumeDown, - winit::event::VirtualKeyCode::VolumeUp => VirtualKeyCode::VolumeUp, - winit::event::VirtualKeyCode::Wake => VirtualKeyCode::Wake, - winit::event::VirtualKeyCode::WebBack => VirtualKeyCode::WebBack, - winit::event::VirtualKeyCode::WebFavorites => VirtualKeyCode::WebFavorites, - winit::event::VirtualKeyCode::WebForward => VirtualKeyCode::WebForward, - winit::event::VirtualKeyCode::WebHome => VirtualKeyCode::WebHome, - winit::event::VirtualKeyCode::WebRefresh => VirtualKeyCode::WebRefresh, - winit::event::VirtualKeyCode::WebSearch => VirtualKeyCode::WebSearch, - winit::event::VirtualKeyCode::WebStop => VirtualKeyCode::WebStop, - winit::event::VirtualKeyCode::Yen => VirtualKeyCode::Yen, - winit::event::VirtualKeyCode::Copy => VirtualKeyCode::Copy, - winit::event::VirtualKeyCode::Paste => VirtualKeyCode::Paste, - winit::event::VirtualKeyCode::Cut => VirtualKeyCode::Cut, + winit::event::VirtualKeyCode::Key1 => KeyCode::Key1, + winit::event::VirtualKeyCode::Key2 => KeyCode::Key2, + winit::event::VirtualKeyCode::Key3 => KeyCode::Key3, + winit::event::VirtualKeyCode::Key4 => KeyCode::Key4, + winit::event::VirtualKeyCode::Key5 => KeyCode::Key5, + winit::event::VirtualKeyCode::Key6 => KeyCode::Key6, + winit::event::VirtualKeyCode::Key7 => KeyCode::Key7, + winit::event::VirtualKeyCode::Key8 => KeyCode::Key8, + winit::event::VirtualKeyCode::Key9 => KeyCode::Key9, + winit::event::VirtualKeyCode::Key0 => KeyCode::Key0, + winit::event::VirtualKeyCode::A => KeyCode::A, + winit::event::VirtualKeyCode::B => KeyCode::B, + winit::event::VirtualKeyCode::C => KeyCode::C, + winit::event::VirtualKeyCode::D => KeyCode::D, + winit::event::VirtualKeyCode::E => KeyCode::E, + winit::event::VirtualKeyCode::F => KeyCode::F, + winit::event::VirtualKeyCode::G => KeyCode::G, + winit::event::VirtualKeyCode::H => KeyCode::H, + winit::event::VirtualKeyCode::I => KeyCode::I, + winit::event::VirtualKeyCode::J => KeyCode::J, + winit::event::VirtualKeyCode::K => KeyCode::K, + winit::event::VirtualKeyCode::L => KeyCode::L, + winit::event::VirtualKeyCode::M => KeyCode::M, + winit::event::VirtualKeyCode::N => KeyCode::N, + winit::event::VirtualKeyCode::O => KeyCode::O, + winit::event::VirtualKeyCode::P => KeyCode::P, + winit::event::VirtualKeyCode::Q => KeyCode::Q, + winit::event::VirtualKeyCode::R => KeyCode::R, + winit::event::VirtualKeyCode::S => KeyCode::S, + winit::event::VirtualKeyCode::T => KeyCode::T, + winit::event::VirtualKeyCode::U => KeyCode::U, + winit::event::VirtualKeyCode::V => KeyCode::V, + winit::event::VirtualKeyCode::W => KeyCode::W, + winit::event::VirtualKeyCode::X => KeyCode::X, + winit::event::VirtualKeyCode::Y => KeyCode::Y, + winit::event::VirtualKeyCode::Z => KeyCode::Z, + winit::event::VirtualKeyCode::Escape => KeyCode::Escape, + winit::event::VirtualKeyCode::F1 => KeyCode::F1, + winit::event::VirtualKeyCode::F2 => KeyCode::F2, + winit::event::VirtualKeyCode::F3 => KeyCode::F3, + winit::event::VirtualKeyCode::F4 => KeyCode::F4, + winit::event::VirtualKeyCode::F5 => KeyCode::F5, + winit::event::VirtualKeyCode::F6 => KeyCode::F6, + winit::event::VirtualKeyCode::F7 => KeyCode::F7, + winit::event::VirtualKeyCode::F8 => KeyCode::F8, + winit::event::VirtualKeyCode::F9 => KeyCode::F9, + winit::event::VirtualKeyCode::F10 => KeyCode::F10, + winit::event::VirtualKeyCode::F11 => KeyCode::F11, + winit::event::VirtualKeyCode::F12 => KeyCode::F12, + winit::event::VirtualKeyCode::F13 => KeyCode::F13, + winit::event::VirtualKeyCode::F14 => KeyCode::F14, + winit::event::VirtualKeyCode::F15 => KeyCode::F15, + winit::event::VirtualKeyCode::F16 => KeyCode::F16, + winit::event::VirtualKeyCode::F17 => KeyCode::F17, + winit::event::VirtualKeyCode::F18 => KeyCode::F18, + winit::event::VirtualKeyCode::F19 => KeyCode::F19, + winit::event::VirtualKeyCode::F20 => KeyCode::F20, + winit::event::VirtualKeyCode::F21 => KeyCode::F21, + winit::event::VirtualKeyCode::F22 => KeyCode::F22, + winit::event::VirtualKeyCode::F23 => KeyCode::F23, + winit::event::VirtualKeyCode::F24 => KeyCode::F24, + winit::event::VirtualKeyCode::Snapshot => KeyCode::Snapshot, + winit::event::VirtualKeyCode::Scroll => KeyCode::Scroll, + winit::event::VirtualKeyCode::Pause => KeyCode::Pause, + winit::event::VirtualKeyCode::Insert => KeyCode::Insert, + winit::event::VirtualKeyCode::Home => KeyCode::Home, + winit::event::VirtualKeyCode::Delete => KeyCode::Delete, + winit::event::VirtualKeyCode::End => KeyCode::End, + winit::event::VirtualKeyCode::PageDown => KeyCode::PageDown, + winit::event::VirtualKeyCode::PageUp => KeyCode::PageUp, + winit::event::VirtualKeyCode::Left => KeyCode::Left, + winit::event::VirtualKeyCode::Up => KeyCode::Up, + winit::event::VirtualKeyCode::Right => KeyCode::Right, + winit::event::VirtualKeyCode::Down => KeyCode::Down, + winit::event::VirtualKeyCode::Back => KeyCode::Back, + winit::event::VirtualKeyCode::Return => KeyCode::Return, + winit::event::VirtualKeyCode::Space => KeyCode::Space, + winit::event::VirtualKeyCode::Compose => KeyCode::Compose, + winit::event::VirtualKeyCode::Caret => KeyCode::Caret, + winit::event::VirtualKeyCode::Numlock => KeyCode::Numlock, + winit::event::VirtualKeyCode::Numpad0 => KeyCode::Numpad0, + winit::event::VirtualKeyCode::Numpad1 => KeyCode::Numpad1, + winit::event::VirtualKeyCode::Numpad2 => KeyCode::Numpad2, + winit::event::VirtualKeyCode::Numpad3 => KeyCode::Numpad3, + winit::event::VirtualKeyCode::Numpad4 => KeyCode::Numpad4, + winit::event::VirtualKeyCode::Numpad5 => KeyCode::Numpad5, + winit::event::VirtualKeyCode::Numpad6 => KeyCode::Numpad6, + winit::event::VirtualKeyCode::Numpad7 => KeyCode::Numpad7, + winit::event::VirtualKeyCode::Numpad8 => KeyCode::Numpad8, + winit::event::VirtualKeyCode::Numpad9 => KeyCode::Numpad9, + winit::event::VirtualKeyCode::AbntC1 => KeyCode::AbntC1, + winit::event::VirtualKeyCode::AbntC2 => KeyCode::AbntC2, + winit::event::VirtualKeyCode::Add => KeyCode::Add, + winit::event::VirtualKeyCode::Apostrophe => KeyCode::Apostrophe, + winit::event::VirtualKeyCode::Apps => KeyCode::Apps, + winit::event::VirtualKeyCode::At => KeyCode::At, + winit::event::VirtualKeyCode::Ax => KeyCode::Ax, + winit::event::VirtualKeyCode::Backslash => KeyCode::Backslash, + winit::event::VirtualKeyCode::Calculator => KeyCode::Calculator, + winit::event::VirtualKeyCode::Capital => KeyCode::Capital, + winit::event::VirtualKeyCode::Colon => KeyCode::Colon, + winit::event::VirtualKeyCode::Comma => KeyCode::Comma, + winit::event::VirtualKeyCode::Convert => KeyCode::Convert, + winit::event::VirtualKeyCode::Decimal => KeyCode::Decimal, + winit::event::VirtualKeyCode::Divide => KeyCode::Divide, + winit::event::VirtualKeyCode::Equals => KeyCode::Equals, + winit::event::VirtualKeyCode::Grave => KeyCode::Grave, + winit::event::VirtualKeyCode::Kana => KeyCode::Kana, + winit::event::VirtualKeyCode::Kanji => KeyCode::Kanji, + winit::event::VirtualKeyCode::LAlt => KeyCode::LAlt, + winit::event::VirtualKeyCode::LBracket => KeyCode::LBracket, + winit::event::VirtualKeyCode::LControl => KeyCode::LControl, + winit::event::VirtualKeyCode::LShift => KeyCode::LShift, + winit::event::VirtualKeyCode::LWin => KeyCode::LWin, + winit::event::VirtualKeyCode::Mail => KeyCode::Mail, + winit::event::VirtualKeyCode::MediaSelect => KeyCode::MediaSelect, + winit::event::VirtualKeyCode::MediaStop => KeyCode::MediaStop, + winit::event::VirtualKeyCode::Minus => KeyCode::Minus, + winit::event::VirtualKeyCode::Multiply => KeyCode::Multiply, + winit::event::VirtualKeyCode::Mute => KeyCode::Mute, + winit::event::VirtualKeyCode::MyComputer => KeyCode::MyComputer, + winit::event::VirtualKeyCode::NavigateForward => KeyCode::NavigateForward, + winit::event::VirtualKeyCode::NavigateBackward => KeyCode::NavigateBackward, + winit::event::VirtualKeyCode::NextTrack => KeyCode::NextTrack, + winit::event::VirtualKeyCode::NoConvert => KeyCode::NoConvert, + winit::event::VirtualKeyCode::NumpadComma => KeyCode::NumpadComma, + winit::event::VirtualKeyCode::NumpadEnter => KeyCode::NumpadEnter, + winit::event::VirtualKeyCode::NumpadEquals => KeyCode::NumpadEquals, + winit::event::VirtualKeyCode::OEM102 => KeyCode::OEM102, + winit::event::VirtualKeyCode::Period => KeyCode::Period, + winit::event::VirtualKeyCode::PlayPause => KeyCode::PlayPause, + winit::event::VirtualKeyCode::Power => KeyCode::Power, + winit::event::VirtualKeyCode::PrevTrack => KeyCode::PrevTrack, + winit::event::VirtualKeyCode::RAlt => KeyCode::RAlt, + winit::event::VirtualKeyCode::RBracket => KeyCode::RBracket, + winit::event::VirtualKeyCode::RControl => KeyCode::RControl, + winit::event::VirtualKeyCode::RShift => KeyCode::RShift, + winit::event::VirtualKeyCode::RWin => KeyCode::RWin, + winit::event::VirtualKeyCode::Semicolon => KeyCode::Semicolon, + winit::event::VirtualKeyCode::Slash => KeyCode::Slash, + winit::event::VirtualKeyCode::Sleep => KeyCode::Sleep, + winit::event::VirtualKeyCode::Stop => KeyCode::Stop, + winit::event::VirtualKeyCode::Subtract => KeyCode::Subtract, + winit::event::VirtualKeyCode::Sysrq => KeyCode::Sysrq, + winit::event::VirtualKeyCode::Tab => KeyCode::Tab, + winit::event::VirtualKeyCode::Underline => KeyCode::Underline, + winit::event::VirtualKeyCode::Unlabeled => KeyCode::Unlabeled, + winit::event::VirtualKeyCode::VolumeDown => KeyCode::VolumeDown, + winit::event::VirtualKeyCode::VolumeUp => KeyCode::VolumeUp, + winit::event::VirtualKeyCode::Wake => KeyCode::Wake, + winit::event::VirtualKeyCode::WebBack => KeyCode::WebBack, + winit::event::VirtualKeyCode::WebFavorites => KeyCode::WebFavorites, + winit::event::VirtualKeyCode::WebForward => KeyCode::WebForward, + winit::event::VirtualKeyCode::WebHome => KeyCode::WebHome, + winit::event::VirtualKeyCode::WebRefresh => KeyCode::WebRefresh, + winit::event::VirtualKeyCode::WebSearch => KeyCode::WebSearch, + winit::event::VirtualKeyCode::WebStop => KeyCode::WebStop, + winit::event::VirtualKeyCode::Yen => KeyCode::Yen, + winit::event::VirtualKeyCode::Copy => KeyCode::Copy, + winit::event::VirtualKeyCode::Paste => KeyCode::Paste, + winit::event::VirtualKeyCode::Cut => KeyCode::Cut, } } diff --git a/examples/input/input_keyboard.rs b/examples/input/input_keyboard.rs index e859a178c0..28776d770d 100644 --- a/examples/input/input_keyboard.rs +++ b/examples/input/input_keyboard.rs @@ -1,54 +1,40 @@ -use bevy::{ - input::keyboard::{KeyboardInput, VirtualKeyCode}, - prelude::*, -}; +use bevy::{input::keyboard::KeyCode, prelude::*}; +use bevy_input::Input; fn main() { App::build() .add_default_plugins() - .init_resource::() .add_startup_system(setup.system()) .add_system(move_on_input.system()) .run(); } -#[derive(Default)] -struct State { - event_reader: EventReader, -} - /// moves our cube left when the "left" key is pressed. moves it right when the "right" key is pressed fn move_on_input( world: &mut SubWorld, - mut state: ResMut, time: Res