linux-input 0.1.0

Rust bindings to Linux's input subsystems
Documentation
use {
    crate::{
        input_sys::{
            RawAbsInfo,
            RawForceFeedbackEffect,
            RawDeviceId
        }
    }
};

#[repr(C)]
pub struct RawDeviceSetup {
    pub id: RawDeviceId,
    pub name: [u8; 80],
    pub force_feedback_effects_max: u32
}

#[repr(C)]
pub struct RawAbsSetup {
    pub axis: u16,
    pub info: RawAbsInfo
}

#[repr(C)]
pub struct RawForceFeedbackUpload {
    pub request_id: u32,
    pub return_value: i32,
    pub effect: RawForceFeedbackEffect,
    pub old_effect: RawForceFeedbackEffect
}

#[repr(C)]
pub struct RawForceFeedbackErase {
    pub request_id: u32,
    pub return_value: i32,
    pub effect_id: u32
}

ioctl_write_ptr!( device_setup, b'U', 3, RawDeviceSetup );
ioctl_write_ptr!( abs_setup, b'U', 4, RawAbsSetup );
ioctl_none!( device_create, b'U', 1 );
ioctl_none!( device_destroy, b'U', 2 );

ioctl_write_int!( device_set_event_bit, b'U', 100 );
ioctl_write_int!( device_set_key_bit, b'U', 101 );
ioctl_write_int!( device_set_relative_axis_bit, b'U', 102 );
ioctl_write_int!( device_set_absolute_axis_bit, b'U', 103 );
ioctl_write_int!( device_set_misc_bit, b'U', 104 );
ioctl_write_int!( device_set_force_feedback_bit, b'U', 107 );

ioctl_readwrite!( begin_force_feedback_upload, b'U', 200, RawForceFeedbackUpload );
ioctl_write_ptr!( end_force_feedback_upload, b'U', 201, RawForceFeedbackUpload );
ioctl_readwrite!( begin_force_feedback_erase, b'U', 202, RawForceFeedbackErase );
ioctl_write_ptr!( end_force_feedback_erase, b'U', 203, RawForceFeedbackErase );

pub const EV_UINPUT: u16 = 0x0101;
pub const UI_FF_UPLOAD: u16 = 1;
pub const UI_FF_ERASE: u16 = 2;