pub struct KeyboardState {
pub shift_down: bool,
pub ctrl_down: bool,
pub alt_down: bool,
pub super_down: bool,
pub current_char: Option<char>,
pub current_virtual_keycode: Option<VirtualKeyCode>,
pub pressed_virtual_keycodes: HashSet<VirtualKeyCode>,
pub pressed_scancodes: HashSet<ScanCode>,
}
Expand description
Determines which keys are pressed currently (modifiers, etc.)
Fields§
§shift_down: bool
Tracks, if the Shift
key is currently pressed - (READONLY)
ctrl_down: bool
Tracks, if the Ctrl
key is currently pressed - (READONLY)
alt_down: bool
Tracks, if the Alt
key is currently pressed - (READONLY)
super_down: bool
Tracks, if the Super / Windows / Command
key is currently pressed - (READONLY)
current_char: Option<char>
Currently pressed key, already converted to a char
- (READONLY)
current_virtual_keycode: Option<VirtualKeyCode>
Same as current_char
, but .
DO NOT USE THIS FOR TEXT INPUT, USE current_char
and On::TextInput
instead.
For example entering à
will fire a VirtualKeyCode::Grave
, then VirtualKeyCode::A
,
so to correctly combine characters, use the current_char
field.
pressed_virtual_keycodes: HashSet<VirtualKeyCode>
Currently pressed virtual keycodes (READONLY) - it can happen that more t
This is essentially an “extension” of current_scancodes
- current_keys
stores the characters, but what if the
pressed key is not a character (such as ArrowRight
or PgUp
)?
Note that this can have an overlap, so pressing “a” on the keyboard will insert
both a VirtualKeyCode::A
into current_virtual_keycodes
and an "a"
as a char into current_keys
.
pressed_scancodes: HashSet<ScanCode>
Same as current_virtual_keycodes
, but the scancode identifies the physical key pressed,
independent of the keyboard layout. The scancode does not change if the user adjusts the host’s keyboard map.
Use when the physical location of the key is more important than the key’s host GUI semantics,
such as for movement controls in a first-person game (German keyboard: Z key, UK keyboard: Y key, etc.)
Trait Implementations§
Source§impl Clone for KeyboardState
impl Clone for KeyboardState
Source§fn clone(&self) -> KeyboardState
fn clone(&self) -> KeyboardState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for KeyboardState
impl Debug for KeyboardState
Source§impl Default for KeyboardState
impl Default for KeyboardState
Source§fn default() -> KeyboardState
fn default() -> KeyboardState
Source§impl PartialEq for KeyboardState
impl PartialEq for KeyboardState
impl StructuralPartialEq for KeyboardState
Auto Trait Implementations§
impl Freeze for KeyboardState
impl RefUnwindSafe for KeyboardState
impl Send for KeyboardState
impl Sync for KeyboardState
impl Unpin for KeyboardState
impl UnwindSafe for KeyboardState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)