From 91a2648740ee2f69185bab77a0cf76222f5b9c05 Mon Sep 17 00:00:00 2001 From: Malik Olivier Boussejra Date: Sat, 2 Jun 2018 01:14:34 +0900 Subject: [PATCH] [ImGui] Add helper functions for keyboard keys Can check whether a keyboard key is pressed or not. --- src/lib.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 9053d5d..90bee4b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -304,6 +304,35 @@ impl ImGui { let io = self.io_mut(); io.key_map[key as usize] = mapping as i32; } + /// Map [`ImGuiKey`] values into user's key index + pub fn get_key_index(&self, key: ImGuiKey) -> usize { + unsafe { sys::igGetKeyIndex(key) as usize } + } + /// Return whether specific key is being held + /// + /// # Example + /// + /// ```rust + /// use imgui::{ImGuiKey, Ui}; + /// + /// fn test(ui: &Ui) { + /// let delete_key_index = ui.imgui().get_key_index(ImGuiKey::Delete); + /// if ui.imgui().is_key_down(delete_key_index) { + /// println!("Delete is being held!"); + /// } + /// } + /// ``` + pub fn is_key_down(&self, user_key_index: usize) -> bool { + unsafe { sys::igIsKeyDown(user_key_index as c_int) } + } + /// Return whether specific key was pressed + pub fn is_key_pressed(&self, user_key_index: usize) -> bool { + unsafe { sys::igIsKeyPressed(user_key_index as c_int, true) } + } + /// Return whether specific key was released + pub fn is_key_released(&self, user_key_index: usize) -> bool { + unsafe { sys::igIsKeyReleased(user_key_index as c_int) } + } pub fn add_input_character(&mut self, character: char) { let mut buf = [0; 5]; character.encode_utf8(&mut buf);