Enum sdl2::event::Event

source ·
pub enum Event {
Show 50 variants Quit { timestamp: u32, }, AppTerminating { timestamp: u32, }, AppLowMemory { timestamp: u32, }, AppWillEnterBackground { timestamp: u32, }, AppDidEnterBackground { timestamp: u32, }, AppWillEnterForeground { timestamp: u32, }, AppDidEnterForeground { timestamp: u32, }, Display { timestamp: u32, display_index: i32, display_event: DisplayEvent, }, Window { timestamp: u32, window_id: u32, win_event: WindowEvent, }, KeyDown { timestamp: u32, window_id: u32, keycode: Option<Keycode>, scancode: Option<Scancode>, keymod: Mod, repeat: bool, }, KeyUp { timestamp: u32, window_id: u32, keycode: Option<Keycode>, scancode: Option<Scancode>, keymod: Mod, repeat: bool, }, TextEditing { timestamp: u32, window_id: u32, text: String, start: i32, length: i32, }, TextInput { timestamp: u32, window_id: u32, text: String, }, MouseMotion { timestamp: u32, window_id: u32, which: u32, mousestate: MouseState, x: i32, y: i32, xrel: i32, yrel: i32, }, MouseButtonDown { timestamp: u32, window_id: u32, which: u32, mouse_btn: MouseButton, clicks: u8, x: i32, y: i32, }, MouseButtonUp { timestamp: u32, window_id: u32, which: u32, mouse_btn: MouseButton, clicks: u8, x: i32, y: i32, }, MouseWheel { timestamp: u32, window_id: u32, which: u32, x: i32, y: i32, direction: MouseWheelDirection, precise_x: f32, precise_y: f32, mouse_x: i32, mouse_y: i32, }, JoyAxisMotion { timestamp: u32, which: u32, axis_idx: u8, value: i16, }, JoyBallMotion { timestamp: u32, which: u32, ball_idx: u8, xrel: i16, yrel: i16, }, JoyHatMotion { timestamp: u32, which: u32, hat_idx: u8, state: HatState, }, JoyButtonDown { timestamp: u32, which: u32, button_idx: u8, }, JoyButtonUp { timestamp: u32, which: u32, button_idx: u8, }, JoyDeviceAdded { timestamp: u32, which: u32, }, JoyDeviceRemoved { timestamp: u32, which: u32, }, ControllerAxisMotion { timestamp: u32, which: u32, axis: Axis, value: i16, }, ControllerButtonDown { timestamp: u32, which: u32, button: Button, }, ControllerButtonUp { timestamp: u32, which: u32, button: Button, }, ControllerDeviceAdded { timestamp: u32, which: u32, }, ControllerDeviceRemoved { timestamp: u32, which: u32, }, ControllerDeviceRemapped { timestamp: u32, which: u32, }, ControllerTouchpadDown { timestamp: u32, which: u32, touchpad: u32, finger: u32, x: f32, y: f32, pressure: f32, }, ControllerTouchpadMotion { timestamp: u32, which: u32, touchpad: u32, finger: u32, x: f32, y: f32, pressure: f32, }, ControllerTouchpadUp { timestamp: u32, which: u32, touchpad: u32, finger: u32, x: f32, y: f32, pressure: f32, }, FingerDown { timestamp: u32, touch_id: i64, finger_id: i64, x: f32, y: f32, dx: f32, dy: f32, pressure: f32, }, FingerUp { timestamp: u32, touch_id: i64, finger_id: i64, x: f32, y: f32, dx: f32, dy: f32, pressure: f32, }, FingerMotion { timestamp: u32, touch_id: i64, finger_id: i64, x: f32, y: f32, dx: f32, dy: f32, pressure: f32, }, DollarGesture { timestamp: u32, touch_id: i64, gesture_id: i64, num_fingers: u32, error: f32, x: f32, y: f32, }, DollarRecord { timestamp: u32, touch_id: i64, gesture_id: i64, num_fingers: u32, error: f32, x: f32, y: f32, }, MultiGesture { timestamp: u32, touch_id: i64, d_theta: f32, d_dist: f32, x: f32, y: f32, num_fingers: u16, }, ClipboardUpdate { timestamp: u32, }, DropFile { timestamp: u32, window_id: u32, filename: String, }, DropText { timestamp: u32, window_id: u32, filename: String, }, DropBegin { timestamp: u32, window_id: u32, }, DropComplete { timestamp: u32, window_id: u32, }, AudioDeviceAdded { timestamp: u32, which: u32, iscapture: bool, }, AudioDeviceRemoved { timestamp: u32, which: u32, iscapture: bool, }, RenderTargetsReset { timestamp: u32, }, RenderDeviceReset { timestamp: u32, }, User { timestamp: u32, window_id: u32, type_: u32, code: i32, data1: *mut c_void, data2: *mut c_void, }, Unknown { timestamp: u32, type_: u32, },
}
Expand description

