在objective-c中我曾经通过以下CoreGraphics调用来实现我的空闲计时器:
CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
现在快速地使用相同的基本呼叫,它看起来像:
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, CGEventType.MouseMoved)
在检查了头文件之后,例如 CGEventType 的定义,我找不到任何以我在ObjC实现中可以做的形式做任何事情的常量。
现在我可以通过查找常量的值来解决这个问题并且这样做,但我强烈不愿意这样做。我宁愿使用 IOKit 重写。 看起来它基本上定义为(~0),但如前所述,我宁愿不像那样硬编码。
答案 0 :(得分:3)
由于~0
定义是头文件#define(在CGEventTypes.h中),因此不太可能改变,因为这样做会破坏二进制兼容性。对该值进行硬编码应该是安全的。
所以问题是获得一个代表kCGAnyInputEventType
的CGEventType(又名~0
)。
这是一种合理的类型安全方式来表示:
let anyInputEventType = CGEventType(rawValue: ~0)!
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, anyInputEventType)