I2C Trackpad improvements (#42)

This commit is contained in:
Avery Black
2021-10-12 23:59:44 -07:00
committed by GitHub
parent 32e26fba60
commit 9a079a206e
20 changed files with 1640 additions and 88 deletions

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "shared"]
path = shared
url = https://github.com/dortania/build-files.git

14
.markdownlint.json Normal file
View File

@@ -0,0 +1,14 @@
{
"default": true,
"line_length": false,
"no-alt-text": false,
"no-inline-html": false,
"header-increment": false,
"no-duplicate-header": false,
"fenced-code-language": false,
"no-emphasis-as-heading": false,
"single-title": false,
"ul-style": {
"style": "asterisk"
}
}

10
.markdownlintignore Normal file
View File

@@ -0,0 +1,10 @@
/node_modules/
/_book/
*.json
/extra-files/
/.git/
/icons/
/images/
/styles/
/.github/
/.vuepress/

View File

@@ -160,7 +160,6 @@ module.exports = {
collapsable: true,
sidebarDepth: 2,
children: [
['/Laptops/trackpad-methods/prebuilt', 'Prebuilt'],
['/Laptops/trackpad-methods/manual', 'Manual'],
]
},

View File

@@ -1,16 +1,50 @@
# Fixing Trackpads: Manual
* [Finding the ACPI path](#finding-the-acpi-path)
* [Checking GPI0](#checking-gpio)
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
* [Compiling the SSDT](#compiling-the-ssdt)
* [Enabling Trackpad](#enabling-trackpad)
* [Wrapping up](#wrapping-up)
## Finding the ACPI path
## Checking GPI0
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either MaciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
This page assumes that you have macOS installed as well as [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-302.zip).
Next search for `Device (GPI0)`. Should give you a result similar to this:
The first thing to check is whether the GPI0 device exists, which is required for VoodooI2C. The best way to check this is working is to use IORegistryExplorer.
![](../../images/Laptops/trackpad-md/gpio-enabled.png)
Here, we can see that VoodooGPIO is attached to GPI0 so no edits are needed for GPI0. If this is the case for you, you can skip to the [next section](#enabling-trackpad).
If VoodooGPIO isn't attached, then you may need to modify some values to enable the `GPI0` device. In that case, you will need to find the GPI0 device in your DSDT.
First open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either MaciASL (if in macOS) or any other text editor if in Windows or Linux (VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
Next search for `Device (GPI0)`. You should get a result similar to this:
![](../../images/Laptops/trackpad-md/gpi0-2.png)
Below is the `_STA` method, which enables or disable the GPI0 device:
```
Method (_STA, 0, NotSerialized)
{
If ((SBRG == Zero))
{
Return (Zero)
}
If ((GPEN == Zero))
{
Return (Zero)
}
Return (0x0F)
}
```
We want the value returned from _STA to be non-zero (0x0F in this case) to enable the `GPI0` device. If either `SBRG` or `GPEN` is equal to zero, then zero will be returned and `GPI0` will be disabled. Generally, `SBRG` should not be modified, as modifying it can break the `GPI0` device. Only modify `GPEN` if you need to enable the `GPI0` device.
Here's some more examples:
![](../../images/Laptops/trackpad-md/gpi0.png)
What we care about from this is the `_STA` method:
@@ -27,58 +61,137 @@ Method (_STA, 0, NotSerialized)
}
```
What we want is for this to always return `0x0F` when booting macOS, so we want to make an SSDT that will return `GPHD == Zero` in macOS.
**NOTE that you may have the other way around where GPHD needs to be set as `One` to return `0x0F`**. And your device name may also be different, don't throw random SSDTs in thinking it'll work
Here's some more examples:
![](../../images/Laptops/trackpad-md/gpi0-2.png)
With this example, we can see that we need both `SBRG` and `GPEN` to return `One`. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return `One`:
Here we would want to set `GPHD` to `Zero` so that 0x0F is returned.
## Edits to the sample SSDT
Now that we have our ACPI path, lets grab our SSDT and get to work:
Now that we know what variables need to be changed, lets grab our SSDT and get to work:
* [SSDT-GPI0.dsl](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPI0.dsl)
From the second example, we'll want to set both GPEN and SBRG to `One` to allow it to operate in macOS:
From the first example, we'll want to set GPEN to `One` to allow it to operate in macOS:
**Before**:
```
// This is likely already set in the SSDT-GPIO you just downloaded
If (_OSI ("Darwin"))
{
GPEN = One
}
```
For the second example, you'd want to remove GPEN and use the below:
```
If (_OSI ("Darwin"))
{
GPEN = One <- Proper variables
GPHD = Zero
}
```
![](../../images/Laptops/trackpad-md/ssdt-before.png)
You will want to test the SSDT at this point by [compiling the SSDT](/Manual/compile.md) and adding it to your config.plist. VoodooGPIO should now be attached to the GPI0 device as shown at the top of the GPI0 section. If your trackpad still doesn't work after enabling the `GPI0` device, move on to the next section.
Following the example pathing we found, the SSDT should look something like this:
## Enabling Trackpad
**After**:
Often times, the I2C devices check to see if they are running in Windows before enabling themselves. Similarly to the `GPI0` device, these devices contain a `_STA` method.
::: details _STA Example (Optional)
![](../../images/Laptops/trackpad-md/I2C1.png)
The part we care about is the `_STA` method:
```
External(GPEN, FieldUnitObj) <- Declare the right variables
External(SBRG, FieldUnitObj) <- Declare the right variables
Scope (\)
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
GPEN = One <- Change to the right variables
SBRG = One <- Change to the right variables
Return (LSTA (SMD1))
}
```
![](../../images/Laptops/trackpad-md/ssdt-after.png)
In this case, `_STA` is referring to another method, `LSTA`. If we search for `Method (LSTA`, we'll see the below:
## Compiling the SSDT
```
Method (LSTA, 1, Serialized)
{
If (((Arg0 == 0x00) || (Arg0 == 0x03)))
{
Return (0x00)
}
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
If (CondRefOf (OSYS))
{
If ((OSYS < 0x07DC))
{
Return (0x00)
}
}
Return (0x0F)
}
```
The value `OSYS`, stores information about the current OS running. We will want to look for any place in which `OSYS` is set (`OSYS = 0x07DC` for example). In this DSDT, this is set under `\_SB.PCI0._INI` as shown below:
![](../../images/Laptops/trackpad-md/ini.png)
There are various checks for many different versions of Windows, but there is no check for `Darwin` (which Apple's ACPI usually checks for). We generally want to set `OSYS` to the highest possible value to enable the most features. In this case, the highest value is set when the version of Windows is "Windows 2015", or [Windows 10](https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-osi#_osi-strings-for-windows-operating-systems). This means that we should set `OSYS` to `0x07DF`. Notice that this value is greater than `0x07DC`, which is the value that was checked for earlier. If we set `OSYS` to `0x07DF`, then the check in LSTA should return `0x0F`.
:::
The best way to patch these checks is to use _OSI to XOSI with SSDT-XOSI. You can also set `OSYS` within the scope of the I2C device, though this may not always work (The above example would not work here as LSTA is not within the scope of the I2C device).
### _OSI to XOSI
Requires the below SSDT and patch
* [SSDT-XOSI.dsl](/extra-files/decompiled/SSDT-XOSI.dsl) - If you need to edit [which versions of Windows the SSDT checks for](https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-osi#_osi-strings-for-windows-operating-systems).
* [SSDT-XOSI.aml](/extra-files/compiled/SSDT-XOSI.aml) - Precompiled
* XOSI Rename (Add this under ACPI -> Patch in your config.plist):
| Comment | String | Change \_OSI to XOSI |
| :------ | :------ | :------- |
| Enabled | Boolean | YES |
| Count | Number | 0 |
| Limit | Number | 0 |
| Find | Data | 5f4f5349 |
| Replace | Data | 584f5349 |
::: details Dell Machines
You may need to add the below patch to allow the backlight keys to work.
Make sure that this patch appears **BEFORE** the previous \_OSI to XOSI patch in your config.plist
Credit to Rehabman for the below patch:
| Comment | String | Change \_OSID to XSID (to avoid match against \_OSI patch)
| :------ | :----- | :-------- |
| Enabled | Boolean | YES |
| Count | Number | 0 |
| Limit | Number | 0 |
| Find | Data | 4F534944 |
| Replace | Data | 58534944 |
:::
### Create OSYS Variable Under I2C Scope
You will need to find the device path where OSYS is checked, then create a new OSYS variable within that scope. This will only change OSYS for devices under this scope, which can allow for finer control over what is enabled. Note that in the example above, `LSTA` exists under `\_SB.PCI0.LSTA`, meaning that both `\_SB.PCI0._INI` and `\_SB.PCI0.LSTA` will control the same OSYS variable. If this is the case, this method will not work.
```
If (_OSI("Darwin")) {
Scope (\_SB.PCI0.I2C0) { // I2C0 scope
Name (OSYS, 0x7DF)
}
}
```
::: tip Multiple Windows Versions
Windows will also return true for checks of earlier versions of Windows. For example, Windows 7 would return true for "Windows 2000" through "Windows 2009", but not any version after. This is important as some features are only enabled in earlier Windows checks. For example, DYTC thermal management on newer ThinkPads is only enabled in the check for "Windows 2001". You will need to check your own DSDT and see what values it sets and where they are used. At this point, you should [compiling the SSDT](/Manual/compile.md) and see if the trackpad works.
:::
## Further Setup
If you need further help getting your trackpad to work, then the best place to look is [VoodooI2C's readme](https://github.com/VoodooI2C/VoodooI2C)
## Wrapping up

View File

@@ -5,13 +5,12 @@
## What this SSDT does
This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.
A big part of fixing I2C trackpads is enabling them within ACPI. For VoodooI2C to work, GPI0 needs to be enabled, as well as the Trackpad and I2C bus. The latter two devices are commonly disabled behind an OS check for Windows which need to be patched to work with macOS as well. Often times, GPI0 is already enabled and requires no modification.
With most modern laptop DSDTs, there's a variable called `GPEN` or `GPHD` which are used for setting the status of the GPI0 device. For us, we want to enable the device.
This section assumes that macOS is already installed. You may need to use a USB mouse to install macOS if your trackpad does not work yet.
## Methods to make this SSDT
For the trackpad fix, there are 2 methods you can choose from:
For the trackpad fix, there are only one method to choose from:
* [Prebuilt](/Laptops/trackpad-methods/prebuilt.md)
* [Manual](/Laptops/trackpad-methods/manual.md)

View File

@@ -25,7 +25,6 @@
* [Prebuilt](/Laptops/backlight-methods/prebuilt.md)
* [Manual](/Laptops/backlight-methods/manual.md)
* [Trackpad GPI0](/Laptops/trackpad.md)
* [Prebuilt](/Laptops/trackpad-methods/prebuilt.md)
* [Manual](/Laptops/trackpad-methods/manual.md)
* [Disabling laptop dGPUs](/Laptops/laptop-disable.md)

1203
dictionary/dictionary.txt Normal file

File diff suppressed because it is too large Load Diff

202
dictionary/opencorekeys.txt Normal file
View File

@@ -0,0 +1,202 @@
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14
4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102
7C436110-AB2A-4BBB-A880-FE41995C9F82
ACPI
APFS
ARTFrequency
AdviseWindows
AllowNvramReset
AllowSetDefault
AppleAudio
AppleBootPolicy
AppleCpuPmCfgLock
AppleDebug
AppleDebugLog
AppleEvent
AppleImageConversion
AppleKeyMap
ApplePanic
AppleRtcRam
AppleSmcIo
AppleUserInterfaceTheme
AppleXcpmCfgLock
AppleXcpmExtraMsrs
AppleXcpmForceBoost
AudioCodec
AudioDevice
AudioOut
AudioSupport
AuthRestart
AvoidRuntimeDefrag
BID
BIOSReleaseDate
BIOSVendor
BIOSVersion
BlessOverride
BoardAssetTag
BoardLocationInChassis
BoardManufacturer
BoardProduct
BoardRevision
BoardSerialNumber
BoardType
BoardVersion
Boot1f32
BootProtect
Booter
BundlePath
ChassisAssetTag
ChassisManufacturer
ChassisSerialNumber
ChassisType
ChassisVersion
ClearScreenOnModeSwitch
ConnectDrivers
ConsoleAttributes
ConsoleMode
Cpuid1Data
Cpuid1Mask
CustomSMBIOSGuid
DataHub
DevicePathsSupported
DeviceProperties
DevirtualiseMmio
DirectGopCacheMode
DirectGopRendering
DisableIoMapper
DisableRtcChecksum
DisableSingleUser
DisableVariableWrite
DisableWatchDog
DiscardHibernateMap
DisplayDelay
DisplayLevel
DummyPowerManagement
EnableJumpstart
EnableSafeModeSlide
EnableWriteUnprotector
ExecutablePath
ExistBootServicesDelay
ExposeSensitiveData
ExternalDiskIcons
FSBFrequency
FadtEnableReset
FindMask
FirmwareFeatures
FirmwareFeaturesMask
FirmwareVolume
ForceExitBootServices
HaltLevel
HashServices
HibernateMode
HideAuxiliary
HideSelf
HideVerbose
IgnoreInvalidFlexRatio
IgnoreTextInGraphics
IncreasePciBarSize
InitialTSC
JumpstartHotPlug
JumpstartHotplug
KeyFiltering
KeyForgetThreshold
KeyMergeThreshold
KeySupport
KeySupportMode
KeySwap
LapicKernelPanic
LegacyEnable
LegacyOverwrite
LegacySchema
Lifewire
MLB
MaxKernel
MemoryFormFactor
MinDate
MinKernel
MinVersion
MinimumVolume
MmioWhitelist
NormalizeHeaders
OSInfo
OemTableId
PickerAttributes
PickerAudioAssist
PickerMode
PlatformFeature
PlatformInfo
PlatformNVRAM
PlatformName
PlayChime
PlistPath
PointerSupport
PointerSupportMode
PollAppleHotKeys
PowerTimeoutKernelPanic
ProcessorType
ProtectMemoryRegions
ProtectSecureBoot
ProtectUefiServices
ProtocolOverrides
ProvideConsoleGop
ProvideCustomSlide
Quirks
ROM
RebaseRegions
RebuildAppleMemoryMap
ReconnectOnResChange
ReleaseUsbOwnership
ReplaceMask
ReplaceTabWithSpace
RequestBootVarFallback
RequestBootVarRouting
ReservedMemory
ResetHwSig
ResetLogoStatus
Resolution
SMBIOS
SanitiseClearScreen
ScanPolicy
SerialInit
SetupVirtualMap
ShowPicker
SignalAppleOS
SmcBranch
SmcPlatform
SmcRevision
SmcVersion
SpoofVendor
StartupPowerEvents
SyncRuntimePermissions
SysReport
SystemFamily
SystemManufacturer
SystemMemoryStatus
SystemProductName
SystemSKUNumber
SystemSerialNumber
SystemUUID
SystemVersion
TableLength
TableSignature
TakeoffDelay
Target
TextRenderer
ThirdPartyDrives
TimerResolution
UEFI
UIScale
UnblockFsConnect
UnicodeCollation
UpdateDataHub
UpdateNVRAM
UpdateSMBIOS
UpdateSMBIOSMode
Vault
VolumeAmplifier
WriteFlash
XhciPortLimit
boot0
bootia32
bootx64
snapshotted

Binary file not shown.

View File

@@ -1,19 +1,10 @@
// Source: https://github.com/daliansky/OC-little
DefinitionBlock("", "SSDT", 2, "DRTNIA", "GPI0", 0)
{
External(GPEN, FieldUnitObj)
External(SBRG, FieldUnitObj)
External(\GPEN, FieldUnitObj)
Scope (\)
{
If (_OSI("Darwin"))
{
GPEN = One
SBRG = One
}
Else
{
}
\GPEN = One
}
}

View File

@@ -1,28 +1,12 @@
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20190509 (64-bit version)
* Copyright (c) 2000 - 2019 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of iASLYWTc6v.aml, Thu May 28 19:06:11 2020
*
* Original Table Header:
* Signature "SSDT"
* Length 0x00000143 (323)
* Revision 0x02
* Checksum 0x6C
* OEM ID "DRTNIA"
* OEM Table ID "XOSI"
* OEM Revision 0x00001000 (4096)
* Compiler ID "INTL"
* Compiler Version 0x20190509 (538510601)
*/
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "XOSI", 0x00001000)
{
Method (XOSI, 1, NotSerialized)
{
Local0 = Package (0x11)
// Based off of:
// https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-osi#_osi-strings-for-windows-operating-systems
// Add OSes from the above list as needed, most only check up to Windows 2015
// but check what your DSDT looks for
Local0 = Package ()
{
"Windows 2001",
"Windows 2001.1",
@@ -34,6 +18,13 @@ DefinitionBlock ("", "SSDT", 2, "DRTNIA", "XOSI", 0x00001000)
"Windows 2009",
"Windows 2012",
"Windows 2013",
"Windows 2015",
"Windows 2016",
"Windows 2017",
"Windows 2018",
"Windows 2019",
"Windows 2020",
"Windows 2021",
"Microsoft Windows NT",
"Microsoft Windows",
"Microsoft WindowsME: Millennium Edition"

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 KiB

View File

@@ -15,18 +15,18 @@
"dev": "vuepress dev",
"build": "vuepress build",
"fix-lint": "run-script-os",
"fix-lint:default": "(echo Attempting to fix lint... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore '**/*.md' -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"fix-lint:win32": "(echo Attempting to fix lint... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore **/*.md -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"fix-lint:default": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"fix-lint:win32": "(echo Attempting to fix lint... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fixed successfully, please commit.) || (echo Fix failed! && exit 1)",
"lint": "run-script-os",
"lint:default": "(echo Linting... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore '**/*.md' && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint:win32": "(echo Linting... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore **/*.md && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || (echo Lint failed! Please review and fix errors. && exit 1)",
"lint-ci": "run-script-os",
"lint-ci:default": "(echo Linting... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore '**/*.md' && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore '**/*.md' -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"lint-ci:win32": "(echo Linting... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore **/*.md && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c shared/.markdownlint.json -p shared/.markdownlintignore **/*.md -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"sort-dict": "node ./shared/scripts/sortDict.js",
"lint-ci:default": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore '**/*.md' -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"lint-ci:win32": "(echo Linting... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md && echo Lint passed.) || ((echo Lint failed, attempting fix... && markdownlint -c .markdownlint.json -p .markdownlintignore **/*.md -f && echo Fix generated successfully. Please apply the following diff using git apply && git diff) || echo Fix failed! && exit 1)",
"sort-dict": "node ./scripts/sortDict.js",
"spellcheck": "run-script-os",
"spellcheck:default": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries shared/dictionary/dictionary.txt shared/dictionary/opencorekeys.txt --files '**/*.md' && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"spellcheck:win32": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries shared/dictionary/dictionary.txt shared/dictionary/opencorekeys.txt --files **/*.md && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"spellcheck:default": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files '**/*.md' && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"spellcheck:win32": "(spellchecker --plugins spell indefinite-article repeated-words syntax-urls --dictionaries dictionary/dictionary.txt dictionary/opencorekeys.txt --files **/*.md && echo Spellcheck passed.) || (echo Spellcheck failed! Please review and fix errors/add words to dictionary as needed. && exit 1)",
"test": "run-script-os",
"test:default": "npm run lint --silent; npm run spellcheck --silent",
"test:win32": "npm run lint --silent & npm run spellcheck --silent"

9
scripts/linkcheck.py Normal file
View File

@@ -0,0 +1,9 @@
from pathlib import Path
import subprocess
for i in [i for i in list(Path().resolve().glob("**/*.md")) if "node_modules" not in str(i.parent) and "_book" not in str(i.parent)]:
#bert = subprocess.run(['npx', 'markdown-link-check', '"' + str(i) + '"', '-c', '.markdownlinkcheck.json'], capture_output=True, shell=True, cwd=Path().resolve())
bert = subprocess.run('npx markdown-link-check "' + str(i) + '"', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=Path().resolve())
outpot = bert.stdout.decode().replace("\r", "").split("\n")
outpot = [i for i in outpot if ("FILE: " in i or " → Status: " in i) and " → Status: 429" not in i]
[print(i) for i in outpot]

26
scripts/sortDict.js Normal file
View File

@@ -0,0 +1,26 @@
const fs = require("fs");
process.chdir(__dirname);
console.log("Reading dictionary.txt");
let dictionary = fs.readFileSync("../dictionary/dictionary.txt", { encoding: "UTF8" })
.replace("\r", "").split("\n");
let ocDictionary = fs.readFileSync("../dictionary/opencorekeys.txt", { encoding: "UTF8" })
.replace("\r", "").split("\n");
dictionary = dictionary.filter(string => string != "");
ocDictionary = ocDictionary.filter(string => string != "");
dictionary = dictionary.filter((string, index) => dictionary.indexOf(string) == index);
ocDictionary = ocDictionary.filter((string, index) => ocDictionary.indexOf(string) == index);
dictionary = dictionary.filter(string => !ocDictionary.includes(string));
console.log("Sorting...");
dictionary.sort();
ocDictionary.sort();
console.log("Writing dictionary.txt");
fs.writeFileSync("../dictionary/dictionary.txt", dictionary.join("\n"));
fs.writeFileSync("../dictionary/opencorekeys.txt", ocDictionary.join("\n"));

1
shared

Submodule shared deleted from 9158b82160

View File

@@ -43,7 +43,7 @@ Please see the **specific ACPI section of your config.plist**, all SSDTs needed
| Clarksfield and Arrandale | N/A | [SSDT-EC](./Universal/ec-fix) | [SSDT-PNLF](./Laptops/backlight) | N/A | N/A | N/A | [IRQ SSDT](./Universal/irq) |
| SandyBridge | [CPU-PM](https://dortania.github.io/OpenCore-Post-Install/universal/pm.html#sandy-and-ivy-bridge-power-management) (Run in Post-Install) | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ |
| Ivy Bridge | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ |
| Haswell | [SSDT-PLUG](./Universal/plug) | ^^ | ^^ | [SSDT-GPI0](./Laptops/trackpad) | ^^ | ^^ | ^^ |
| Haswell | [SSDT-PLUG](./Universal/plug) | ^^ | ^^ | [SSDT-XOSI/SSDT-GPI0](./Laptops/trackpad) (Run in Post-Install) | ^^ | ^^ | ^^ |
| Broadwell | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ |
| Skylake | ^^ | [SSDT-EC-USBX](./Universal/ec-fix) | ^^ | ^^ | ^^ | ^^ | N/A |
| Kaby Lake | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ | ^^ |