小编Tyl*_*ler的帖子

扩展Magic Mouse的功能:我需要一个kext吗?

我最近购买了一只Magic Mouse.它太棒了,充满了潜力.不幸的是,它受到软件支持的严重阻碍.我想解决这个问题.我做了很多研究,这些是我迄今为止关于事件链的调查结果:

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

在我发现上述所有内容之后,我将MultitouchSupport.framework文件进行了反汇编,并通过一些Google搜索,找到了如何将自己的回调插入链中,以便接收原始触摸事件数据.如果枚举设备列表,则可以为每个设备(触控板和鼠标)附加.这一发现将使我们能够创建一个在鼠标上使用多点触控的框架,但仅限于单个应用程序.请在此处查看我的帖子:Raw Multitouch Tracking.

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

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

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

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

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

我的第一个目标是,如果您点击时设备上有两个手指,则可以发送中键按钮点击事件.显然,目前还有很多可以做的事情,但这对于拍摄来说似乎是一件好事.

提前致谢!

-Sastira

kernel objective-c device-driver multi-touch magic-mouse

24
推荐指数
1
解决办法
4432
查看次数

我如何在OSX上做这个iOS动画?

我在iOS中有一个非常简单的动画,它会淡化视图,调整容器大小以适应另一个视图,然后淡化其他视图.这很容易做到且非常简单.

我一直在尝试在OSX上做一些非常类似的事情,但我还没弄清楚如何做到这一点.与iOS相比,OSX上的动画内容感觉非常笨重和困难.

任何帮助将非常感激!!

谢谢!:)

// Fade out viewOne, resize frame to fit viewTwo, fade in viewTwo
[UIView animateWithDuration: 0.15
        animations: ^{
            [viewOne setAlpha:0.0];
        }
        completion: ^(BOOL finished) {
            [UIView animateWithDuration: 0.2
                    animations: ^{
                        [self setFrame: [viewTwo frame]];
                    }
                    completion: ^(BOOL finished) {
                        [viewTwo setAlpha: 0.0];
                        [self addSubview: viewTwo];
                        [UIView animateWithDuration: 0.15
                                animations: ^{
                                    [viewTwo setAlpha:1.0];
                                }];
                    }];
         }];
Run Code Online (Sandbox Code Playgroud)

macos cocoa core-animation uiview

23
推荐指数
2
解决办法
7381
查看次数

逆向工程Apple Kext - 重建课堂

问候!

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

我已经创建了一个小的测试kext,它可以拦截鼠标事件(点击,动作等).

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

既然你有背景,这是我的直接问题:

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

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

c++ kernel reverse-engineering device-driver magic-mouse

14
推荐指数
1
解决办法
1957
查看次数

Core Audio和Phantom Device ID

所以这是正在发生的事情.

我正在尝试使用Core Audio,特别是输入设备.我想要静音,改变音量等等.我遇到了一些绝对奇怪的东西,我无法弄明白.到目前为止,谷歌一直没有帮助.

当我查询系统并询问所有音频设备的列表时,我返回了一组设备ID.在这种情况下,261,259,263,257.

使用kAudioDevicePropertyDeviceName,我得到以下内容:

261:内置麦克风
259:内置输入
263:内置输出
257:iPhoneSimulatorAudioDevice

这一切都很好.

// This method returns an NSArray of all the audio devices on the system, both input and
// On my system, it returns 261, 259, 263, 257
- (NSArray*)getAudioDevices
{
  AudioObjectPropertyAddress propertyAddress = { 
    kAudioHardwarePropertyDevices, 
    kAudioObjectPropertyScopeGlobal, 
    kAudioObjectPropertyElementMaster 
  };

  UInt32 dataSize = 0;
  OSStatus status = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &dataSize);
  if(kAudioHardwareNoError != status)
  {
    MZLog(@"Unable to get number of audio devices. Error: %d",status);
    return NULL;
  }

  UInt32 deviceCount = dataSize …
Run Code Online (Sandbox Code Playgroud)

audio macos cocoa macos-carbon core-audio

7
推荐指数
1
解决办法
1988
查看次数

如何确定用户是否在Mac上设置了密码?

我需要确定用户是否在Mac上设置了非空密码.一切都会奏效:命令行调用,AppleScript,Carbon,Cocoa等.

我想告知用户他们是否设置了密码.

macos cocoa applescript macos-carbon objective-c

4
推荐指数
1
解决办法
443
查看次数