diff --git a/src/events.rs b/src/events.rs index a508b589..93eed988 100644 --- a/src/events.rs +++ b/src/events.rs @@ -1,5 +1,5 @@ use std::path::PathBuf; -use {WindowId, DeviceId, AxisId, ButtonId}; +use {WindowId, DeviceId}; #[derive(Clone, Debug)] pub enum Event { @@ -157,6 +157,12 @@ pub struct Touch { pub type ScanCode = u32; +/// Identifier for a specific analog axis on some device. +pub type AxisId = u32; + +/// Identifier for a specific button on some device. +pub type ButtonId = u32; + #[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] pub enum ElementState { Pressed, diff --git a/src/lib.rs b/src/lib.rs index eed9391a..85394f49 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -168,14 +168,6 @@ pub struct WindowId(platform::WindowId); #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct DeviceId(platform::DeviceId); -/// Identifier for a specific analog axis on some device. -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct AxisId(u32); - -/// Identifier for a specific button on some device. -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct ButtonId(u32); - /// Provides a way to retreive events from the windows that were registered to it. /// /// To wake up an `EventsLoop` from a another thread, see the `EventsLoopProxy` docs. diff --git a/src/platform/linux/x11/mod.rs b/src/platform/linux/x11/mod.rs index 726bd271..4e71a522 100644 --- a/src/platform/linux/x11/mod.rs +++ b/src/platform/linux/x11/mod.rs @@ -7,7 +7,7 @@ pub use self::xdisplay::{XConnection, XNotSupported, XError}; pub mod ffi; use platform::PlatformSpecificWindowBuilderAttributes; -use {CreationError, Event, EventsLoopClosed, WindowEvent, DeviceEvent, AxisId, ButtonId, +use {CreationError, Event, EventsLoopClosed, WindowEvent, DeviceEvent, KeyboardInput, ControlFlow}; use std::{mem, ptr, slice}; @@ -420,7 +420,7 @@ impl EventsLoop { } else { events.push(Event::WindowEvent { window_id: wid, event: AxisMotion { device_id: did, - axis: AxisId(i as u32), + axis: i as u32, value: unsafe { *value }, }}); } @@ -490,7 +490,7 @@ impl EventsLoop { let xev: &ffi::XIRawEvent = unsafe { &*(xev.data as *const _) }; if xev.flags & ffi::XIPointerEmulated == 0 { callback(Event::DeviceEvent { device_id: mkdid(xev.deviceid), event: DeviceEvent::Button { - button: ButtonId(xev.detail as u32), + button: xev.detail as u32, state: match xev.evtype { ffi::XI_RawButtonPress => Pressed, ffi::XI_RawButtonRelease => Released, @@ -509,7 +509,7 @@ impl EventsLoop { for i in 0..xev.valuators.mask_len*8 { if ffi::XIMaskIsSet(mask, i) { callback(Event::DeviceEvent { device_id: did, event: DeviceEvent::Motion { - axis: AxisId(i as u32), + axis: i as u32, value: unsafe { *value }, }}); value = unsafe { value.offset(1) };