20年后,再看那英、田震各自的境遇,差距一目了然,却让人意难平
20年后,再看那英、田震各自的境遇,差距一目了然,却让人意难平 在阅读此文之前,麻烦您点一下“关注”,方便您阅读之后的文章,感谢您的支持。 编辑/泡泡 最近 刀郎的新歌《罗...
鼠标宏,压枪宏教程,只有2%的人看懂了
前言
我们的鼠标在进入最近十年后,迅速的发展,鼠标性能的提高,方案的多样化,使得鼠标在完成本身功能的前提下,能提供更多的按键和自定义的功能。
你如果是FPS玩家一定是听说过有一种东西叫做宏,它如同外挂软件一样可以让AK和M4一样稳定,那么宏是不是外挂,宏实现的远离,我们如果要编写宏要怎么操作?这次,我就来说一说宏是什么,它怎么实现的,它又是怎么用的。
什么是宏
宏是什么,目前来说大家说的宏(Macro),其实就算是一种脚本以及执行器,百度百科的说法是,计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式,那么这句话是什么意思呢?大致就是说,比如今天我定义UP+4这一段话是鼠标向上移动4个像素,那么我在一个文档里面写这句话,程序读取文档中这句就会让鼠标向上移动4个像素点
这会儿写的这个文本就是脚本(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绘制透视框的,还有读取内存地址的非内存挂来说,可能更高级一点,它一定程度来说是硬件外挂,是通过驱动程序执行的。
感谢观看
20年后,再看那英、田震各自的境遇,差距一目了然,却让人意难平 在阅读此文之前,麻烦您点一下“关注”,方便您阅读之后的文章,感谢您的支持。 编辑/泡泡 最近 刀郎的新歌《罗...
默克尔,从一个牧师的女儿到德国第一位女总理 王光之/一个有腔调的人文类解读头条号 末尾链接为(德国土耳其裔移民历史)科普文章 世界上最有权势的女人 不知从何开始,出现在...
歌唱家马玉涛:当过饲养员,丈夫去世9年了,她的生活状况怎样? 点击关注,每天都有名人故事感动您! 马玉涛 马玉涛是德艺双馨的著名女高音歌唱家、国家一级演员,出任过北京战...
湖南初三女生自杀事件:有点“张扬”! 唐予心上学期的同桌李小白也在教室内服了秋水仙碱片,一位男生还给他递了瓶矿泉水。 “我有信心,我一定活过来。” 2018年10月18日下午两...
汉奸后代成日本华裔大臣,为孩子取中国名,却称钓鱼岛是日本领土 文| 拾九客栈 编辑| 拾九客栈 在我国抗战史上 臭名昭著的女汉奸陈杏村 ,不仅逃脱了法律的制裁,更是为日本培养...
霹雳布袋戏人物诗号集锦 布袋戏又称木偶戏,霹雳布袋戏,是台湾在1980年代开始新发展出的一种电视布袋戏,隶属霹雳国际多媒体股份有限公司,由董事长黄强华及总经理黄文择所领...
章小蕙:两度嫁亿万富翁,却负债过亿,如今怎样了? 在阅读此文之前,麻烦您点击一下“关注”,既方便您进行讨论和分享,又能给您带来更多的参与感,感谢您的支持。 文 | 听云...
观光滹沱河景观 1288# 原创 作者:徐英 老兵原创之家公众号 2019.5.9 我国北方最大的城市森林公园--滹沱河城市森林公园主要以现有滹沱河林场为基础建设,位于城区北部、正定城西侧,...
深度:星云链(NAS) 新加坡区块链项目星云链(NAS)被很多人称之为区块链界的谷歌。基于一系列的突破性创新理念,星云链将带我们进入了第三代区块链技术。 星云链项目提供两种...
周海婴:我的父亲鲁迅 清癯、瘦高,尽管头发有些花白,但那标志性的“周氏”之眉却依然又黑又浓——或许知晓周海婴身份的每个人在见到他的第一面,都会近乎本能地将这张面孔与...
常州东坡公园 古典园林——东坡公园(东坡园)为国家4A级旅游景区,位于常州第一园林——红梅公园东南侧,古运河东去的咽喉要地。属天宁风景名胜区一重要景区,整个景区是由一...
藏龙卧虎珞珈山 作者:和风 珞珈山下是家园 东湖水碧波荡漾, 珞珈山绿树苍翠,湖北省军区珞珈山干休所毗邻武汉大学,座落在这一片湖光山色之中。 干休所1980年开工建设, 总占地...
青楼出身,一嫁首富子二嫁孔家长子,无儿无女却晚景极好,她凭啥 在民国年代,堂子出身的 白兰花 既没有林徽因那样的才情,也没有陆小曼那样的风情,更没有周璇和阮玲玉那样的...
雍正王朝:邬思道为何找田文镜要完钱说再不走就来不及?他怕什么 没想到的是,一向沉着冷静的邬思道,会在他的媳妇如月面前如此失态,他慌慌张张地跑回来,边走边嘟囔着:“赶...
年代文,《六零惬意人生》《七零娇气小媳妇》《穿越七零做知青》 目录 1、《七零男主他嫂子》 作者:桃花露 2、《重生之饥饿年代》 作者:醉小仙 3、《六零之穿成极品他妈》 作者...
恋综被吐槽越来越不好看?究竟是糖分不够还是观众太挑剔? 随着恋爱综艺节目从红火到遭人诟病,大家发现上恋综是一把双利箭,有人在恋爱节目里真的收获了高质量爱情,也有人下...
宇宙到底有多浩瀚 所谓宇宙到底有多浩瀚,关键是宇宙到底有多浩瀚需要如何写。 既然如何, 经过上述讨论现在,解决宇宙到底有多浩瀚的问题,是非常非常重要的。 所以, 带着这...
细数“911”始末:五角大楼遭轰炸,为何有美国人认为这是个阴谋 2001年9月11日的早晨,19名恐怖分子分别踏上了4架民航客机,他们的起飞地点都位于美国的东北部,距离事发地纽约和...
哈里梅根二胎生女!结果名字取了女王小名和戴安娜?!网友:太虚伪了 微信的规则进行了调整 希望大家看完故事多点“ 在看 ”,喜欢的话也点个 分享 和 赞 这样事儿君的推送才能...
古猗园(上海南翔景点)介绍 古猗园,上海五大古典园林之一,位于嘉定区南翔镇上,风格与苏州的拙政园比较接近。是江南古典园林的奇葩。建于明代嘉靖年间(公元1522~1566),原名猗园...
原来他们都是音乐才子!细数10位作曲实力非凡的韩国男idol 大家都知道韩国娱乐圈竞争激烈,若能在韩国出道当偶像歌手,代表他们有一定的实力。今天小编就和大家说说这10名韩国男...
说说“再三”“再四”与“再三再四” 来说说“再四”和“再三”这两个词语,有点儿意思。“再三”这个词语使用率很高,几乎可以说是无人不知,即使没上过学,很多人也听过这个...
民俗:三月三,吃鸡蛋 具体的缘由知道吗? 在我国南方有很多地方都有三月三吃鸡蛋的说法,具体做法就是在野外采摘一些荠菜,洗干净之后与鸡蛋一同放入锅中煮熟,然后全家人一起...
孔庙四配十二哲、七十九贤人、七十七先儒,100多人陪祭他一个 孔子作为“大成至圣先师文宣王”,是作为思想文化教育界的素王而存在的。这样围绕这个“素王”孔子有着一个等级森...