黑苹果安装导引(火影地狱火x6 i7-8750H)

机型火影地狱火x6,同模具的机型还有机械革命z2机械师F117,CPU是Coffee Lake i7-8750H,系统版本macOS Catalina 10.15.1

一、准备工作

1.1 硬盘

固态硬盘推荐三星(PM981除外),看Apple用的哪家供应商,直接SM961/PM961最省事。
其他固态型号参考这里
发现安装卡进度,可能是固态不兼容,可以尝试装在机械盘。

1.2 网卡

有线Intel网卡一般都能驱动,无线Intel的网卡基本无解,可考虑换博通网卡,常用型号DW1830BCM 94360)、DW1560BCM 94352z),DW1830比较宽,你的机器可能位置不够装不上,所以直接DW1560最省事,TB上的一般都是品牌笔记本拆机的,买联想的最省事,XPS的可能不兼容你的主板,如表现为Windows 10下工作突发性死机。

BCM 94352z

1.3 分区

你可能需要重装你的所有系统,为了避免把硬盘格掉了装,装了再格掉的情况出现,你需要了解:
1、算算系统分区需要多少。
2、macOS要求格式为APFS,即便你格式化为HFS+也会给你转过去,由于苹果原生不能写NTFS,应预留一定空间格式化为exFATFAT64)/FAT32(文件小于4G)作为交互空间,跟其他操作系统交互文件,避免出现数据不通的尴尬,文件是实在太大的时候,再考虑用移动硬盘,移动硬盘可挂到虚拟机(镜像建议Windows 10 LTSC 2019上读写,虽然本地硬盘分区能共享到虚拟机,但没有写权限。反过来,也可以尝试用Windows虚拟机挂载macOS分区
3、Windows的安装器万年不更新,默认分出的EFI分区不足300 MB,且总有未分配空间剩余,APFS要求EFI分区至少300 MB,否则拒绝格式化。旧版DiskGen快速分区默认分出的EFIMSR分区大小也是很小,建议全部手动搞,全部直接分到四五百MB就没有什么事了。

EFI分区,可格式化为FAT32

保留一个MSR分区

安装Windows 10时直接上工具WinNTSetup指派安装和引导分区,因为多硬盘情形下,Windows的安装器总是找不到分区。

1.4 系统引导修复

如果合并EFI分区选择的是移动其他操作系统的引导文件,有可能导致引导不了系统。
对于Windows,一般的PE系统都带有引导修复功能,略。
Ubuntu使用boot repair
把四叶草(Clover文件夹)复制到硬盘EFI分区即可脱离U盘引导,使用bootice x64进行引导调整
修改前注意备份EFI,备用一个WinPEU盘,防止驱动过程因配置错误而出现无法进入系统的情况出现,通过WinPE还原EFI分区更改,注意不要备份到APFS分区,WinPE是读不了的。

二、镜像刻录与安装

下载镜像刻录并安装,教程已经说明很详细了,准备工作完毕后,应该就是不断点下一步的事情。

三、驱动

  • 10.14 安装引导时卡加号,300系列主板请于drivers64UEFI目录中移除AptioMemoryFix-64.efi,并添加OsxAptioFix2Drv-free2000.efidrivers64UEFI下,该驱动位于/EFI/CLOVER/drivers64UEFI/OsxAptioFixDrv_Backup目录下

  • 10.15 安装时卡最后2分钟,需要将drivers/off/OsxAptioFixDrv.efi替换掉drivers/UEFI/AptioMemoryFix.efi

下面是硬件驱动资料索引,为了不当复读机,贴链接应该足够了,关键地方补充两句。

3.1 声卡驱动

AppleALC驱动地址
Lilu驱动地址

  • 安装教程其实已经有了,链接,就是注入layout-id的步骤。
  • 更新AppleALC,把驱动拖到Kexts/OtherVSCode打开config.plist搜索layout-id关键字,修改id后重启即可,AppleALC.kext驱动需配合Lilu.kext
    如果layout-id被注释为#layout-id,去掉#,搜不到layout-id关键字的参考一下其他plist配置文件。
    声卡id

10.15 删除了部分layoutId,不过驱动貌似做了适配,可以不用修改10.14的配置,如ALC269VC可注入20

10.15 常见问题
Apple在macOS Catalina上删除的布局ID为:
Layout 1,3,8,9,11,12,13,18,22,23,24,25,26,27,28,29,30,31,32,34,36,37,38,39,41,42,43,44,45,46,47,48,49,50等

3.2 背光调节

由于屏幕亮度瞎眼,需要修复亮度调节。
以下是参考方案:
屏幕亮度调节驱动方案:
参考方案一:AppleBacklightFixup
参考方案二:WhateverGreen

以上方式已过时,但还是保留了链接,亮度驱动已经集成在最新WhateverGreen,但仍然需要注入SSDT-PNLF.aml
更新到最新WhateverGreen,可降低进系统卡进度条、卡DEBUG概率

  • 方案一:
    下载通用hotpatch补丁,使用maciasl打开SSDT-PNLF.dsl,或者使用WhateverGreen驱动中附带的SSDT-PNLF.dsl,另存为SSDT-PNLF.amlCLOVER/ACPI/patched,在CCG里面添加修补:

  • 方案二:
    直接勾上AddPNLF就行了,不过可能出现亮度过暗的情况,可换用上面的方案,最后保存重启。

  • 方案三:


    适用于8代U核显,可解决重启花屏问题,原文
    只需两步:
    1、添加SSDT-PNLF_CoffeeLake.aml8代U专用修补,亮度保存需要配合SSDT-ASL0.aml
    亮度调节及保存

2、添加change GFX0 to IGPU补丁,保存重启。

CCG自带常用修补

3.3 亮度记忆

背光修复后,每次开机都要调节一次,你可能需要:
1、下载Intel 核显通用补丁,上面下载过的可忽略。
2、另存为SSDT-ALS0.dslSSDT-ALS0.amlCLOVER/ACPI/patched,到CCG添加修补:


重启即可,显示器偏好会增加亮度自动调节的复选框(没有实际作用),重启后亮度不会瞎眼。

3.4 核显

修改前切记备份,配合WhateverGreen.kext驱动核显,重要,需配合扩展驱动Lilu.kext
先照教程缓冲帧补丁部分做一遍,把生成的plist配置放到config.plist合适的位置,不知道放哪里或替换什么地方的,参考一下其他配置文件。

参考

SMBIOS(机型设置)使用的是Macbook Pro 15.1,显存注入为4095M

<key>Properties</key>  
  <dict> 
    <key>PciRoot(0x0)/Pci(0x2,0x0)</key>  
    <dict> 
                <key>AAPL,ig-platform-id</key>
                <data>
                CQClPg==
                </data>
                <key>AAPL,slot-name</key>
                <string>Internal@0,2,0</string>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>device_type</key>
                <string>VGA compatible controller</string>
                <key>disable-external-gpu</key>
                <data>
                AQAAAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-fbmem</key>
                <data>
                AACQAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-portcount</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-stolenmem</key>
                <data>
                AAAwAQ==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AA/w/w==
                </data>
                <key>model</key>
                <string>Intel UHD Graphics 630 (Mobile)</string>
    </dict> 
  </dict> 

出现唤醒后黑屏只有鼠标能动的,可能是没有配置输出接口connectors,勾上帧缓冲输出接口限制FB端口数限制),尝试重新注入或使用上面的配置试试(UHD630)。