Different event types.

Variants§

§

Quit

Fields

§timestamp: u32
§

AppTerminating

Fields

§timestamp: u32
§

AppLowMemory

Fields

§timestamp: u32
§

AppWillEnterBackground

Fields

§timestamp: u32
§

AppDidEnterBackground

Fields

§timestamp: u32
§

AppWillEnterForeground

Fields

§timestamp: u32
§

AppDidEnterForeground

Fields

§timestamp: u32
§

Display

Fields

§timestamp: u32
§display_index: i32
§display_event: DisplayEvent
§

Window

Fields

§timestamp: u32
§window_id: u32
§win_event: WindowEvent
§

KeyDown

Fields

§timestamp: u32
§window_id: u32
§keycode: Option<Keycode>
§scancode: Option<Scancode>
§keymod: Mod
§repeat: bool
§

KeyUp

Fields

§timestamp: u32
§window_id: u32
§keycode: Option<Keycode>
§scancode: Option<Scancode>
§keymod: Mod
§repeat: bool
§

TextEditing

Fields

§timestamp: u32
§window_id: u32
§text: String
§start: i32
§length: i32
§

TextInput

Fields

§timestamp: u32
§window_id: u32
§text: String
§

MouseMotion

Fields

§timestamp: u32
§window_id: u32
§which: u32
§mousestate: MouseState
§xrel: i32
§yrel: i32
§

MouseButtonDown

Fields

§timestamp: u32
§window_id: u32
§which: u32
§mouse_btn: MouseButton
§clicks: u8
§

MouseButtonUp

Fields

§timestamp: u32
§window_id: u32
§which: u32
§mouse_btn: MouseButton
§clicks: u8
§

MouseWheel

Fields

§timestamp: u32
§window_id: u32
§which: u32
§x: i32

How much did we scroll in X, with integer precision

§y: i32

How much did we scroll in Y, with integer precision

§precise_x: f32

How much did we scroll in X, with floating precision (added in 2.0.18)

§precise_y: f32

How much did we scroll in Y, with floating precision (added in 2.0.18)

§mouse_x: i32

The X position of the mouse from the window’s origin

§mouse_y: i32

The X position of the mouse from the window’s origin

§

JoyAxisMotion

Fields

§timestamp: u32
§which: u32

The joystick’s id

§axis_idx: u8
§value: i16
§

JoyBallMotion

Fields

§timestamp: u32
§which: u32

The joystick’s id

§ball_idx: u8
§xrel: i16
§yrel: i16
§

JoyHatMotion

Fields

§timestamp: u32
§which: u32

The joystick’s id

§hat_idx: u8
§state: HatState
§

JoyButtonDown

Fields

§timestamp: u32
§which: u32

The joystick’s id

§button_idx: u8
§

JoyButtonUp

Fields

§timestamp: u32
§which: u32

The joystick’s id

§button_idx: u8
§

JoyDeviceAdded

Fields

§timestamp: u32
§which: u32

The newly added joystick’s joystick_index

§

JoyDeviceRemoved

Fields

§timestamp: u32
§which: u32

The joystick’s id

§

ControllerAxisMotion

Fields

§timestamp: u32
§which: u32

The controller’s joystick id

§axis: Axis
§value: i16
§

ControllerButtonDown

Fields

§timestamp: u32
§which: u32

The controller’s joystick id

§button: Button
§

ControllerButtonUp

Fields

§timestamp: u32
§which: u32

The controller’s joystick id

§button: Button
§

ControllerDeviceAdded

Fields

§timestamp: u32
§which: u32

The newly added controller’s joystick_index

§

ControllerDeviceRemoved

Fields

§timestamp: u32
§which: u32

The controller’s joystick id

§

ControllerDeviceRemapped

Fields

§timestamp: u32
§which: u32

The controller’s joystick id

§

ControllerTouchpadDown

Fields

§timestamp: u32
§which: u32

The joystick instance id

§touchpad: u32

The index of the touchpad

§finger: u32

The index of the finger on the touchpad

§x: f32

Normalized in the range 0…1 with 0 being on the left

§y: f32

Normalized in the range 0…1 with 0 being at the top

§pressure: f32

Normalized in the range 0…1

§

ControllerTouchpadMotion

Fields

§timestamp: u32
§which: u32

The joystick instance id

§touchpad: u32

The index of the touchpad

§finger: u32

The index of the finger on the touchpad

