【问题标题】:Prevent double click of keyboard key with AutoHotkey使用 AutoHotkey 防止双击键盘键
【发布时间】:2013-10-03 00:55:49
【问题描述】:

我每天都使用一个应用程序来监听控制键的双击。它还将另一个功能键映射到单击控制键,并且在应用程序中无法阻止或重新映射一个或其他功能。

我想做的是使用 AutoHotkey 来防止应用程序响应双击控制。

如果在两个控件 keydown 事件之间插入鼠标移动,应用程序将不会以默认的双击行为响应。

我有什么办法可以编写一个 AutoHotkey 脚本来监听控制键的两次连续点击,并在第二次控制点击之前插入一个良性事件(例如鼠标事件)?

我已经尝试了以下代码,但第二个 LControl 仍然通过。有没有办法阻止第二个 LControl 通过?

~LControl::
if (A_PriorHotkey <> "~LControl" or A_TimeSincePriorHotkey > 400)
{
    ; Too much time between presses, so this isn't a double-press.
    SendInput {LControl}
    return
}
MouseMove 5,5,10,R
;SendInput {LControl}
return

【问题讨论】:

  • 您可以通过定义“超时”来检测双击(通常 400 毫秒较好)。然后,您可以在上一次按键发生时检查所需键的每次按键。如果在时间范围内,则为双击。
  • 到你的新代码:看看hotkey docs。波浪号修饰符~ 将始终触发键的本机功能,也就是说,CTRL 按键将按定义滴入!去掉修饰符,LControl:: 应该没问题。

标签: autohotkey


【解决方案1】:

这是我用来在 400 毫秒内快速按下左或右控制键时触发动作的方法:

~Control Up::
  if ctrl_presses > 0
    ctrl_presses += 1
  else {
    ctrl_presses = 1
    SetTimer, CtrlPress, 400
  }
return

CtrlPress:
  SetTimer, CtrlPress, off
  if ctrl_presses = 2
    ; DO ACTION HERE
  ctrl_presses = 0
return

使用此方法,您可以轻松触发操作,不仅是双击,甚至更多。

【讨论】:

  • 这不会阻止双击。
猜你喜欢
  • 2020-05-22
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多