Skip to content

WIP Project to reverse engineer Apple's Magic Trackpad 2 protocol

Notifications You must be signed in to change notification settings

elementumparasol/MT2-ReverseEngineering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

THIS PROJECT IS NO LONGER UPDATED

Background

I'm a huge fan of macOS, but I couldn't afford an expensive MacBook, so I chose an ASUS Zenbook one, and managed to get macOS running stable on it (Hackintosh). The only thing I don't like is trackpad, not because the hardware is bad, actually it's working very well in Windows, but because there were no official driver for macOS, so I have to use alexandred's VoodooI2C.

VoodooI2C uses CSGesture, a multitouch engine by CoolStar, to implement multitouch gestures. Because it's not an official engine so the gestures aren't very good. Therefore, the authors of VoodooI2C decided to make use of Apple's multitouch engine by simulating a Magic Trackpad 2. The simulator isn't completed yet, but it's still very promising.

To simulate Magic Trackpad 2, we need to understand Magic Trackpad 2's protocol and how macOS handles it. Reverse engineering is needed.

Achievements

The simulator is here, currently most gestures work well

Reverse Engineering

  1. Files to RE:
  • /System/Library/Extensions/AppleTopCase.kext/Contents/PlugIns/AppleTopCaseHIDEventDriver.kext/Contents/MacOS/AppleTopCaseHIDEventDriver
  • /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
  1. MT2 Report structure
  2. Logging data from MT2
  3. More coming...

References

  1. FingerMgmt: used for tracking fingers input by utilizing MultitouchSupport.framework
  2. VoodooI2C's Gitter: I think this is when the authors of VoodooI2C began to reverse engineer MT2

Credits

About

WIP Project to reverse engineer Apple's Magic Trackpad 2 protocol

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published