§x: f32

Normalized in the range 0…1 with 0 being on the left

§y: f32

Normalized in the range 0…1 with 0 being at the top

§pressure: f32

Normalized in the range 0…1

§

ControllerTouchpadUp

Fields

§timestamp: u32
§which: u32

The joystick instance id

§touchpad: u32

The index of the touchpad

§finger: u32

The index of the finger on the touchpad

§x: f32

Normalized in the range 0…1 with 0 being on the left

§y: f32

Normalized in the range 0…1 with 0 being at the top

§pressure: f32

Normalized in the range 0…1

§

FingerDown

Fields

§timestamp: u32
§touch_id: i64
§finger_id: i64
§dx: f32
§dy: f32
§pressure: f32
§

FingerUp

Fields

§timestamp: u32
§touch_id: i64
§finger_id: i64
§dx: f32
§dy: f32
§pressure: f32
§

FingerMotion

Fields

§timestamp: u32
§touch_id: i64
§finger_id: i64
§dx: f32
§dy: f32
§pressure: f32
§

DollarGesture

Fields

§timestamp: u32
§touch_id: i64
§gesture_id: i64
§num_fingers: u32
§error: f32
§

DollarRecord

Fields

§timestamp: u32
§touch_id: i64
§gesture_id: i64
§num_fingers: u32
§error: f32
§

MultiGesture

Fields

§timestamp: u32
§touch_id: i64
§d_theta: f32
§d_dist: f32
§num_fingers: u16
§

ClipboardUpdate

Fields

§timestamp: u32
§

DropFile

Fields

§timestamp: u32
§window_id: u32
§filename: String
§

DropText

Fields

§timestamp: u32
§window_id: u32
§filename: String
§

DropBegin

Fields

§timestamp: u32
§window_id: u32
§

DropComplete

Fields

§timestamp: u32
§window_id: u32
§

AudioDeviceAdded

Fields

§timestamp: u32
§which: u32
§iscapture: bool
§

AudioDeviceRemoved

Fields

§timestamp: u32
§which: u32
§iscapture: bool
§

RenderTargetsReset

Fields

§timestamp: u32
§

RenderDeviceReset

Fields

§timestamp: u32
§

User

Fields

§timestamp: u32
§window_id: u32
§type_: u32
§code: i32
§

Unknown

Fields

§timestamp: u32
§type_: u32

Implementations§

source§

impl Event

source

pub fn from_ll(raw: SDL_Event) -> Event

source

pub fn is_user_event(&self) -> bool

source

pub fn as_user_event_type<T: Any>(&self) -> Option<T>

source

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

Returns true if they are the same “kind” of events.

§Example:
use sdl2::event::Event;

let ev1 = Event::JoyButtonDown {
    timestamp: 0,
    which: 0,
    button_idx: 0,
};
let ev2 = Event::JoyButtonDown {
    timestamp: 1,
    which: 1,
    button_idx: 1,
};

assert!(ev1 != ev2); // The events aren't equal (they contain different values).
assert!(ev1.is_same_kind_as(&ev2)); // But they are of the same kind!
source

pub fn get_timestamp(&self) -> u32

Returns the timestamp field of the event.

§Example
use sdl2::event::Event;

let ev = Event::JoyButtonDown {
    timestamp: 12,
    which: 0,
    button_idx: 0,
};
assert!(ev.get_timestamp() == 12);
source

pub fn get_window_id(&self) -> Option<u32>

Returns the window_id field of the event if it’s present (not all events have it!).

§Example
use sdl2::event::Event;

let ev = Event::JoyButtonDown {
    timestamp: 0,
    which: 0,
    button_idx: 0,
};
assert!(ev.get_window_id() == None);

let another_ev = Event::DropBegin {
    timestamp: 0,
    window_id: 3,
};
assert!(another_ev.get_window_id() == Some(3));
source

pub fn is_window(&self) -> bool

Returns true if this is a window event.

§Example
use sdl2::event::Event;

let ev = Event::Quit {
    timestamp: 0,
};
assert!(ev.is_window());

let ev = Event::AppLowMemory {
    timestamp: 0,
};
assert!(ev.is_window());

let another_ev = Event::TextInput {
    timestamp: 0,
    window_id: 0,
    text: String::new(),
};
assert!(another_ev.is_window() == false); // Not a window event!
source

pub fn is_keyboard(&self) -> bool

Returns true if this is a keyboard event.

§Example
use sdl2::event::Event;
use sdl2::keyboard::Mod;

let ev = Event::KeyDown {
    timestamp: 0,
    window_id: 0,
    keycode: None,
    scancode: None,
    keymod: Mod::empty(),
    repeat: false,
};
assert!(ev.is_keyboard());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_keyboard() == false); // Not a keyboard event!
source

