Windows 7 如何在无意识激活Capslock模式的情况下交换Capslock和Ctrl?

Windows 7 如何在无意识激活Capslock模式的情况下交换Capslock和Ctrl?,windows-7,autohotkey,ctrl,capslock,Windows 7,Autohotkey,Ctrl,Capslock,我有一个简单的自动热键脚本: Capslock::Ctrl #Capslock::Capslock 关键是,有时capslock模式会被激活,即使我只想让它作为Ctrl键运行,但我无法让它停止。唯一的方法是暂停脚本,修复它,然后重新激活它 我如何才能使其按预期工作 关键历史 代码中一个值得注意的问题是,Ctrl是一个修改键,而Capslock不是,这将产生意想不到的结果,包括Roman所描述的结果 请尝试以下方法: Capslock::SendInput {Ctrl Down} Capsl

我有一个简单的自动热键脚本:

Capslock::Ctrl
#Capslock::Capslock 
关键是,有时capslock模式会被激活,即使我只想让它作为Ctrl键运行,但我无法让它停止。唯一的方法是暂停脚本,修复它,然后重新激活它

我如何才能使其按预期工作


关键历史
代码中一个值得注意的问题是,
Ctrl
是一个修改键,而
Capslock
不是,这将产生意想不到的结果,包括Roman所描述的结果

请尝试以下方法:

Capslock::SendInput {Ctrl Down}
Capslock Up::SendInput {Ctrl Up}
#Capslock::Capslock

代码中一个值得注意的问题是,
Ctrl
是一个修改键,而
Capslock
不是,这将产生意想不到的结果,包括Roman所描述的结果

请尝试以下方法:

Capslock::SendInput {Ctrl Down}
Capslock Up::SendInput {Ctrl Up}
#Capslock::Capslock
答复:


为什么先按Shift+Caps(
Shift
)会激活capslock模式

因为从技术上讲,
+Capslock
是另一个热键,您可能希望通过添加另一个条目来分配另一个任务,
+Capslock::
,因此默认情况下,
Capslock::
不会捕获该热键

要捕获所有组合而不为每个组合添加单独的条目,请尝试:

*Capslock::SendInput {Blind}{Ctrl Down}
*Capslock Up::SendInput {Blind}{Ctrl Up}
但是,这可能会干扰
#Capslock::
条目,具体取决于上下文

所以,指定所有可能的组合是安全的,尽管它看起来有点太复杂甚至丑陋

编辑:

关于您添加的关键历史记录

  • 你看到3代码> CAPSBROCK < /代码>条目后面只有2个代码>控制< /代码>中间的那些?我猜这就是脚本不知何故“错过”按键事件的原因,当脚本本身忙于做其他事情时,或者由于占用CPU的其他任务,操作系统没有给脚本提供足够的时间片时,就会发生这种情况
  • 我映射了一个不常使用的键来修改I、J和L,并将其映射到上、下、左和右,有时也会发生同样的事情。比如,如果我按压并组合一段时间,比如说,加上100行,它会在中间留下一个意想不到的<代码> i <代码>。不总是,但有时
  • 尽管如此,使用
    进程优先级,脚本顶部的一个
    确实有帮助,使故障发生的频率大大降低
  • 答复:


    为什么先按Shift+Caps(
    Shift
    )会激活capslock模式

    因为从技术上讲,
    +Capslock
    是另一个热键,您可能希望通过添加另一个条目来分配另一个任务,
    +Capslock::
    ,因此默认情况下,
    Capslock::
    不会捕获该热键

    要捕获所有组合而不为每个组合添加单独的条目,请尝试:

    *Capslock::SendInput {Blind}{Ctrl Down}
    *Capslock Up::SendInput {Blind}{Ctrl Up}
    
    但是,这可能会干扰
    #Capslock::
    条目,具体取决于上下文

    所以,指定所有可能的组合是安全的,尽管它看起来有点太复杂甚至丑陋

    编辑:

    关于您添加的关键历史记录

  • 你看到3代码> CAPSBROCK < /代码>条目后面只有2个代码>控制< /代码>中间的那些?我猜这就是脚本不知何故“错过”按键事件的原因,当脚本本身忙于做其他事情时,或者由于占用CPU的其他任务,操作系统没有给脚本提供足够的时间片时,就会发生这种情况
  • 我映射了一个不常使用的键来修改I、J和L,并将其映射到上、下、左和右,有时也会发生同样的事情。比如,如果我按压并组合一段时间,比如说,加上100行,它会在中间留下一个意想不到的<代码> i <代码>。不总是,但有时
  • 尽管如此,使用
    进程优先级,脚本顶部的一个
    确实有帮助,使故障发生的频率大大降低
  • 正如中所说,这可能是因为

    脚本本身忙于做其他事情,或者由于占用CPU的其他任务,操作系统没有为脚本提供足够的时间片

    所以我也无能为力。所以我的解决办法是

    #空格::Capslock
    使用
    Capslock::Ctrl
    优于
    Capslock::SendInput{Blind}{Ctrl Down}
    ,因为它在第一次按下Shift时不会激活Shift+Ctrl。

    如中所述,可能是因为

    脚本本身忙于做其他事情,或者由于占用CPU的其他任务,操作系统没有为脚本提供足够的时间片

    所以我也无能为力。所以我的解决办法是

    #空格::Capslock

    使用
    Capslock::Ctrl
    比使用
    Capslock::SendInput{Blind}{Ctrl Down}
    更好,因为在第一次按下Shift时,它不会激活Shift+Ctrl。

    我尝试过,除了按Windows键加上Capslock时,我没有让Capslock激活一次。但是,当我按住capslock几秒钟时,我确实收到了关于短时间内收到大量热键并检查#MaxHotkeysPerInterval的警告。我尝试了一下,但除了按Windows键和capslock时,我没有让capslock激活一次。但是,当我按住capslock几秒钟时,我确实收到了关于短时间内收到大量热键并检查#MaxHotkeysPerInterval的警告。为什么按
    Shift+Caps
    Shift
    首先)会激活capslock模式?为什么按
    Shift+Caps
    Shift
    首先)会激活Caps模式激活capslock模式?这种情况再次发生。你知道为什么吗?我无法复制。您可以通过双击任务栏图标并按ctrl+H查看键历史记录来查看它。如果所有其他操作都失败,请添加一个条目
    +Capslock::
    。因此,避免出现故障的唯一方法是提高脚本的优先级?我们为什么不把它设为最高优先级呢?一般来说,您不希望将任何用户线程的优先级设置为高于正常值的任何值,这可能会破坏