更新时间2021.11.18
前言:
作为华硕笔记本用户,从玩黑苹果开始就对键盘快捷键以及键盘背光心有遗憾,虽然那时候玩的时候还是Clover,但是AsusSmc.kext却已经存在。但是纵观整个论坛,我几乎没有找到关于AsusSMC的任何食用教程,但是在各教程的kext中又有对AsusSMC对引用,却一直不知道怎么用。现在转到了OC,在研究过SSDT后再去看看AsusSMC,发现其实食用并不难。于是便有了今天这篇文章!
要求:
主要是华硕笔记本用户,对黑苹果有一定自己的研究(伸手党跟白嫖党),
熟悉OC的特性并会对Config进行一定对修改(照搬),
对DSDT与SSDT有一定对了解,最好是会一点语法基础,并能进行修改对,能看懂编译aml的错误代码并修改的人群(CTRL+C,CTRL+V)。
正片:
AsusSMC链接:https://github.com/hieplpvip/AsusSMC
Wiki:https://github.com/hieplpvip/AsusSMC/wiki/Installation-Instruction
Wiki里面是原作者对AsusSMC的食用说明教程,但是在阅读后发现这里面教程并没有更新到最新,还是针对DSDT进行修改,只适合用于Clover,而对于OC来说,直接加载DSDT已经不被推荐了,OC会对所有对操作系统注入ACPI。因此在只需要根据原作者的patches(DSDT补丁)制作对应的SSDT并加载,同时加载AsusSMC.kext,就可以食用大部分功能。下载仓库文件跟relesse版本的AsusSMC.kext。这里面比较重要就是patches,跟AsusSMC.kext内核驱动,接下来就是制作SSDT了。
首先是加载DSDT的补丁库,后来发现需要科学上网才能加载出来。因此推荐食用第二种方法,就是加载Patches里的补丁,两者补丁内容是一样里,因此在这里主要介绍加载本地补丁进行修改DSDT,并制作SSDT的方法。
1.修复键盘背光
请注意后面的操作以我的DSDT为例,
提取DSDT后用MaciASl打开后,根据CPU的平台选择对应的补丁,比如我的是i5-7200U,就选择kabylake这个补丁。
打开MaciASl->补丁库->应用本地补丁文件->选择对应丁补丁->应用
补丁打完之后,后面就需要根据这个内容制作SSDT。在打补丁的时候可以发现这个补丁并没有修改内容,而是增加了一段内容。在DSDT中搜索“SKBV”这个搜索内容就是刚刚补丁的内容,只需要定位到他的位置即可。
根据左下角可以知道路径,创建SSDT,创建Scope域并填写路径,在Scope下复制刚刚打上的补丁内容,并在Scope上面添加外部引用进行编译没有错误就行。
外部引用的方法这里就不罗列了。
https://xstar-dev.github.io/hackintosh_advanced/Guide_For_Battery_Hotpatch.html
这篇文章是关于电池热补丁的,非常有用,里面有详细的关于“引用外部声明”的内容。
打不开的话,开VPN再试试。
至此关于键盘背光的SSDT就完成了,是不是一点都不难。将SSDT添加到ACPI,AsusSMC.kext添加到kext目录下。Config关联,重启后就会发现键盘背光可以食用了,需要注意的时要在键盘设置里需要关闭【在光线较弱时调整键盘亮度】,这样在强光下也可以调整,不关闭的话在强光下无法调整。
2.键盘快捷键
关于键盘快捷键的教程推荐去看
https://blog.skk.moe/post/ssdt-map-fn-shortcuts/
该作者也是《从 Clover 到 OpenCore —— Clover 迁移 OpenCore 指南》的作者,小兵哥是转载,嘿嘿嘿,懂得!
按照教程的话,需要重新建立键盘映射,需要学习PS2跟ABD的扫描码,比较麻烦,而AsusSMC的作者已经将补丁弄好,我们只需要进行食用就行了,方便了许多
在食用键盘快捷键前,先看看Wiki里面对键盘对介绍,在食用AsusSMC的时候需要先移除AsusNBFnKeys,接下来就是制作SSDT了。
同理方法还是一样,先在DSDT中打上补丁后,复制补丁内容到新建的SSDT里,添加系统判断,外部引用,编译无误后就可以食用了。
后面操作以Fn+F3“调节键盘背光快捷键”为例,
选择F3的补丁,注意打补丁前后的区别,选择应用补丁,并且搜索“_SB.ATKD.IANE”定位到该补丁位置,发现Fn+F3对应到是“_Q0C”,“_Q0D”则对应Fn+F4,其余快捷键。可以查看对应补丁。
找到补丁位置后,新建SSDT文件,在SSDT文件中新建Scope域,路径方法同上。
可以看到这里我是已经添加了系统判断,如果操作系统是Mac就继续,如果不是就执行XQ0C。因此需要对原DSDT中对_Q0C重命名成XQ0C,这样当不是Mac系统时实际执行当就是原DSDT的_Q0C(重命名成XQ0C)。其余的快捷键的操作方法一样。需要注意的是每个快捷键对应的值是不一样的。更新一下需要注意的是Else的位置,是跟系统判断的IF 同级别,正确的已修改。如图蓝色框的部分。之前用OC引导进Windows后发现快捷键不能用,查看SSDT后,发现位置错了,导致在Windows下没有返回更名后的函数(XQ0C)。
重命名的方法请参考上面那篇《电池补丁教程》
完成之后就需要进行添加外部引用,编译无误后,就可以放进ACPI里加载了。
3.环境光传感器
OC-little里面的仿冒环境光传感器可以直接食用,有问题的在根据补丁修改吧,方法还是一样,这种只要懂了,一通百通,这里就不赘述了。
后面是修复完成的截图,最新Monterey照样可以用。
SSDT-ATKD.AML (键盘背光)- DefinitionBlock ("", "SSDT", 2, "ACDT", "ATKD", 0x00000000){ External (_SB_.ATKD, DeviceObj) External (_SB_.KBLV, FieldUnitObj) External (_SB_.PCI0.LPCB.EC0_.ST9E, MethodObj) // 3 Arguments External (_SB_.PCI0.LPCB.EC0_.WRAM, MethodObj) // 2 Arguments Scope (\_SB.ATKD) { Method (SKBV, 1, NotSerialized) { ^^PCI0.LPCB.EC0.WRAM (0x09F0, ^^KBLV) ^^PCI0.LPCB.EC0.ST9E (0x1F, 0xFF, Arg0) Return (Arg0) } }}
复制代码 SSDT-ALS0(环境光传感器)- DefinitionBlock ("", "SSDT", 2, "ACDT", "ALS0", 0x00000000){ Scope (_SB) { Device (ALS0) { Name (_HID, "ACPI0008" /* Ambient Light Sensor Device */) // _HID: Hardware ID Name (_CID, "smc-als") // _CID: Compatible ID Name (_ALI, 0x012C) // _ALI: Ambient Light Illuminance Name (_ALR, Package (0x01) // _ALR: Ambient Light Response { Package (0x02) { 0x64, 0x012C } }) Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Else { Return (Zero) } } } }}
复制代码 SSDT-FN.aml(Fn快捷键)
代码有点多,放进去超字节了,这里快捷键我只选取了我用得到了。
F3 键盘背光减弱
F4 键盘背光增加
F5 屏幕背光减弱
F6 屏幕背光增加
F9 触摸板开关
F10 静音
F11 音量减
F12 音量加
Ps:F1睡眠我试了一下,添加后没有反应, |