標籤:

【熱鍵】組合鍵與序列鍵

作者:amnesiac 首發:官方論壇之中文版

導言:開篇三板斧居然沒有實用的代碼,有些朋友可能失望了。您已經有了網,我所說的是捕魚之法,捕到什麼就看自己了。 示例以簡單易懂優先。

在系統中熱鍵是一種有限資源,要讓熱鍵熱鍵的高效真正為我們所用,可能需要進行多方面的思考和操作,例如對熱鍵進行規劃、對需求分類,以最方便的按鍵實現最需要熱鍵實現的功能。舒適的按鍵及組合更是稀缺,如何利用這些按鍵實現更多常用操作呢?

一、組合鍵

  • 修飾鍵符號

#n::WinMinimize, A ; 最小化活動窗口。

這個組合鍵中,# 是修飾鍵,表示 Windows 鍵。除了這個外,其他修飾鍵還有 ^(表示 Ctrl 鍵)、+(表示 Shift 鍵)、!(表示 Alt 鍵)。這四個修飾鍵有何共同點?它們都使用單個符號表示(方便熱鍵編寫),且這幾個符號都是上檔字元(下檔字元表示自身按鍵)。

這四個修飾鍵本身還可組合,可增加舒適按鍵組合的數量。對於目標操作,一般建議有某種暗示含義的行為,如 Windows 鍵,我們會想起什麼?除了系統功能,一般會想到窗口了,而在窗口的系統菜單中,n 就是那個快捷鍵,上面這個例子記憶成本(覆蓋系統原熱鍵時建議考慮這點)接近於零。

^+n::Run, Notepad.exe ; 打開記事本。

它們構成的組合鍵一般單手或左右手操作都比較方便,應優先考慮。

  • 自定義組合鍵

僅有四個修飾鍵是不夠的:一方面很多修飾鍵組合已被利用,第二有些組合用起來也麻煩,如包含了三個修飾鍵的組合鍵。不過 AutoHotkey 把修飾鍵的範圍從這四個擴大到了幾乎每個按鍵:

a & k::MsgBox 您在按住 a 時按下了 k 鍵。

這裡字母 a 成了修飾鍵,這個組合相對而言還是較為方便的。不過成為修飾鍵後單獨按 a 則不再會輸入 a 了,怎麼辦?

a::Send, a ; 發送模擬按鍵 a。

這樣 a 還是 a,不會影響我們的輸入,儘管與原來有細微差別(在彈起時觸發)。

  • 按鍵修飾符

在實際情況中,通常需要對熱鍵進行某種限制,例如上面的熱鍵 a,由於發送的模擬按鍵 a 還會觸發這個熱鍵,這樣後果可能很嚴重。為了避免這種情況:

$a::Send, a ; 發送模擬按鍵 a。

$ 表示使用鉤子創建這個熱鍵,這樣避免了循環激發(上面的例子有人實際操作了嗎)。更多修飾符請參閱幫助。

二、序列鍵

::btw::by the way ; 輸入 btw 後替換為 by the way。

依次按下 b、t、w 三個按鍵後,輸入了 by the way。當然,實際上還需要個終止符(如空格)才行,不過也可避免:

:*:r@::rhong@somewhere.com ; 輸入 r@ 後自動替換為郵件地址。

這裡的選項在第一對引號的兩個中間,更多選項請參閱幫助。這裡的熱字串實現了自動替換,實際中可用於擴展縮寫、糾正拼寫錯誤等。不過,實際上熱字串還可以執行命令:

::btw::MsgBox, 您剛剛輸入了「btw」。return

通過序列鍵我們又多了許多熱鍵的選擇,尤其是常用且方便的字母鍵。

三、原理

每一次按鍵,在系統中包含了兩次的按鍵事件:

紅色背景區域的內容表示我按了一次 h 鍵:先按下,後鬆開。為了方便,暫且表示為 {h down}、{h up}。這說明什麼?

在組合鍵 a & k:: 中,可以表示為:{a down}{k down}{k up}{a up}

而序列鍵 ::ak:: 中,可以表示為:{a down}{a up}{k down}{k up}

所以序列鍵的含義是,按順序按其中的按鍵表示的熱鍵。所以儘管熱鍵和熱字串在語法形式上有所區別,實際上原理類似的,可統一理解。

而且,一個按鍵有兩個事件,那麼兩個按鍵能實現多少種熱鍵呢?動手排列組合吧(註:一個按鍵的按下事件總是在彈起事件之前)。如果對這方面有極大興趣,請搜索「小仙並擊」,這裡不進一步引申。

2016-1-30補充:在熱鍵的雙冒號前和熱字串的雙冒號對,其中的內容是以字元表示的按鍵,所以不能使用類似中文這樣的字元。


推薦閱讀:

[基礎] AHK 中 % 符號的用法
[基礎] AHK 中標籤和函數的用法
用AutoHotkey(AHK) 使用滑鼠手勢在win10下快速切換虛擬桌面?
如何藉助Autohotkey使total commander在單雙窗口間切換?

TAG:AutoHotkey |