前言
近十年来,我们的鼠标发展迅速,鼠标性能的提高和方案的多样化,使鼠标能够在完成自身功能的前提下提供更多的按钮和定制功能。
你如果是FPS玩家一定听说过一种叫宏的东西。它可以像插件软件一样使用AK和M4.同样稳定,那么宏是外挂,宏实现远离,如果要写宏怎么操作呢?这一次,我将谈谈宏是什么,它是如何实现的,它是如何使用的。
什么是宏
宏是什么?目前大家都说宏(Macro),事实上,即使是脚本和执行器,百度百科全书也说计算机科学中的宏是抽象的。它根据一系列预定义规则替换某种文本模式。这句话是什么意思?大致来说,比如我今天定义的UP 4这段话是鼠标向上移动四个像素,所以我在一个文档中写这句话。在程序读取文档中,这句话将使鼠标向上移动四个像素点

这篇文本是脚本(Script),这里的脚本是宏(Macro)他们的意思是一样的,就像菠萝和菠萝(闽南话菠萝的发音)
宏是如何实现的
宏的实现离不开软件的支持,鼠标驱动实际上是一致的USB鼠标键盘摇杆等协议HID现在和以前的设备USB下面是免驱动,控制软件可以通过鼠标键盘配合驱动程序,实现我们需要的各种功能

刚才有人说鼠标键盘的宏观实现只不过是软件。控制软件可以通过间接调用驱动程序来实现目标。例如,在上一段中,指针可以移动四个像素。由于设备性能的提高,我们可以让鼠标执行脚本,脚本也可以保存在鼠标上。毕竟,鼠标的存储空间很容易存储这些字符。

当然,也可能有编译或文本压缩,类似于伪代码。

当然,也可能有编译或文本压缩,类似于伪代码。
一般来说,我个人认为有几种形式,一种是控制软件本身与驱动程序有关,另一种是控制软件本身只与鼠标通信,鼠标代表驱动软件执行和实现。
真正的鼠标宏是什么样的

鼠标宏实际上看起来像程序代码,但它是一个伪代码是一个脚本,如罗技全线G系列,控制软件支持Lua脚本是一种非常常见的RPG游戏中使用的脚本语言等
我在网上找到了一个罗技鼠标的压枪宏作为这个例子,因为它被使用了XML格式,因此,我们可以简单地打开它。图中的这部分主要是鼠标配置文件

如果你向下拖动,你会看到脚本的部分。不容易查看,因为这部分是由控制软件读取的,所以前面的部分没有依据
在我看来,罗技的配置文件由三部分组成,按键名称定义,鼠标配置c包括每个档位的鼠标配置cDPi,灯的亮度颜色、型号,然后是脚本
鼠标宏怎么写?

鼠标宏,很多玩家可能会觉得可能会觉得臭,但技术是技术,用在哪里归咎于人。自定义按钮的最初宣传点是MMORPG比如WOW按键记录可以释放中技能,一键触发,而宏则提供了更高级的形式,释放后角色自动位移,而且由于是驱动级别,所以不会被检测为插件,咳咳。
这边我以G9X以设备为例,考虑到软件的成熟度,不选择罗技G HUB使用早期9.0版本的控制软件Logitech 游戏软件。

