问题标签 [magic-mouse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3097 浏览

objective-c - 苹果魔术鼠标 API

我刚买了一个魔术鼠标,我非常喜欢它。但作为 Mac 开发人员,它甚至更酷。但是有一个问题:是否已经有可用的 API?我想将它用于我的一个应用程序。例如,检测用户的手指位置、滑动或拉伸手势等......

有谁知道它是否有 API(以及如何使用它)?

0 投票
4 回答
4656 浏览

objective-c - 扩展 Magic Mouse 的功能:我需要 kext 吗?

我最近购买了魔术鼠标。这太棒了,充满了潜力。不幸的是,它受到软件支持的严重阻碍。我想解决这个问题。我已经做了很多研究,这些是我迄今为止关于事件链的发现:

  1. Magic Mouse 将完整的多点触控事件发送到系统。
  2. 多点触控事件在 MultitouchSupport.framework (Carbon) 中处理
  3. 事件在框架中被解释并作为正常事件发送到系统
    • 当您用一根手指滚动时,它会发送实际的滚轮事件。
    • 当您用两根手指滑动时,它会发送一个滑动事件。
  4. 没有 NSTouch 事件被发送到系统。您不能使用 NSTouch API 与鼠标进行交互。

在我发现以上所有内容后,我分解了 MultitouchSupport.framework 文件,并通过谷歌搜索,弄清楚了如何将我自己的回调插入到链中,以便接收原始触摸事件数据。如果您枚举设备列表,您可以附加每个设备(触控板和鼠标)。这一发现将使我们能够创建一个在鼠标上使用多点触控的框架,但仅限于单个应用程序中。在这里查看我的帖子:原始多点触控跟踪

我想在整个系统中为鼠标添加新功能,而不仅仅是单个应用程序。

为了尝试这样做,我想出了如何使用Event Taps来查看最低级别的 event tap 是否允许我获取原始数据、解释它并在其位置发送我自己的事件。不幸的是,这种情况并非如此。即使在 HID 级别,事件点击仍然比在 MultitouchSupport.framework 中解释输入的位置高出一步。

在此处查看我的事件点击尝试:事件点击 - 尝试原始多点触控
一个有趣的附注:当接收到多点触控事件(例如滑动)时,默认情况下被击中并打印出事件编号 29。标题显示 28 作为最大值。

关于我的问题,既然您已经掌握了所有信息并看到了我的尝试:扩展 Magic Mouse 功能的最佳方法是什么?我知道我需要在足够低的级别插入一些东西,以便在处理输入和调度预定义事件之前获取输入。因此,将其归结为单句问题:

  • 有没有办法覆盖 MultitouchSupport.framework 中使用的默认回调?
  • 我是否需要编写一个 kext 并自己处理所有传入的数据?
  • 是否可以编写一个位于现在处理输入的 kext之上的 kext,并在 kext 完成所有艰苦工作后对其进行过滤?

我的第一个目标是,当您单击设备时,如果设备上有两根手指,则能够调度中键单击事​​件。显然还有很多很多事情可以做,但这似乎是一件好事,就目前而言。

提前致谢!

-萨斯蒂拉

0 投票
2 回答
2071 浏览

c++ - 对 Apple Kext 进行逆向工程 - 重构类

问候!

我目前正在尝试扩展 Magic Mouse 的功能。为此,我希望编写一个 kext 来拦截来自多点触控驱动程序 AppleMultitouchDriver.kext 的事件,解释它们,然后调度新事件或转发实际事件。这种方法类似于DoubleCommand使用的方法。

我已经创建了一个小的测试 kext 来拦截鼠标事件(点击、动作等),因为这也是需要的。

我现在遇到的问题是我无法拦截来自 AppleMultitouchDevice 和/或 AppleMultitouchHIDEventDriver 对象的事件,因为它们没有类定义。我需要能够将指针重新分配给回调函数,就像我在鼠标拦截器中所做的那样,就像在 DoubleCommand 中所做的那样。据我所知,这意味着我需要重构 AppleMultitouchDevice 类。我已经能够获得对 AppleMultitouchDevice 对象实例的引用,所以我只需要能够转换它并使用它。

既然你有了背景,下面是我的直接问题:

  • 我需要使用哪些方法来对 kext 进行逆向工程或重建有问题的类?
  • 有哪些程序可以帮助我完成这项工作?
  • 是否有任何您知道的专注于这个特定主题的教程或电子书?
  • 我是否可以在不实际重建整个类的情况下重新分配回调指针?
  • 我可能错过的任何其他内容,因为我对此非常陌生。

提前感谢您的任何建议或帮助!!

0 投票
3 回答
5755 浏览

cocoa - 动量/惯性滚动如何与 NSScrollView 上的 Magic Mouse 一起使用?

当您使用较新的 Apple Magic Mouse 滚动时(至少在 10.6 上,我无法确认任何以前的 Mac OS),您会像在 iPhone 上滚动一样获得惯性滚动(也就是说,在轻弹手指滚动后,它不会突然停止,而是逐渐减速)。这种行为对于所有 NSScrollViews 都是“免费的”,它会出现。

有一些例外情况,例如 Mac 版 Tweetie(我听说 Tweetie 是用自定义的 Table View 类编写的,其工作方式类似于UITableViewiPhone 上的工作方式)。

我的问题是,滚动视图如何知道如何进行这种惯性滚动?我的猜测是鼠标 [驱动程序] 在滚动期间重复发送具有抑制滚动幅度(或类似的东西)的滚动事件。但我不确定它是如何工作的。

我在我的滚动视图类中遇到了一些滚动问题,我试图找出原因(显然我们没有 Tweetie 的源代码来查看为什么它没有得到正确的滚动),但只是想更好地理解它如何工作以解决我自己的问题。

0 投票
2 回答
1963 浏览

cocoa - 魔术鼠标动量滚动不起作用

不幸的是,这对我来说很难测试自己,因为我还没有自己的 Magic Mouse,但是我的测试人员告诉我,他们确实有一个 Magic Mouse,动量滚动在我的应用程序中不起作用。我没有继承 NSScrollView,但 scrollview 的文档视图都是自定义的。我也没有覆盖 scrollWheel: 任何地方,但是动力显然不起作用。我什至不知道从哪里开始。我认为它只会发送 scrollWheel 事件,事情会自行解决。(使用滚轮或在 MBP 触控板上滚动按预期工作。)显然我必须以某种方式阻止它,但我什至不知道从哪里开始。想法?

0 投票
2 回答
2508 浏览

iphone - 使用 Magic Mouse 和 iPhone Simulator 的触摸事件

我使用 iMac 魔术鼠标观察到,在使用 iPhone 模拟器时,如果:

a) 活动视图在 iPhone 屏幕的中心有一个能够生成触摸事件的对象,并且 b) iMac 操作员意外地或以其他方式将他们的手指拖过魔术鼠标表面,其方式通常是用于滚动,即

