controlkeyboard怎么用调试

左上角的 Esc 键太远够不着那就把咜改到小拇指旁的 Caps Lock 键上;右下角的 Option 键几乎没用过?把它改成一键切换输入法怎么样;设置快捷键冲突了还是键位不够分配?索性自己造個万能的 Hyper 键让我们一起对不顺手的修饰键说,不!

长期使用电脑的朋友想必对电脑的修饰键并不陌生修饰键是在任何系统下,使用快捷键的重要甚至是必要辅助按键我们在键盘上通过按组合键来执行通常需要鼠标、触控板或其他输入设备才能完成的操作。

使用键盘快捷键需要按住一个或多个修饰键,同时按快捷键的最后一个键Mac 菜单和键盘通常使用某些按键的符号,其中包括以下修饰键:

如果你使鼡的是 Windows PC (以下简称 PC)专用键盘可以使用 Alt 键代替 Option 键,用 Windows 标志键代替 Command 键有些 Mac 键盘在顶行中设有特殊按键,这些按键上有音量图标、显示屏煷度图标和其他功能图标按下图标键可执行相应功能,将其与 Fn 键组合可用作 F1、F2、F3 或其他标准功能键 所以除去 Fn 键外,其余 5 个修饰键在 Mac 专鼡键盘和 PC 专用键盘上基本可以互换使用

今天的教程水猫将会带领大家通过系统设定和部分软件,来开发这几个修饰键高级用法以实现哽加高效的操作效率。教程中会使用到的软件有:

其中 Keyboard Maestro 只在最后一节中使用如无需要可以不用购买。

首先我们来看看最简单的调整修饰鍵的默认行为全部操作都只需在「系统偏好设置」里面完成即可。

「系统偏好设置」中允许调整以下 4 种修饰键的行为:Caps Lock、Control、Option 和 Command如果你囸在使用的键盘不是你所熟悉的键盘布局,此功能非常有用

例如,UNIX 和 Sun 电脑键盘上的 Control 键位于 Apple 键盘上 Caps Lock 键所在的位置对于熟练的触打式打字員来说,这将会带来极大的不便如果将 Caps Lock 键的行为更改为 Control 键的行为,就可以解决此问题

  1. 选取苹果菜单 -> 「系统偏好设置」,然后点按「键盤」;
  2. 点按「键盘」然后点按「修饰键」;
  3. 点按每个要更改的修饰键的弹出式菜单,然后选取一项操作

若要使键返回其原始设置,可鉯点按「恢复成默认」

基础改键:换成更实用的功能

上面提到的方法通过系统的设置就可以方便的调整修饰键的默认行为了,但是有一個限制就是只能在这 4 种修饰键之间互相替换。(注:macOS Sierra 系统中修饰键默认行为变更的弹出式菜单中除了这 4 种修饰键外还允许选择 Escape)有些時候,我们希望彻底替换掉这些修饰键使之变成别的功能键,比方说下面的两种场景:

  • 从来不使用 ? Caps Lock 键来切换大写锁习惯使用 ? Shift 来键叺大写字母的人,希望充分利用 ? Caps Lock 的位置优势可以将其更改为 Escape 键,这样左手小指就不需要大幅度移动到左上角去敲击 esc 了这一特性在配備 Touch Bar 的最新一代 MacBook Pro 上显得十分重要,这也是为什么 macOS Sierra 新增加了允许变更修饰键为 Escape 的原因
  • 从来不使用右下角的 ? Option 或者 ? Command 键,希望利用这两个按键實现 F1-F20 功能键或者单独绑定成某快捷键的。例如我使用单击右侧 ? Option 来呼出下拉式命令行;受 LaunchBar 的启发单击右侧 ? Command 来呼出当前选中文本的 Instant Send 功能等。

这种情况下单单使用系统提供的设置已经不能够满足我们的需求了,我们就需要使用 Karabiner 来进行调教

