是否可以检测 Magic Mouse/Trackpad 是否被触摸?

2024-03-08

只是想知道如果用户触摸 Magic Mouse 或 Trackpad,是否有办法在 Cocoa 中接收回调?

我研究了 Quartz Events,但似乎我只能在鼠标移动或单击等情况下获得回调。

请注意,即使我的应用程序未处于活动状态,我也希望收到回调。这是一个后台实用程序应用程序。此外,它不能使用私有框架,因为它将成为 Mac App Store 应用程序。


您可以使用此代码来捕获事件:(创建一个新的 Cocoa 应用程序并将其放入应用程序委托中)

NSEventMask eventMask = NSEventMaskGesture | NSEventMaskMagnify | NSEventMaskSwipe | NSEventMaskRotate | NSEventMaskBeginGesture | NSEventMaskEndGesture;

CGEventRef eventTapCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef eventRef, void *userInfo) {
    NSEvent *event = [NSEvent eventWithCGEvent:eventRef];

    // only act for events which do match the mask
    if (eventMask & NSEventMaskFromType([event type])) {
        NSLog(@"eventTapCallback: [event type] = %ld", [event type]);
    }

    return [event CGEvent];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    CFMachPortRef eventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, kCGEventTapOptionListenOnly, kCGEventMaskForAllEvents, eventTapCallback, nil);
    CFRunLoopAddSource(CFRunLoopGetCurrent(), CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0), kCFRunLoopCommonModes);
    CGEventTapEnable(eventTap, true);
}

但是..沙箱可能会阻止您使用CGEventTapCreate因为本质上,它允许应用程序监听整个事件系统,这不是很安全。如果您可以接受不使用沙箱,那么eventTapCallback当触摸板上有新的触摸时调用。

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

是否可以检测 Magic Mouse/Trackpad 是否被触摸? 的相关文章

  • 如何从 os x 终端启动屏幕保护程序(并锁定屏幕)?

    有没有办法从 bash 脚本启动屏幕保护程序 并锁定屏幕 你试过这个吗 System Library Frameworks ScreenSaver framework Resources ScreenSaverEngine app Cont
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • viewController 中的 Sprite 粒子系统动画

    I create a macOS single window application and add a Sprite Particle System file with template Stars and the visual effe
  • AVCaptureDevice 找不到任何设备

    这行代码是我今天遇到的问题 macOS 应用程序 NSArray devices AVCaptureDevice devicesWithMediaType AVMediaTypeVideo 我更新Xcode后 系统总是让我空着devices
  • 获取 Mojave 上的鼠标坐标

    我有一个非常基本的小命令行应用程序 可以在下次单击鼠标时获取鼠标坐标 import
  • 在 macOS 上为 MoviePy 安装 ffmpeg 失败并出现 SSL 错误

    我正在尝试编写一个 Python 程序 在 Mac OS 10 11 16 上使用 MoviePy 将 MP4 文件转换为 GIF 我用 import moviepy editor as mp 我收到一条错误消息 说我需要打电话imagei
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Mac 上的 Qt — 如何访问帮助菜单中的“搜索”

    我正在将我的 Qt 应用程序移植到 Mac OS X 在 Windows Linux 上 我使用 QLineEdit 在帮助菜单中提供搜索功能 In Mac OS X I saw something like this is built i
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 下载Xcode? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚升级到 OS X Mavericks 我很高兴能够使用所有新的 Mavericks 技术 我只有
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • XCode 4.2.1 在 Lion 10.7.2 上启动时崩溃

    这周我买了大约 10 年来的第一台 Mac 是的 这是一台二手 Mac Pro 2x2GHz 双核 Xeon 2GB RAM 它全新安装了 Mac OS X Lion 10 7 2 我只安装了 OmniOutlner Pro Textmat
  • dispatch_write() 和dispatch_read() 用法

    我只是在玩一些 GCD 函数来向文件写入和读取数据 其中两个函数是dispatch write and dispatch read 它允许向文件描述符写入和读取数据 而无需设置新的dispatch io t渠道 所以 我有以下代码 impo
  • 如何让 mod_wsgi 在 Mac 上运行?

    几个小时以来 我一直在尝试在 Mac 上安装最新版本的 mod wsgi 3 3 我使用的是 Snow Leopard 并且有系统附带的 Apache Apache 2 2 15 和 Python 2 6 1 r261 67515 版本 我
  • 禁用 JavaScript 中的右键单击

    当我尝试禁用右键单击时 它不起作用 我尝试使用下面的代码 document onclick function e console log e button if e button 2 e preventDefault return fals
  • 使用 Swift(使用 SwiftJWT)和 REST API 连接到 Apple Store Connect - 失败并出现 401

    我正在尝试通过他们的 REST API 连接到 Apple Store Connect 虽然这在几天前有效 但我无法弄清楚为什么它停止工作 现在我无法通过身份验证 即我发出的服务器响应的每个请求都是 401 我是否遗漏了什么 我做什么 生成

