代码之家  ›  专栏  ›  技术社区  ›  Ooker

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

  •  0
  • Ooker  · 技术社区  · 6 年前

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

    Capslock::Ctrl
    #Capslock::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 
    
    3 回复  |  直到 4 年前
        1
  •  1
  •   johnlee    6 年前

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

    请尝试以下操作:

    Capslock::SendInput {Ctrl Down}
    Capslock Up::SendInput {Ctrl Up}
    #Capslock::Capslock
    
        2
  •  1
  •   johnlee    6 年前

    回答:

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

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

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

    *Capslock::SendInput {Blind}{Ctrl Down}
    *Capslock Up::SendInput {Blind}{Ctrl Up}
    

    但是,这个 可以 干扰 #Capslock:: 条目取决于上下文。

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

    编辑:

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

    1. 你看到3了吗 CapsLock 条目后跟2 Control 中间的那个?我想这就是脚本不知何故“错过”按键事件的原因,当脚本本身忙于做其他事情,或者由于其他占用CPU的任务,操作系统没有给脚本足够的时间片时,就会发生这种情况。
    2. 我映射了一个不常用的键来修改和映射 ,则, ,则, ,则, J L 向上的 ,则, 向下 ,则, 左边 正当 ,有时同样的事情也会发生。比如,如果我按住一个组合一段时间,比如说,向上移动100多行,它会留下一个意想不到的 i 在中间不总是,但是 有时
    3. 尽管如此,使用 Process Priority,, A 在脚本的顶部 帮助,使故障发生的频率大大降低。
        3
  •  0
  •   Community CDub    4 年前

    如中所述 the answer of johnlee ,可能是因为

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

    所以我无能为力。所以我的解决方案是

    #Space::Capslock

    使用 Capslock::Ctrl 优于 Capslock::SendInput {Blind}{Ctrl Down} 因为它没有激活 Shift+Ctrl 什么时候 转移 首先按下。

    推荐文章