pub fn is_text(&self) -> bool

Returns true if this is a text event.

§Example
use sdl2::event::Event;

let ev = Event::TextInput {
    timestamp: 0,
    window_id: 0,
    text: String::new(),
};
assert!(ev.is_text());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_text() == false); // Not a text event!
source

pub fn is_mouse(&self) -> bool

Returns true if this is a mouse event.

§Example
use sdl2::event::Event;
use sdl2::mouse::MouseWheelDirection;

let ev = Event::MouseWheel {
    timestamp: 0,
    window_id: 0,
    which: 0,
    precise_x: 0.0,
    precise_y: 0.0,
    x: 0,
    y: 0,
    mouse_x: 0,
    mouse_y: 0,
    direction: MouseWheelDirection::Normal,
};
assert!(ev.is_mouse());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_mouse() == false); // Not a mouse event!
source

pub fn is_touch(&self) -> bool

Returns true if this mouse event is coming from touch.

If used on any other kind of event, non-mouse related, this returns false.

source

pub fn is_controller(&self) -> bool

Returns true if this is a controller event.

§Example
use sdl2::event::Event;

let ev = Event::ControllerDeviceAdded {
    timestamp: 0,
    which: 0,
};
assert!(ev.is_controller());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_controller() == false); // Not a controller event!
source

pub fn is_joy(&self) -> bool

Returns true if this is a joy event.

§Example
use sdl2::event::Event;

let ev = Event::JoyButtonUp {
    timestamp: 0,
    which: 0,
    button_idx: 0,
};
assert!(ev.is_joy());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_joy() == false); // Not a joy event!
source

pub fn is_finger(&self) -> bool

Returns true if this is a finger event.

§Example
use sdl2::event::Event;

let ev = Event::FingerMotion {
    timestamp: 0,
    touch_id: 0,
    finger_id: 0,
    x: 0.,
    y: 0.,
    dx: 0.,
    dy: 0.,
    pressure: 0.,
};
assert!(ev.is_finger());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_finger() == false); // Not a finger event!
source

pub fn is_dollar(&self) -> bool

Returns true if this is a dollar event.

§Example
use sdl2::event::Event;

let ev = Event::DollarGesture {
    timestamp: 0,
    touch_id: 0,
    gesture_id: 0,
    num_fingers: 0,
    error: 0.,
    x: 0.,
    y: 0.,
};
assert!(ev.is_dollar());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_dollar() == false); // Not a dollar event!
source

pub fn is_drop(&self) -> bool

Returns true if this is a drop event.

§Example
use sdl2::event::Event;

let ev = Event::DropBegin {
    timestamp: 0,
    window_id: 3,
};
assert!(ev.is_drop());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_drop() == false); // Not a drop event!
source

pub fn is_audio(&self) -> bool

Returns true if this is an audio event.

§Example
use sdl2::event::Event;

let ev = Event::AudioDeviceAdded {
    timestamp: 0,
    which: 3,
    iscapture: false,
};
assert!(ev.is_audio());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_audio() == false); // Not an audio event!
source

pub fn is_render(&self) -> bool

Returns true if this is a render event.

§Example
use sdl2::event::Event;

let ev = Event::RenderTargetsReset {
    timestamp: 0,
};
assert!(ev.is_render());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_render() == false); // Not a render event!
source

pub fn is_user(&self) -> bool

Returns true if this is a user event.

§Example
use sdl2::event::Event;

let ev = Event::User {
    timestamp: 0,
    window_id: 0,
    type_: 0,
    code: 0,
    data1: ::std::ptr::null_mut(),
    data2: ::std::ptr::null_mut(),
};
assert!(ev.is_user());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_user() == false); // Not a user event!
source

pub fn is_unknown(&self) -> bool

Returns true if this is an unknown event.

§Example
use sdl2::event::Event;

let ev = Event::Unknown {
    timestamp: 0,
    type_: 0,
};
assert!(ev.is_unknown());

let another_ev = Event::Quit {
    timestamp: 0,
};
assert!(another_ev.is_unknown() == false); // Not an unknown event!

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 Send for Event

This does not auto-derive because User’s data fields can be used to store pointers to types that are !Send. Dereferencing these as pointers requires using unsafe and ensuring your own safety guarantees.

source§

impl StructuralPartialEq for Event

source§

impl Sync for Event

This does not auto-derive because User’s data fields can be used to store pointers to types that are !Sync. Dereferencing these as pointers requires using unsafe and ensuring your own safety guarantees.

Auto Trait Implementations§

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.