随机推荐

  • id 表达式到底是什么?

    我无法清楚地理解什么是id expression是 我将首先遵循我在 C 标准的最新工作草案中发现的内容 冒险定义一个identifier 标识符是任意长的字母和数字序列 所以看起来任意长的字母和数字序列都可以是id expression
  • React Native 中的热重载和实时重载有什么区别?

    我在这里有点困惑 当我调试 React Native 应用程序时 我通常会启用两者热重载 and 实时重新加载 我想知道它们之间有什么区别 实时重新加载当文件更改时重新加载或刷新整个应用程序 例如 如果您有四个链接深入导航并保存了更改 则实
  • 如何从kinect fracetrack获取网格?

    如何获取 kinect 面部追踪网格 这是网格 https i stack imgur com aPtJt jpg https i stack imgur com aPtJt jpg 我尝试了多种方法 但无法使其发挥作用 e g http
  • 等待集合获取主干中的所有内容

    我有两套收藏 一个用于类别 另一个用于项目 我需要等待类别完成获取所有内容 以便为要获取的项目设置类别 另外 每次单击类别时 我都必须重新获取新的项目集合 因为每次单击类别时都会进行分页 它不会刷新或重新获取集合 因此分页代码会弄乱错误的集
  • 使用 It.IsAny() 的 Moq 单元测试失败

    我正在使用 Moq 为项目编写单元测试 当我尝试验证 DateTime 属性是否已分配值时 其中一个测试失败 这是我的验证 失败 mockTaskContext Verify context gt context TaskQueue Add
  • HDFS 作为 cloudera 快速入门 docker 中的卷

    我对 hadoop 和 docker 都很陌生 我一直致力于扩展 cloudera quickstart docker 镜像 docker 文件 并希望从主机挂载一个目录并将其映射到 hdfs 位置 以便提高性能并将数据保存在本地 当我在任
  • 使用 Logic App 将文件从 SFTP 服务器复制到 Blob 存储

    我想使用逻辑应用将文件从 SFTP 服务器复制到 Blob 存储 逻辑应用每 3 分钟由 重复 块触发一次 并检查服务器上有哪些文件以便复制它们 为了检查服务器上有哪些文件 我使用 列出文件夹中的文件 块 复制本身是通过管道运行执行的 到目
  • 需要在 webview Win 10 UWP 中获取鼠标事件

    我正在创建一个 win 10 UWP 应用程序
  • 如何在 SwiftUI 中的 NavigationView 中设置 ScrollView 的背景颜色

    我无法在下面设置背景颜色ScrollView在 SwiftUI 中 当我使用 background Color red 背景被切断 因此它不会进入导航栏下方 并且滚动似乎被破坏 我尝试了几种解决方案 但它们都不起作用 我有一个简单的视图层次
  • 将 IEnumerable 转换/转换为 IEnumerable

    我有一个类 Web 控件 它具有 IEnumerable 类型的属性 并且希望使用 LINQ 来处理该参数 有没有办法通过反射将 IEnumerable 强制转换 调用 而在编译时不知道类型 Method void IEnumerable
  • Laravel 5.0自定义404不使用中间件

    我正在使用中间件来解析模板的输出 这对于所有页面都运行良好 但是 当我想显示 404 为此提供了一个自定义页面 时 它不会将其视为 http 请求 这就是我的想法 因为它不通过中间件 我的问题是 如何让所有请求都通过中间件 错误页面不经过r
  • 检查这是否重复

    我想检查是否username已经存在并抛出错误消息 如果存在 有什么提示我该怎么做 我已经尝试过搜索但只找到了mysql errno但这对我不起作用 if valid pdo Database connect pdo gt setAttri
  • Java ant Eclipse运行错误[重复]

    这个问题在这里已经有答案了 可能的重复 ant错误JAVA HOME没有指向SDK https stackoverflow com questions 6285301 ant error java home does not point t
  • Ubuntu Linux 上的 dotnet core 使用 asp.net MVC 和 EF MySQL 错误 NU1001:无法恢复 MySql.Data.EntityFrameworkCore

    我构建了一个简单 扁平的 dotnet core MVC 应用程序 我希望它可以在 Linux 上运行 它使用 EF 从 mysql 表中提取一些记录并将它们显示在视图中 它全部在我的主机 Win10 上构建并运行 但不会在我用来测试的 U
  • R:生成十的幂序列

    如何在 R 中快速 高效地生成数字 1 10 100 1000 10000 的序列 I know seq可以给你一个由一定间隔分隔的数字序列 但是有没有一个函数可以给你一个数字的幂 10 0 10 1 1e 00 1e 01 1e 02 1
  • 在 QWidget 中实现 keyPressEvent

    我有一个带有继续按钮的 QDialog 窗口 继续按钮是默认按钮 因为每当我按下回车键时 就会按下继续按钮 我发现了一些奇怪的事情 当我按三下回车键时 继续按钮按了三下 然而 当我第四次按下它时 整个窗口都会关闭 我在关闭窗口的继续按钮正下
  • 标准库中有哪些功能可以通过编程技巧更快地实现? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近读过一篇文章 http www codemaestro com reviews 9关于快速 sqrt 计算 因此 我决定请SO社
  • 该网站无权使用 Geolocation API

    我在尝试使用地理位置 api 时遇到此错误 This website does not have permission to use the Geolocation API 奇怪的是 同一个网站在某些系统上运行良好 其中IE 9 和 I E
  • Yii 2 ActiveForm表单字段如何在复选框列表中实现“全选”选项?

    Yii 2 ActiveForm表单字段如何在复选框列表中实现 全选 选项
  • 是否可以检测 Magic Mouse/Trackpad 是否被触摸?

    只是想知道如果用户触摸 Magic Mouse 或 Trackpad 是否有办法在 Cocoa 中接收回调 我研究了 Quartz Events 但似乎我只能在鼠标移动或单击等情况下获得回调 请注意 即使我的应用程序未处于活动状态 我也希望