Karabiner 助力,讓你的鍵盤操作快人一步
Matrix 首頁推薦
Matrix是少數派的寫作社群,我們主張分享真實的產品體驗,有實用價值的經驗與思考。我們會不定期挑選 Matrix 最優質的文章,展示來自使用者的最真實的體驗和觀點。
文章代表作者個人觀點,少數派僅對標題和排版略作修改。
前言
Karabiner 全稱 Karabiner-Elements 1 ,是 macOS 上的一款功能強勁的改鍵工具。它可以將鍵盤上的按鍵對映成其他一個或多個按鍵組合。然而,Karabiner 使用 JSON 作為配置檔案,配置繁瑣且不易理解,給上手帶來了很高的門檻。
於是,有人專門為其製作了一個工具「Goku」,藉助 Goku 可以方便地為 Karabiner 進行配置。
準備工作:
- Karabiner-Elements 可以從 官網 進行下載
- Goku 使用 Homebrew 進行安裝:
brew install yqrashawn/goku/goku
- 在 Karabiner 中確保配置檔案 Profiles 選擇預設的 Default
- 前往
~/.config/
目錄,建立名為karabiner.edn
的 Goku 配置檔案 - 參考下文進行配置檔案的編輯,每次編輯完後在終端中執行
goku
使修改生效
將 Caps Lock 變為鍵盤功能的中樞
通常,我們將 ⌃Control + ⌥Option + ⇧Shift + ⌘Command
同時按下的組合稱為 Hyper 鍵。通常程式內建的快捷鍵不會預設這麼複雜的組合,因此使用 Hyper 鍵,能最大程度上避免與預設發生衝突。
大寫鎖定鍵 Caps Lock
位於鍵盤左側中間,用起來很順手,但我只用它切換輸入法,輸入大寫字母靠 ⇧shift
,因此這裡先對它下手,你也可以選擇其他順手且不常用的按鍵。
以下的 Goku 配置檔案 karabiner.edn
寫法,可以將大寫鎖定鍵修改為 Hyper 鍵,這時只需要按下這一個鍵,就等同於 ⌃Control + ⌥Option + ⇧Shift + ⌘Command
同時按下的效果。
{ :main [ {:des "caps_lock -> hyper" :rules [ [:##caps_lock :!CTOleft_shift] ]} ] }
然而,如果只是將 Caps Lock
轉化為 Hyper 鍵,它會失去本身切換輸入法的效果。幸好 Karabiner 支援在按鍵單獨按下與組合按下時,為觸發不同的效果。
以下寫法可以讓 Caps Lock
與其他鍵一同按下時觸發 Hyper 鍵效果,單獨按下時觸發 Control + Space
切換輸入法。
{ :main [ {:des "caps_lock -> Ctrl+space(alone) and caps_lock -> hyper" :rules [ [:##caps_lock :!CTOleft_shift nil {:alone :!Tspacebar}] ]} ] }
以下是一些常用按鍵在 Goku 中的簡化寫法:
;; ! | means mandatory - modifier(s) alone when pressend change behavior ;; # | means optional - modifiers are optional (but at least one necessary) ;; :!Ca is keycode :a and prefix a with !C ;; C | left_command ;; T | left_control ;; O | left_option ;; S | left_shift ;; F | fn ;; Q | right_command ;; W | right_control ;; E | right_option ;; R | right_shift ;; ## | optional any ;; !! | command + control + optional + shift (hyper)
要知道鍵盤上每個按鍵叫什麼名字,可以使用 Karabiner 配套的 Karabiner-EventViewer 進行檢視。
結合 Keyboard Maestro 實現快速搜尋
單靠 Karabiner 只能發揮其一半的功力,要想發揮其全部實力,還是要與 Keyboard Maestro 2 或是 Alfred 這些支援自動化的工具搭檔,才能強強聯合。這裡以 KM 為例,實現快速搜尋選中內容的效果。
在 KM 中建立如下圖的 Macro,為其指定 Hyper + S
的組合鍵,這樣只需要選中想搜尋的內容,按下快捷鍵即可使用 Google 進行搜尋。
同時,藉助 KM 獨特的衝突調色盤功能,當你為多個 Macro 設定了相同快捷鍵,按下快捷鍵後會觸發選擇介面,藉此只需記憶一個快捷鍵,便可觸發多種不同的搜尋功能。
Hyper + 字母快速切換程式
日常使用時,經常要在不同的應用間來回切換。 Command + Tab
雖然可行,但每次的應用順序不固定,還要找到想切換到的程式,甚至因此誕生了一些專門為切換應用而生的工具。利用 Karabiner 搭配 Keyboard Maestro,即可實現 Hyper + 字母
一鍵切換應用。
在 Keyboard Maestro 中新增 Macro, 選擇 Activate a Specific Application
,配置成下圖所示,便可以在啟用此 Macro 時切換到 Chrome。
這時,如果在 KM 中將 New Trigger 設定為按鍵的 Hyper + C
,就可以開始使用了。
但這畢竟是一篇介紹 Karabiner 的文章,因此我演示一下如何在 Karabiner 的配置檔案中,直接啟用特定的 Macro。
以下配置檔案可以實現 Hyper + C
切換到 Chrome 的效果。
{ :templates {:km "osascript -e 'tell application \"Keyboard Maestro Engine\" to do script \"%s\"'" } :main [ {:des "caps_lock -> Ctrl+space(alone) and caps_lock -> hyper" :rules [ [:##caps_lock :!CTOleft_shift nil {:alone :!Tspacebar}] [:!!c [:km "open: chrome"] ] ;;caps+c open Chrome ]} ] }
我在前面模板的基礎上增加了兩部分:
- 開頭利用
:templates
建立了一個名為:km
的指令碼,可以快速啟用 KM 中的 Macro - 在
:rules
中新增加了一行規則,:!!c
表示Hyper + C
的組合鍵 3 ,:km "open: chrome"
則表示呼叫前面建立的km
指令碼,並執行"open: chrome"
這個 Macro
進階,讓每個鍵都能成為修飾鍵
Hyper
鍵只有一顆,用久了總有鍵位衝突不夠用的那天,比如我既想用 S
鍵觸發 Search,又想用它啟用 Sorted 3。利用層(layer)的概念,可以讓鍵盤上的每個鍵都能成為獨一無二的修飾鍵。
所謂層,可以理解為按下某個鍵後,鍵盤上其他鍵的功能隨之發生變化,例如下圖就是按下 option
鍵後鍵盤的變化,我們可以稱之為「option 層」。
如下規則定義了一個稱為「semicolon-mode」的層,在這裡我將使用頻率較低的分號 ;
定義為觸發按鍵:
{ :templates {:km "osascript -e 'tell application \"Keyboard Maestro Engine\" to do script \"%s\"'" } :main [ {:des "This is the semicolon-mode" :rules [[:semicolon ["semicolon-mode" 1] nil {:afterup ["semicolon-mode" 0] :alone :semicolon}] [:hyphen [:km "insert: underline"] ["semicolon-mode" 1]] ]} ] }
-
:semicolon ["semicolon-mode" 1]
指按下分號「semicolon」後,將變數semicolon-mode
設定為 1,即進入「semicolon-mode」層 -
:afterup ["semicolon-mode" 0]
指鬆開分號後,將變數semicolon-mode
設定為 0,即退出「semicolon-mode」層 - 單獨按下依然為分號本身
:alone :semicolon
在 [:hyphen [:km "insert: underline"] ["semicolon-mode" 1]]
這裡,我定義了按下減號 -
,觸發 KM 中名為 "insert: underline"
的 Macro,輸出一個下劃線,這個規則只在 ["semicolon-mode" 1]
時(即按住分號時)才有效。
結語
花一些時間,折騰一點小東西,收穫一個沒多大用的成果,感到巨大的快樂。
這是我對摸魚的定義。摸魚摸得久了,總能折騰出些有意思的東西。現在我每天用這些快捷鍵輸入一些常用短語,切換程式或是快速搜尋,省下的時間可能沒有多少,但是有種莫名的快樂,我覺得這就足夠了。
- 一派 | 編輯部都用什麼 app 看天氣?
- 談談我的數字文具「盒」:如何圍繞 Mac 桌面構建簡易數字化工作流程
- 應用內瀏覽器瞞天過海,蘋果的隱私策略被 Instagram「扎」破了嗎?
- 綻放在桌面的英雄夢,6 寸美漫可動人偶入坑指南
- 基因組學資料科學雙專業學生拯救知識點記不住:本科生學習工作流
- 派評 | 近期值得關注的 App
- 一日一技 | 如何快速上手注音輸入法
- 不治之症如何治——聊聊癌症的來歷、治療和現狀
- App 1|DailyBeen 日記說:你的所有小事,都值得銘記
- 新玩意 116|少數派的作者們最近買了啥?
- 依然是最佳密碼管理器選擇之一,1Password 8 這次卻讓我有點失望
- 電增電的少數派,極氪 001 使用體驗分享
- 找到寫作者的位置:如何在滿足自身創作欲時也讓讀者滿意
- 少一點用車的煩惱,多一分出行的便利:MaaS 是什麼?
- iOS 16 Beta 5 中值得關注的新特性
- 一日一技 | 一個登錄檔鍵讓微軟停止歧視蘋果
- 派評 | 近期值得關注的 App
- Steam Deck 半月談:讓 Valve 再一次變酷
- 具透 | 更新幅度遠超預期——全面分析 iOS 16 版 Books 的新特性
- 多標籤頁瀏覽,如何才能遊刃有餘?