#![deny(missing_docs)]
#![doc(html_root_url = "https://docs.rs/input-linux/0.6.1/")]
#![cfg_attr(feature = "dox", feature(doc_cfg))]
pub use input_linux_sys as sys;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize, };
#[macro_use]
mod macros;
mod kinds;
pub use crate::kinds::*;
mod time;
pub use crate::time::EventTime;
mod events;
pub use crate::events::*;
mod keys;
pub use crate::keys::Key;
pub mod evdev;
pub use crate::evdev::EvdevHandle;
pub mod uinput;
pub use crate::uinput::UInputHandle;
pub mod enum_iterator;
pub mod bitmask;
pub use crate::bitmask::Bitmask;
#[cfg(feature = "codec")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "codec")))]
mod codec;
#[cfg(feature = "codec")]
pub use crate::codec::EventCodec;
#[repr(C)]
#[derive(Copy, Clone, Default, PartialOrd, Ord, PartialEq, Eq, Hash, Debug)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct InputId {
pub bustype: u16,
pub vendor: u16,
pub product: u16,
pub version: u16,
}
impl<'a> From<&'a sys::input_id> for &'a InputId {
fn from(id: &'a sys::input_id) -> Self {
let raw = id as *const _ as *const _;
unsafe { &*raw }
}
}
impl<'a> From<&'a InputId> for &'a sys::input_id {
fn from(id: &'a InputId) -> Self {
let raw = id as *const _ as *const _;
unsafe { &*raw }
}
}
impl From<sys::input_id> for InputId {
fn from(id: sys::input_id) -> Self {
*<&InputId>::from(&id)
}
}
impl From<InputId> for sys::input_id {
fn from(id: InputId) -> Self {
*<&sys::input_id>::from(&id)
}
}
#[repr(C)]
#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Hash, Debug)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct AbsoluteInfoSetup {
pub axis: AbsoluteAxis,
pub info: AbsoluteInfo,
}
impl<'a> From<&'a AbsoluteInfoSetup> for &'a sys::uinput_abs_setup {
fn from(info: &'a AbsoluteInfoSetup) -> Self {
let raw = info as *const _ as *const _;
unsafe { &*raw }
}
}
impl From<AbsoluteInfoSetup> for sys::uinput_abs_setup {
fn from(info: AbsoluteInfoSetup) -> Self {
use std::mem;
unsafe {
mem::transmute(info)
}
}
}
#[repr(C)]
#[derive(Copy, Clone, Default, PartialOrd, Ord, PartialEq, Eq, Hash, Debug)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct AbsoluteInfo {
pub value: i32,
pub minimum: i32,
pub maximum: i32,
pub fuzz: i32,
pub flat: i32,
pub resolution: i32,
}
impl<'a> From<&'a sys::input_absinfo> for &'a AbsoluteInfo {
fn from(info: &'a sys::input_absinfo) -> Self {
let raw = info as *const _ as *const _;
unsafe { &*raw }
}
}
impl<'a> From<&'a AbsoluteInfo> for &'a sys::input_absinfo {
fn from(info: &'a AbsoluteInfo) -> Self {
let raw = info as *const _ as *const _;
unsafe { &*raw }
}
}
impl From<sys::input_absinfo> for AbsoluteInfo {
fn from(info: sys::input_absinfo) -> Self {
*<&AbsoluteInfo>::from(&info)
}
}
impl From<AbsoluteInfo> for sys::input_absinfo {
fn from(info: AbsoluteInfo) -> Self {
*<&sys::input_absinfo>::from(&info)
}
}