Mac OS ,全键盘工作,全鼠标浏览
KKK 低效率三角
Windows PC 上的鼠标坏掉,我都不会皱下眉头。为了用键盘完成操作,我甚至不惜打开数字键盘模拟鼠标的功能。这样做,不一定总是最快。但是,却避免了“切换”。
键盘的左右两边,加上鼠标,一共是三个部分。他们各需一只手操作。
人有两只手,各控制三者之二没问题。但是,如果尝试同时控制这三个部分,必然会导致手在三者之间的“切换”。从键盘到鼠标,或者反之。移动距离是个问题。另外,还有从新定位的烦恼:“切换”之初的几个操作,你并不非很确定。这些,都导致低效率。
这就是人机 UI 上的新定律: KKK 低效率三角。
很多高效率的计算机控制方式,都在避免切换:
记忆快捷键避免了从键盘切换到鼠标。
对操控要求极高 Counter-Strike 则反之,把键盘控制键集于左手。这样,有效地避免了右手从鼠标切换回键盘。
全键盘工作
键盘可以以非常高效的编辑文本。所以,如果你的工作是写设计文档,编码,或者写 Blog , Email ,完全可以尝试全键盘操作。为此,你需要以下4个东西。
1 快捷键
快捷键无疑是通向全键盘操作的第一步。首先在系统设置里面有快捷键一项,这里你能看到所有系统自带的快捷键。
Tips:
Mac OS 自带的快捷键设置功能,可以自定义任何一个菜单项目为快捷键盘。
2 Key Cue
记住这么些快捷键是个挑战。好在有 Key Cue 。按住 Command ,他会显示出当前界面可以使用的所有快捷键。包括你自己定义的。
3 QuickSilver
记忆太多快捷键未必是愉快地经历。察看 Key Cue 则降低效率。好在 Mac 上还有 QuickSilver 。他利用搜索的方式整合你电脑上的功能。
OS 上的一个操作,一般是三段式的: 对象 + 命令 + 参数 。
与此对应 QuickSilver 有三行。 QS 上,所有可能的 “对象”,”命令”,”参数”,都是自动过滤的。”对象”选择一个 TXT 文件,那么”命令”中就不会出现” RUN “。
同时,所有可能的 “对象”,”命令”,”参数”,都是可以搜索的。”对象”这栏打 tnr ,他可以搜索到 TweetNowReading.script 。同样,”命令”这栏打 o ,他可以搜索到 Open With…
Tips:
搜索不是 QS 确定这三个栏目的唯一方式。比如 COMMAND G 可以把当前 Finder 中选中的文件作为操作对象。
Tips:
关于对象的”命令”,利用 SHOW CONTENTS MENU/SHOW ACTION MENU/SHOW MENU ,可以让你忘掉鼠标右键,或者菜单栏。
我们都熟悉程序的名字,Safari ,Mail ,iPhoto 。而命令则是标准的英语。所以快速调用的方式,只需要很少的学习和记忆,却能带来更多,更强大的功能。
KKK Says:
系统自带的 Sportlight 也有搜索功能,但是仅仅限于 “对象” 的搜索。 Google Quick Search Box 也是一个不错的选择。他同样可以支持调用 AppleScript 。
QS 还有更多功能,记个 Memo 查个辞典,或者自定义 Trigger 之类的。慢慢挖掘。
4 AppleScript
快捷键盘和 QS 几乎可以用键盘完成一切针对单一对象的操作,比如打开 Xcode 。但是如果是跨程序的一组操作的集合,就有些力不从心了。
比如从 Safari 拿到 URL 和标题,然后缩短其中的 URL ,再把他们放到 Tweetie 的发推窗口中。
不过好在我们有 AppleScript 。他可以把上面的这句话,翻译为一段脚本。然后,当你看到有趣内容的时候,只要用 QS 呼出一个 Script 来执行就好了。
Code: property aWebPageTitle : "" property aURL : "" tell application "Safari" set aWebPageTitle to name of front document as string set aURL to URL of front document as string set aURL to "http://tinyurl.com/api-create.php?url=" & aURL set aURL to do shell script "curl " & aURL do JavaScript "window.open('tweetie:RT: " & aWebPageTitle & " " & aURL & " ','TTMP');" in document 1 do JavaScript "window.close('TTMP');" in document 1 end tell
KKK Says:通过定义,配置,或者插件,单独使用 QS 也能完成这些功能。但是 AppleScript 可以把调用和命令分离。命令就是命令,无论用什么方式调用。如果你想改变一个命令的方式,那么改一下脚本就好了。是的,不要忘了那条经典的 ROR 原则 DRY : Don’t Repeat Yourself 。
全鼠标浏览
网络浏览有特殊性:超链接。他出现在页面的各种地方,数量又多。 Tab 切换会让人吐血。这时非要用键盘,多少有些自残的感觉。所以浏览,最好是以鼠标为中心操作。
KKK Says:其实并不是真正的完全使用鼠标。左手控制键盘的左边部分,右手控制触摸板。类似玩 CS 时的感觉。
1 系统自带多点触控
Mac OS 自带的触摸板本身就提供丰富的设置。向下翻页,调整文字大小,用多点触控,都方便的不能再方便了。
2 可脚本控制的 Safari
Mac OS 上最优秀的浏览器,是 Safari 。不仅仅因为其优秀的 Webkit 内核,或者优雅的界面,或者,完善相应多点触控响应。最重要的,更好的支持 AppleScript 。
Safari 的功能的确不如 Firefox 或者 Chrome 。但是,你可以给她轻松给编写插件。拿到当前页面的情报发推,是一个例子。
切换标签?当然可以。
Code: tell application "Safari" to activate tell application "System Events" tell process "Safari" click menu item "Select Next Tab" of menu "Window" of menu bar 1 end tell end tell
关闭窗口?不成问题。
Code: tell application "Safari" to activate tell application "System Events" tell process "Safari" click menu item "Close Tab" of menu "File" of menu bar 1 end tell end tell
复杂些的,选中文字然后 Google 呢?
一般的操作是 1选中文字 2COPY 3定位GOOGLE搜索框 4粘贴 5回车。然后你发现,没有新开窗口,当前的文章被覆盖了!
或者可以改进一下:选中文字, Shift + Command + L 。但是没有新 Tab ,而是一个新窗口。而且,Shift + Command + L 不是左手可以控制的。你的右手要经历一次从鼠标到键盘的切换。
这固然是 Safari 设计的考虑不周之处,另一方面,也是你读不懂佳人芳心。
3 xGesture
继续味如嚼蜡的 AppleScript 之前,先看看个有意思的东西 xGesture 。
用过 FireFox 手势插件 All-in-One Gestures 的同学,应该很容易明白这是个什么东西:一个系统级别的手势插件。通过某种手势执行特定功能。比如调大系统音量之类的。
不过 xGesture 最精彩之处是,和 QS 一样,他也可以调用 AppleScript 。换句话说,你可以用鼠标手势,调用一个自己定义的操作集合。
把上面向后切换标签的脚本,定义在右划的手势上;向前切换呢?左划。关闭标签?这样,你就成功的把 Mac 上右手控制的快捷键,移动到了鼠标上。一切浏览操作,都可以通过键盘上的左手和触摸板上的右手配合完成。 KKK 低效率三角?不再出现。
选中文字 Google 怎么办?把下面的 AppleScript 定义在向上的手势上。现在只需要用鼠标选中文字,然后轻轻向上一划。
Code: tell application "Safari" set seletedTxt to (do JavaScript "(getSelection())" in document 1) set aURL to "http://www.google.co.jp/search?rls=en&q=" & seletedTxt & "&lr=&aq=f&oq=" make new tab at end of tabs of window 1 open location aURL end tell
局限性
完全不用键盘或者鼠标,其实要求有些过分了。但是相信,以上的各种技巧,可以有效减少你切换的频率。
而就工具而言, xGesture 的复杂度控制的正好。 QuickSilver 过于强大了。 AppleScript 同样有这个问题。我还有一个在 Youtube 下载视频的 Script ,可以完成工作,但已有些沉重了。相比之下, Firefox 下用 Greasemonkey 实现的扩展,则更加强大实用。
KKK Says:你也许注意到了, QS 那部分的 Tips 特别多。一个原因,就是它的内在逻辑并非特别统一。但是,那些 Tips 也非常有用。有点 Quick And Dirty 的感觉。
程序本身只会竭尽全力完成你交给他的任务,判断它的能力界限,约束或者放弃的智慧,只有你才拥有。上面的方法适合实现解决日常生活中频繁出现而步骤繁琐的小事情。更重型的操作,还是交给 Automator , Service ( Service 同样可以结合 AppleScript ) 或者其他专门的软件完成吧。
最后的话
无论是全键盘工作,还是全鼠标浏览,都是根据当前最主要的任务选择最适当的操控方式。然后,围绕这种操控方式拓展功能,同时,避免 KKK 低效率三角。
Mac 上优秀的第三方软件提供了丰富的调用手段。而 AppleScript 让简单却随心所欲的操控成为可能。
Mac OS 则为 AppleScript 提供的系统级别的支持。程序之间的交互没有问题。甚至, UNIX 传统的命令行( Shell ), Mac OS 现代的 GUI ( 原生 AppleScript ),浏览器脚本( Javascript )之间,都可以互联互通。这是管道的概念的进一步发挥。 Windows 在系统级别上,恐怕没有这种支持。
不过,相信上面实现的功能, Windows 一样可以做到,甚至更加出色。 而且 Windows 还有免费好用的 Writer 。接近全能的媒体播放器。现成的 COD6 。
普通用户会就此倒向 Bootcamp 吧。而你,如果写过 Shell 调过 Javascript ,也许应该探索一下 Mac OS X 华丽界面的背后。更 OO 的程序,模仿自然语言的脚本,超级管道。。。他们让 Mac OS 表现出一种追求实现优雅,胜过功能强大的理想主义。
类似小贝,下底传中,还要发型不乱。