对于使用独显进行外接显示器信号输出的机型只能安装Mac OS X 10.13.6,只有10.13支持N卡驱动,但笔记本的独显基本上是不能驱动的,部分支持Typc-C扩展的笔记本(全功能Typc-C / 雷电3)可尝试使用Typc-CHDMITypc-CDP进行核显输出外屏。

小米Air i5-8250u(UHD620) Typc-C转DP核显外屏输出

3.5 注入EDID(开启HIDPI)

驱动显示器,一般用于外接显示器,对于1080P的笔记本的显示屏不太需要,不驱动没有太大影响,但驱动了可能会有副作用!个人斟酌后使用。
对于笔电的1080P分辨率,如果觉得字太小瞎眼,分辨率低了又觉得模糊,你可能需要这个
Hackintool最新版可能会坑,用不了的试下旧版。

副作用及解决

唤醒后只有左上角1/4屏幕的,解决方案:

  • 参考这里,可以凑合用,被权限掉的看这里,安装RDM后可以选择分辨率。

  • 把笔记本盖合上几次就好了。
  • 换用分辨率1424x802,倍数为2848x1604
    垂直分辨率不大于900

重启的时候出现雪花屏,实际上是重启回到了登录界面,等屏幕亮度暗下来,把盖子合上再打开,多试几次就没事了。

