Skip to content

Commit

Permalink
Merge pull request #211 from Ralith/transparent-ids
Browse files Browse the repository at this point in the history
Transparent axis/button IDs
  • Loading branch information
tomaka authored Jul 17, 2017
2 parents e1e21de + 3d9e8da commit 2e079fe
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 13 deletions.
8 changes: 7 additions & 1 deletion src/events.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::path::PathBuf;
use {WindowId, DeviceId, AxisId, ButtonId};
use {WindowId, DeviceId};

#[derive(Clone, Debug)]
pub enum Event {
Expand Down Expand Up @@ -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,
Expand Down
8 changes: 0 additions & 8 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
8 changes: 4 additions & 4 deletions src/platform/linux/x11/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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 },
}});
}
Expand Down Expand Up @@ -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,
Expand All @@ -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) };
Expand Down

0 comments on commit 2e079fe

Please sign in to comment.