我想使用AutoHotKey在0.05秒内按下Alt + F4时禁用它们。否则,我希望它能正常工作。
说明:
我的Lenovo Yoga 2 Pro具有功能键的备用功能
例如:" F3"映射到音量+," F4"映射到"关闭活动窗口"
有两种模式:
在任何一种模式下,当我使用音量+时,我都会冒着关闭活动窗口的风险,因为它们太近了,这是非常有问题的。请注意,AutoHotKey 无法检测到Fn键,因此我无法使用它来解决我的问题。
下图显示了AutoHotKey密钥历史记录工具。在New-school模式中,我键入了#34; asdf"然后按下" F4"这是"关闭活动窗口"。您可以看到这实际上模拟了ALT + F4,并且ALT和F4之间的持续时间非常短......
我认为我可以禁用此功能"关闭活动窗口"当两个键之间的间隔小于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。
答案 0 :(得分:1)
您是否尝试过使用
F4::return
?也许这会覆盖联想对 F4
的行动除此之外,以下是我能想到的两种方法:
默认禁用 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 可以解决问题它仍会触发Alt,它通常会将我留在活动窗口(文件,编辑,视图等)的菜单中,或者如果在textarea中输入(例如这样),它将删除键入焦点。
在按下 ALT 后使用Input。只要使用Input
选项,V
就会阻止用户输入一段时间。
(3.停用Lenovo Yoga 2 Pro特殊键。如果您需要 F3 功能,可以在AutoHotkey中执行此操作,例如使用send {volume_up}