正常记录宏是这样的,可以实现键盘按钮记录,可以完成一系列功能,如输入密码,如一键打开浏览器等,这里的模式是板载存储模式
如果是用Lua脚本的宏可以实现更复杂的功能,让人感觉\\"这才是宏\\",以下是一段宏的例子,我也会尽力让所有人理解function?OnEvent(event,?OnEvent(event,?arg)if?(event?==?\\"PROFILE_ACTIVATED\\")?then--?profile?has?been?activatedend
end
上面的宏是在配置文件激活时运行的。当然,这一段没有执行任何功能。他是空的。如果你想执行什么,我们必须在里面添加一些东西。
让我们了解一些常用的知识\\"事情\\",在宏文件中EVENTG_PRESSED 按G系列按钮,G罗技键盘上有很多系列自定义键G_RELEASED G按键释放M_PRESSED 按M系列按钮M_RELEASED M释放系列按钮MOUSE_BUTTON_ PRESSED 按鼠标按钮MOUSE_BUTTON_RELEASED 松开鼠标按钮,也就是说,当你的手指抬起时,现在让我们写一个简单的宏,打开它txt当然,我建议你使用文本编辑器Windows自带代码编辑器,复制这些。function OnEvent(event,arg)if(event == \\"MOUSE_BUTTON_PRESSED\\" and arg == 2) thenOutputLogMessage(\\"按下鼠标按钮2\\");end
end
然后保存文件,做得很好,你现在已经掌握了如何写和保存宏了!这是一个很大的进步

现在,为了打开强大的功能,我们必须将控制软件设置为使用PC终端控制软件实现功能模式

进入宏编辑界面,创建新的配置文件,因为是实验,所以只记事本.exe里面生效

保存后的界面如下,我们可以试着导入宏,当然还没到时候

右键在配置文件图标处,第七项编写脚本

弹出以下窗口,您可以在这里编辑我们的宏

文本文件刚刚保存,复制过来看看

Ctrl S保存宏,然后在记事本窗口下进行实验,按下鼠标右键,下面会有句子提示我们设置。问号是正常的,因为没有字库,我写的只是为了方便理解

当然,你应该明白,事件应该加上arg这个值等于指定的按钮,如鼠标事件 按钮对应的值等于哪个按钮,键盘G按钮也一样。鼠标左键是1,右键是2,中键是3,其他鼠标也是。至于自定义按钮,请自己试试
然后我们可以写一些令人兴奋的东西,比如理解如何用鼠标宏压枪?
使用鼠标宏压枪

事实上,为了保护操作,左键不能绑定脚本。鼠标必须有一个按钮,必须设置为左键。在刚写脚本的界面上,你也应该发现左键无法识别。因此,我们必须重新设置鼠标
侧面的按钮设置为鼠标左键

鼠标左键,随意设置为其他按钮

另外,为了方便演示,设置画图,即mspaint.exe这个软件和记事本一样经典,作为一个宏应用程序,它的位置在C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Accessories
然后,让左键识别,当脚本触发时,我们应该加一句话EnablePrimaryMouseButtonEvents(true)接下来,我们需要了解几段。下一段在鼠标当前坐标下相对移动,x横向移动,y垂直移动MoveMouseRelative(x,y)1,我们可以写这样一个宏。每次点击鼠标左键,鼠标坐标都可以向下移动一段距离。下一段可以复制到编辑器中直接看到效果function OnEvent(event, arg)if (event == \\"PROFILE_ACTIVATED\\") thenEnablePrimaryMouseButtonEvents(true) --加上这句话,左键也可以触发脚本elseif event == \\"PROFILE_DEACTIVATED\\" thenIsOnClick = falseendif(event == \\"MOUSE_BUTTON_PRESSED\\" and arg == 1) thenMoveMouseRelative(0, 4) –每次点击左键向下移动4单位endend2.扩展。按住鼠标左键时,坐标会自动向下,松开左键时停止。这样一个简单的压枪宏就完成了function OnEvent(event, arg)if (event == \\"PROFILE_ACTIVATED\\") thenEnablePrimaryMouseButtonEvents(true)elseif event == \\"PROFILE_DEACTIVATED\\" thenIsOnClick = false --是否按下了记录按钮,一开始没有endif(event == \\"MOUSE_BUTTON_PRESSED\\" and arg == 1) thenIsOnClick = not IsOnClick --按下时,翻转,false变trueAK() --这是压枪的函数endif (event == \\"MOUSE_BUTTON_RELEASED\\" and arg == 1) thenIsOnClick = falseOutputLogMessage(\\"Release\\")endendfunction AK()repeatif (IsMouseButtonPressed(1)) then --按下鼠标左键,执行向下移动2.5个位置的句子MoveMouseRelative(0, 2.5)Sleep(30)end
until(not IsOnClick) –没有按下按钮,退出
end
随便加的图3扩展一次,随着按时间的变化,移动坐标的范围也发生了变化。我想你不会去看的。直接复制并尝试function OnEvent(event, arg)if (event == \\"PROFILE_ACTIVATED\\") thenEnablePrimaryMouseButtonEvents(true)elseif event == \\"PROFILE_DEACTIVATED\\" thenIsOnClick = falseendif(event == \\"MOUSE_BUTTON_PRESSED\\" and arg == 1) thenIsOnClick = not IsOnClick --记录鼠标按下AK()endif (event == \\"MOUSE_BUTTON_RELEASED\\" and arg == 1) thenIsOnClick = false --松开按钮时,让向下移动的宏失效OutputLogMessage(\\"Release\\")endend fu
