罗技G系列鼠标宏函数命令“OnEvent”详解
罗技G系列鼠标宏函数命令“OnEvent”详解
本文将详细介绍罗技G系列鼠标宏函数命令“OnEvent”的使用方法。通过本文,读者将了解OnEvent函数的参数、事件类型以及具体使用方法,并通过代码示例加深理解。
OnEvent()方法是罗技lua编程中的核心,它相当于罗技lua脚本中的默认入口点,作为程序的执行起点。官方资料表明,该方法通常会包含两个基本的参数:event和arg,并且还可以携带一个可选属性family。
- 参数event为字符串类型,包含了用户触发事件名称;
- 参数arg一般为数值,表示用户触发事件具体参数值;
- 可选参数family为字符串类型,用于区分触发事件的设备的设备族。
根据罗技官方文档,event总共包含8个事件,其中值得关注的一般有两个:"PROFILE_ACTIVATED"、”MOUSE_BUTTON_PRESSED”。
"PROFILE_ACTIVATED"事件表示激活配置文件,此事件无附带参数。此事件由编译器触发,只要lua程序在编译过程中无明显错误,编译完成后就会自动触发该事件。在实际使用中,该事件通常伴随着以下操作:包括在编辑代码、运行主程序(部分GHub驱动可能例外)以及开关脚本编辑器时,编译器都会被启动,从而触发该事件。
“MOUSE_BUTTON_PRESSED”事件表示鼠标按键被按下,此事件附带参数,arg=1表示左键,arg=2表示右键,arg=3表示中键,arg为4或更高值时表示其他罗技按键。其中左键罗技主程序默认不会响应该事件,需要使用EnablePrimaryMouseButtonEvents()方法激活左键(吐槽一下为什么罗技要把这函数名搞那么长啊我呸)。
下面介绍OnEvent()的使用方法:
用户需要在代码中自定义一个OnEvent函数,如下:
function OnEvent(event, arg)
if event == "PROFILE_ACTIVATED" then
a(); --如果该事件为配置文件被激活,调用a()函数;
end
if event == “MOUSE_BUTTON_PRESSED” and arg == 3 then
b(); --如果该事件为按下鼠标中键,调用b()函数;
end
--如果两个都不是,那么函数直接结束。(当然执行完上面函数返回以后程序也会走到这里)
end
在这个例子中,因为我们不需要区分设备族,因此在函数中可以省略第三个参数,在实际使用过程中,虽然罗技主驱动程序调用该函数仍会推入三个参数,但第三个参数会被程序抛弃,不影响使用。
值得注意的是,罗技驱动程序仅允许单个lua线程,当上一个lua线程未销毁,即使用户触发了事件,罗技不会调用用户定义的OnEvent函数。只有当上一个 lua 线程被销毁后,罗技主程序才会尝试调用该自定义函数来处理新的事件响应。
此外,我们还需补充说明:Lua作为一种解释型脚本语言,在编译过程中也能够直接调用的方式支持函数调用。下面这个例子可以帮助大家理解:
可以看到,在上面这个例子中,直接调用的OutputLogMessage进行了正确的输出,函数a直接被调用,b函数因为我们调用了OnEvent函数,并且参数按照鼠标按下左键设定,也被调用,最后所有函数返回之后,由编译器再次调用OnEvent。