我们的鼠标在进入最近十年后,迅速的发展,鼠标性能的提高,方案的多样化,使得鼠标在完成本身功能的条件下,能供应更多的按键和自定义的功能。

你如果是FPS玩家一定是听说过有一种东西叫做宏,它犹如外挂软件一样可以让AK和M4一样稳定,那么宏是不是外挂,宏实现的阔别,我们如果要编写宏要怎么操作?这次,我就来说一说宏是什么,它怎么实现的,它又是怎么用的。

什么是宏

宏是什么,目前来说大家说的宏(Macro),实在就算是一种脚本以及实行器,百度百科的说法是,打算机科学里的宏是一种抽象,它根据一系列预定义的规则更换一定的文本模式,那么这句话是什么意思呢?大致便是说,比如本日我定义UP+4这一段话是鼠标向上移动4个像素,那么我在一个文档里面写这句话,程序读取文档中这句就会让鼠标向上移动4个像素点

鼠标宏压枪宏教程只有2的人看懂了

这会儿写的这个文本便是脚本(Script),这里的脚本便是宏(Macro)了,他们的意思是一样的,就像菠萝和凤梨(闽南话读菠萝的发音)

宏是怎么实现的

宏的实现离不开软件的支持,鼠标驱动实际上是符合USB协议的,像是鼠标键盘摇杆等HID设备在如今和以前的USB下是免驱的,而掌握软件可以通过鼠标键盘合营驱动程序,实现我们须要的各种功能

刚刚有说,鼠标键盘的宏的实现,无非便是软件而已,掌握软件可以通过间接调用驱动程序达到目的,比如上一段中说的让指针移动4个像素,由于设备性能的提升,我们可以让鼠标去实行脚本,脚本也可保存到鼠标上,毕竟现在鼠标的存储空间存这些字符还是很随意马虎的。

当然,也可能有编译或者笔墨压缩,类似伪代码那样。

总的来说我个人是以为有几种形式,一种,掌握软件本身和驱动程序挂钩,另一种,掌握软件本身只和鼠标通信,鼠标代为实行并通过驱动软件实现。

真正的鼠标宏什么样

鼠标宏,实在长得就像是程序代码那样,不过它是伪代码是脚本,比如罗技全线G系列,掌握软件就支持Lua脚本,这是一种非常常常在RPG等游戏中利用到的脚本措辞

我从网上找一个罗技鼠标的压枪宏,用作本次实例,由于利用XML格式,以是我们可以大略的打开,图上这一部分紧张是鼠标的配置文件

向下拖动,则会看到脚本的部分,密密麻麻的并不随意马虎查看,由于这部分是交由掌握软件读取以是就没有前面部分有依有据的样子

总的来说,罗技的配置文件在我看来因此三部分组成,按键名称定义,鼠标配置c包括各档位的DPi,灯的亮度颜色,型号,然后才是脚本

如何写鼠标宏

鼠标宏,可能很多玩家在被恶心过后,就以为这东西臭不可闻,不过技能是技能,用在哪里归咎于人,自定义按键最开始的宣扬点是MMORPG中所用的,比如WOW中技能开释,可以通过按键记录的办法,一键触发出来,而宏则供应了更高等的形式,开释后角色自动位移,并且由于是驱动层级以是不会被检测为外挂,咳咳。

这边我以G9X设备为例,考虑到软件成熟度,不选用罗技G HUB掌握软件,利用早期9.0版本的Logitech 游戏软件。

正常记录宏是这样的,可以实现键盘按键记录,可以完成一系列功能,比如输入密码,比如一键打开浏览器,等等等,这里模式是板载存储模式

如果是用Lua脚本的宏,就可以实现更繁芜的功能,也让人以为\"大众这才是宏\公众,下面举例一段宏,我也会只管即便让所有人理解

function OnEvent(event, arg)

