机型火影地狱火x6,同模具的机型还有机械革命z2,机械师F117,CPU是
Coffee Lakei7-8750H,系统版本macOS Catalina 10.15.7。
EFI 435b
一、准备工作
1.1 硬盘
固态硬盘推荐三星(PM981除外),看Apple用的哪家供应商,直接SM961/PM961最省事。
其他固态型号参考这里。
发现安装卡进度,可能是固态不兼容,可以尝试装在机械盘。
1.2 网卡
有线Intel网卡一般都能驱动,无线Intel的网卡基本无解,可考虑换博通网卡,常用型号DW1830(BCM 94360)、DW1560(BCM 94352z),DW1830比较宽,你的机器可能位置不够装不上,所以直接DW1560最省事,TB上的一般都是品牌笔记本拆机的,买联想的最省事(现基本灭绝),XPS的可能不兼容你的主板,如表现为Windows 10下工作突发性死机。

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

1.4 系统引导修复
如果合并EFI分区选择的是移动其他操作系统的引导文件,有可能导致引导不了系统。
对于Windows,一般的PE系统都带有引导修复功能,略。
Ubuntu使用boot repair。
把四叶草(Clover文件夹)复制到硬盘EFI分区即可脱离U盘引导,使用bootice x64进行引导调整。
修改前注意备份EFI,备用一个WinPEU盘,防止驱动过程因配置错误而出现无法进入系统的情况出现,通过WinPE还原EFI分区更改,注意不要备份到APFS分区,WinPE是读不了的。
二、镜像刻录与安装
- Windows环境下,刻录镜像到U盘可在使用TransMac(TransMac的操作),该软件是收费的,但PE环境下也是可以试用的。
- Mac环境下使用balenaEtcher
下载镜像刻录并安装,教程已经说明很详细了,准备工作完毕后,应该就是不断点下一步的事情。
三、驱动
10.14 安装引导时卡加号,300系列主板请于
drivers64UEFI目录中移除AptioMemoryFix-64.efi,并添加OsxAptioFix2Drv-free2000.efi到drivers64UEFI下,该驱动位于/EFI/CLOVER/drivers64UEFI/OsxAptioFixDrv_Backup目录下
10.15安装时卡最后2分钟,需要将drivers/off/OsxAptioFixDrv.efi替换掉drivers/UEFI/AptioMemoryFix.efi
下面是硬件驱动资料索引,为了不当复读机,贴链接应该足够了,关键地方补充两句。
3.1 声卡驱动
- 安装教程其实已经有了,链接,就是注入
layout-id的步骤。 - 更新
AppleALC,把驱动拖到Kexts/Other,VSCode打开config.plist搜索layout-id关键字,修改id后重启即可,AppleALC.kext驱动需配合Lilu.kext。
如果layout-id被注释为#layout-id,去掉#,搜不到layout-id关键字的参考一下其他plist配置文件。
附声卡id。
10.15删除了部分layoutId,不过驱动貌似做了适配,可以不用修改10.14的配置,如ALC269可注入6610.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等开机偶尔掉声卡问题:
注入参数alcdelay=500,类型为Number
3.2 背光调节
由于屏幕亮度瞎眼,需要修复亮度调节。
以下是参考方案:
屏幕亮度调节驱动方案:
参考方案一:AppleBacklightFixup
参考方案二:WhateverGreen
以上方式已过时,但还是保留了链接,亮度驱动已经集成在最新WhateverGreen,但仍然需要注入SSDT-PNLF.aml。
更新到最新WhateverGreen,可降低进系统卡进度条、卡DEBUG概率。
-
方案一:
下载通用hotpatch补丁,使用maciasl打开SSDT-PNLF.dsl,或者使用WhateverGreen驱动中附带的SSDT-PNLF.dsl,另存为SSDT-PNLF.aml到CLOVER/ACPI/patched,在CCG里面添加修补:
-
方案二:
直接勾上AddPNLF就行了,不过可能出现亮度过暗的情况,可换用上面的方案,最后保存重启。
-
方案三:
适用于8代U核显,可解决重启花屏问题,原文。
只需两步:
1、添加SSDT-PNLF_CoffeeLake.aml8代U专用修补,亮度保存需要配合SSDT-ASL0.aml。
亮度调节及保存
2、添加change GFX0 to IGPU补丁,保存重启。

3.3 亮度记忆
背光修复后,每次开机都要调节一次,你可能需要:
1、下载Intel 核显通用补丁,上面下载过的可忽略。
2、另存为SSDT-ALS0.dsl为SSDT-ALS0.aml到CLOVER/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-C转HDMI或Typc-C转DP进行核显输出外屏。

3.5 注入EDID(开启HIDPI)
驱动显示器,一般用于外接显示器,对于1080P的笔记本的显示屏不太需要,不驱动没有太大影响,但驱动了可能会有副作用!个人斟酌后使用。
对于笔电的1080P分辨率,如果觉得字太小瞎眼,分辨率低了又觉得模糊,你可能需要这个。
Hackintool最新版可能会坑,用不了的试下旧版。
副作用及解决
唤醒后只有左上角1/4屏幕的,解决方案:
重启的时候出现雪花屏,实际上是重启回到了登录界面,等屏幕亮度暗下来,把盖子合上再打开,多试几次就没事了。
可用方案,可解决唤醒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,上下文本框都变为空白后,表示补丁已经打上去了。



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

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

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位变量拆成名为X0F1和X1F1两个8位变量。而XIF0在名为EC0的Device对象作用域里,在该范围里搜索字符串把符合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重建缓存后重启即可。


如果不行就把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

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.aml,SSDT-UIAC.aml等若干aml文件使用CCG注入,这样子就不需要USBPorts.kext了。
3.9 无线网卡
把英特尔的无线网卡换下来。
安装镜像自带DW1560/DW1820A蓝牙驱动。
10.14版本驱动方案,链接。
10.15.7 WIFI:
AirportBrcmFixup.kext
BrcmFirmwareData.kext
BrcmPatchRAM3.kext
10.15下蓝牙失效:
蓝牙驱动
把BrcmPatchRAM3.kext和BrcmFirmwareData.kext拖到/Library/Extensions目录,把BrcmBluetoothInjector.kext拖到Kexts/Other下面。
Macos10.15下DW1830、DW1560 蓝牙解决方案
macOS Catalina 10.15安装中常见的问题及解决方法
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.kext和kexts/Other/FakeSMC.kext,把驱动Kexts目录下的所有驱动拖到kexts/Other中。
2、找到SMCHelper.efi,干掉,替换为VirtualSmc.efi。替换后用
iStat能显示电池生产日期。但检查CPU 频率可能需要额外安装Intel Power Gadget,灵异的是装上后某些应用可能不能正常运行,如夜神/mumu模拟器等,卸载后一切正常。
HWMonitor监测效果。

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

改掉聚焦,改为
Alt+Tab,尽可能保留习惯。
然后修改输入法快捷键,按Ctrl+空格可以流畅切换搜狗和英文输入。

其他常用快捷键,以改键后为准:
-
Ctrl+Shift+Num3全屏截图 -
Ctrl+Shift+Num4局部截图 -
Ctrl+A全选 -
Ctrl+C复制(mac叫拷贝) -
Ctrl+V粘贴 -
Ctrl+Win+V剪切 -
Ctrl+Z撤销 -
Ctrl+Shift+Z恢复(相当于Win下Crtl+Y) -
Ctrl+Tab前台切换(相当于Win下Alt+Tab)










