From 8c848f9317ecc89221d3ce65ce8b0a745c9bfb83 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:29:09 -0400 Subject: [PATCH 1/9] Resstore Fn keys on MacBook5,2 and 4,1 --- payloads/Config/config.plist | 18 ++++++++++++++++++ .../Misc/LegacyKeyboardInjector-v1.0.0.zip | Bin 0 -> 5041 bytes resources/build/misc.py | 7 ++++--- resources/constants.py | 5 +++++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip 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 0000000000000000000000000000000000000000..0a97c68dd610d705292c78b6d75101c4d240f691 GIT binary patch literal 5041 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 literal 0 HcmV?d00001 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): From bf00c013c8546eb996f9db006f31d389588177b4 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:32:59 -0400 Subject: [PATCH 2/9] Update docs, changelog, and a shameless plug --- CHANGELOG.md | 2 ++ README.md | 2 ++ docs/PATCHEXPLAIN.md | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24b09b5bc..d181a6274 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ - Resolve kernel panic on wake for AMD TeraScale 1 and Nvidia Tesla 8000 series GPUs - Resolve graphics corruption on wake for TeraScale 1 - Patch currently limited to Ventura and newer +- Restore Function Keys on MacBook5,2 and MacBook4,1 + - Implementation by [@jazzzny](https://github.com/Jazzzny) - Increment Binaries: - PatcherSupportPkg 1.0.1 - release - OpenCorePkg 0.9.2 - release diff --git a/README.md b/README.md index eb431bc59..b08e0da66 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,8 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m * Aid with Nvidia Web Driver research and development * [joevt](https://github.com/joevt) * [FixPCIeLinkrate](https://github.com/joevt/joevtApps) +* [Jazzzny](https://github.com/Jazzzny) + * Research and various contributions to the project * Amazing users who've graciously donate hardware: * [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro * [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64 diff --git a/docs/PATCHEXPLAIN.md b/docs/PATCHEXPLAIN.md index 13697930e..5e3d81315 100644 --- a/docs/PATCHEXPLAIN.md +++ b/docs/PATCHEXPLAIN.md @@ -298,7 +298,8 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m * Reason: Prevents AVXFSCompressionTypeZlib crash on pre AVX1.0 systems in 12.4+ * SimpleMSR * Reason: Disables BD PROCHOT to prevent firmware throttling on Nehalem+ MacBooks - +* LegacyKeyboardInjector + * Reason: Fixes function keys on MacBook4,1/MacBook5,2 ::: From a1de379c5f82dc0012a22074c80d0a6ee3affb14 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:41:39 -0400 Subject: [PATCH 3/9] Include MacBookPro4,1 with keyboard injector --- resources/build/misc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/build/misc.py b/resources/build/misc.py index 9bf332cdf..0dcc6a39b 100644 --- a/resources/build/misc.py +++ b/resources/build/misc.py @@ -203,7 +203,7 @@ class BuildMiscellaneous: 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 & Keyboard support - if self.model in ["MacBook4,1", "MacBook5,2"]: + if self.model in ["MacBook4,1", "MacBook5,2", "MacBookPro4,1"]: 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 From 749a0be86e9faf70e4fdda37396196be2101cd8b Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:42:00 -0400 Subject: [PATCH 4/9] update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d181a6274..bb9fa40bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ - Resolve kernel panic on wake for AMD TeraScale 1 and Nvidia Tesla 8000 series GPUs - Resolve graphics corruption on wake for TeraScale 1 - Patch currently limited to Ventura and newer -- Restore Function Keys on MacBook5,2 and MacBook4,1 +- Restore Function Keys on MacBook5,2, MacBookPro4,1, and MacBook4,1 - Implementation by [@jazzzny](https://github.com/Jazzzny) - Increment Binaries: - PatcherSupportPkg 1.0.1 - release From 62e565b8c0d0cf9e10ef6be5c010c1a975be7aa8 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:53:30 -0400 Subject: [PATCH 5/9] Revert --- resources/build/misc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/build/misc.py b/resources/build/misc.py index 0dcc6a39b..9bf332cdf 100644 --- a/resources/build/misc.py +++ b/resources/build/misc.py @@ -203,7 +203,7 @@ class BuildMiscellaneous: 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 & Keyboard support - if self.model in ["MacBook4,1", "MacBook5,2", "MacBookPro4,1"]: + 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 From 8adbc3b5d2f6d0874b9851070eea6f138e1b7890 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 09:53:46 -0400 Subject: [PATCH 6/9] REvert --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb9fa40bd..d181a6274 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ - Resolve kernel panic on wake for AMD TeraScale 1 and Nvidia Tesla 8000 series GPUs - Resolve graphics corruption on wake for TeraScale 1 - Patch currently limited to Ventura and newer -- Restore Function Keys on MacBook5,2, MacBookPro4,1, and MacBook4,1 +- Restore Function Keys on MacBook5,2 and MacBook4,1 - Implementation by [@jazzzny](https://github.com/Jazzzny) - Increment Binaries: - PatcherSupportPkg 1.0.1 - release From 4b6587dc3b8c2288649224e8a93f7d87bfbcf444 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 10:04:21 -0400 Subject: [PATCH 7/9] Cosmetic fix --- resources/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/constants.py b/resources/constants.py index 6de8e620c..31d0bae7c 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -53,7 +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.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 From 8b38939759c962e15729d056246e3c5da4cd2364 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 10:05:24 -0400 Subject: [PATCH 8/9] Relocate --- resources/constants.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/constants.py b/resources/constants.py index 31d0bae7c..0829a3bef 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -53,7 +53,6 @@ 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 @@ -105,6 +104,9 @@ class Constants: ## https://github.com/flagersgit/KDKlessWorkaround self.kdkless_version: str = "1.0.0" + ## Jazzzny + self.legacy_keyboard: str = "1.0.0" # LegacyKeyboardInjector - Jazzzny + # Get resource path self.current_path: Path = Path(__file__).parent.parent.resolve() self.original_path: Path = Path(__file__).parent.parent.resolve() From f6f4131b5336f4f7193c7d17e70e5bd3f8f83612 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 18 May 2023 16:55:47 -0400 Subject: [PATCH 9/9] Fix issue --- resources/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/constants.py b/resources/constants.py index 0829a3bef..d14d65b39 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -502,7 +502,7 @@ class Constants: @property def legacy_keyboard_path(self): - return self.payload_kexts_path / Path(f"Misc/LegacyKeyboardInjector-v{self.apple_isight_version}.zip") + return self.payload_kexts_path / Path(f"Misc/LegacyKeyboardInjector-v{self.legacy_keyboard}.zip") @property def apple_raid_path(self):