首页 > 解决方案 > ; 作为新的修饰键

问题描述

我想;成为一个新的修饰键。以下工作几乎完美。

`;::
if GetKeyState("LShift", "P")
    Send `:
else
    Send `;
return

`; & x::
if GetKeyState("LShift", "P")
    ...
else
    ...
return

以下愿望清单中只有第 2 点不起作用。有人知道如何修复此代码吗?

  1. ;;单独按下时
  2. shift ;:单独按下时
  3. ;x成为第二个...
  4. shift与成为第;一个x...

标签: autohotkeymodifier-key

解决方案


以下工作完美,但由于代码重复而代码难看。也许更简洁的代码是可能的。

started := 0
LShift & `;::
if started = 0
    started := A_TickCount
return
`;::
if started = 0
    started := A_TickCount
return

LShift & `; Up::
if A_TickCount - started < 500
    Send `:
started = 0
return

`; Up::
if A_TickCount - started < 500
    Send `;
started = 0
return

`; & x::
started = 0 ; <==== !
if GetKeyState("LShift", "P")
    ...
else
    ...
return

现在,只要与(无延迟)组合使用或按下超过半秒,该键;就可以用作修饰键。x延迟不是必须的,可以消除;它只是在那里防止将意外的修饰键误解为;. 冒号:也可以正常工作。


推荐阅读