Struct core_graphics::event::CGEventTap
source · pub struct CGEventTap<'tap_life> {
pub mach_port: CFMachPort,
pub callback_ref: Box<dyn Fn(CGEventTapProxy, CGEventType, &CGEvent) -> Option<CGEvent> + 'tap_life>,
}
Expand description
use core_foundation::runloop::{kCFRunLoopCommonModes, CFRunLoop};
use core_graphics::event::{CGEventTap, CGEventTapLocation, CGEventTapPlacement, CGEventTapOptions, CGEventType};
let current = CFRunLoop::get_current();
match CGEventTap::new(
CGEventTapLocation::HID,
CGEventTapPlacement::HeadInsertEventTap,
CGEventTapOptions::Default,
vec![CGEventType::MouseMoved],
|_a, _b, d| {
println!("{:?}", d.location());
None
},
) {
Ok(tap) => unsafe {
let loop_source = tap
.mach_port
.create_runloop_source(0)
.expect("Somethings is bad ");
current.add_source(&loop_source, kCFRunLoopCommonModes);
tap.enable();
CFRunLoop::run_current();
},
Err(_) => (assert!(false)),
}
Fields§
§mach_port: CFMachPort
§callback_ref: Box<dyn Fn(CGEventTapProxy, CGEventType, &CGEvent) -> Option<CGEvent> + 'tap_life>
Implementations§
source§impl<'tap_life> CGEventTap<'tap_life>
impl<'tap_life> CGEventTap<'tap_life>
pub fn new<F: Fn(CGEventTapProxy, CGEventType, &CGEvent) -> Option<CGEvent> + 'tap_life>( tap: CGEventTapLocation, place: CGEventTapPlacement, options: CGEventTapOptions, events_of_interest: Vec<CGEventType>, callback: F, ) -> Result<CGEventTap<'tap_life>, ()>
pub fn enable(&self)
Auto Trait Implementations§
impl<'tap_life> Freeze for CGEventTap<'tap_life>
impl<'tap_life> !RefUnwindSafe for CGEventTap<'tap_life>
impl<'tap_life> !Send for CGEventTap<'tap_life>
impl<'tap_life> !Sync for CGEventTap<'tap_life>
impl<'tap_life> Unpin for CGEventTap<'tap_life>
impl<'tap_life> !UnwindSafe for CGEventTap<'tap_life>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more