#[non_exhaustive]
pub enum DeviceEvent {
    Added,
    Removed,
    MouseMotion {
        delta: (f64, f64),
    },
    MouseWheel {
        delta: MouseScrollDelta,
    },
    Motion {
        axis: AxisId,
        value: f64,
    },
    Button {
        button: ButtonId,
        state: ElementState,
    },
    Key(RawKeyEvent),
    Text {
        codepoint: char,
    },
}
Expand description

Represents raw hardware events that are not associated with any particular window.

Useful for interactions that diverge significantly from a conventional 2D GUI, such as 3D camera or first-person game controls. Many physical actions, such as mouse movement, can produce both device and window events. Because window events typically arise from virtual devices (corresponding to GUI cursors and keyboard focus) the device IDs may not match.

Note that these events are delivered regardless of input focus.

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

Added

Removed

MouseMotion

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
delta: (f64, f64)

(x, y) change in position in unspecified units.

Different devices may use different units.

Change in physical position of a pointing device.

This represents raw, unfiltered physical motion. Not to be confused with WindowEvent::CursorMoved.

MouseWheel

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.

Physical scroll event

Motion

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
axis: AxisId
value: f64

Motion on some analog axis. This event will be reported for all arbitrary input devices that tao supports on this platform, including mouse devices. If the device is a mouse device then this will be reported alongside the MouseMotion event.

Button

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
button: ButtonId
state: ElementState

Key(RawKeyEvent)

Text

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
codepoint: char

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.