Struct winit_input_helper::WinitInputHelper
source · [−]pub struct WinitInputHelper { /* private fields */ }
Expand description
The main struct of the API.
Create with WinitInputHelper::new
.
Call WinitInputHelper::update
for every winit::event::Event
you receive from winit.
WinitInputHelper::update
returning true indicates a step has occured.
You should now run your application logic, calling any of the accessor methods you need.
An alternative API is provided via WinitInputHelper::step_with_window_events
,
call this method instead of WinitInputHelper::update
if you need to manually control when a new step begins.
A step occurs every time this method is called.
Do not mix usages of WinitInputHelper::update
and WinitInputHelper::step_with_window_events
.
You should stick to one or the other.
Implementations
sourceimpl WinitInputHelper
impl WinitInputHelper
pub fn new() -> WinitInputHelper
sourcepub fn update<T>(&mut self, event: &Event<'_, T>) -> bool
pub fn update<T>(&mut self, event: &Event<'_, T>) -> bool
Pass every winit event to this function and run your application logic when it returns true.
The following winit events are handled:
Event::NewEvents
clears all internal state.Event::MainEventsCleared
causes this function to return true, signifying a “step” has completed.Event::WindowEvent
updates internal state, this will affect the result of accessor methods immediately.
sourcepub fn step_with_window_events(&mut self, events: &[WindowEvent<'_>])
pub fn step_with_window_events(&mut self, events: &[WindowEvent<'_>])
Pass a slice containing every winit event that occured within the step to this function.
Ensure this method is only called once per application main loop.
Ensure every event since the last WinitInputHelper::step_with_window_events
call is included in the events
argument.
WinitInputHelper::Update
is easier to use.
But this method is useful when your application logic steps dont line up with winit’s event loop.
e.g. you have a seperate thread for application logic using WinitInputHelper that constantly
runs regardless of winit’s event loop and you need to send events to it directly.
sourcepub fn key_pressed(&self, check_key_code: VirtualKeyCode) -> bool
pub fn key_pressed(&self, check_key_code: VirtualKeyCode) -> bool
Returns true when the specified keyboard key goes from “not pressed” to “pressed”. Otherwise returns false.
This is suitable for game controls.
sourcepub fn key_pressed_os(&self, check_key_code: VirtualKeyCode) -> bool
pub fn key_pressed_os(&self, check_key_code: VirtualKeyCode) -> bool
Returns true when the specified keyboard key goes from “not pressed” to “pressed”. Otherwise returns false.
Will repeat key presses while held down according to the OS’s key repeat configuration This is suitable for UI.
sourcepub fn key_released(&self, check_key_code: VirtualKeyCode) -> bool
pub fn key_released(&self, check_key_code: VirtualKeyCode) -> bool
Returns true when the specified keyboard key goes from “pressed” to “not pressed”. Otherwise returns false.
sourcepub fn key_held(&self, key_code: VirtualKeyCode) -> bool
pub fn key_held(&self, key_code: VirtualKeyCode) -> bool
Returns true while the specified keyboard key remains “pressed”. Otherwise returns false.
sourcepub fn held_shift(&self) -> bool
pub fn held_shift(&self) -> bool
Returns true while any shift key is held on the keyboard. Otherwise returns false.
sourcepub fn held_control(&self) -> bool
pub fn held_control(&self) -> bool
Returns true while any control key is held on the keyboard. Otherwise returns false.
sourcepub fn held_alt(&self) -> bool
pub fn held_alt(&self) -> bool
Returns true while any alt key is held on the keyboard. Otherwise returns false.
sourcepub fn mouse_pressed(&self, check_mouse_button: usize) -> bool
pub fn mouse_pressed(&self, check_mouse_button: usize) -> bool
Returns true when the specified mouse button goes from “not pressed” to “pressed”. Otherwise returns false.
Left => 0 Right => 1 Middle => 2 Other => 3..255
sourcepub fn mouse_released(&self, check_mouse_button: usize) -> bool
pub fn mouse_released(&self, check_mouse_button: usize) -> bool
Returns true when the specified mouse button goes from “pressed” to “not pressed”. Otherwise returns false.
Left => 0 Right => 1 Middle => 2 Other => 3..255
sourcepub fn mouse_held(&self, mouse_button: usize) -> bool
pub fn mouse_held(&self, mouse_button: usize) -> bool
Returns true while the specified mouse button remains “pressed”. Otherwise returns false.
Left => 0 Right => 1 Middle => 2 Other => 3..255
sourcepub fn scroll_diff(&self) -> f32
pub fn scroll_diff(&self) -> f32
Returns 0.0
if the mouse is outside of the window.
Otherwise returns the amount scrolled by the mouse during the last step.
sourcepub fn mouse(&self) -> Option<(f32, f32)>
pub fn mouse(&self) -> Option<(f32, f32)>
Returns None
when the mouse is outside of the window.
Otherwise returns the mouse coordinates in pixels.
sourcepub fn mouse_diff(&self) -> (f32, f32)
pub fn mouse_diff(&self) -> (f32, f32)
Returns the change in mouse coordinates that occured during the last step.
Returns (0.0, 0.0)
if the window loses focus.
sourcepub fn text(&self) -> Vec<TextChar>
pub fn text(&self) -> Vec<TextChar>
Returns the characters pressed during the last step. The earlier the character was pressed, the lower the index in the Vec.
sourcepub fn dropped_file(&self) -> Option<PathBuf>
pub fn dropped_file(&self) -> Option<PathBuf>
Returns the path to a file that has been drag-and-dropped onto the window.
sourcepub fn window_resized(&self) -> Option<PhysicalSize<u32>>
pub fn window_resized(&self) -> Option<PhysicalSize<u32>>
Returns the current window size if it was resized during the last step.
Otherwise returns None
.
sourcepub fn resolution(&self) -> Option<(u32, u32)>
pub fn resolution(&self) -> Option<(u32, u32)>
Returns None
when no WindowEvent::Resized
have been received yet.
After one has been received it returns the current resolution of the window.
sourcepub fn scale_factor_changed(&self) -> Option<f64>
pub fn scale_factor_changed(&self) -> Option<f64>
Returns the current scale factor if it was changed during the last step.
Otherwise returns None
.
sourcepub fn scale_factor(&self) -> Option<f64>
pub fn scale_factor(&self) -> Option<f64>
Returns None
when no WindowEvent::ScaleFactorChanged
have been received yet.
After one has been received it returns the current scale_factor of the window.
Trait Implementations
sourceimpl Clone for WinitInputHelper
impl Clone for WinitInputHelper
sourcefn clone(&self) -> WinitInputHelper
fn clone(&self) -> WinitInputHelper
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
Auto Trait Implementations
impl RefUnwindSafe for WinitInputHelper
impl Send for WinitInputHelper
impl Sync for WinitInputHelper
impl Unpin for WinitInputHelper
impl UnwindSafe for WinitInputHelper
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more