获取 CGEvent Tap 中按下的修改键

2024-01-19

设置事件点击后,我无法识别在给定 CGEvent 的情况下按下了哪个修饰键。

 CGEventFlags flagsP;

 flagsP=CGEventGetFlags(event);

 NSLog(@"flags: 0x%llX",flagsP);
 NSLog(@"stored: 0x%llX",kCGEventFlagMaskCommand);

 if (flagsP==kCGEventFlagMaskCommand) {
       NSLog(@"command pressed");
    }

根据上面的代码片段,第一个 NSLog 返回与第二个 NSLog 不同的值。毫不奇怪,按下命令修饰键时永远不会触发条件。

我需要确定对于给定的 CGEvent 是否按下了命令、替代、选项、控制或移位。首先,我需要帮助来理解为什么上面的方法不起作用。

Thanks!


这些是位掩码,它们将按位或运算一起变成您收到的值CGEventGetFlags(或者自己创建事件时通过)。

您无法在这里测试相等性,因为没有一个位掩码等于多个位掩码的组合。您需要测试单个位的相等性。

要从组合位掩码中提取单个位掩码的值,请使用按位与 (&) 操作员。然后,将其与您感兴趣的一位掩码进行比较:

BOOL commandKeyIsPressed = (flagsP & kCGEventFlagMaskCommand) == kCGEventFlagMaskCommand;

为什么两者都有?

The &表达式的计算结果与其操作数的类型相同,即CGEventFlags在这种情况下,它可能不适合 a 的大小BOOL,这是一个signed char. The ==表达式将其解析为 1 或 0,这就是适合 a 的所有内容BOOL.

该问题的其他解决方案包括两次否定该值(!!)并将变量声明为bool or _Bool而不是Boolean or BOOL. C99's _Bool类型(同义词为bool当您包含 stdbool.h) 时,强制其值为 1 或 0,就像== and !!解决方案可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 CGEvent Tap 中按下的修改键 的相关文章

  • 如何在 OS X 上的旧版 Safari 中测试我的网站?

    苹果似乎不提供旧版本 Safari 的下载 我什至不确定它们是否会安装在 Mac OS X 上 因为 Safari 似乎是操作系统的一部分 就像 Windows 上的 Internet Explorer 一样 有什么方法可以在旧版本的 Sa
  • Electron:阻止/取消页面导航

    有没有办法阻止或取消电子中的页面导航 win webContents on did start loading function event url if event sender getURL startsWith http xyz ev
  • 如何将 Cocoa 应用程序移植到 iPhone-OS?

    我即将创建一个 Cocoa 应用程序 我想确保有一天我可以轻松地将它移植到 iPad 甚至 iPhone 我该如何提前计划 我知道我将不得不重做所有 NIB 并可能设计一个不同的工作流程 但是代码呢 仅仅用 UIsomething 替换每个
  • ComboBox.SourceUpdated 事件未触发

    我的视图中有两个组合框 它们都绑定到两个不同的ObservableCollections在 ViewModel 中 当 ComboBox1 中的选定项发生更改时 ComboBox2 将使用不同的集合进行更新 绑定工作得很好 但是 我希望第二
  • Mac OS Sandbox:从助手启动主应用程序

    我在沙箱中创建了一个应用程序 它使用助手在登录时启动 如所示here http blog timschroeder net 2012 07 03 the launch at login sandbox project 它工作正常 但以下消息
  • NSTableView 在编辑时点击 Tab 键可从行跳转到行

    我有一个 NSTableView 编辑时 如果我点击选项卡 它会自动跳到下一列 这太棒了 但是当我编辑最后一列中的字段并点击选项卡时 我希望焦点跳转到下一行的第一列 有什么建议么 感谢 Michael 提供的起始代码 它非常接近最终的工作结
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • npm WARN checkPermissions 缺少写入权限

    我一直在尝试解决在 Mac 上不使用 sudo 运行节点的问题 但我不断收到此消息 npm WARN checkPermissions Missing write access to Users myuser npm packages li
  • 以编程方式设置 Mac 鼠标/触控板速度

    我正在尝试更改我正在开发的应用程序的鼠标跟踪速度 注意 不是加速 我到处寻找一种方法来做到这一点 但找不到任何东西 我怀疑这与我在 IOKit hidsystem 框架上的这个函数中给出的值有关 IOHIDSetAccelerationWi
  • 在 Mac OS X 中将 Caps Lock 用作 Esc

    How do I make Caps Lock work like Esc in Mac OS X Edit As described in this answer https stackoverflow com a 40254864 66
  • 如何在 Mac OS X 中删除文件的“扩展属性”?

    我有一个苹果脚本 http en wikipedia org wiki AppleScript运行压力测试的脚本 测试的一部分是打开 保存和关闭某些文件 不知何故 这些文件具有一些 扩展属性 禁止保存文件 这会导致压力测试失败 如何删除扩展
  • brew install - 权限被拒绝(在 chown -R `whoami` 之后)

    brew install fontconfig Error Permission denied Library Caches Homebrew Formula fontconfig brewing sudo chown R whoami u
  • git jenkins 中未找到存储库

    我正在使用 jenkins 2 64 并安装了最新的插件 我试图在 jenkins 中设置 git 存储库并给出凭据 但给出错误无法连接存储库 状态代码为 128 Cloning repository https github com so
  • 安装 homebrew 后终端无法识别 nvm

    我通过自制软件安装了 nvm 但是当我运行 nvm v 或 nvm version 表单终端时 我收到消息 command not found nvm 当我查看 finder 和 cmd shift 时 我可以看到 nvm 文件夹 最初 我
  • 阻止 NSView 实例接收鼠标事件

    我在窗口中有一个 NSView 并且核心动画层已打开 我时常使用此视图来显示带有动画的图像 我需要整个视图作为后层 而不仅仅是图像 在这个我称为 AnimationBaseView 的视图后面是用户交互的其他视图 一切都很好 除了 Anim
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • python 语言环境奇怪的错误。这究竟是怎么回事?

    所以今天我升级到了 bazaar 2 0 2 我开始收到这条消息 顺便说一句 我在雪豹上 bzr warning unknown locale UTF 8 Could not determine what text encoding to
  • 如何让程序在登录时自动启动?

    如何设置菜单栏应用程序在登录时自动启动 我希望这是默认的 我可以简单地通过在 info plist 中添加一个 bool 来做到这一点吗 此解决方案仅适用于非沙盒应用程序 LSSharedFile此解决方案中使用的功能仅适用于非沙盒应用程序
  • 如何在 Macbook M1 Silicon 上正确安装 CocoaPods

    我正在尝试在配备 M1 芯片的新 MacBook Pro 上安装 Cocoa Pods 从12月份开始就找到了一些解决方案 由于是二月份 这些解决方案可能有点过时了 我在 CocoaPods 网站上找不到任何说明 有人能帮我解决这件事吗 我
  • Mac 上的 JavaFX WebView 字体问题

    有些网站显示乱码而不是正确的文本 它只发生在 Mac 上 For example with GMapsFX 可能与 OS X 10 11 或 10 12 有关 我用Java 1 8 0 121测试了它 此问题有任何修复或解决方法吗 就我而言

随机推荐