使用AutoHotKey使用时间禁用Fn + F4

时间:2015-07-25 14:28:28

标签: keyboard-shortcuts autohotkey

我想使用AutoHotKey在0.05秒内按下Alt + F4时禁用它们。否则,我希望它能正常工作。

说明:
我的Lenovo Yoga 2 Pro具有功能键的备用功能 例如:" F3"映射到音量+," F4"映射到"关闭活动窗口"

有两种模式:

  • 老式模式:F3只作为F3,你必须按住Fn + F3键激活音量+
  • 新学校模式:按F3激活音量+,Fn + F3将执行正常F3。

在任何一种模式下,当我使用音量+时,我都会冒着关闭活动窗口的风险,因为它们太近了,这是非常有问题的。请注意,AutoHotKey 无法检测到Fn键,因此我无法使用它来解决我的问题。

下图显示了AutoHotKey密钥历史记录工具。在New-school模式中,我键入了#34; asdf"然后按下" F4"这是"关闭活动窗口"。您可以看到这实际上模拟了ALT + F4,并且ALT和F4之间的持续时间非常短......

AutoHotKey Key history

我认为我可以禁用此功能"关闭活动窗口"当两个键之间的间隔小于0.05秒时,让AutoHotKey中断ALT + F4组合。可以这样做吗?

编辑: 为了回应Blauhirn的代码,这里是原始的,编辑的等待时间更短(从50到10)。它大部分时间都在 ,但窗口的1/10仍然是:

~alt::
hotkey, alt, off
hotkey, !F4, doNothing, on
sleep, 10
hotkey, !F4, doNothing, off
while(getKeyState("alt"))
    sleep, 1
hotkey, alt, on
return

doNothing:
return

以下是我认为可以通过在"关闭活动窗口"时发送第二个Alt来解决我的焦点问题的更改。被发现:

doNothing:
send {LAlt}
return

但是,不会发送第二个Alt。它是在延迟超过40ish时发送的,但是我发现它太长了,反过来又干扰了我手动使用Alt + F4。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用

F4::return

?也许这会覆盖联想对 F4

的行动

除此之外,以下是我能想到的两种方法:

  1. 默认禁用 ALT + F4 标准获胜热键。为延迟的 F4

    添加自定义热键
    !F4::   ; by default:
    doNothing:  ; this is a label (see GoSub)
    return  ; == do nothing
    
    ~alt::  ; alt was pressed
        sleep, 50   ; wait 50 milliseconds
        if(!getKeyState("alt")) ; if alt is NOT pressed down anymore, exit
            return
        else    ; (else is actually unnecessary here)
            hotkey, !F4, close  ; Add new AltF4-hotkey
    return
    
    close:
        winclose, A ; close the Active window
    return
    
    ~alt up::   ; alt is being released
        hotkey, !F4, doNothing  ; remove the new AltF4 hotkey and go back to custom standard behaviour: do nothing.
    return
    
      

    它仍会触发Alt,它通常会将我留在活动窗口(文件,编辑,视图等)的菜单中,或者如果在textarea中输入(例如这样),它将删除键入焦点。

    好的,是的。如果您决定保留联想钥匙,我认为没有办法阻止它。如你所知,再次发送 ALT 可以解决问题

  2. 在按下 ALT 后使用Input。只要使用Input选项,V就会阻止用户输入一段时间。

  3. (3.停用Lenovo Yoga 2 Pro特殊键。如果您需要 F3 功能,可以在AutoHotkey中执行此操作,例如使用send {volume_up}