如何在不意外激活大写锁定模式的情况下交换 Capslock 和 Ctrl?
How to swap Capslock and Ctrl without having capslock mode activated unintentionally?
我有一个简单的 AutoHotKey 脚本:
Capslock::Ctrl
#Capslock::Capslock
关键是,偶尔会激活大写锁定模式,即使我只希望它起到 Ctrl 的作用,但我无法让它停止。唯一的方法是暂停脚本,修复它,然后重新激活它。
我怎样才能让它按预期工作?
密钥历史记录
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.06 CapsLock
14 03A h d 0.03 CapsLock
14 03A h d 0.03 CapsLock
11 01D i d 0.03 Control
11 01D i d 0.00 Control
14 03A h d 0.00 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h u 0.03 CapsLock
11 01D i u 0.00 Control
您的代码的一个值得注意的问题是 Ctrl
是修饰键而 Capslock
不是,这会产生意想不到的结果,包括 Roman 所描述的结果。
试试这个:
Capslock::SendInput {Ctrl Down}
Capslock Up::SendInput {Ctrl Up}
#Capslock::Capslock
回答:
Why does pressing Shift + Caps
(Shift
first) activate the capslock mode?
因为 +Capslock
在技术上是另一个热键,您可能希望通过添加另一个条目 +Capslock::
来分配另一个任务,因此默认情况下不会被 Capslock::
捕获。
要捕获所有组合而不为每个组合添加单独的条目,请尝试:
*Capslock::SendInput {Blind}{Ctrl Down}
*Capslock Up::SendInput {Blind}{Ctrl Up}
但是,此 可能会 干扰 #Capslock::
条目,具体取决于上下文。
因此,指定所有可能的组合是安全的,尽管它看起来有点过于复杂甚至难看。
编辑:
关于您添加的密钥历史,
- 您看到 3 个
CapsLock
条目后面只有 2 个 Control
条目在中间吗?我想这就是脚本以某种方式 'missed' 按键事件的地方,当脚本本身太忙于做其他事情或者 OS 由于其他任务占用而没有给脚本足够的时间片时,就会发生这种情况CPU.
- 我映射了一个不常用的键来修改和映射I,,,J 和 L 到 Up、Down、Left 对,有时也会发生同样的事情。就像我按住一个组合一段时间,比如说,上升 100 多行,它会在中间留下意想不到的
i
。不总是,但有时。
- 尽管如此,在脚本顶部使用
Process Priority,, A
确实 有帮助,使故障发生的频率大大降低。
如中所述,可能是因为
the script itself is too busy doing something else or the OS is not giving enough time slices to the script due to other tasks hogging the CPU
所以我无能为力。所以我的解决方案是
#Space::Capslock
使用 Capslock::Ctrl
优于 Capslock::SendInput {Blind}{Ctrl Down}
,因为当 Shift 时,它不会激活 Shift + Ctrl先按下。
我有一个简单的 AutoHotKey 脚本:
Capslock::Ctrl
#Capslock::Capslock
关键是,偶尔会激活大写锁定模式,即使我只希望它起到 Ctrl 的作用,但我无法让它停止。唯一的方法是暂停脚本,修复它,然后重新激活它。
我怎样才能让它按预期工作?
密钥历史记录
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.06 CapsLock
14 03A h d 0.03 CapsLock
14 03A h d 0.03 CapsLock
11 01D i d 0.03 Control
11 01D i d 0.00 Control
14 03A h d 0.00 CapsLock
11 01D i d 0.00 Control
14 03A h d 0.03 CapsLock
11 01D i d 0.00 Control
14 03A h u 0.03 CapsLock
11 01D i u 0.00 Control
您的代码的一个值得注意的问题是 Ctrl
是修饰键而 Capslock
不是,这会产生意想不到的结果,包括 Roman 所描述的结果。
试试这个:
Capslock::SendInput {Ctrl Down}
Capslock Up::SendInput {Ctrl Up}
#Capslock::Capslock
回答:
Why does pressing
Shift + Caps
(Shift
first) activate the capslock mode?
因为 +Capslock
在技术上是另一个热键,您可能希望通过添加另一个条目 +Capslock::
来分配另一个任务,因此默认情况下不会被 Capslock::
捕获。
要捕获所有组合而不为每个组合添加单独的条目,请尝试:
*Capslock::SendInput {Blind}{Ctrl Down}
*Capslock Up::SendInput {Blind}{Ctrl Up}
但是,此 可能会 干扰 #Capslock::
条目,具体取决于上下文。
因此,指定所有可能的组合是安全的,尽管它看起来有点过于复杂甚至难看。
编辑:
关于您添加的密钥历史,
- 您看到 3 个
CapsLock
条目后面只有 2 个Control
条目在中间吗?我想这就是脚本以某种方式 'missed' 按键事件的地方,当脚本本身太忙于做其他事情或者 OS 由于其他任务占用而没有给脚本足够的时间片时,就会发生这种情况CPU. - 我映射了一个不常用的键来修改和映射I,,,J 和 L 到 Up、Down、Left 对,有时也会发生同样的事情。就像我按住一个组合一段时间,比如说,上升 100 多行,它会在中间留下意想不到的
i
。不总是,但有时。 - 尽管如此,在脚本顶部使用
Process Priority,, A
确实 有帮助,使故障发生的频率大大降低。
如
the script itself is too busy doing something else or the OS is not giving enough time slices to the script due to other tasks hogging the CPU
所以我无能为力。所以我的解决方案是
#Space::Capslock
使用 Capslock::Ctrl
优于 Capslock::SendInput {Blind}{Ctrl Down}
,因为当 Shift 时,它不会激活 Shift + Ctrl先按下。