Как захватить события мыши в консольном приложении в Xamarin.Mac - PullRequest
0 голосов
/ 08 июля 2019

Как перехватить события kmouse в консольном приложении в Xamarin.Mac, NSEvent отключен.

1 Ответ

0 голосов
/ 12 июля 2019

Я знал, как использовать CGEvent захват мыши, как показано ниже:

    public static void Main(string[] args)
    {
        NSApplication.Init();

        var call = new CGEvent.CGEventTapCallback(Callback);

        var data = new IntPtr();

        var eventTap = CGEvent.CreateTap(CGEventTapLocation.HID, CGEventTapPlacement.TailAppend, CGEventTapOptions.Default, CGEventMask.MouseMoved, call, data);

        var cfMachPort = new CFMachPort(eventTap.Handle);

        CFRunLoopSource runLoopSource = cfMachPort.CreateRunLoopSource();

        CFRunLoop.Main.AddSource(runLoopSource, CFRunLoop.ModeCommon);

        CGEvent.TapEnable(eventTap);

        CFRunLoop.Main.Run();

    }

    public static IntPtr Callback(IntPtr eventTap, CGEventType cGEventType, IntPtr eventRef, IntPtr usrInfo)
    {
        Console.WriteLine("鼠标移动了");
        return eventTap;
    } 
...