diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index 74a3cfacd..9d0291366 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -1383,6 +1383,24 @@
PlistPath
Contents/Info.plist
+
+ Arch
+ x86_64
+ BundlePath
+ LegacyKeyboardInjector.kext
+ Comment
+ Legacy Keyboard support for macOS 11+
+ Enabled
+
+ ExecutablePath
+
+ MaxKernel
+
+ MinKernel
+ 20.0.0
+ PlistPath
+ Contents/Info.plist
+
Arch
x86_64
diff --git a/payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip b/payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip
new file mode 100644
index 000000000..0a97c68dd
Binary files /dev/null and b/payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip differ
diff --git a/resources/build/misc.py b/resources/build/misc.py
index 7a57065a0..9bf332cdf 100644
--- a/resources/build/misc.py
+++ b/resources/build/misc.py
@@ -192,19 +192,20 @@ class BuildMiscellaneous:
Trackpad Handler
"""
- # Pre-Force Touch trackpad support for macOS Ventura
+ # Pre-Force Touch trackpad & keyboard 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
+ # These units got force touch & the new keyboard mapping early, so ignore them
if self.model not in ["MacBookPro11,4", "MacBookPro11,5", "MacBookPro12,1", "MacBook8,1"]:
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTopCase.kext", self.constants.topcase_version, self.constants.top_case_path)
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCButtons.kext")["Enabled"] = True
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext")["Enabled"] = True
support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext")["Enabled"] = True
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBMultitouch.kext", self.constants.multitouch_version, self.constants.multitouch_path)
- # Legacy Trackpad support
+ # Legacy Trackpad & Keyboard support
if self.model in ["MacBook4,1", "MacBook5,2"]:
support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path)
+ support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path) # Inject legacy personalities into AppleUSBTCKeyboard and AppleUSBTCKeyEventDriver
def _thunderbolt_handling(self) -> None:
diff --git a/resources/constants.py b/resources/constants.py
index b559d28db..6de8e620c 100644
--- a/resources/constants.py
+++ b/resources/constants.py
@@ -53,6 +53,7 @@ class Constants:
self.piixata_version: str = "1.0.1" # AppleIntelPIIXATA
self.fw_kext: str = "1.0.1" # IOFireWireFamily
self.apple_trackpad: str = "1.0.1" # AppleUSBTrackpad
+ self.legacy_keyboard: str = "1.0.0" # LegacyKeyboardInjector - Jazzzny
self.apple_isight_version: str = "1.0.0" # AppleiSight
self.apple_raid_version: str = "1.0.0" # AppleRAIDCard
self.apfs_zlib_version: str = "12.3.1" # NoAVXFSCompressionTypeZlib
@@ -496,6 +497,10 @@ class Constants:
@property
def apple_isight_path(self):
return self.payload_kexts_path / Path(f"Misc/LegacyUSBVideoSupport-v{self.apple_isight_version}.zip")
+
+ @property
+ def legacy_keyboard_path(self):
+ return self.payload_kexts_path / Path(f"Misc/LegacyKeyboardInjector-v{self.apple_isight_version}.zip")
@property
def apple_raid_path(self):