无法使用组合键

时间:2015-04-29 04:46:52

标签: autohotkey

我想为鼠标按钮指定一些组合键。

我将使用'vk1Dsc07B'作为虚拟前缀键, 我会用'v'作为LButton,'c'作为MButton,'x'作为RButton。

我尝试了几种方法,但我失败了。我可以点击,但是,我不能正确拖动。 一旦我尝试拖动一个对象,指针抓住并每0.1秒释放一次。 我想,问题是重复发送的关键事件与鼠标按钮不同。

我正在寻找代码如下:

  1. 在我按下组合键时,连续按下鼠标按钮,不重复按下
  2. 当我释放组合键的一个键(虚拟前缀键除外)时,
  3. 更改鼠标按钮

    这是我的一个代码:

    vk1Dsc07B::Return ; deactivate 'Muhenkan' key in order to use it just as a prefix key
    vk1Dsc07B & v::Click,L,D Return
    vk1Dsc07B & c::Click,M,D Return
    vk1Dsc07B & x::Click,R,D Return
    vk1Dsc07B & v Up::Click,L,U Return
    vk1Dsc07B & c Up::Click,M,U Return
    vk1Dsc07B & x Up::Click,R,U Return
    

    另一个样本:

    vk1Dsc07B::Return ; deactivate 'Muhenkan' key in order to use it just as a prefix key
    vk1Dsc07B & v::Send {Blind}{LButton down}
    vk1Dsc07B & c::Send {Blind}{MButton down}
    vk1Dsc07B & x::Send {Blind}{RButton down}
    vk1Dsc07B & v Up::Send {Blind}{LButton up}
    vk1Dsc07B & c Up::Send {Blind}{MButton up}
    vk1Dsc07B & x Up::Send {Blind}{RButton up}
    

    也许大多数人都没有“vk1Dsc07B”键,所以请将其替换为某个键。

    很高兴听到任何想法:)

    此致

1 个答案:

答案 0 :(得分:0)

您要实现的目标是重新映射 两个键一个。 AutoHotkey文档说:

  

虽然无法将一对键重新映射到单个键(例如,写一个& c :: b无效),但可以通过显式添加上下热键[link]来实现此效果

所以,你的第二个解决方案实际应该有效:

vk1Dsc07B::return    ; you don't need this line. vk1Dsc07B is deactiated by default because of the other hotkeys
vk1Dsc07B & v::Send {Blind}{LButton down}
vk1Dsc07B & v Up::Send {Blind}{LButton up}
; and you need the `{Blind}` keyword here, do you??

,但事实并非如此。这仅适用于send {a down}等“普通”键。问题是当您按住vk1Dsc07B & v时,{LButton down}将重复发送。这导致“指针抓取并每0.1秒释放一次”。 因此,我们将不得不寻找另一种方法,尝试在触发热键时只发送一次{LButton down}

我想出了以下解决方案,它将热键触发器存储在一个变量中:

Ltriggered := false
Mtriggered := false
Rtriggered := false

vk1Dsc07B  & v::
if(!Ltriggered) {
    Send {LButton down}
    Ltriggered := true
}
return
vk1Dsc07B  & v Up::
Send {LButton up}
Ltriggered := false
return

vk1Dsc07B  & c::
if(!Mtriggered) {
    Send {MButton down}
    Mtriggered := true
}
return
vk1Dsc07B  & c Up::
Send {MButton up}
Mtriggered := false
return

vk1Dsc07B  & x::
if(!Rtriggered) {
    Send {RButton down}
    Rtriggered := true
}
return
vk1Dsc07B  & x Up::
Send {RButton up}
Rtriggered := false
return