使用时间禁用 AutoHotKey 的 Fn+F4
Disable Fn+F4 with AutoHotKey using time
我想使用 AutoHotKey 禁用 Alt+F4,当它们在 0.05 秒内相互按下时。否则,我希望它能正常工作。
解释:
我的联想 Yoga 2 Pro 的功能键有替代功能。
例如:"F3" 映射到 volume+,"F4" 映射到 "close active window"
有两种模式:
- 老派模式:F3只是F3的作用,必须按住Fn+F3键才能激活音量+
- New-school模式:按F3激活音量+,Fn+F3为普通F3。
在任何一种模式下,我 运行 当我去使用 volume+ 时关闭我的活动 window 的风险因为它们太近了,这是非常有问题的。请注意,AutoHotKey 无法 检测到 Fn 键,因此我无法使用它来解决我的问题。
下图显示了 AutoHotKey 键历史记录工具。在 New-school 模式下,我输入 "asdf" 然后按 "F4" 即 "close active window"。可以看到这实际上模拟了ALT+F4,而且ALT和F4之间的持续时间很短...
我想我可以禁用这个 "close active window" 功能,方法是让 AutoHotKey 在两个键之间的间隔时间小于 0.05 秒时中断 ALT+F4 组合键。这能做到吗?
编辑:
为了响应 Blauhirn 的代码,这里是原始代码,经过编辑以缩短等待时间(从 50 到 10)。它在 大部分时间 有效,但仍然是 window 的 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
这是我认为可以通过在检测到 "close active window" 时发送第二个 Alt 来解决我的焦点问题的更改:
doNothing:
send {LAlt}
return
但是,第二个 Alt 没有发送。它是在延迟超过 40ish 时发送的,但是我发现它太长了,反过来它会干扰我手动使用 Alt+F4。
你试过简单地使用
F4::return
?也许这会覆盖 F4
的 Lenovo 操作
除此之外,这是我能想到的两种方法:
默认禁用 ALT+F4 标准 win 热键。为延迟 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
it still triggers Alt, which usually leaves me in the menu of the active window (File, Edit, View, etc), or if typing within a textarea (such is this), it will remove typing focus.
嗯,是的。如果您决定保留联想钥匙,我认为没有办法阻止它。按照你的建议,再次发送 ALT 应该可以解决问题
using Input,在按下 ALT 之后。 Input
在可配置的时间内阻止用户输入,只要使用 V
选项。
(3. 禁用联想 Yoga 2 Pro 特殊键。如果您需要 F3 功能,您可以在 AutoHotkey 中执行此操作,例如使用 send {volume_up}
我想使用 AutoHotKey 禁用 Alt+F4,当它们在 0.05 秒内相互按下时。否则,我希望它能正常工作。
解释:
我的联想 Yoga 2 Pro 的功能键有替代功能。
例如:"F3" 映射到 volume+,"F4" 映射到 "close active window"
有两种模式:
- 老派模式:F3只是F3的作用,必须按住Fn+F3键才能激活音量+
- New-school模式:按F3激活音量+,Fn+F3为普通F3。
在任何一种模式下,我 运行 当我去使用 volume+ 时关闭我的活动 window 的风险因为它们太近了,这是非常有问题的。请注意,AutoHotKey 无法 检测到 Fn 键,因此我无法使用它来解决我的问题。
下图显示了 AutoHotKey 键历史记录工具。在 New-school 模式下,我输入 "asdf" 然后按 "F4" 即 "close active window"。可以看到这实际上模拟了ALT+F4,而且ALT和F4之间的持续时间很短...
我想我可以禁用这个 "close active window" 功能,方法是让 AutoHotKey 在两个键之间的间隔时间小于 0.05 秒时中断 ALT+F4 组合键。这能做到吗?
编辑: 为了响应 Blauhirn 的代码,这里是原始代码,经过编辑以缩短等待时间(从 50 到 10)。它在 大部分时间 有效,但仍然是 window 的 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
这是我认为可以通过在检测到 "close active window" 时发送第二个 Alt 来解决我的焦点问题的更改:
doNothing:
send {LAlt}
return
但是,第二个 Alt 没有发送。它是在延迟超过 40ish 时发送的,但是我发现它太长了,反过来它会干扰我手动使用 Alt+F4。
你试过简单地使用
F4::return
?也许这会覆盖 F4
的 Lenovo 操作除此之外,这是我能想到的两种方法:
默认禁用 ALT+F4 标准 win 热键。为延迟 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
it still triggers Alt, which usually leaves me in the menu of the active window (File, Edit, View, etc), or if typing within a textarea (such is this), it will remove typing focus.
嗯,是的。如果您决定保留联想钥匙,我认为没有办法阻止它。按照你的建议,再次发送 ALT 应该可以解决问题
using Input,在按下 ALT 之后。
Input
在可配置的时间内阻止用户输入,只要使用V
选项。
(3. 禁用联想 Yoga 2 Pro 特殊键。如果您需要 F3 功能,您可以在 AutoHotkey 中执行此操作,例如使用 send {volume_up}