Input

Struct Input 

Source
pub struct Input { /* private fields */ }
Expand description

Input state manager

Tracks keyboard and mouse states using a 256-bit bitmask array. Provides frame-accurate detection for pressed, just pressed, and just released states.

§State Storage

  • Keys: bits 0-127
  • Mouse buttons: bits 128-255

§Frame Detection

  • is_*_pressed: Currently held down
  • just_*_pressed: Pressed this frame (not held last frame)
  • just_*_released: Released this frame (was held last frame)

§Example

// Direct key/button queries
if input.is_key_pressed(KeyCode::W) { ... }
if input.just_button_pressed(MouseButton::Left) { ... }

// Action-based queries (recommended)
if input.is_action_pressed("MoveForward") { ... }
if input.just_action_pressed("Fire") { ... }

Implementations§

Source§

impl Input

Source

pub fn is_key_pressed(&self, key: KeyCode) -> bool

Returns true if the key is currently held down

Source

pub fn just_key_pressed(&self, key: KeyCode) -> bool

Returns true if the key was pressed this frame

Only returns true on the first frame the key is pressed.

Source

pub fn just_key_released(&self, key: KeyCode) -> bool

Returns true if the key was released this frame

Only returns true on the first frame the key is released.

Source

pub fn is_button_pressed(&self, button: MouseButton) -> bool

Returns true if the mouse button is currently held down

Source

pub fn just_button_pressed(&self, button: MouseButton) -> bool

Returns true if the mouse button was pressed this frame

Source

pub fn just_button_released(&self, button: MouseButton) -> bool

Returns true if the mouse button was released this frame

Source

pub fn is_action_pressed(&self, action: &str) -> bool

Returns true if any input bound to the action is currently held

Checks all input sources registered for the action. For chords, both keys must be held.

Source

pub fn just_action_pressed(&self, action: &str) -> bool

Returns true if any input bound to the action was triggered this frame

For single keys/buttons: true on the frame they’re pressed. For chords: true when the final key/button completes the chord.

Source

pub fn just_action_released(&self, action: &str) -> bool

Returns true if any input bound to the action was released this frame

For chords: true when the non-modifier key/button is released while the modifier is still held.

Source

pub fn add_binding(&mut self, action: &str, source: InputSource)

Registers an input source for an action

Multiple sources can be bound to the same action. The action triggers if any of its sources are activated.

§Example
// Multiple keys for the same action
input.add_binding("MoveForward", InputSource::Key(KeyCode::W));
input.add_binding("MoveForward", InputSource::Key(KeyCode::Up));

// Key + mouse chord
input.add_binding("SpecialAttack", InputSource::MouseChord(KeyCode::LShift, MouseButton::Left));

Trait Implementations§

Source§

impl Default for Input

Source§

fn default() -> Input

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Input

§

impl RefUnwindSafe for Input

§

impl Send for Input

§

impl Sync for Input

§

impl Unpin for Input

§

impl UnwindSafe for Input

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Event for T
where T: Any + Send + Sync + 'static,