中心的对象生成(假的)鼠标按下和拖动事件。

如果屏幕中央没有这样的物体,则没有问题。

有没有办法以编程方式或以其他方式禁用此功能?

0 投票
1 回答
1540 浏览

ios - 有没有办法让魔术鼠标或 MacBook Pro 触控板与 iphone 模拟器一起工作?

这似乎是触控板或魔术鼠标与 iphone 模拟器一起工作的绝佳机会,但事实并非如此?!

有谁知道如何让它工作以允许我触摸和捏?

0 投票
1 回答
1486 浏览

applescript - 苹果脚本和魔术鼠标

我想为我的魔术鼠标的滚动行为编写脚本,这样我就可以通过按键来打开和关闭它。麻烦的是,我是设计师而不是开发人员,所以不知道从哪里开始。我已经尝试过 Script Editor 和 Automator,但一无所获。有人可以帮忙吗,或者最重要的是,为我写脚本?我不敢相信在 Snow Leopard Preference Pane 中关闭和打开复选框有那么难?

0 投票
1 回答
2274 浏览

objective-c - 如何获取魔术鼠标的电池状态?(在 %)

如何搜索已连接的蓝牙/无线设备,例如魔术鼠标?我怎样才能得到电池的百分比?

请给我一些代码并解释它,因为我发现了一些东西,但我真的不明白。

非常感谢您的帮助。

0 投票
1 回答
317 浏览

iphone - iOS模拟器减慢osx并干扰魔术鼠标

有没有人注意到长时间使用 iOS 模拟器或在启动应用程序期间,osx 和魔术鼠标的性能会受到干扰?

前几天在 osx 屏幕上加载了一个变暗的视图,它说我需要重新启动。

这些是来自控制台的我的应用程序的日志 - 虽然还有更多堆栈: