Enum egui::Event

source ·
pub enum Event {
Show 17 variants Copy, Cut, Paste(String), Text(String), Key { key: Key, physical_key: Option<Key>, pressed: bool, repeat: bool, modifiers: Modifiers, }, PointerMoved(Pos2), PointerButton { pos: Pos2, button: PointerButton, pressed: bool, modifiers: Modifiers, }, PointerGone, Scroll(Vec2), Zoom(f32), CompositionStart, CompositionUpdate(String), CompositionEnd(String), 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

The logical key, heeding the users keymap.

For instance, if the user is using Dvorak keyboard layout, this will take that into account.

§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.

§

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.

§

Scroll(Vec2)

How many points (logical pixels) the user scrolled.

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.

Shift-scroll should result in horizontal scrolling (it is up to the integrations to do this).

§

Zoom(f32)

Zoom scale factor this frame (e.g. from ctrl-scroll or pinch gesture).

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

CompositionStart

IME composition start.

§

CompositionUpdate(String)

A new IME candidate is being suggested.

§

CompositionEnd(String)

IME composition ended with this final result.

§

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 scrolling: points, lines, or pages.

§delta: Vec2

The amount scrolled horizontally and vertically. The amount and direction corresponding to one step of the wheel depends on the platform.

§modifiers: Modifiers

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

A raw mouse wheel event as sent by the backend (minus the z coordinate), for implementing alternative custom controls. Note that the same event can also trigger Self::Zoom and Self::Scroll, so you probably want to handle only one of them.

§

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