无法使用组合键模拟鼠标按钮
Unable to emulate mouse buttons with combination keys
我想为鼠标按钮分配一些组合键。
我打算使用'vk1Dsc07B'作为虚拟前缀键,
我将使用 'v' 作为 LButton,'c' 作为 MButton,'x' 作为 RButton。
我尝试了几种方法,但都失败了。我可以单击,但是,我无法正确拖动。
一旦我尝试拖动一个对象,指针就会每 0.1 秒抓取并释放一次。
问题是,我猜,关键事件是重复发送的,不像鼠标按钮。
我正在寻找如下代码:
- 在我按下组合键时,持续按下鼠标按钮,不要重复按下
- 当我释放组合键中除虚拟前缀键之外的一个键时,将鼠标按钮向上更改
这是我的代码之一:
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'密钥,请更换某个密钥。
很高兴听到任何想法:)
此致,
您要实现的是重新映射 两个键到一个。 AutoHotkey 文档说:
Although a pair of keys cannot be directly remapped to single key (e.g. it's invalid to write a & c::b), this effect can be achieved by explicitly adding the up and down hotkeys [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??
,但事实并非如此。这仅适用于 'normal' 键,如 send {a down}
。问题是当你按住vk1Dsc07B & v
时,{LButton down}
会重复发送。这导致 "the pointer grab and release it every 0.1 seconds"。
因此,我们必须寻找另一种方式,尝试在触发热键时仅发送一次 {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
我想为鼠标按钮分配一些组合键。
我打算使用'vk1Dsc07B'作为虚拟前缀键, 我将使用 'v' 作为 LButton,'c' 作为 MButton,'x' 作为 RButton。
我尝试了几种方法,但都失败了。我可以单击,但是,我无法正确拖动。 一旦我尝试拖动一个对象,指针就会每 0.1 秒抓取并释放一次。 问题是,我猜,关键事件是重复发送的,不像鼠标按钮。
我正在寻找如下代码:
- 在我按下组合键时,持续按下鼠标按钮,不要重复按下
- 当我释放组合键中除虚拟前缀键之外的一个键时,将鼠标按钮向上更改
这是我的代码之一:
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'密钥,请更换某个密钥。
很高兴听到任何想法:)
此致,
您要实现的是重新映射 两个键到一个。 AutoHotkey 文档说:
Although a pair of keys cannot be directly remapped to single key (e.g. it's invalid to write a & c::b), this effect can be achieved by explicitly adding the up and down hotkeys [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??
,但事实并非如此。这仅适用于 'normal' 键,如 send {a down}
。问题是当你按住vk1Dsc07B & v
时,{LButton down}
会重复发送。这导致 "the pointer grab and release it every 0.1 seconds"。
因此,我们必须寻找另一种方式,尝试在触发热键时仅发送一次 {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