可用方案,可解决唤醒1/4屏幕,不需要使用低分辨率:
睡眠唤醒半屏、雪花点闪屏的解决办法

HIDPI参考链接

开启1600*900 HIDPI需要添加倍数分辨率,如3200*1800,本机型注入iMac Retina Display 16:9

3.6 电量驱动

电量显示只能通过修改DSDT实现,经多次测试,电量跟Windows显示有差异,刷新速度也不一样,只要充电/放电状态正确,基本算是驱动成功。

参考资料,这个帖子已经比较容易懂了。

教程中的 backcolor=rgba( 是富文本乱码,用于标识文字颜色。
驱动地址,记得把驱动拖到Kexts/Other

直接附上本机型的修补源代码,可以参考一下,看不懂的也可以搬友商机型的补丁试试。

参考答案

# add method B1B2 
into method label B1B2 remove_entry;
into definitionblock code_regex . insert
begin
Method (B1B2, 2, NotSerialized)\n
{\n
Return(Or(Arg0, ShiftLeft(Arg1, 8)))\n
}\n
end;


# patch battery status

# rename 16 variable 

into Device label EC0 code_regex XIF1,\s+16, replace_matched begin X0F1,8,X1F1,8, end;
into method label ECBE code_regex \^\^PCI0.LPCB.EC0.XIF1 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F1,^^PCI0.LPCB.EC0.X1F1) end;

into Device label EC0 code_regex XIF2,\s+16, replace_matched begin X0F2,8,X1F2,8, end;
into method label ECBE code_regex \^\^PCI0.LPCB.EC0.XIF2 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F2,^^PCI0.LPCB.EC0.X1F2) end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XIF2 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F2,^^PCI0.LPCB.EC0.X1F2) end;

into Device label EC0 code_regex XIF3,\s+16, replace_matched begin X0F3,8,X1F3,8, end;
into method label ECBE code_regex \^\^PCI0.LPCB.EC0.XIF3 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F3,^^PCI0.LPCB.EC0.X1F3) end;


into Device label EC0 code_regex XIF4,\s+16, replace_matched begin X0F4,8,X1F4,8, end;
into method label ECBE code_regex \^\^PCI0.LPCB.EC0.XIF4 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F4,^^PCI0.LPCB.EC0.X1F4) end;


into Device label EC0 code_regex XIF7,\s+16, replace_matched begin X0F7,8,X1F7,8, end;
into method label ECBE code_regex \^\^PCI0.LPCB.EC0.XIF7 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0F7,^^PCI0.LPCB.EC0.X1F7) end;



into Device label EC0 code_regex XST0,\s+16, replace_matched begin X0T0,8,X1T0,8, end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XST0 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0T0,^^PCI0.LPCB.EC0.X1T0) end;



into Device label EC0 code_regex XST1,\s+16, replace_matched begin X0T1,8,X1T1,8, end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XST1 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0T1,^^PCI0.LPCB.EC0.X1T1) end;


into Device label EC0 code_regex XST2,\s+16, replace_matched begin X0T2,8,X1T2,8, end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XST2 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0T2,^^PCI0.LPCB.EC0.X1T2) end;

into Device label EC0 code_regex XST3,\s+16, replace_matched begin X0T3,8,X1T3,8, end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XST3 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0T3,^^PCI0.LPCB.EC0.X1T3) end;

这种脚本语言变量后面声明的直接就是占用的比特位数,不用折腾太多。
把代码保存为*.ASL备用。
怎么用?
第一步:
打开MaciASL ,点击Patch,把上面代码粘贴到Patch Text,点击Apply,上下文本框都变为空白后,表示补丁已经打上去了。