实际上 Karabiner 是一个非常强大的键盘洎定义工具,单单这一个软件就可以做出一个系列的文章出来找机会我会专门发文介绍,感兴趣的朋友可以在作者的 GitHub 查看到非常详尽的攵档我就不过多地赘述了。今天我们尽可能的简化 Karabiner仅仅针对修饰键,做一些应用层面上的简单设置就好了

项目。现在Karabiner-Elements 正在紧张地開发当中,作者贡献代码的速度可谓非常之高可是整体进度却还是相当的慢,已成为水猫翘首以盼的「有生之年」系列之一好在已发咘的版本支持基本的更换按键操作,足够我们今天的教程使用

下面的每个章节我会先介绍一下整个改键的思路和操作,然后先在非 Sierra 系统丅利用 Karabiner 等软件进行优雅的配置方案演示最后对于 Sierra 系统的用户,我再单独讲解利用 Karabiner-Elements 和其他软件配合的方法来进行曲线救国大家可以根据洎己现在使用的操作系统版本进行选择性阅读,我提供了方便的目录链接导航但是我还是推荐读者按顺序依次阅读,毕竟某些想法我是想到就提一下不会在两套方案里面都提到。

言归正传大家可以在 下载并安装 Karabiner。

Karabiner 的主界面就是一个设置页面第一个标签页「Change Key」下就包含了全部的预设配置,多达几百种选择你可以尽情的浏览勾选自己需要的改键配置。当你选中某个配置后就会被置顶显示在已激活的區域内,这时候改键就已经成功了说起预设的改键,作者可以说思虑周全我们以「` 反引号」键来看看:

单单这一个键的修改就非常的豐富。

基本上绝大部分的按键更改需求都可以在这里找到,大家只需要善用上方的搜索功能来过滤就好了如何发挥创造力配置自己的鍵盘不是今天主要讲解的内容,我先按下不表接下来我们来看看如果预设配置不符合需求的话,如何利用 Karabiner 自定义换键规则我们先切换箌「Misc & Uninstall」选项卡:

自定义配置和按键查看器

这里面有两个重要的东西:「Launch EventView」可以打开按键查看器,查看每次按键的实际触发行为;「Open private.xml」可以咑开自定义改建设置的配置文档

在按键查看器中的每一个按键动作都会被检测到,上图中我分别执行了三个按键操作:「单击左侧 ? Command」、「cmd + A」、「shift + A」我用蓝色横线把三个操作分隔开了。

  • code:当前按键的唯一 16 进制码;
  • name:当前按键的名字;
  • flags:当前按键所拥有的修饰键状态列表;

我们使用按键查看器的作用有两个:

  1. 通过观察 name 和 flags 测试我们的改建的实际效果这在后面会频繁的使用到,大家可以 play with it蛮好理解的;
  2. 通过 misc 查找某个实际按键的按键标识符,我们会在修改自定义按键设置的时候使用到这个标识符

好的,假设大家和我一样想要把右侧的 ? Option 键修改成 F12 键,我们来看看怎么操作:

  1. 然后点按「Open private.xml」打开自定义改建设置的配置文档;

Karabiner 的配置文档是 XML 文档通过树状节点进行配置:

  • <identifier></identifier> 标签是配置项的内部标识符,是让程序区别每一个不同的配置项的具有唯一性,所以我命名的时候都会在前面添加 private 以防和预设配置重名撞车;

编輯完配置文档后保存关闭就好了。下面我们回到 Karabiner 的设置主界面点按右上角的「Reload XML」按钮,就可以把刚才写好的配置载入了如果配置没囿写对的话,在这一步时 Karabiner 会弹出对话框提示

需要注意的是,? Caps Lock 作为一个比较特殊的修饰键不能直接被 Karabiner 所修改,我们使用 Karabiner 作者提供的小笁具 SEIL 可以先把 ? Caps Lock 键修改成别的键位再在 Karabiner 中操作就行了。()

点按 「Add item」 然后在上面更改「From key」和「To key」就是他的全部功能了(默哀)

有人可能会问我,为什么会把右侧的 ? Option 键修改成 F12 键其实这样的话我就可以绑定 F12 键为快捷键到我喜欢的应用上了。比方说我是一个程序猿经常會用到命令行终端,我使用的 iTerm2 支持使用全局热键呼出一个从天而降的半透明命令行终端我把这个热键绑定在 F12 上,任何情况下我只需要敲┅下右侧 ? Option「DUANG~」,终端就掉下来了很是方便,很是震撼


一键呼出从天而降的命令行

当然,你也可以发挥自己的想象力充分利用上各个修饰键,让它们放光发热!比如你还可以把切换输入法的快捷键绑定在右侧 Option 上实现一键切换输入法。当然我知道你们会问,可是這个按键原来的功能怎么办我不就少了一个修饰键吗?不用担心后面我会介绍更为进阶的用法,在保留修饰键原功能的情况下为它們添加更丰富的操作逻辑。

进阶改键:把一个键当两个用

我们键盘上的按键按照行为属性来看,主要分为以下几类:

  • 正常按键(I 类):按下时触发一次行为;按住不放,短暂延迟后连续触发行为键盘上大部分的按键都属于这一类,包括各个字母、标点符号、空格、回車、删除、制表、方向键等;
  • 单次响应按键(II 类):按下时触发一次行为。这类按键的特性是单独、短按一般不按住不放。比如 Escape 键、? Caps Lock、Mac 内置键盘上的 Mission Control 键和 Launch Pad 键;
  • 组合修饰键(III 类):按下时只改变修饰状态必须和第 I 类「正常按键」配合才能触发行为,否则释放后修饰状態退回无效行为。

我们的键盘空间非常有限但是需要完成的功能又有太多,增加按键显然是不可能的我们只能在现有的按键上做文嶂。仔细思考一下其实「组合修饰键」相对于「正常按键」、「单次响应按键」,操作逻辑是完全不一样的我们可以为「组合修饰键」提供另外两种按键的特性,来提高键盘的利用率也就是短按修饰键和组合使用修饰键实现不同的功能

如果大家使用过搜狗输入法、百度输入法之类的第三方输入法应该知道可以单击 ? Shift 来切换中英文模式。这就是一个典型的第 III 类按键活用为 I 类按键的例子

下面我通过┅个 Karabiner 的配置实例来讲解如何实现双重修饰键行为

还记得我在文章开头提到过的 Unix 键盘的布局吗?在 Unix 键盘上? Caps Lock 位置放的是 ? Control,这是基于效率考量的显而易见,? Caps Lock 的位置就在左手小指旁边是一个非常好的键位,却放了大写锁这样一个使用频率极低的功能非常不划算。倒昰 ? Control 的功能随时都有可能用到因为大量的组合键,尤其是 Linux 下和命令行程序中的快捷键都会用到 ? Control 键所以把这个位置分配给 ? Control 更加合理。

同时第一节中我也提到过有一个键非常想利用 ? Caps Lock 键的位置,那就是 Escape 键因此,利用双重修饰键行为结合 ? Control 键和 Escape 键的功能放置在 ? Caps Lock 键位仩的想法也就顺理成章了

用按键查看器检视按键行为

第一部分是单独敲击 ? Caps Lock 键的效果,可以看到 1-2 行修饰状态短暂的变化了一下随后 3-4 行觸发了一次单击 Escape 键的行为。

第二部分是组合敲击 ? Caps Lock + A 键的效果第 5 行修饰状态变化为 Ctrl,这是按下 ? Caps Lock 的一瞬间的事儿第 6 行在该修饰状态下,按下了字母 A 键7-8 行是释放按键。综合来看就是进行了一次 Ctrl-a 的逻辑操作

同样的道理,你可以把 ? Shift、? Control 等键位都进行相应的设置

现在问题來了!如果我想使用 ? Caps Lock 本身的大写锁功能怎么办?我的办法是双击左 ? Control 键触发大写锁我们来看看 Karabiner 的实现:

用按键查看器检视按键行为

1-4 行鈳以看出我们快速点击了左侧 ? Control 两次,然后第 5 行触发了一次大写锁同时,我们还可以观察到键盘上 ? Caps Lock 按键的指示灯亮了。再次双击左側 ? Control灯又熄灭了。实验成功

举一反三,大家可以为双击 ? Command、? Option、? Shift 等等设置不同的功能而且,左右两边还可以分开非常的强大!

非常遗憾,Sierra 用户可以使用的 Karabiner-Elements 暂时还无法做到本节所说的任何一个功能所以,我们不得不配合其他软件来曲线救国

水猫为了找寻替代的方案,花了不少的心思最终确立了两个软件 Keyboard Maestro(以下简称 KM)和 Hammerspoon(以下简称 HS)。

  • 不同于 Karabiner 直接作用于底层硬件不管是 KM 还是 HS,对于键位的修改邏辑层面都比较高利用的是 macOS 的 Carbon API,相当于接管快捷键所以使用起来没有 Karabiner 那么高的响应速度。不过延迟也很小基本没有感觉,误触发和鈈触发的情况十分少见;
  • 认真说起来HS 还是要比 KM 更加底层一点儿,效率也要高些;
  • HS 功能相对简单就是是通过脚本定义热键。KM 是键盘大师而且对得起这个名字,功能包罗万象改键只是其中的冰山一角,我们是用牛刀来杀鸡不过换句话来说,如果你在使用着强大的 KM可鉯顺带使用一下改键功能,相信 KM 的用户多少都知道怎么弄;
  • HS 涉及到编写 Lua 脚本语言;
  • 最后HS 是开源免费应用。KM 需要 36 美元购买一个授权 License

综上,我重点介绍利用 HS 来实现双重修饰键行为

通过官方的描述可以看出,其实我们主要是使用 Keyboard/mouse event 的交互功能好了,首先在 安装 HS

HS 安装好之后沒有任何主界面,只有一个 MenuBar 图标所有的设置都通过 Lua 脚本来实现的,你可以在 学习到更多关于 Lua 语言的知识今天我主要给大家讲解几个例孓就好了。

本节中我们想要「单击 ? Caps Lock 键触发 Escape 功能,长按时作为 ? Control 修饰键使用」现在我们看看如何用 HS 实现。

我们需要为 ? Caps Lock 键做一点准备笁作

  • 第一,在系统偏好设置中把 ? Caps Lock 恢复成默认功能;

我们来看看,脚本都做了些什么

  • 首先,我们定义了一个列表 Bindings 用来识别组合键這个列表其实就是整个主键盘区域,如果你还需要别的键可以自行添加;
  • 然后,我们生成了一个临时变量 tmp用来存储 F13 的键值,这只是一個中间键用于触发我们长按操作的;

保存上面的配置脚本,然后在 MenuBar 里单击 HS 的图标选择「Reload Config」,稍等一会儿改好的键位就生效了用 HS 改过嘚键盘行为,在 EventView 里面查看不到不过可以用 KeyCastr 这个软件检测到。你也可以直接操作快捷键来检测效果

善用 Hyper 键,避免键位冲突

前面给大家介紹了这么多改建的工具和方法主要是为了给大家引出 Hyper 键的概念。不知道大家有没有这样的感觉需要用到快捷键的软件越来越多,键盘仩的按键越来越不够使用有时候自己想设置一个全局的快捷键,要么和系统或者软件的某个快捷键冲突了要么就是实在没有什么意义特步不好记。如果你把修饰键设置多一点儿比如同时按下 ? Control + ? Option + ? Command 什么的,倒是不容易冲突了可是手又特别的别扭。Hyper 键就是一个别特好嘚解决方案

我们可以把键盘上的四个修饰键 ? Shift + ? Control + ? Option + ? Command 同时绑定在一个 Hyper 键上,我在按下 Hyper 键的同时就相当于同时按下了这四个修饰键,然後你就大可以为自己喜欢的全局快捷键设置各种 Hyper+key 这种既方便又好记的键位了在我的 Mac 上我把 Hyper 键绑定在了右侧的 ? Option 键上,结合第二节中的单擊触发 F12 键功能便可以把我前几节介绍的功能全部配合起来了。

我们先来看看 Karabiner 如何配置 Hyper 键其实非常简单,点按「Open private.xml」打开自定义改建设置嘚配置文档然后增加如下配置:

用按键查看器检视按键行为
  • 第一部分是我单独按下右侧 ? Option 键的效果,可以看到四个修饰状态都被短暂的觸发然后释放最后触发了一下 F12 键;
  • 第二部分我按下了 ? Option+A 键,可以看到A 键按下时,同时拥有 4 个修饰状态释放后也不会触发 F12 键。

下面就昰 Sierra 用户的曲线救国时间在没有 Karabiner 加持的情况下想要使用 Hyper 键确实要稍微麻烦一点,不过大体思路和我们在上一节中的双重修饰键行为是一致嘚

因为 HS 利用的 Carbon API 无法识别左右修饰键,照例我们得先把右侧 ? Option 键改成某个特殊的键,例如 F19然后打开 HS 的设置 init.lua 文件,添加如下配置脚本:

峩们来看看脚本都做了些什么。

  • 首先我们复用了上一节的列表 Bindings 用来识别组合键;
  • 然后,我们生成了一个临时变量 k用来存储 F14 的键值,這只是一个中间键用于触发 Hyper mode 的;

保存上面的配置脚本,然后在 MenuBar 里单击 HS 的图标选择「Reload Config」,稍等一会儿改好的键位就生效了

Hyper 键为我们操莋快捷键拓宽了道路,而各种各样的效率软件为我们指明了道路可以通达的方向KM 的使用教学我不想在这里赘述,我派已经有了很多优秀嘚文章水猫特别推荐一下 @Oscar Gong 的 ,深入浅出非常具有学习的价值。

善加利用 KM可以让我们把快捷键玩得很溜,这其中不得不说的是 KM 的快捷鍵冲突 palette 功能当 KM 绑定的快捷键冲突的时候,可以弹出一个很小的 palette 让你选择进一步的操作利用这特性我们可以绑定一些万用的快捷键。

我經常遇到这样的一种情况突然想新建一样东西,可能是一个 Note一张截图,一个屏幕录像一篇日记,一个 Bear 文档或者一篇 Markdown 等等这些 New 操作嘟有相似的逻辑,所以我把他们统统绑定在了一个快捷键 Hyper+N 下然后冲突 palette 会进一步询问我到底需要执行什么「新建操作」。

通过 Hyper 键和 KM 的联动任何情况下,我想新建一篇 Bear 文档都变得非常的优雅:

番外篇:如何使用粘滞键

最后我想以一个小技巧作为这篇玩转修饰键教程的结束——粘滞键。

粘滞键设计来帮助用户轻松输入修饰键的辅助功能特别是针对一些残障人士或者是当你不方便使用多根手指同时按下好几個修饰键时候。

  • 「系统偏好设置」-> 点按「辅助功能」-> 然后点按「键盘」

激活之后你可以听到清脆的提示音,现在多键的修饰键你可以通過依次键入的方式而非同时按下的方式来激活了。每次缓冲一个修饰键都会有提示音,并在右上角显示出来非常的方便。比方说如果我想用快捷键 Shift+Ctrl+(Opt)+Cmd+C 来激活中文文本的简繁转换我可以依次按下这几个键来触发:


好了,今天的「玩转修饰键」就介绍到这里文中的很多鼡法只是我一些粗浅的尝试,我想希望通过这样的介绍达到抛砖引玉的效果也希望大家在评论区给出更多精彩的可能!

我要回帖

更多关于 keyboard怎么用 的文章

 

随机推荐