macOS的电源键可以实现诸如短按弹出关机菜单,重启和睡眠等功能,这取决于AppleLPC.kext的加载方式,不同的加载方式构成了不同类型的附加键(Ctrl、win键花键、Alt键)与电源键不同的组合方式实现一键重启一键进入睡眠等。而AppleLPC的不同加载方式取决于LPCB设备的设备ID,不同类型的设备ID导致了AppleLPC的加载,进而实现不同的电源键组合方式。那么通过仿冒设备id从而实现电源键功能的加载。这些设备ID可以从白果机型中获得,也可以尝试AppleLPC中已经存在的四类设备ID。下面我给出ssdt中的仿冒方法:DefinitionBlock ("", "SSDT", 2, "WDOC", "DEVICE", 0x00000000)
{
External (_SB_.PCI0.LPCB, DeviceObj) //这里要修改成你自己的设备路径,有的是pc00,有的是SBRG(我一般都设备重命名改为LPCB)
If (_OSI ("Darwin"))
{
Scope (\_SB.PCI0.LPCB)
{
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg2 == Zero))
{
Return (Buffer (One)
{
0x03 // .
})
}
Return (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0xC1, 0x9C, 0x00, 0x00 // ....
},
"vendor-id",
Buffer (0x04)
{
0x86, 0x80, 0x00, 0x00 // ....
},
"compatible",
Buffer (0x0D)
{
"pci8086,9cc1"
}
})
}
}
}
}
上面的方法不仅对Intel有效,对AMD的黑果也有效,但是如果你是Intel的平台,用OC可以使用更加简单的仿冒方法:
用OCC打开配置文件,进入到设备属性一栏,从PCI设备列表中(ISA bridge)添加LPCB的路径(可通过Hackintool确认)
然后添加两行属性:
compatible 字符型 pci8086,9cc1
device-id Data类型 c19c0000 注意反写
欢迎各位群友尝试不同的设备ID,并把实现的功能反馈上来供其他人参考。
我上面的代码实现了
1.短按电源键和Ctrl+电源键弹出重启睡眠取消关机四按钮选择菜单
2.Ctrl+win+电源键直接一键硬重启(直接重启没有给你时间保存)
3.Alt+win+电源键一键睡眠
4.电源键一键快速唤醒,相比鼠标键盘唤醒的二十多秒,这个仅需5秒左右 |