Enum egui::data::input::Event

source ·
pub enum Event {
Show 15 variants Copy, Cut, Paste(String), Text(String), Key { key: Key, physical_key: Option<Key>, pressed: bool, repeat: bool, modifiers: Modifiers, }, PointerMoved(Pos2), MouseMoved(Vec2), PointerButton { pos: Pos2, button: PointerButton, pressed: bool, modifiers: Modifiers, }, PointerGone, Zoom(f32), Ime(ImeEvent), Touch { device_id: TouchDeviceId, id: TouchId, phase: TouchPhase, pos: Pos2, force: Option<f32>, }, MouseWheel { unit: MouseWheelUnit, delta: Vec2, modifiers: Modifiers, }, WindowFocused(bool), Screenshot { viewport_id: ViewportId, image: Arc<ColorImage>, },
}
Expand description

An input event generated by the integration.

This only covers events that egui cares about.

Variants§

§

Copy

The integration detected a “copy” event (e.g. Cmd+C).

§

Cut

The integration detected a “cut” event (e.g. Cmd+X).

§

Paste(String)

The integration detected a “paste” event (e.g. Cmd+V).

§

Text(String)

Text input, e.g. via keyboard.

When the user presses enter/return, do not send a Text (just Key::Enter).

§

Key

Fields

§key: Key

Most of the time, it’s the logical key, heeding the active keymap – for instance, if the user has Dvorak keyboard layout, it will be taken into account.

If it’s impossible to determine the logical key on desktop platforms (say, in case of non-Latin letters), key falls back to the value of the corresponding physical key. This is necessary for proper work of standard shortcuts that only respond to Latin-based bindings (such as Ctrl + V).

§physical_key: Option<Key>

The physical key, corresponding to the actual position on the keyboard.

This ignores keymaps, so it is not recommended to use this. The only thing it makes sense for is things like games, where e.g. the physical location of WSAD on QWERTY should always map to movement, even if the user is using Dvorak or AZERTY.

eframe does not (yet) implement this on web.

§pressed: bool

Was it pressed or released?

§repeat: bool

If this is a pressed event, is it a key-repeat?

On many platforms, holding down a key produces many repeated “pressed” events for it, so called key-repeats. Sometimes you will want to ignore such events, and this lets you do that.

egui will automatically detect such repeat events and mark them as such here. Therefore, if you are writing an egui integration, you do not need to set this (just set it to false).

§modifiers: Modifiers

The state of the modifier keys at the time of the event.

A key was pressed or released.

§

PointerMoved(Pos2)

The mouse or touch moved to a new place.

§

MouseMoved(Vec2)

The mouse moved, the units are unspecified. Represents the actual movement of the mouse, without acceleration or clamped by screen edges. PointerMoved and MouseMoved can be sent at the same time. This event is optional. If the integration can not determine unfiltered motion it should not send this event.

§

PointerButton

Fields

§pos: Pos2

Where is the pointer?

§button: PointerButton

What mouse button? For touches, use PointerButton::Primary.

§pressed: bool

Was it the button/touch pressed this frame, or released?

§modifiers: Modifiers

The state of the modifier keys at the time of the event.

A mouse button was pressed or released (or a touch started or stopped).

§

PointerGone

The mouse left the screen, or the last/primary touch input disappeared.

This means there is no longer a cursor on the screen for hovering etc.

On touch-up first send PointerButton{pressed: false, …} followed by PointerLeft.

§

Zoom(f32)

Zoom scale factor this frame (e.g. from a pinch gesture).

  • zoom = 1: no change.
  • zoom < 1: pinch together
  • zoom > 1: pinch spread

Note that egui also implement zooming by holding Ctrl and scrolling the mouse wheel, so integration need NOT emit this Zoom event in those cases, just Self::MouseWheel.

As a user, check crate::InputState::smooth_scroll_delta to see if the user did any zooming this frame.

§

Ime(ImeEvent)

IME Event

§

Touch

Fields

§device_id: TouchDeviceId

Hashed device identifier (if available; may be zero). Can be used to separate touches from different devices.

§id: TouchId

Unique identifier of a finger/pen. Value is stable from touch down to lift-up

§phase: TouchPhase

One of: start move end cancel.

§pos: Pos2

Position of the touch (or where the touch was last detected)

§force: Option<f32>

Describes how hard the touch device was pressed. May always be None if the platform does not support pressure sensitivity. The value is in the range from 0.0 (no pressure) to 1.0 (maximum pressure).

On touch screens, report this in addition to Self::PointerMoved, Self::PointerButton, Self::PointerGone

§

MouseWheel

Fields

§unit: MouseWheelUnit

The unit of delta: points, lines, or pages.

§delta: Vec2

The direction of the vector indicates how to move the content that is being viewed. So if you get positive values, the content being viewed should move to the right and down, revealing new things to the left and up.

A positive X-value indicates the content is being moved right, as when swiping right on a touch-screen or track-pad with natural scrolling.

A positive Y-value indicates the content is being moved down, as when swiping down on a touch-screen or track-pad with natural scrolling.

§modifiers: Modifiers

The state of the modifier keys at the time of the event.

A raw mouse wheel event as sent by the backend.

Used for scrolling.

§

WindowFocused(bool)

The native window gained or lost focused (e.g. the user clicked alt-tab).

§

Screenshot

Fields

§viewport_id: ViewportId

The reply of a screenshot requested with crate::ViewportCommand::Screenshot.

Trait Implementations§

source§

impl Clone for Event

source§

fn clone(&self) -> Event

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Event

source§

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

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

impl PartialEq for Event

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for Event

Auto Trait Implementations§

§

impl Freeze for Event

§

impl RefUnwindSafe for Event

§

impl Send for Event

§

impl Sync for Event

§

impl Unpin for Event

§

impl UnwindSafe for Event

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

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

§

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>,

§

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> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,