diff --git a/CHANGELOG.md b/CHANGELOG.md
index 73b2c6d02..8a4f9d4f7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@
- Users may still manually run from source for future builds
- Binaries will no longer be provided on future release
- Switch boot.efi model patch to iMac18,1
+- Resolve pre-Force Touch Trackpad support in Ventura
## 0.4.5
- Fix AutoPatcher.pkg download on releases
diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index 7614e71f8..6e7f8759d 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -1239,6 +1239,42 @@
PlistPath
Contents/Info.plist
+
+ Arch
+ x86_64
+ BundlePath
+ AppleUSBMultitouch.kext
+ Comment
+ Trackpad support for 13.0+
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBMultitouch
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
+
+ Arch
+ x86_64
+ BundlePath
+ AppleUSBTopCase.kext
+ Comment
+ Trackpad support for 13.0+
+ Enabled
+
+ ExecutablePath
+ Contents/MacOS/AppleUSBTopCase
+ MaxKernel
+
+ MinKernel
+ 22.0.0
+ PlistPath
+ Contents/Info.plist
+
Block
diff --git a/payloads/Kexts/Misc/AppleUSBMultitouch-v1.0.0.zip b/payloads/Kexts/Misc/AppleUSBMultitouch-v1.0.0.zip
new file mode 100644
index 000000000..3b9a42652
Binary files /dev/null and b/payloads/Kexts/Misc/AppleUSBMultitouch-v1.0.0.zip differ
diff --git a/payloads/Kexts/Misc/AppleUSBTopCase-v1.0.0.zip b/payloads/Kexts/Misc/AppleUSBTopCase-v1.0.0.zip
new file mode 100644
index 000000000..90dad0356
Binary files /dev/null and b/payloads/Kexts/Misc/AppleUSBTopCase-v1.0.0.zip differ
diff --git a/resources/build.py b/resources/build.py
index d15378f21..911e39be7 100644
--- a/resources/build.py
+++ b/resources/build.py
@@ -765,6 +765,15 @@ class BuildOpenCore:
# Add AMDGPUWakeHandler
self.enable_kext("AMDGPUWakeHandler.kext", self.constants.gpu_wake_version, self.constants.gpu_wake_path)
+ # Pre-Force Touch trackpad support for macOS Ventura
+ if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.cpu_data.skylake.value:
+ if self.model.startswith("MacBook"):
+ # These units got force touch early, so ignore them
+ if self.model not in ["MacBookPro11,4", "MacBookPro11,5", "MacBook8,1"]:
+ self.enable_kext("AppleUSBTopCase.kext", self.constants.topcase_version, self.constants.top_case_path)
+ self.enable_kext("AppleUSBMultitouch.kext", self.constants.multitouch_version, self.constants.multitouch_path)
+
+
# Bluetooth Detection
if not self.constants.custom_model and self.computer.bluetooth_chipset:
if self.computer.bluetooth_chipset in ["BRCM2070 Hub", "BRCM2046 Hub"]:
@@ -841,6 +850,23 @@ class BuildOpenCore:
except KeyError:
pass
+ # With macOS 13, Ventura, Apple removed the Skylake graphics stack. However due to the lack of inovation
+ # with the Kaby lake and Coffee Lake iGPUs, we're able to spoof ourselves to natively support them
+
+ # Currently the following iGPUs we need to be considerate of:
+ # - HD530 (mobile): 0x191B0006
+
+
+ # | GPU | Model | Device ID | Platform ID | New Device ID | New Platform ID |
+ # | -------- | ---------------- | --------- | ----------- | ------------- | --------------- |
+ # | HD 515 | MacBook9,1 | 0x191E | 0x131E0003 |
+ # | Iris 540 | MacBookPro13,1/2 | 0x1926 | 0x19160002 | 0x5926 | 0x59260002
+ # | HD 530 | MacBookPro13,3 | 0x191B | 0x191B0006 | 0x591B | 0x591B0006 |
+ # | HD 530 | iMac17,1 | 0x1912 | 0x19120001 | 0x5912 | 0x59120003 |
+
+
+
+
if self.constants.xhci_boot is True:
print("- Adding USB 3.0 Controller Patch")
print("- Adding XhciDxe.efi and UsbBusDxe.efi")
diff --git a/resources/constants.py b/resources/constants.py
index 4060d1b82..1d68788ee 100644
--- a/resources/constants.py
+++ b/resources/constants.py
@@ -56,6 +56,8 @@ class Constants:
self.apple_isight_version = "1.0.0" # AppleiSight
self.apple_raid_version = "1.0.0" # AppleRAIDCard
self.apfs_zlib_version = "12.3.1" # NoAVXFSCompressionTypeZlib
+ self.multitouch_version = "1.0.0" # AppleUSBMultitouch
+ self.topcase_version = "1.0.0" # AppleUSBTopCase
## Apple - Dortania Modified
self.bcm570_version = "1.0.2" # CatalinaBCM5701Ethernet
@@ -313,6 +315,14 @@ class Constants:
def apfs_zlib_path(self):
return self.payload_kexts_path / Path(f"Misc/NoAVXFSCompressionTypeZlib-v{self.apfs_zlib_version}.zip")
+ @property
+ def multitouch_path(self):
+ return self.payload_kexts_path / Path(f"Misc/AppleUSBMultitouch-v{self.multitouch_version}.zip")
+
+ @property
+ def top_case_path(self):
+ return self.payload_kexts_path / Path(f"Misc/AppleUSBTopCase-v{self.topcase_version}.zip")
+
@property
def mousse_path(self):
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")