diff --git a/imgui-examples/examples/keyboard.rs b/imgui-examples/examples/keyboard.rs index a6aaa05..291a717 100644 --- a/imgui-examples/examples/keyboard.rs +++ b/imgui-examples/examples/keyboard.rs @@ -116,8 +116,7 @@ fn main() { // `winit::VirtualKeyCode`. So we can query if a key // is down based on it's virtual key code, - let home_key_idx = 65; // Hardcoded for imgui-examples only, instead use `winit::event::VirtualKeyCode::Home` - if ui.io().keys_down[home_key_idx as usize] { + if ui.is_key_down(Key::Home) { home_counter += 1; } ui.text(format!("Home has been pressed for {} frames", home_counter)); @@ -134,7 +133,7 @@ fn main() { // with arbitrary key indexes. For example, to check // if the F1 key is been pressed - if ui.is_key_index_released(37) { + if ui.is_key_released(Key::F1) { // Index is hardcoded for imgui-examples only, instead do this: //if ui.is_key_index_released(winit::event::VirtualKeyCode::F1 as i32) { f1_release_count += 1; diff --git a/imgui-winit-support/src/lib.rs b/imgui-winit-support/src/lib.rs index 09d167a..9e5120a 100644 --- a/imgui-winit-support/src/lib.rs +++ b/imgui-winit-support/src/lib.rs @@ -220,21 +220,96 @@ fn to_imgui_key(keycode: VirtualKeyCode) -> Option { VirtualKeyCode::Space => Some(Key::Space), VirtualKeyCode::Return => Some(Key::Enter), VirtualKeyCode::Escape => Some(Key::Escape), - VirtualKeyCode::NumpadEnter => Some(Key::KeypadEnter), + VirtualKeyCode::LControl => Some(Key::LeftCtrl), + VirtualKeyCode::LShift => Some(Key::LeftShift), + VirtualKeyCode::LAlt => Some(Key::LeftAlt), + VirtualKeyCode::LWin => Some(Key::LeftSuper), + VirtualKeyCode::RControl => Some(Key::RightCtrl), + VirtualKeyCode::RShift => Some(Key::RightShift), + VirtualKeyCode::RAlt => Some(Key::RightAlt), + VirtualKeyCode::RWin => Some(Key::RightSuper), + //VirtualKeyCode::Menu => Some(Key::Menu), // TODO: find out if there is a Menu key in winit + VirtualKeyCode::Key0 => Some(Key::Alpha0), + VirtualKeyCode::Key1 => Some(Key::Alpha1), + VirtualKeyCode::Key2 => Some(Key::Alpha2), + VirtualKeyCode::Key3 => Some(Key::Alpha3), + VirtualKeyCode::Key4 => Some(Key::Alpha4), + VirtualKeyCode::Key5 => Some(Key::Alpha5), + VirtualKeyCode::Key6 => Some(Key::Alpha6), + VirtualKeyCode::Key7 => Some(Key::Alpha7), + VirtualKeyCode::Key8 => Some(Key::Alpha8), + VirtualKeyCode::Key9 => Some(Key::Alpha9), VirtualKeyCode::A => Some(Key::A), + VirtualKeyCode::B => Some(Key::B), VirtualKeyCode::C => Some(Key::C), + VirtualKeyCode::D => Some(Key::D), + VirtualKeyCode::E => Some(Key::E), + VirtualKeyCode::F => Some(Key::F), + VirtualKeyCode::G => Some(Key::G), + VirtualKeyCode::H => Some(Key::H), + VirtualKeyCode::I => Some(Key::I), + VirtualKeyCode::J => Some(Key::J), + VirtualKeyCode::K => Some(Key::K), + VirtualKeyCode::L => Some(Key::L), + VirtualKeyCode::M => Some(Key::M), + VirtualKeyCode::N => Some(Key::N), + VirtualKeyCode::O => Some(Key::O), + VirtualKeyCode::P => Some(Key::P), + VirtualKeyCode::Q => Some(Key::Q), + VirtualKeyCode::R => Some(Key::R), + VirtualKeyCode::S => Some(Key::S), + VirtualKeyCode::T => Some(Key::T), + VirtualKeyCode::U => Some(Key::U), VirtualKeyCode::V => Some(Key::V), + VirtualKeyCode::W => Some(Key::W), VirtualKeyCode::X => Some(Key::X), VirtualKeyCode::Y => Some(Key::Y), VirtualKeyCode::Z => Some(Key::Z), - VirtualKeyCode::LControl => Some(Key::LeftCtrl), - VirtualKeyCode::RControl => Some(Key::RightCtrl), - VirtualKeyCode::LShift => Some(Key::LeftShift), - VirtualKeyCode::RShift => Some(Key::RightShift), - VirtualKeyCode::LAlt => Some(Key::LeftAlt), - VirtualKeyCode::RAlt => Some(Key::RightAlt), - VirtualKeyCode::LWin => Some(Key::LeftSuper), - VirtualKeyCode::RWin => Some(Key::RightSuper), + VirtualKeyCode::F1 => Some(Key::F1), + VirtualKeyCode::F2 => Some(Key::F2), + VirtualKeyCode::F3 => Some(Key::F3), + VirtualKeyCode::F4 => Some(Key::F4), + VirtualKeyCode::F5 => Some(Key::F5), + VirtualKeyCode::F6 => Some(Key::F6), + VirtualKeyCode::F7 => Some(Key::F7), + VirtualKeyCode::F8 => Some(Key::F8), + VirtualKeyCode::F9 => Some(Key::F9), + VirtualKeyCode::F10 => Some(Key::F10), + VirtualKeyCode::F11 => Some(Key::F11), + VirtualKeyCode::F12 => Some(Key::F12), + VirtualKeyCode::Apostrophe => Some(Key::Apostrophe), + VirtualKeyCode::Comma => Some(Key::Comma), + VirtualKeyCode::Minus => Some(Key::Minus), + VirtualKeyCode::Period => Some(Key::Period), + VirtualKeyCode::Slash => Some(Key::Slash), + VirtualKeyCode::Semicolon => Some(Key::Semicolon), + VirtualKeyCode::Equals => Some(Key::Equal), + VirtualKeyCode::LBracket => Some(Key::LeftBracket), + VirtualKeyCode::Backslash => Some(Key::Backslash), + VirtualKeyCode::RBracket => Some(Key::RightBracket), + VirtualKeyCode::Grave => Some(Key::GraveAccent), + VirtualKeyCode::Capital => Some(Key::CapsLock), + VirtualKeyCode::Scroll => Some(Key::ScrollLock), + VirtualKeyCode::Numlock => Some(Key::NumLock), + VirtualKeyCode::Snapshot => Some(Key::PrintScreen), + VirtualKeyCode::Pause => Some(Key::Pause), + VirtualKeyCode::Numpad0 => Some(Key::Keypad0), + VirtualKeyCode::Numpad1 => Some(Key::Keypad1), + VirtualKeyCode::Numpad2 => Some(Key::Keypad2), + VirtualKeyCode::Numpad3 => Some(Key::Keypad3), + VirtualKeyCode::Numpad4 => Some(Key::Keypad4), + VirtualKeyCode::Numpad5 => Some(Key::Keypad5), + VirtualKeyCode::Numpad6 => Some(Key::Keypad6), + VirtualKeyCode::Numpad7 => Some(Key::Keypad7), + VirtualKeyCode::Numpad8 => Some(Key::Keypad8), + VirtualKeyCode::Numpad9 => Some(Key::Keypad9), + VirtualKeyCode::NumpadDecimal => Some(Key::KeypadDecimal), + VirtualKeyCode::NumpadDivide => Some(Key::KeypadDivide), + VirtualKeyCode::NumpadMultiply => Some(Key::KeypadMultiply), + VirtualKeyCode::NumpadSubtract => Some(Key::KeypadSubtract), + VirtualKeyCode::NumpadAdd => Some(Key::KeypadAdd), + VirtualKeyCode::NumpadEnter => Some(Key::KeypadEnter), + VirtualKeyCode::NumpadEquals => Some(Key::KeypadEqual), _ => None, } }