if (event == \"大众PROFILE_ACTIVATED\"大众) then

-- profile has been activated

end

end

上面的这一段宏,是在配置文件激活的时候运行,当然这一段什么功能也没有实行,他是空的,你如果要实行什么我们必须要添加一些东西到里面。

我们来认识一下,常用的一些\"大众事情\公众,在宏文件中是EVENT

G_PRESSED 按下G系列的按键,G系列自定义键在罗技的键盘上有挺多

G_RELEASED G按键开释

M_PRESSED 按下M系列的按键

M_RELEASED M系列按键开释

MOUSE_BUTTON_ PRESSED 按下鼠标按钮

MOUSE_BUTTON_RELEASED 松开鼠标按钮,也便是你手指抬起的时候

现在我们来写一个大略的宏,打开txt文本编辑器,当然我更建议你利用Windows10自带的代码编辑器,把这些复制进去。

function OnEvent(event,arg)

if(event == \"大众MOUSE_BUTTON_PRESSED\"大众 and arg == 2) then

OutputLogMessage(\"大众鼠标按键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\"大众) then

EnablePrimaryMouseButtonEvents(true) --加上这句后,左键也可以随便触发脚本

elseif event == \公众PROFILE_DEACTIVATED\公众 then

IsOnClick = false

end

if(event == \公众MOUSE_BUTTON_PRESSED\"大众 and arg == 1) then

MoveMouseRelative(0, 4) –每次点击左键向下移动4单位

end

end

2,扩展一下,按住鼠标左键的时候,坐标会自动向下,松开左键的时候,停滞,这样一个大略的压枪宏就完成了

function OnEvent(event, arg)

if (event == \"大众PROFILE_ACTIVATED\"大众) then

EnablePrimaryMouseButtonEvents(true)

elseif event == \"大众PROFILE_DEACTIVATED\公众 then

IsOnClick = false --这是记录按键按下了没有的,一开始是没有

end

if(event == \"大众MOUSE_BUTTON_PRESSED\公众 and arg == 1) then

IsOnClick = not IsOnClick --按下的时候,翻转一下,false变true

AK() --这是压枪的函数

end

if (event == \"大众MOUSE_BUTTON_RELEASED\公众 and arg == 1) then

IsOnClick = false

OutputLogMessage(\"大众Release\"大众)

end

end

function AK()

repeat

if (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\公众) then

EnablePrimaryMouseButtonEvents(true)

elseif event == \"大众PROFILE_DEACTIVATED\"大众 then

IsOnClick = false

end

if(event == \公众MOUSE_BUTTON_PRESSED\"大众 and arg == 1) then

IsOnClick = not IsOnClick --用于记录鼠标按下

AK()

end

if (event == \公众MOUSE_BUTTON_RELEASED\公众 and arg == 1) then

IsOnClick = false --松开按键的时候,让向下移动的宏失落效

OutputLogMessage(\公众Release\"大众)

end

end

function AK()

ShotTime = 0 --这里是左键一贯按着的韶光

repeat

if (IsMouseButtonPressed(1)) then

if ShotTime <480 then --韶光小于480个单位的时候,向下移动2.5个位置

MoveMouseRelative(0, 2.5)

elseif ShotTime < 2400 then --如果大于480单位,但是小于2400单位的时候,移动4.5个位置,增大幅度

MoveMouseRelative(0, 4.5)

else --其他时候,比如韶光大于2400单位就移动5.5个位置

MoveMouseRelative(0, 5.5)

end

end

ShotTime = ShotTime + 30

Sleep(30)

until(not IsOnClick)

end

如果要开关,也便是说,有时候要用有时候不要用压枪宏,那我们就设置一个侧面的按键用于办理这个问题,它就用来启用或者禁用宏

function OnEvent(event, arg)

if (event == \公众PROFILE_ACTIVATED\"大众) then

EnablePrimaryMouseButtonEvents(true)

MacroState = false --用于开关压枪宏

elseif event == \"大众PROFILE_DEACTIVATED\公众 then

IsOnClick = false

end

if(event == \"大众MOUSE_BUTTON_PRESSED\"大众 and arg == 1) then

IsOnClick = not IsOnClick --用于记录鼠标按下

AK()

end

if (event == \公众MOUSE_BUTTON_RELEASED\"大众 and arg == 1) then

IsOnClick = false --松开按键的时候,让向下移动的宏失落效

end

if (event == \"大众MOUSE_BUTTON_PRESSED\"大众 and arg == 5) then

--当你按下侧边按键时候,切换宏启用的开关,从而掌握压枪的启动的停用

if not MacroState then

OutputLogMessage(\公众Switch Macro On\公众)

MacroState = not MacroState

else

OutputLogMessage(\"大众Switch Macro Off\公众)

MacroState = not MacroState

end

end

end

function AK()

ShotTime = 0 --这里是左键一贯按着的韶光

repeat

if (IsMouseButtonPressed(1) and MacroState) then --如果按键按下了,并且压枪宏开关是开的时候则实行

if ShotTime <480 then --韶光小于480个单位的时候,向下移动2.5个位置

MoveMouseRelative(0, 2.5)

elseif ShotTime < 2400 then --如果大于480单位,但是小于2400单位的时候,移动4.5个位置,增大幅度

MoveMouseRelative(0, 4.5)

else --其他时候,比如韶光大于2400单位就移动5.5个位置

MoveMouseRelative(0, 5.5)

end

end

ShotTime = ShotTime + 30 --左键按下的持续韶光在这变革,这要依据停息韶光进行修正

Sleep(30)

until(not IsOnClick) --鼠标已经抬起了,退出

end

如何切换枪械,对应不同的枪?这个交融贯通一下就行了吧,我就不写了

总结

罗技宏用的是Lua脚本,本身编写难度和可读性我个人是以为还不错,当然了,如果你从未打仗过代码和脚本,那是有很大难度的,至少从第一句开始就会头疼,这很正常,如果你看了后理解了,那恭喜你,你在我的想法中该当是属于2%的人群,是的,我以为能看懂的只有2%

可能你到这里还有一些疑问,比如这里的这种宏是不是外挂,宏当然是外挂,宏本来就属于在实行外部程序,当然这比那些纯软件的比如D3D覆盖UI绘制透视框的,还有读取内存地址的非内存挂来说,可能更高等一点,它一定程度来说是硬件外挂,是通过驱动程序实行的。

感谢不雅观看