mirror of
https://github.com/tylernguyen/x1c6-hackintosh.git
synced 2025-02-05 09:33:13 -06:00
327 lines
10 KiB
Text
327 lines
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
|