pub struct CGEventTap<'tap_life> {
    pub mach_port: CFMachPort,
    pub callback_ref: Box<dyn Fn(CGEventTapProxy, CGEventType, &CGEvent) -> Option<CGEvent> + 'tap_life>,
}
Expand description
extern crate core_foundation;
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>

source

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>, ()>

source

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.