Skip to main content

Mouse

Struct Mouse 

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

Provides access to mouse input from all mice on the system.

This type coalesces input from all connected mice into a single interface. It provides access to:

  • Mouse position within windows
  • Button states (left, right, middle, and others)
  • Accumulated scroll deltas

§Examples

use app_input::mouse::{Mouse, MOUSE_BUTTON_LEFT};

let mouse = Mouse::coalesced();

// Check if left button is pressed
if mouse.button_state(MOUSE_BUTTON_LEFT) {
    println!("Left button is pressed");
}

// Get mouse position
if let Some(pos) = mouse.window_pos() {
    println!("Mouse at ({}, {})", pos.pos_x(), pos.pos_y());
}

§Platform-specific behavior

Different platforms require different integration:

  • macOS and wasm: Work out of the box
  • Windows: You must call window_proc from your window procedure
  • Linux: You must call the appropriate wayland event handlers

Implementations§

Source§

impl Mouse

Source

pub fn coalesced() -> Self

Creates a new Mouse instance that coalesces input from all mice on the system.

This is the primary way to create a Mouse instance. The returned object will aggregate input from all connected mice.

§Examples
use app_input::mouse::Mouse;

let mouse = Mouse::coalesced();
// Now you can query mouse state
Source

pub fn window_pos(&self) -> Option<MouseWindowLocation>

Returns the MouseWindowLocation

§Platform specifics
Source

pub fn button_state(&self, button: u8) -> bool

Determines if the specified mouse button is currently pressed.

§Arguments
§Returns

true if the button is currently pressed, false otherwise.

§Examples
use app_input::mouse::{Mouse, MOUSE_BUTTON_LEFT, MOUSE_BUTTON_RIGHT};

let mouse = Mouse::coalesced();

if mouse.button_state(MOUSE_BUTTON_LEFT) {
    println!("Left button is pressed");
}

if mouse.button_state(MOUSE_BUTTON_RIGHT) {
    println!("Right button is pressed");
}
Source

pub fn load_clear_scroll_delta(&mut self) -> (f64, f64)

Returns the accumulated scroll delta and resets it to zero.

This method is useful for implementing scroll handling in your application. The scroll delta accumulates between calls, so you should call this periodically (e.g., once per frame) to process scroll events.

§Returns

A tuple (delta_x, delta_y) containing the horizontal and vertical scroll amounts since the last call to this method.

§Examples
use app_input::mouse::Mouse;

let mut mouse = Mouse::coalesced();

// In your update loop:
let (scroll_x, scroll_y) = mouse.load_clear_scroll_delta();
if scroll_y != 0.0 {
    println!("Scrolled vertically by {}", scroll_y);
}

Trait Implementations§

Source§

impl Debug for Mouse

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Mouse

Source§

fn default() -> Self

Creates a default Mouse instance using Mouse::coalesced().

§Examples
use app_input::mouse::Mouse;

let mouse = Mouse::default();
// Equivalent to Mouse::coalesced()
Source§

impl Hash for Mouse

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Mouse

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Mouse

Auto Trait Implementations§

§

impl Freeze for Mouse

§

impl !RefUnwindSafe for Mouse

§

impl Send for Mouse

§

impl Sync for Mouse

§

impl Unpin for Mouse

§

impl UnsafeUnpin for Mouse

§

impl !UnwindSafe for Mouse

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> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
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