Perfect Hackintosh 之FN亮度按键
2017/5/19大约 1 分钟约 309 字
Debug Patch
首先要给DSDT 打上补丁,查看FN亮度按键触发了什么。具体看国外大佬的参考资料:
我的是EC Query
Method (_Q12, 0, NotSerialized) // _Qxx: EC Query
{
Store (0x12, P80H)
If (And (WINF, One))
{
If (LEqual (OSYS, 0x03E8))
{
If (And (PSF0, 0x10))
{
Notify (^^^PEG0.PEGP.LCD0, 0x86)
}
Else
{
Notify (^^^GFX0.DD1F, 0x86)
}
}
ElseIf (And (PSF0, 0x10))
{
Notify (^^^PEG0.PEGP.LCD0, 0x86)
}
ElseIf (LEqual (^^^GFX0.CDDS (0x0410), 0x1F))
{
Notify (^^^GFX0.DD1F, 0x86)
}
}
ElseIf (^^^^WMI.HKDR)
{
Add (OEM2, 0xE0, ^^^^WMI.EVNT)
Notify (WMI, 0xD0)
}
}Analyse
两个按键都使用了Q12这个Method,所以我们现在给加入debug相关的代码,看那些变量的值是怎样变化的。
Store (PSF0, Local0)
\RMDT.P2 ("#1 PSF0 is: ", Local0)
Store (WINF, Local1)
\RMDT.P2 ("#1 WINF is: ", Local1)
Store (WINF, Local2)
\RMDT.P2 ("#1 OSYS is: ", Local2)
Store (OEM2, Local2)
\RMDT.P2 ("#1 OEM2 is: ", Local2)
Success
我们看到OEM2 发生了变化,所以我们现在就可以做对应修改了。 以下代码正常工作
Method (_Q12, 0, NotSerialized) // _Qxx: EC Query
{
Store (0x12, P80H)
Store (OEM2, Local0)
If (LEqual (Local0, One))
{
Notify (PS2K, 0x0405)
}
If (LEqual (Local0, 0x03))
{
Notify (PS2K, 0x0406)
}
Store (0x02, OEM2)
}