This is a fork of Kyome22/OpenMultitouchSupport with some added features.
It adds support for:
- Listing all available devices
- Selecting a device
- Getting device name
This enables you easily to observe global multitouch events on the trackpad (only default device).
I created this library to make MultitouchSupport.framework (Private Framework) easy to use.
This library refers the following frameworks very much. Special Thanks!
- Development with Xcode 16.0+
- swift-tools-version: 6.0
- Compatible with macOS 13.0+
App SandBox must be disabled to use OpenMultitouchSupport.
import OpenMultitouchSupport
let manager = OMSManager.shared()
Task { [weak self, manager] in
for await touchData in manager.touchDataStream {
// use touchData
}
}
manager.startListening()
manager.stopListening()
struct OMSPosition: Sendable {
var x: Float
var y: Float
}
struct OMSAxis: Sendable {
var major: Float
var minor: Float
}
enum OMSState: String, Sendable {
case notTouching
case starting
case hovering
case making
case touching
case breaking
case lingering
case leaving
}
struct OMSTouchData: Sendable {
var id: Int32
var position: OMSPosition
var total: Float // total value of capacitance
var pressure: Float
var axis: OMSAxis
var angle: Float // finger angle
var density: Float // area density of capacitance
var state: OMSState
var timestamp: String
}
This package uses a hybrid approach with both Swift wrapper code and binary XCFramework distribution. Here's how to update the library:
When you need to modify the Swift API layer (files in Sources/OpenMultitouchSupport/
):
- Edit the Swift files in
Sources/OpenMultitouchSupport/
- Commit and push changes to GitHub
- In consuming projects: Update packages in Xcode (File → Packages → Update to Latest Package Versions)
Since consuming projects typically use branch: main
, they will automatically get the latest Swift wrapper changes.
When you need to modify the underlying Framework code:
- Update the Framework code in
Framework/OpenMultitouchSupportXCF/
- Build new XCFramework:
./build_framework.sh
- Create new release:
./release.sh 1.0.x # Replace x with next version number
- Update Package.swift to point to the new release URL and checksum
- Commit and push the Package.swift changes
- In consuming projects: Update packages in Xcode
The release.sh
script automates the binary release process:
- Builds the XCFramework
- Creates a GitHub release with the binary artifact
- Updates Package.swift with the correct URL and checksum
- Commits the changes
This workflow allows rapid iteration on the Swift API while maintaining stable binary releases for the underlying multitouch framework.