[英]How can I keep modifier of hotkey active in AutoHotkey?
我正在使用的媒體鍵盤沒有完整的鍵,所以我試圖使用AutoHotkey映射替代品。 基本上,我想使用Alt Gr鍵和其他一些鍵來模擬丟失的鍵。 這就是我所做的:
<^>!,::send {Home}
<^>!.::send {End}
<^>![::send {PrintScreen}
<^>!]::send {Insert}
但是,如果我想做相當於Shift + Home (選擇所有文本到行的開頭),這不會像我希望的那樣工作。 我知道我可以在行的開頭放一個*
,這樣即使我按住Shift也會發送Home ,但問題是我想讓Shift鍵仍然處於活動狀態,這樣我才能得到相同的效果Shift + Home 。
同樣,如果我想要做的ALT + PRINT SCREEN然后抱着Alt鍵 ,同時按下Alt GR + [沒有收到預期的效果。
我假設我可以設置額外的規則來捕捉這些組合,但是肯定必須有一種方法讓AutoHotkey不會丟棄我在按下熱鍵時所持有的任何修飾符,以便我使用它的任何組合都可以工作?
編輯(2014-07-16):
這是我的腳本的最新版本,其中包含一些注釋,清楚地說明了我想要實現的目標。 除了最后一行之外,此腳本中的所有內容都有效。 出於某種原因,即使我正在嘗試發送Alt + PrtScn,它也只被視為PrtScn。
; Home ( by pressing AltGr + , )
<^>!,::send {Home}
; Shift + Home ( by pressing Shift + AltGr + , )
+<^>!,::send +{Home}
; End ( by pressing AltGr + . )
<^>!.::send {End}
; Shift + End ( by pressing Shift + AltGr + . )
+<^>!.::send +{End}
; Insert ( by pressing AltGr + [ )
<^>![::send {Insert}
; Shift + Insert ( by pressing Shift + AltGr + [ )
+<^>![::send +{Insert}
; PrtScn ( by pressing AltGr + ] )
<^>!]::send {PrintScreen}
; Alt + PrtScn ( by pressing LeftAlt + AltGr + ] )
<!<^>!]::send !{PrintScreen}
事實證明,由於AltGr本身實際上是Control和Right Alt的組合,我想用Autohotkey做的一些涉及AltGr鍵的組合是不可能的。 因此,並非所有修飾符都可以與該鍵一起使用,並且某些AutoHotkey命令在嘗試與AltGr一起使用時會產生意外/意外結果。
我用我的新鍵盤(英國版的Microsoft All-in-One媒體鍵盤)使用的腳本的最終版本如下:
; Set an initial state for the lock keys
SetCapsLockState, off
SetNumLockState, on
SetScrollLockState, off
; Home ( by pressing AltGr + , )
<^>!,::send {Home}
; Shift + Home ( by pressing Shift + AltGr + , )
+<^>!,::send +{Home}
; End ( by pressing AltGr + . )
<^>!.::send {End}
; Shift + End ( by pressing Shift + AltGr + . )
+<^>!.::send +{End}
; Insert ( by pressing AltGr + [ )
<^>![::send {Insert}
; Shift + Insert ( by pressing Shift + AltGr + [ )
+<^>![::send +{Insert}
; PrtScn ( by pressing AltGr + ] )
<^>!]::send {PrintScreen}
; Alt + PrtScn ( by pressing Alt + ] )
!]::send !{PrintScreen}
; Scroll Lock ( by pressing AltGr + \ )
<^>!\::send {ScrollLock}
; Pause/Break ( by pressing AltGr + p )
<^>!p::send {Pause}
; Win + Pause/Break ( by pressing Shift + Alt + p )
+!p::send #{Pause}
; Control + Pause/Break ( by pressing Shift + Ctrl + p )
+^p::send ^{CtrlBreak}
; Run Calculator ( by pressing AltGr + c )
<^>!c::Run Calc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.