
本文来自 ZEALER+ 社区
作者:TuringMachine123
* 本文为作者的独立观点,不代表 ZEALER 的立场。

这是自己好久以前发在贴吧里的帖子,看到咱这个小组里也有用 Macbook 外接机械键盘的,所以想到拿出来分享一下。。。

Mac 自带键盘有独特的 F 区快捷键和强大的触控板,却存在着键程短和触感反人类的劣势,因此对于需要长时间输入的 Mac 用户来说,配一个机械键盘显得十分必要。但机械键盘大多是按晕头死排布的,虽然在 Mac 上也能用,但会有些别扭。也有某些键盘,宣传支持 Mac OS,结果只是送了两颗 command 键帽而已。所以楼主结合自己用 Mac 和机械键盘的经验,和大家分享下 Mac 中设置外接机械键盘的一些技巧。
楼主的主力键盘是 WASD 的 87 绿轴,OS X 排列,打开背面 1 号开关就是 Mac 模式,实际上这个模式也不能完全达到和自带键盘一样的效果。如果是没有特殊 Mac 模式的机械键盘的话,情况会更复杂一些。
晒一张我的使用环境,可以看到外接键盘后,自带键盘和触摸板距离手都太远,不方便使用。所以对设置机械键盘的目的应该是尽量便捷的实现自带键盘的快捷键和触摸板的手势功能。

基础篇
苹果键的设置
首先是苹果键,也就是 command 键,这颗按键在晕头死排列中并不存在。在初次连接外接键盘时,OS 系统会自动弹出键盘的设置。你需要按照提示在外接键盘上找到相应的按键并且按下来进行识别。如果系统没有自动弹出提示,也可以通过“系统偏好设置”—“键盘”—“更改键盘键盘类型”来进行识别。识别之后,系统会将键盘上的 Windows 键映射成苹果键,alt 键映射成 option 键。



这里还有一点小问题,对使用 Mac 键盘布局的人来说,系统自动识别之后, Command 和 option 键的排布是和习惯相反的。在 Mac 键盘中,苹果键应该在 alt 的位置,而 option 则在 Windows key 所在的位置,这时候可以用键盘设置中的 "修饰键…" 进行修改。最后把alt和windows的键帽拔出来互换以防视觉上的混淆~ 完成后,可以通过 command-C 和 command-V 进行测试。

进阶篇
触摸板手势的代替 & f 区快捷键的实现
触摸板手势的代替
mac 的触摸板功能很强大,使用频率也很高,而且这些手势可以用键盘组合键代替。但组合键毕竟难记,再加上大多数机械键盘在mac上有些键用处不大(如87或104键盘多出来的f区或功能区),如果能将这些复杂的组合键转化成单键功能,可以大大提高日常使用效率。
一种简单的办法是在系统键盘设置中设置快捷键。手势的功能大多集中在Mission Control中,可以按照自己的喜好设置,建议改成F区的多余按键。

还有一种方法可以将功能区的按键也改成快捷键,需要插件的帮助。(系统自带的键盘设置并不能识别功能区的这些键,完全为 OS X 设计的键盘除外)具体设置我写在究级篇里了。
F区快捷键
对于mac键盘,默认f区的功能:
F1-F2:屏幕亮度调节;
F3:Misson Control;
F4: Launchpad;
F5-F6: 自带键盘亮度调节;
F7-F9:媒体控制;
F10-F12:音量调节;

想要把普通键盘的f区也改成这些功能,用系统自带的设置已经做不到了,需要插件『Karabiner』的帮助,这是mac上一款可以随意更改键盘映射的软件,默认的选项已经十分丰富,并且支持脚本编写,功能很强大。
安装完成后桌面上菜单栏会有一个正方形图标,点击后选择 "Pereference":

在 " Change Key" 默认的选项中找到" Change F1..F19 key & Functional Key"—"For PC keyboards", 然后勾选你需要的快捷键方式(可以是直接把 f 区映射成上述功能键,也可以通过 fn+f 区按键实现)

究级篇
脚本编写
我们先不谈上文遗留下来的功能键代替手势问题, 先来看看有些键盘的功能区是这个样子的:

这些媒体和音量控制键在 mac 中是不起作用的,即使 karabiner 也没有默认的对于这些键的改动。这时候 karabiner 提供了脚本编写功能,你可以自定义这些键的用处,通过编写脚本让软件识别。
过程:在菜单栏右边找到图标,单击-> Preferences;
切换到 Misc& Uninstall 标签;
点击 Open private.xml 按钮,在弹出的界面打开 private.xml;
默认只有两个root标签,代码写在标签里就好。
写代码就是简单的xml了
首先是对文件的描述(最后一行一定要,标签中写什么随意,描述一下脚本功能就可以)
比如:
Functions
volume&music
remap.volumeKeys
然后就是自定义键位,大体可以分为两种:
第一种是把指定的键定义成指定的功能
格式是:
--KeyToConsumer--KeyCode::你要改的键,
ConsumerKeyCode::想要实现的功能
例如: 把 page up 键改成音量增加的功能:
--KeyToConsumer--KeyCode::PAGEUP,
ConsumerKeyCode::VOLUME_UP
那么之前的替换手势的想法能不能用第一种情况实现呢,建议不要,因为手势功能不像媒体和音量控制有专门的术语(其实是我还没找到)。。。
这种情况可以用单键代替组合键的格式来写(注意顺序):
--KeyToKey-- KeyCode::单键,
KeyCode::组合键中后按的键,
ModifierFlag::组合键中先按的键(例如ctrl,command之类)
例如: 把 F10 改成四指右扫向右移动一个space的功能(组合键是control →):
--KeyToKey-- KeyCode::F10,
KeyCode::CURSOR_RIGHT,
ModifierFlag::CONTROL_R
上述代码需要按键对应的 KeyCode,像 F1,F2。。。或普通字母键这样简单的按键,按键本身就是它的代码,比如 A 键的代码就是 KeyCode::A。
对于比较复杂的按键如 Control,option,或者是像方向键这种没有字母标注的键,『Karabiner』提供了 eventviewer 组件,Eventviewer 可以捕捉你的按键动作并给出相应的按键信息,其中就包括按键代码。
点击菜单栏上的方形图标选择 "Launch Eventviewer":

之后会弹出这样的表格界面

此时每按下一个键,表格里都会出现相应的键的信息,注意我们这里需要的KeyCode 不在『code』栏中,而是『 misc』栏中显示的内容。如上图显示,左ctrl 的代码就是 CONTROL_L。
这样编写脚本就很简单了,你的机械键盘在 mac 系统中也能随心所欲的使用了~