Objective c Swift和我的空闲计时器实现(缺少CGEventType)
在objective-c中,我使用以下CoreGraphics调用实现空闲计时器:Objective c Swift和我的空闲计时器实现(缺少CGEventType),objective-c,macos,swift,cocoa,appkit,Objective C,Macos,Swift,Cocoa,Appkit,在objective-c中,我使用以下CoreGraphics调用实现空闲计时器: CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType); 现在在swift中,使用相同的基本调用,它看起来像: CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionSt
CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
现在在swift中,使用相同的基本调用,它看起来像:
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, CGEventType.MouseMoved)
在检查了头文件(例如定义了CGEventType)之后,我找不到任何常量,这些常量以我在ObjC实现中能够执行的形式执行任何操作
现在我可能可以通过查找常数的值来解决这个问题,然后像这样进行,但我强烈希望不要这样做。我宁愿用IOKit重写它看起来基本上被定义为(~0),但正如前面提到的,我不想硬编码它。因为
~0
定义是一个头定义(在CGEventTypes.h中),所以不太可能更改,因为这样做会破坏二进制兼容性。硬编码该值应该是安全的
因此,问题是获取一个表示kCGAnyInputEventType
(aka~0
)的CGEventType
以下是一种合理的类型安全表示方式:
let anyInputEventType = CGEventType(rawValue: ~0)!
CGEventSourceSecondsSinceLastEventType(CGEventSourceStateID.CombinedSessionState, anyInputEventType)
看起来这段代码没有为Swift添加注释,并且该用例已被破坏。我会用雷达。这就是说,它看起来像是
CGEventType。点击DisabledByuserInput
与kCGAnyInputEventType
具有相同的值。你能看到它是否有效吗?@BrianNickel看起来它给出了期望的结果,但使用似乎要用于其他东西的东西确实让人感到相当害怕。。。我想我将来会看到的。