Autohotkey 如何在自动热键中保持热键修改器处于活动状态?

Autohotkey 如何在自动热键中保持热键修改器处于活动状态?,autohotkey,hotkeys,Autohotkey,Hotkeys,我使用的媒体键盘没有全套按键,所以我尝试使用自动热键来映射备选键。基本上,我想使用Alt Gr键和其他一些键来模拟缺少的键。这就是我所做的: <^>!,::send {Home} <^>!.::send {End} <^>![::send {PrintScreen} <^>!]::send {Insert} 使用{Blind}属性将传递修改器键 e、 g !,::发送{Blind}{Home} 请参阅:使用{Blind}属性将传递修改器键 e、

我使用的媒体键盘没有全套按键,所以我尝试使用自动热键来映射备选键。基本上,我想使用Alt Gr键和其他一些键来模拟缺少的键。这就是我所做的:

<^>!,::send {Home}
<^>!.::send {End}
<^>![::send {PrintScreen}
<^>!]::send {Insert}

使用{Blind}属性将传递修改器键

e、 g

!,::发送{Blind}{Home}

请参阅:

使用{Blind}属性将传递修改器键

e、 g

!,::发送{Blind}{Home}

请参阅:

事实证明,我想用自动热键进行的一些组合,包括AltGr键,是不可能的,因为AltGr本身实际上是Control和Right Alt的组合。因此,并非所有的修饰符都可以与该键一起使用,有些自动热键命令在尝试与AltGr一起使用时会产生不想要的/意外的结果

我在新键盘上使用的脚本的最终版本(Microsoft All-in-One Media键盘的英国版本)如下所示:

; 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
;设置锁钥匙的初始状态
SetCapsLockState,关闭
SetNumLockState,打开
设置CrollLockState,关闭
; 主页(按AltGr+,)
!,::发送{Home}
; Shift+Home(按Shift+AltGr+,)
+!,::发送+{Home}
; 结束(按AltGr+)
!.::发送{End}
; Shift+End(按Shift+AltGr+)
+!.::发送+{End}
; 插入(按AltGr+[)
![::发送{Insert}
;Shift+Insert(按Shift+AltGr+[)
+![::发送+{Insert}
;PrtScn(按AltGr+])
!]::发送{PrintScreen}
;Alt+PrtScn(按Alt+])
!]::发送!{PrintScreen}
; 滚动锁定(按AltGr+\)
!\::发送{ScrollLock}
; 暂停/中断(按AltGr+p)
!p::发送{暂停}
; 赢+暂停/中断(按Shift+Alt+p)
+!p::发送#{Pause}
; 控制+暂停/中断(按Shift+Ctrl+p)
+^p::发送^{CtrlBreak}
; 运行计算器(按AltGr+c)
!c::运行计算

事实证明,由于AltGr本身实际上是Control和Right Alt的组合,所以我想用Autohotkey进行的一些组合(包括AltGr键)是不可能的。因此,并非所有的修饰符都可以与该键一起使用,有些自动热键命令在尝试与AltGr一起使用时会产生不想要的/意外的结果

我在新键盘上使用的脚本的最终版本(Microsoft All-in-One Media键盘的英国版本)如下所示:

; 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
;设置锁钥匙的初始状态
SetCapsLockState,关闭
SetNumLockState,打开
设置CrollLockState,关闭
; 主页(按AltGr+,)
!,::发送{Home}
; Shift+Home(按Shift+AltGr+,)
+!,::发送+{Home}
; 结束(按AltGr+)
!.::发送{End}
; Shift+End(按Shift+AltGr+)
+!.::发送+{End}
; 插入(按AltGr+[)
![::发送{Insert}
;Shift+Insert(按Shift+AltGr+[)
+![::发送+{Insert}
;PrtScn(按AltGr+])
!]::发送{PrintScreen}
;Alt+PrtScn(按Alt+])
!]::发送!{PrintScreen}
; 滚动锁定(按AltGr+\)
!\::发送{ScrollLock}
; 暂停/中断(按AltGr+p)
!p::发送{暂停}
; 赢+暂停/中断(按Shift+Alt+p)
+!p::发送#{Pause}
; 控制+暂停/中断(按Shift+Ctrl+p)
+^p::发送^{CtrlBreak}
; 运行计算器(按AltGr+c)
!c::运行计算

那么您到底想重新映射什么
AltGr
+
Shift
+
=
Shift
+
Home
?如果你能明确指出你对给定输入的期望输出,那就太好了。我已经在原始帖子中添加了额外的信息。那么你到底想重新映射什么呢
AltGr
+
Shift
+
=
Shift
+
Home
?如果你能明确指出你对给定输入的期望输出,那就太好了。我已经在原始帖子中添加了额外的信息。我已经尝试过了,但不幸的是,一旦我添加了{Blind},热键就会完全停止工作,也就是说,无论我是否按住Shift键,按下这些键都不会起任何作用。也许{Blind}与AltGr不兼容?你是对的,因为你使用了AltGr键,这个修改键也会被发送,把其余的都搞糟了。另一种方法是为每个实例定义热键,例如!,::发送{Home}和!+,::发送+{Home}确实,谢谢,这是我已经做过的(请参阅我对原始帖子的最新更新)。我已经尝试过了,但不幸的是,一旦我添加了{Blind}它就会阻止热键完全工作,也就是说,无论我是否按住Shift键,按下这些键都没有任何作用。也许{Blind}与AltGr不兼容?你是对的,因为你使用了AltGr键,这个修改键也会被发送,把其余的都搞糟了。另一种方法是为每个实例定义热键,例如!,::发送{Home}和!+,::send+{Home}的确,谢谢,这是我已经做过的(请参阅我对原始帖子的最新更新)。
; 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