Enum egui::Event

source ·
pub enum Event {
Show 19 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, 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), AccessKitActionRequest(ActionRequest), 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

A key was pressed or released.

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.

§

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

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

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.

§

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

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

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

§

MouseWheel

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.

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.

§

WindowFocused(bool)

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

§

AccessKitActionRequest(ActionRequest)

An assistive technology (e.g. screen reader) requested an action.

§

Screenshot

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

Fields

§viewport_id: ViewportId

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<'de> Deserialize<'de> for Event

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. 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 Serialize for Event

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + Serialize + for<'a> Deserialize<'a> + Send + Sync,