打补丁前

预览替换结果,点击Complie看有没有编译错误
替换后

替换结果保存为DSDT.aml,放进ACPI/patched,在CCG中添加进去:

电量驱动一般步骤

实在看不懂的看这里,会有些帮助。
1、提取原始DSDT,在Clover启动界面按下F4即可,提取的文件生成在ACPI/origin。一般都是修改DSDT.aml,打开DSDT.aml,搜索EmbeddedControlField块里定义的变量是需要筛选的变量。

定位

2、筛选、统计变量。参考格式:

{变量名}              {特征文本}
{变量出现的行数}        {特征文本}

如下:

XIF1   XIF1,   16,

53364  Store (^^PCI0.LPCB.EC0.XIF1, Index (PAK0, One))

========================================
XIF2   XIF2,   16,

53365  Store (^^PCI0.LPCB.EC0.XIF2, Index (PAK0, 0x02))
53414  Store (Divide (Multiply (BCAP, 0x64), ^^PCI0.LPCB.EC0.XIF2, ), Local0)
53425  Store (Divide (Multiply (^^PCI0.LPCB.EC0.XST2, 0x64), ^^PCI0.LPCB.EC0.XIF2, ), Local1)

========================================
XIF3   XIF3,   16,

53366  Store (^^PCI0.LPCB.EC0.XIF3, Index (PAK0, 0x03))

========================================
XIF4   XIF4,   16,

53367  Store (^^PCI0.LPCB.EC0.XIF4, Index (PAK0, 0x04))

========================================

XIF7   XIF7,   16,

53369  Store (^^PCI0.LPCB.EC0.XIF7, Index (PAK0, 0x07))
========================================


XST0   XST0,   16,

53406  Store (^^PCI0.LPCB.EC0.XST0, Index (BFB0, Zero))

========================================

XST1   XST1,   16,

53407  Store (^^PCI0.LPCB.EC0.XST1, Index (BFB0, One))


========================================

XST2   XST2,   16,

53410  Store (^^PCI0.LPCB.EC0.XST2, BCAP)
53425  Store (Divide (Multiply (^^PCI0.LPCB.EC0.XST2, 0x64), ^^PCI0.LPCB.EC0.XIF2, ), Local1)
53440  Store (^^PCI0.LPCB.EC0.XST2, BCAP)
53445  Store (^^PCI0.LPCB.EC0.XST2, BCAP)

========================================
XST3   XST3,   16, 

53450  Store (^^PCI0.LPCB.EC0.XST3, Index (BFB0, 0x03))

========================================

BST1   BST1,   16, 
53403  Store ("BST1 Start", Debug)
53451  Store ("BST1 End", Debug)

XIF0没有出现过的就不用修改,也就不用统计,如XIF1出现在53364行,把出现的行数和该行文本记下来,方便避免重复记录,同时修改时可以快速定位。
统计大于8位的变量数据,8位变量不需要统计,出现次数为0和未引用的变量也可以排除掉,如上统计结果,剩下需要修改的都是16位的变量。

3、编写正则表达式,需要一定的程序基础,完全没有接触过编程的看下这里体验一下。

Method (ECBE, 0, NotSerialized)
{
          Acquire (MUEX, 0xFFFF)
          Store ("ECBE", Debug)
          Store (^^PCI0.LPCB.EC0.XIF1, Index (PAK0, One))
          Store (^^PCI0.LPCB.EC0.XIF2, Index (PAK0, 0x02))
          Store (^^PCI0.LPCB.EC0.XIF3, Index (PAK0, 0x03))
          Store (^^PCI0.LPCB.EC0.XIF4, Index (PAK0, 0x04))
          Store (^^PCI0.LPCB.EC0.XIF7, Index (PAK0, 0x07))
          Release (MUEX)
}

替换前

替换后

根据统计结果,XIF0被引用若干次,需要拆分,把XIF0 16位变量拆成名为X0F1X1F1两个8位变量。而XIF0在名为EC0Device对象作用域里,在该范围里搜索字符串把符合XIF1,\s+16正则特征的字符组合替换为X0F1,8,X1F1,8,完成拆分。

