繁体   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