1
0
Fork 0
forked from wry/wry

autocommit 2022-03-09 17:51:17 CET

This commit is contained in:
Julian Orth 2022-03-09 17:51:17 +01:00
parent 4df6b559b7
commit 0399772467
35 changed files with 429 additions and 423 deletions

View file

@ -1,7 +1,4 @@
use crate::libinput::sys::{
libinput_device, libinput_device_set_user_data, libinput_device_unref,
libinput_path_remove_device,
};
use crate::libinput::sys::{libinput_device, libinput_device_get_user_data, libinput_device_set_user_data, libinput_device_unref, libinput_path_remove_device};
use crate::libinput::LibInput;
use std::marker::PhantomData;
use std::rc::Rc;
@ -12,7 +9,7 @@ pub struct LibInputDevice<'a> {
}
pub struct RegisteredDevice {
pub(super) li: Rc<LibInput>,
pub(super) _li: Rc<LibInput>,
pub(super) dev: *mut libinput_device,
}
@ -30,6 +27,15 @@ impl<'a> LibInputDevice<'a> {
libinput_device_set_user_data(self.dev, slot as _);
}
}
pub fn slot(&self) -> Option<usize> {
let res = unsafe { libinput_device_get_user_data(self.dev) as usize };
if res == 0 {
None
} else {
Some(res - 1)
}
}
}
impl RegisteredDevice {

View file

@ -1,11 +1,6 @@
use crate::libinput::consts::{EventType, KeyState};
use crate::libinput::device::LibInputDevice;
use crate::libinput::sys::{
libinput_event, libinput_event_destroy, libinput_event_get_device,
libinput_event_get_keyboard_event, libinput_event_get_type, libinput_event_keyboard,
libinput_event_keyboard_get_key, libinput_event_keyboard_get_key_state,
libinput_event_keyboard_get_time_usec,
};
use crate::libinput::sys::{libinput_event, libinput_event_destroy, libinput_event_get_device, libinput_event_get_keyboard_event, libinput_event_get_pointer_event, libinput_event_get_type, libinput_event_keyboard, libinput_event_keyboard_get_key, libinput_event_keyboard_get_key_state, libinput_event_keyboard_get_time_usec, libinput_event_pointer, libinput_event_pointer_get_dx, libinput_event_pointer_get_dy, libinput_event_pointer_get_time_usec};
use std::marker::PhantomData;
pub struct LibInputEvent<'a> {
@ -18,6 +13,11 @@ pub struct LibInputEventKeyboard<'a> {
pub(super) _phantom: PhantomData<&'a ()>,
}
pub struct LibInputEventPointer<'a> {
pub(super) event: *mut libinput_event_pointer,
pub(super) _phantom: PhantomData<&'a ()>,
}
impl<'a> Drop for LibInputEvent<'a> {
fn drop(&mut self) {
unsafe {
@ -49,6 +49,18 @@ impl<'a> LibInputEvent<'a> {
})
}
}
pub fn pointer_event(&self) -> Option<LibInputEventPointer> {
let res = unsafe { libinput_event_get_pointer_event(self.event) };
if res.is_null() {
None
} else {
Some(LibInputEventPointer {
event: res,
_phantom: Default::default(),
})
}
}
}
impl<'a> LibInputEventKeyboard<'a> {
@ -60,7 +72,23 @@ impl<'a> LibInputEventKeyboard<'a> {
unsafe { KeyState(libinput_event_keyboard_get_key_state(self.event)) }
}
#[allow(dead_code)]
pub fn time_usec(&self) -> u64 {
unsafe { libinput_event_keyboard_get_time_usec(self.event) }
}
}
impl<'a> LibInputEventPointer<'a> {
pub fn dx(&self) -> f64 {
unsafe { libinput_event_pointer_get_dx(self.event) }
}
pub fn dy(&self) -> f64 {
unsafe { libinput_event_pointer_get_dy(self.event) }
}
#[allow(dead_code)]
pub fn time_usec(&self) -> u64 {
unsafe { libinput_event_pointer_get_time_usec(self.event) }
}
}

View file

@ -16,6 +16,7 @@ extern "C" {
pub type libinput_device;
pub type libinput_event;
pub type libinput_event_keyboard;
pub type libinput_event_pointer;
pub fn libinput_log_set_handler(libinput: *mut libinput, log_handler: libinput_log_handler);
pub fn libinput_log_set_priority(libinput: *mut libinput, priority: libinput_log_priority);
@ -42,15 +43,22 @@ extern "C" {
pub fn libinput_event_destroy(event: *mut libinput_event);
pub fn libinput_event_get_type(event: *mut libinput_event) -> libinput_event_type;
pub fn libinput_event_get_device(event: *mut libinput_event) -> *mut libinput_device;
pub fn libinput_event_get_keyboard_event(
event: *mut libinput_event,
) -> *mut libinput_event_keyboard;
pub fn libinput_event_keyboard_get_key(event: *mut libinput_event_keyboard) -> u32;
pub fn libinput_event_keyboard_get_key_state(
event: *mut libinput_event_keyboard,
) -> libinput_key_state;
pub fn libinput_event_keyboard_get_time_usec(event: *mut libinput_event_keyboard) -> u64;
pub fn libinput_event_get_pointer_event(
event: *mut libinput_event,
) -> *mut libinput_event_pointer;
pub fn libinput_event_pointer_get_time_usec(event: *mut libinput_event_pointer) -> u64;
pub fn libinput_event_pointer_get_dx(event: *mut libinput_event_pointer) -> f64;
pub fn libinput_event_pointer_get_dy(event: *mut libinput_event_pointer) -> f64;
}
#[repr(C)]