簡體   English   中英

如何在AutoHotkey中保持熱鍵的修飾符有效?

[英]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}

使用{Blind}屬性將傳遞修飾鍵。

例如

<^>!,::send {Blind}{Home}

請參閱: 使用autohotkey中的鍵發送現有修飾符?

事實證明,由於AltGr本身實際上是ControlRight 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM