1
0
Fork 0
mirror of https://github.com/tylernguyen/x1c6-hackintosh.git synced 2025-02-05 09:33:13 -06:00
x1c6-hackintosh/patches/SSDT-Keyboard-Legacy.dsl
2020-11-03 11:58:35 -06:00

327 lines
No EOL
10 KiB
Text

/*
* For use with ThinkpadAssistant (would need ACPI renames: /patches/OpenCore Patches/ Keyboard-Legacy.plist)
* https://github.com/MSzturc/ThinkpadAssistant
*
*/
DefinitionBlock("", "SSDT", 2, "tyler", "_KBD", 0)
{
External (OSDW, MethodObj)
External (_SB.PCI0.LPCB.KBD, DeviceObj)
External (_SB.PCI0.LPCB.EC, DeviceObj)
External (_SB.PCI0.LPCB.EC.XQ74, MethodObj) // FnLock
External (_SB.PCI0.LPCB.EC.XQ6A, MethodObj) // F4 - Mic Mute
External (_SB.PCI0.LPCB.EC.XQ15, MethodObj) // F5
External (_SB.PCI0.LPCB.EC.XQ14, MethodObj) // F6
External (_SB.PCI0.LPCB.EC.XQ16, MethodObj) // F7
External (_SB.PCI0.LPCB.EC.XQ64, MethodObj) // F8
External (_SB.PCI0.LPCB.EC.XQ66, MethodObj) // F9
External (_SB.PCI0.LPCB.EC.XQ60, MethodObj) // F10
External (_SB.PCI0.LPCB.EC.XQ61, MethodObj) // F11
External (_SB.PCI0.LPCB.EC.XQ62, MethodObj) // F12
External (_SB.PCI0.LPCB.EC.XQ1F, MethodObj) // Keyboard Backlight (Fn+Space)
External (_SB.PCI0.LPCB.EC.HKEY.MHKQ, MethodObj) // FnLock LED
External (_SB.PCI0.LPCB.EC.HKEY.MMTS, MethodObj) // F4 - Mic Mute LED
External (_SB.PCI0.LPCB.EC.HKEY.MLCS, MethodObj) // Keyboard Backlight LED
Scope (_SB.PCI0.LPCB.EC)
{
Name (FUNL, Zero) // FnLock LED
Method (_Q74, 0, NotSerialized) // FnLock (Fn + Esc)
{
If (OSDW ())
{
FUNL = (FUNL + 1) % 2
Switch (FUNL)
{
Case (One)
{
// Right Shift + F18
Notify (KBD, 0x012A)
Notify (KBD, 0x0369)
Notify (KBD, 0x01aa)
// Enable LED
\_SB.PCI0.LPCB.EC.HKEY.MHKQ (0x02)
}
Case (Zero)
{
// Left Shift + F18
Notify (KBD, 0x0136)
Notify (KBD, 0x0369)
Notify (KBD, 0x01b6)
// Disable LED
\_SB.PCI0.LPCB.EC.HKEY.MHKQ (Zero)
}
}
}
Else
{
// Call original _Q74 method.
XQ74()
}
}
Name (MICL, Zero) // F4 - Mic Mute LED
Method (_Q6A, 0, NotSerialized) // F4 - Microphone Mute = F20
{
If (OSDW ())
{
MICL = (MICL + 1) % 2
Switch (MICL)
{
Case (One)
{
// Right Shift + F20
Notify (KBD, 0x0136)
Notify (KBD, 0x036B)
Notify (KBD, 0x01b6)
// Enable LED
\_SB.PCI0.LPCB.EC.HKEY.MMTS (0x02)
}
Case (Zero)
{
// Left Shift + F20
Notify (KBD, 0x012A)
Notify (KBD, 0x036B)
Notify (KBD, 0x01aa)
// Disable LED
\_SB.PCI0.LPCB.EC.HKEY.MMTS (Zero)
}
}
}
Else
{
// Call original _Q6A method.
XQ6A()
}
}
Method (_Q15, 0, NotSerialized) // F5 - Brightness Down = F14
{
If (OSDW ())
{
Notify(KBD, 0x0405)
Notify(KBD, 0x20) // Reserved
}
Else
{
// Call original _Q15 method.
XQ15()
}
}
Method (_Q14, 0, NotSerialized) // F6 - Brightness Up = F15
{
If (OSDW ())
{
Notify(KBD, 0x0406)
Notify(KBD, 0x10) // Reserved
}
Else
{
// Call original _Q14 method.
XQ14()
}
}
Method (_Q16, 0, NotSerialized) // F7 - Dual Display = F16
{
If (OSDW ())
{
Notify(KBD, 0x0367)
}
Else
{
// Call original _Q16 method.
XQ16()
}
}
Method (_Q64, 0, NotSerialized) // F8 - Network = F17
{
If (OSDW ())
{
Notify(KBD, 0x0368)
}
Else
{
// Call original _Q64 method.
XQ64()
}
}
Method (_Q66, 0, NotSerialized) // F9 - Settings = F18
{
If (OSDW ())
{
Notify(KBD, 0x0369)
}
Else
{
// Call original _Q66 method.
XQ66()
}
}
Method (_Q60, 0, NotSerialized) // F10 - Bluetooth
{
If (OSDW ())
{
// Left Shift + F17
Notify (KBD, 0x012A)
Notify (KBD, 0x0368)
Notify (KBD, 0x01AA)
}
Else
{
// Call original _Q60 method.
XQ60()
}
}
Method (_Q61, 0, NotSerialized) // F11 - Keyboard
{
If (OSDW ())
{
// Send a down event for the Control key (scancode 1d), then a one-shot event (down then up) for
// the up arrow key (scancode 0e 48), and finally an up event for the Control key (break scancode 9d).
// This is picked up by VoodooPS2 and sent to macOS as the Control+Up key combo.
Notify (KBD, 0x011D)
Notify (KBD, 0x0448)
Notify (KBD, 0x019D)
}
Else
{
// Call original _Q61 method.
XQ61()
}
}
Method (_Q62, 0, NotSerialized) // F12 - Star = F19
{
If (OSDW ())
{
Notify(KBD, 0x036A)
}
Else
{
// Call original _Q62 method.
XQ62()
}
}
Name (KEYL, Zero) // Keyboard Backlight LED (Fn+Space)
Method (_Q1F, 0, NotSerialized) // cycle keyboard backlight
{
If (OSDW ())
{
KEYL = (KEYL + 1) % 3
Switch (KEYL)
{
Case (Zero)
{
// Left Shift + F16.
Notify (KBD, 0x012a)
Notify (KBD, 0x0367)
Notify (KBD, 0x01aa)
// Bright --> Off
\_SB.PCI0.LPCB.EC.HKEY.MLCS (Zero)
}
Case (One)
{
// Right Shift + F16.
Notify (KBD, 0x0136)
Notify (KBD, 0x0367)
Notify (KBD, 0x01b6)
// Off --> Dim
\_SB.PCI0.LPCB.EC.HKEY.MLCS (One)
}
Case (0x02)
{
// Left Shift + F19.
Notify (KBD, 0x012a)
Notify (KBD, 0x036a)
Notify (KBD, 0x01aa)
// Dim --> Bright
\_SB.PCI0.LPCB.EC.HKEY.MLCS (0x02)
}
}
}
Else
{
// Call original _Q1F method.
XQ1F()
}
}
}
Scope (_SB.PCI0.LPCB.KBD)
{
Method(_DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return (Package()
{
"RM,oem-id", "LENOVO",
"RM,oem-table-id", "Thinkpad_ClickPad",
})
}
// Overrides (the example data here is default in the Info.plist)
Name(RMCF, Package()
{
"Synaptics TouchPad", Package()
{
"BogusDeltaThreshX", 800,
"BogusDeltaThreshY", 800,
"Clicking", ">y",
"DragLockTempMask", 0x40004,
"DynamicEWMode", ">n",
"FakeMiddleButton", ">n",
"HWResetOnStart", ">y",
//"ForcePassThrough", ">y",
//"SkipPassThrough", ">y",
"PalmNoAction When Typing", ">y",
"ScrollResolution", 800,
"SmoothInput", ">y",
"UnsmoothInput", ">y",
"Thinkpad", ">y",
"EdgeBottom", 0,
"FingerZ", 30,
"MaxTapTime", 100000000,
"MouseMultiplierX", 2,
"MouseMultiplierY", 2,
"MouseScrollMultiplierX", 2,
"MouseScrollMultiplierY", 2,
//"TrackpointScrollYMultiplier", 1, //Change this value to 0xFFFF in order to inverse the vertical scroll direction of the Trackpoint when holding the middle mouse button.
//"TrackpointScrollXMultiplier", 1, //Change this value to 0xFFFF in order to inverse the horizontal scroll direction of the Trackpoint when holding the middle mouse button.
},
"Keyboard", Package()
{
"Custom PS2 Map", Package()
{
Package() { },
"e037=64", // PrtSc = F13
"46=80", // Fn + K = Deadkey
"e045=80", // Fn + P = Deadkey
"38=e05b", // Left Alt (mismapped to Left GUI by default) = Left Alt
"e038=e05c", // Right Alt (mismapped to Right GUI by default) = Right Alt
"e05b=38", // Windows (mismapped to Left Alt by default) = Left GUI
// "1d=80", // Fn + B = Deadkey
// "54=80", // Fn + S = Deadkey
},
},
})
}
}
//EOF