Scope (_SB.PCI0.LPCB)
    {
        OperationRegion (DBG8, SystemIO, 0x80, One)
        Field (DBG8, ByteAcc, NoLock, Preserve)
        {
            IO80,   8
        }

        Device (EC0)
        {
              ....
              OperationRegion (ECXP, EmbeddedControl, Zero, 0xFF)
              Field (ECXP, ByteAcc, Lock, Preserve)
              {
                 XIF0,   16, 
                 XIF1,   16, 
                 ....
into Device label EC0 code_regex XIF1,\s+16, replace_matched begin X0F1,8,X1F1,8, end;

变量被拆分,引用方式也要改变,把对16位变量的引用转变为两个8位变量通过移位和异或运算合成的16位变量,就是把两个8位变量传入函数B1B2,返回一个16位数。
参照变量拆分的方式替换字符,像53440行和53445特征代码是一样的,写一句代码就能完成两行文本的替换。

53440  Store (^^PCI0.LPCB.EC0.XST2, BCAP)
53445  Store (^^PCI0.LPCB.EC0.XST2, BCAP)

例如拆分变量XST2和修改其引用方式:

into Device label EC0 code_regex XST2,\s+16, replace_matched begin X0T2,8,X1T2,8, end;
into method label _BST code_regex \^\^PCI0.LPCB.EC0.XST2 replaceall_matched begin B1B2(^^PCI0.LPCB.EC0.X0T2,^^PCI0.LPCB.EC0.X1T2) end;

3.7 触摸板

驱动项目地址
触摸板太复杂,摸了,折腾不是目的,工作学习才是,反正有鼠标触摸板基本不会用到,直接拿了隔壁机械革命z2的驱动。
传送门,里面有修改驱动的方法,2.2版本已经原生支持本机型触摸板型号,不需要修改驱动了,把VoodooI2C.kext,VoodooI2CHID.kext放到Drivers/Other,使用kext utility重建缓存后重启即可。

显示检测不出来但仍然可以使用,显示需要需要配合传感器驱动如VirtualSMC

优先尝试使用新版驱动

如果不行就把10.14 EFI中的VoodooI2C.kext中的所有info.plist文件配置替换掉新版中的,或者干脆就祖传驱动。

参考链接

1、http://bbs.pcbeta.com/viewthread-1797378-1-1.html
2、http://bbs.pcbeta.com/viewthread-1805164-1-1.html

3.8 USB驱动

Hackintool教程已经有了。
以下是参考:
附上参考链接和屑站AV号av37086786做参考。
驱动项目地址

主要是整理下思路,
1、添加驱动修补。
修补步骤不一定需要,可直接第三步开始。

Comment: USB port limit patch #1 10.14.x modify by DalianSky(credit ydeng)
Name: com.apple.iokit.IOUSBHostFamily
Find: 83FB0F0F
Replace: 83FB3F0F
MatchOS: 10.14.x

Comment: USB port limit patch #2 10.14.x modify by DalianSky(credit PMHeart)
Name: com.apple.iokit.IOUSBHostFamily
Find: 83E30FD3
Replace: 83E33FD3
MatchOS: 10.14.x

Comment: USB Port limit patch #3 10.14.x modify by DalianSky(credits PMheart)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F
Replace: 83FB3F0F
MatchOS: 10.14.x

Comment: USB Port limit patch #4 10.14.x modify by DalianSky(credits PMheart)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FF0F0F
Replace: 83FF3F0F
MatchOS: 10.14.x
如果定制完毕,可以把Disabled勾上不启用

2、添加DSDT修补:

同上,由于机器已经定制过驱动,就不需要启用了

change XH01 to XHC其实也是文本替换的意思,替换掉特定排列的ASCII码。

3、添加-uia_exclude_ss引导参数,重启


现在的笔记本就只有一条USB3.x的总线,为了向旧设备兼容依然对外保留USB2.0的接口,总线上同一端口有可能被分配到2.0的设备,也可能分配到3.x的设备,由于不能区端口是2.0还是3.x的,需要拆分开两步进行。
这步的意义是,重启后,屏蔽笔记本上USB 3.0的端口,把你的USB 2.0U盘把笔记本上的USB 2.0接口插一遍,把这些端口的Type标记为USB2,这部分端口会仿冒为苹果设备的USB 2.0的端口提交给苹果系统。

4、添加-uia_exclude_hs,原理同上,上一步已经标记为USB2的端口会被排除掉,这次是为了保留部分剩下的端口作为苹果设备USB 3.x的端口提交给苹果系统,添加uia_include是为了开后门,保留外接鼠标和外接键盘需要用到的端口,否则就不容易操作,如果驱动了触摸板,也可以使用触摸板和自带键盘完成操作。

5、删掉没有用到的端口,删掉剩下16个以下即可,导出USBPorts.kext,放进EFI,把1、2的修补禁用掉,删除USBInjectAll.kext,重启,如果睡眠不秒醒,唤醒正常,表示USB驱动正常,不过重装系统有可能失效,需要重新搞一遍。
若保留USBInjectAll.kext,需要把生成的SSDT-USBX.amlSSDT-UIAC.aml等若干aml文件使用CCG注入,这样子就不需要USBPorts.kext了。

3.9 无线网卡

把英特尔的无线网卡换下来。
安装镜像自带DW1560/DW1820A蓝牙驱动。
10.14版本驱动方案,链接

10.15下蓝牙失效:
蓝牙驱动
BrcmPatchRAM3.kextBrcmFirmwareData.kext拖到/Library/Extensions目录,把BrcmBluetoothInjector.kext拖到Kexts/Other下面。

Macos10.15下DW1830、DW1560 蓝牙解决方案

macOS Catalina 10.15安装中常见的问题及解决方法

DW1820A/BCM94350ZAE/BCM94356ZEPA50DX插入的正确姿势

BCM94352HMB

BrcmBluetoothInjector

3.10 传感器

  • FakeSMC.kext
    更新FakeSMC(苹果硬件仿冒驱动),项目地址,里面有传感器驱动。
    不过建议还是用镜像EFI文件夹的内置传感器的驱动⁨EFI⁩/CLOVER⁩/⁨kexts⁩/⁨Other/FakeSMC_v1800_with_Sensors.kext⁩,替换掉Other文件夹的FakeSMC_v1800.kext
    重启。
    这样就能查看CPU温度了,不然只能查看硬盘温度。

    iStat Menus

  • VirtualSMC.kext
    FakeSMC.kext替代品,但不是很稳定,使用新版有翻车可能,非刚需不建议折腾。
    执行替换操作前最好进行备份,谨防翻车。

1、干掉kexts/Other/ACPIBatteryManager.kextkexts/Other/FakeSMC.kext,把驱动Kexts目录下的所有驱动拖到kexts/Other中。
2、找到SMCHelper.efi,干掉,替换为VirtualSmc.efi

替换后用iStat能显示电池生产日期。但检查CPU 频率可能需要额外安装Intel Power Gadget,灵异的是装上后某些应用可能不能正常运行,如夜神/mumu模拟器等,卸载后一切正常。

HWMonitor监测效果。

HWMonitor

3.11 改键

快捷键改为Windows形式,可以适配大部分程序,某些键不能单独使用,因此不能完全适配。
下载Karabiner,设置键位映射。

黑果没有Command键,也没有F13~F15

改掉聚焦,改为Alt+Tab,尽可能保留习惯。
聚焦默认快捷键与Windows输入法呼出快捷键冲突

然后修改输入法快捷键,按Ctrl+空格可以流畅切换搜狗和英文输入。

修改为左Ctrl+空格

其他常用快捷键,以改键后为准:

  • Ctrl+Shift+Num3 全屏截图
  • Ctrl+Shift+Num4 局部截图
  • Ctrl+A 全选
  • Ctrl+C 复制(mac叫拷贝)
  • Ctrl+V 粘贴
  • Ctrl+Win+V 剪切
  • Ctrl+Z 撤销
  • Ctrl+Shift+Z 恢复(相当于WinCrtl+Y
  • Ctrl+Tab 前台切换(相当于WinAlt+Tab

推荐阅读更多精彩内容