微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 在OS / X(或Windows)中启动期间检测到按下的修改键?

在这里搜索过,没有找到真正涵盖这个问题的任何问题.

我有一个跨平台的Windows-OS / X应用程序,我希望能够在应用程序启动时检测是否按下了shift或控制等修改键.

我们想这样做是为了允许应用程序在不读取其首选项文件的情况下启动,以防某些方式被破坏(我们在测试prefs错误时看到,现在修复了,例如,将窗口大小设置为0) .

我们正在使用名为Juce的优秀且全面的跨平台C库.不幸的是,Juce的主人告诉我,他认为这在OS / X上是不可能的,至少因为你只获得了键盘事件,除非有什么变化,否则无法读取键的状态.

这是真的?或者有什么方法可以解决这个问题?我几乎可以肯定我已经使用过使用这种机制的Mac程序来绕过他们的偏好.

或者……升级一级…是否有另一种解决方案来提供“运行程序但不读取prefs文件”的功能,而不是“在启动程序时按住键”?这是消费者软件,所以我们不能期望用户太多.

最终的解决方案将最终成为一个跨平台的解决方案,因此Windows方面的提示也将受到赞赏.

谢谢,并且好!我将报告我的进展情况.

解决方法:

适用于Mac(Objective-C):

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    NSUInteger theFlags = [NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask;

    if(theFlags & NSShiftKeyMask)     NSLog(@"Shift down!");
    if(theFlags & NSControlKeyMask)   NSLog(@"Control down!");
    if(theFlags & NSCommandKeyMask)   NSLog(@"Command down!");
    if(theFlags & NSAlternateKeyMask) NSLog(@"Alternate down!");
    if(theFlags & NSFunctionKeyMask)  NSLog(@"Function down!");

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