Autohotkey 使用自动热键禁用修改器的所有组合

Autohotkey 使用自动热键禁用修改器的所有组合,autohotkey,Autohotkey,使用自动热键脚本 LWin:: return 左窗口键可以完全禁用。不仅简单的左窗口点击被禁用,而且包括左窗口键在内的任何其他组合都无效,因为未按下左窗口键。 例如:LWin+E,它通常会打开一个浏览器窗口,只会发送一个“E” 然而,一旦定义了使用左窗口键的新映射,所有剩余的左窗口键绑定都将返回活动状态。例如,使用脚本: LWin:: return LWin & a:: Send foo return LWin+a将打印“foo”左窗口单独使用不会起任何作用。但是,神奇的是,左窗

使用
自动热键
脚本

LWin::
return
左窗口
键可以完全禁用。不仅简单的
左窗口
点击被禁用,而且包括
左窗口
键在内的任何其他组合都无效,因为未按下
左窗口
键。 例如:
LWin+E
,它通常会打开一个浏览器窗口,只会发送一个“
E

然而,一旦定义了使用左窗口键的新映射,所有剩余的
左窗口
键绑定都将返回活动状态。例如,使用脚本:

LWin::
return


LWin & a::
Send foo
return
LWin+a
将打印“
foo
”<代码>左窗口单独使用不会起任何作用。但是,神奇的是,
左窗口+E
将打开一个资源管理器窗口


我如何禁用修饰符(如
LWin
RWin
LAlt
RAlt
LCtrl
RCtrl
),以便没有任何键绑定(但我明确定义的键绑定)运行?

指定要禁用的每个
LWin
组合

LWin::
LWin & e::    ; this combinations is disabled
return


LWin & a::
tooltip, foo
return
除非禁用它,否则其他默认组合仍将有效

如果你不愿意写每一个组合,你可以用不同的方式来写。 因为您现在使用的是
Send
,所以它的可靠性稍差一些

global LWin_g := 0 

SetTimer , checkLWin , 25
return


checkLWin:
    if( GetKeyState( "LWin" , "P") )
        LWin_g := 1
    else
        LWin_g := 0
return

$e::
    if( LWin_g )
    {
        tooltip, action 
    }
    else
    {
        Send ,e
    }
return

LWin::  
return

这就是我害怕的。很遗憾,太好了!你的解决方案太棒了!