mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 17:38:38 +00:00
HapticFeedback: fix recovery from the long sleep
This commit is contained in:
parent
439246e85b
commit
7b853b5d47
@ -9,14 +9,14 @@
|
|||||||
import IOKit
|
import IOKit
|
||||||
|
|
||||||
class HapticFeedback {
|
class HapticFeedback {
|
||||||
private var actuatorRef: CFTypeRef?
|
private var correctDeviceId: UInt64?
|
||||||
|
|
||||||
// Here we have list of possible IDs for Haptic Generator Device. They are not constant
|
// Here we have list of possible IDs for Haptic Generator Device. They are not constant
|
||||||
// To find deviceID, you will need IORegistryExplorer app from Additional Tools for Xcode dmg
|
// To find deviceID, you will need IORegistryExplorer app from Additional Tools for Xcode dmg
|
||||||
// which you can download from https://developer.apple.com/download/more/?=Additional%20Tools
|
// which you can download from https://developer.apple.com/download/more/?=Additional%20Tools
|
||||||
// Open IORegistryExplorer app, search for AppleMultitouchDevice and get "Multitouch ID"
|
// Open IORegistryExplorer app, search for AppleMultitouchDevice and get "Multitouch ID"
|
||||||
// There should be programmatic way to get it but I can't find, no docs for macOS :(
|
// There should be programmatic way to get it but I can't find, no docs for macOS :(
|
||||||
private var possibleDeviceIDs: [UInt64] = [
|
private let possibleDeviceIDs: [UInt64] = [
|
||||||
0x200_0000_0100_0000, // MacBook Pro 2016/2017
|
0x200_0000_0100_0000, // MacBook Pro 2016/2017
|
||||||
0x300000080500000 // MacBook Pro 2019 (possibly 2018 as well)
|
0x300000080500000 // MacBook Pro 2019 (possibly 2018 as well)
|
||||||
]
|
]
|
||||||
@ -24,8 +24,11 @@ class HapticFeedback {
|
|||||||
init() {
|
init() {
|
||||||
// Let's find and init Haptic device
|
// Let's find and init Haptic device
|
||||||
possibleDeviceIDs.forEach {(deviceID) in
|
possibleDeviceIDs.forEach {(deviceID) in
|
||||||
guard actuatorRef == nil else {return}
|
guard correctDeviceId == nil else {return}
|
||||||
actuatorRef = MTActuatorCreateFromDeviceID(deviceID).takeRetainedValue()
|
let actuatorRef: CFTypeRef? = MTActuatorCreateFromDeviceID(deviceID).takeRetainedValue()
|
||||||
|
if actuatorRef != nil {
|
||||||
|
correctDeviceId = deviceID
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,8 +44,15 @@ class HapticFeedback {
|
|||||||
// you can get a plist `otool -s __TEXT __tpad_act_plist /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/Current/MultitouchSupport|tail -n +3|awk -F'\t' '{print $2}'|xxd -r -p`
|
// you can get a plist `otool -s __TEXT __tpad_act_plist /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/Current/MultitouchSupport|tail -n +3|awk -F'\t' '{print $2}'|xxd -r -p`
|
||||||
|
|
||||||
func tap(strong: Int32) {
|
func tap(strong: Int32) {
|
||||||
|
guard correctDeviceId != nil else {
|
||||||
|
print("guard correctDeviceId == nil (no haptic device found?)")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let actuatorRef: CFTypeRef? = MTActuatorCreateFromDeviceID(correctDeviceId!).takeRetainedValue()
|
||||||
|
|
||||||
guard actuatorRef != nil else {
|
guard actuatorRef != nil else {
|
||||||
print("guard actuatorRef == nil (can't find proper haptic device?)")
|
print("guard actuatorRef == nil")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user