Ant*_*udt 5 macos cocoa objective-c appkit swift
在 Objective-c 中,我曾经通过基于以下 CoreGraphics 调用来实现我的空闲计时器:
CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
Run Code Online (Sandbox Code Playgroud)
现在在 swift 中,使用相同的基本调用,它看起来像:
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, CGEventType.MouseMoved)
Run Code Online (Sandbox Code Playgroud)
在检查了头文件后,例如CGEventType的定义位置,我找不到任何常量的提及,这些常量以我能够在 ObjC 实现中执行的形式执行任何操作。
现在我可能可以通过查找常量的值并像这样处理它来解决这个问题,但我非常不想这样做。我宁愿改用IOKit重写。看起来它基本上被定义为 (~0),但就像前面提到的,我宁愿不那样硬编码。
由于~0定义是头文件 #define(在 CGEventTypes.h 中),因此不太可能更改,因为这样做会破坏二进制兼容性。对该值进行硬编码应该是安全的。
所以问题是得到一个代表kCGAnyInputEventType(又名~0)的 CGEventType 。
这是一种相当类型安全的表示方式:
let anyInputEventType = CGEventType(rawValue: ~0)!
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, anyInputEventType)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |