fix: use two numbers to send current time
parent
f74f3894d7
commit
2d2215ce96
19
src/lib.rs
19
src/lib.rs
|
@ -14,7 +14,8 @@ pub enum NativeEventType {
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct NativeEvent {
|
pub struct NativeEvent {
|
||||||
pub time: usize,
|
pub time_sec: u64,
|
||||||
|
pub time_nsec: u32,
|
||||||
pub event_type: NativeEventType,
|
pub event_type: NativeEventType,
|
||||||
pub vkey: u16,
|
pub vkey: u16,
|
||||||
pub keycode: u16,
|
pub keycode: u16,
|
||||||
|
@ -30,8 +31,12 @@ fn send_callback(ev: NativeEvent) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_time(time: SystemTime) -> usize {
|
fn get_time(time: SystemTime) -> (u64, u32) {
|
||||||
time.duration_since(UNIX_EPOCH).unwrap().as_nanos() as usize
|
let dur = time
|
||||||
|
.duration_since(UNIX_EPOCH)
|
||||||
|
.expect("Unable to calculate duration");
|
||||||
|
|
||||||
|
(dur.as_secs(), dur.subsec_nanos())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
|
@ -41,18 +46,22 @@ pub extern "C" fn start_hook(callback: extern "C" fn(NativeEvent)) -> *const c_c
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(e) = skyhook::run(move |event| {
|
if let Err(e) = skyhook::run(move |event| {
|
||||||
|
let (sec, nsec) = get_time(event.time);
|
||||||
|
|
||||||
let event = match event.data {
|
let event = match event.data {
|
||||||
skyhook::types::EventData::KeyPress(label, key) => NativeEvent {
|
skyhook::types::EventData::KeyPress(label, key) => NativeEvent {
|
||||||
time: get_time(event.time),
|
|
||||||
event_type: NativeEventType::KeyPressed,
|
event_type: NativeEventType::KeyPressed,
|
||||||
vkey: label as u16,
|
vkey: label as u16,
|
||||||
keycode: key,
|
keycode: key,
|
||||||
|
time_sec: sec,
|
||||||
|
time_nsec: nsec,
|
||||||
},
|
},
|
||||||
skyhook::types::EventData::KeyRelease(label, key) => NativeEvent {
|
skyhook::types::EventData::KeyRelease(label, key) => NativeEvent {
|
||||||
time: get_time(event.time),
|
|
||||||
event_type: NativeEventType::KeyReleased,
|
event_type: NativeEventType::KeyReleased,
|
||||||
vkey: label as u16,
|
vkey: label as u16,
|
||||||
keycode: key,
|
keycode: key,
|
||||||
|
time_sec: sec,
|
||||||
|
time_nsec: nsec,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
send_callback(event);
|
send_callback(event);
|
||||||
|
|
Reference in New Issue