本帖最后由 杨花落尽besos 于 2021-11-18 18:08 编辑
更新时间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睡眠我试了一下,添加后没有反应,
|