前段时间,我评测了一个达尔优EM915R的鼠标,引发了争议。这本来是一个普通FPS鼠标,它的侧面3颗按键默认出厂针对《绝地求生》做了优化,4、5两颗键是枪械自动模式、一键奔跑的切换,这没毛病。而最大那颗“Fn”键,争议在它,并不是因为键盘上的Fn键就不该出现在鼠标上,只因这是个压枪键。
值得一提的是,很多鼠标都有这种类似的侧面前置键,过去赛钛客、罗技、雷蛇的这个键功能相似为“瞬间降低DPI”,俗称火力键,现在也基本上都是被改成了压枪键。在达尔优EM915R上,正常使用时左右键功能不变,一旦按住这个Fn键不放,在游戏中按左键不放连续开枪,弹道会自动一定幅度的下压(一定程度的抵消枪械后坐力导致的准心上跳),实现压枪,3~5发内压枪效果明显,看看本质上它的释放效果↓↓↓。
EM915R驱动中默认吃鸡优化,以及压枪幅度的调节。
视频加载中...
可以看到,这个压枪动作能在非游戏状态Win10下能运行,证明这首先就是个通用程式(模拟鼠标),理论上人手也做得到,但要在游戏中的作用最大化,必须结合鼠标微动的响应时间、网络游戏的网速来调节到最佳状态(可能会很惊人)。这个功能其实就是高手制作出宏,给新手或者压枪技术不太好的人,让他们不花太多时间练习也能秀一把,降低操作门槛玩下去,就像是汽车的自动挡、下坡辅助和倒车雷达,老司机都不需要。但是居然不少人认定是挂,到了谈宏色变的地步,真心太过了。希望下面这些根据多年玩鼠标的心得和经验能帮你搞清楚宏和挂这回事。
外挂和宏都是什么?外挂(GUAB),是第三方软件程序,以针对指定程序/游戏测试、修改属性为主。这个好理解吧。
宏(Macro),是一种批量处理的动作,也叫巨集,通过宏录制及后期编辑,玩家能模拟一些列键鼠组合的复杂操作(模拟的输入内容大小取决于控制和存储芯片),并优化到一键无缝释放的最佳状态,所谓“一键瞬狙”就是最形象的代表。其本质就是“复制高手的操作手法实现傻瓜式的一键释放”。优点是简化操作到傻瓜式,不足是太机械而缺乏灵活应变性,还容易养成依赖性,不适合对自己有更高追求的实力型玩家。鉴于一场竞技的输赢并不是几个骚气的手指操作能决定的,大脑的判断更为重要,那么理性使用宏才对。
压枪宏是怎么做的?在N年前的CS时代,双飞燕除了做到1键快速转身、瞬狙、超级跳等宏之外,他们还通过分析弹道,通过宏设置来控制鼠标光标在“左键”(开枪)触发后自动按一定移动量向下走来抵消枪械后坐力导致的光标上飘,来增加连发的准确性,实现3连发、5连发密集火力,这应该是最早期的压枪宏,和国外一些品牌的火力键(按住瞬间降低DPI值)不同。
现在血手幽灵的血手宝典其实也是源自那个时代的双飞燕X7名为“奥斯卡”的鼠标驱动。我们知道为了追求真实性,游戏中每种枪械是有属性设定的,后坐力不同,那么要比别人打得准,就要更有效的控制好后坐力。压枪宏就是根据不同枪械的弹道,做一定幅度(可调)的光标下压控制,你自己连发时不需要费劲的下往下拖拽鼠标,看似科技电竞,实则扶持弱者,自然在高手之间的对决就没什么用了,起码蛇皮走位没水平的人再强的压枪宏你也是打不中的,想一梭子整死对手会让你心态浮躁。
其实,除了常规宏(键盘、鼠标动作记录)之外,血手更夸张变态的鼠标宏是可以锁定屏幕坐标,实现的精准定位,甚至设置触发条件它可以自动运行,这个和按键精灵非常类似。但这在竞技游戏中没什么用,对单机和网游挂机练级有些帮助。网上那些这种4、8倍开镜压枪的宏在视觉上比较吓人,但实际上,并不什么时候都万试万灵,高手测试反而适得其反,会发现准度下降和难以控制。
在CS那个时代,局域网为主谁不认识谁,大家讲究技术和枪法,不少人拼命练习压枪、盲狙,技术流是很受尊重的。现在的玩家讲究虐菜装逼,因为是MOBA(Multiplayer Online Battle Arena大型多人在线竞技游戏),躲在屏幕后谁特么也不认识谁,怎么样能赢的快就怎么来,有些渴望在游戏中找寻快感的人贪图捷径,发现了宏的价值,宏的辅助作用在游戏上给与一定帮助不少,尤其是《绝地求生》,打伏地魔、蹲坑的人。
宏是一种游走边缘的鼠标使用技术,宏和挂最大的本质区别,宏不能帮你准确掌握你的对手的信息和动向。
宏和挂的定义,主要看游戏商怎么说。如果游戏运营商没有公开声明“禁止一切形式的键鼠宏”(如果像PUBG这样说过你要注意,夸张的宏慎用,被举报可能必死),而只是说“禁止第三方程序”(注意是程序),假如用户退出鼠标驱动程序,而把游戏宏(压枪、瞬狙、超级跳什么的)内置在鼠标芯片上,那问题不大,因为防外挂程序一般只监测电脑运行的可疑程式。所以,现在淘宝上在卖的吃鸡鼠标基本上都是内置宏了,而且商家会建议用户不要自己安装驱动去更改,否则失效。
尽量关闭鼠标的驱动程序,不要右下角出现,更不要在后台运行,用宏会安全很多,避免不必要的麻烦。
也有挂B打着宏的幌子在骗人。以前玩《街头篮球》的时候,有些人到处飘、穿人,而且PF三分100%神准,你说他挂狗,他说是网速卡,讲道理卡的时候投篮是不准的。在《绝地求生》也是如此,利用宏做幌子,但宏不会帮你锁定头部、开镜连发100%命中,更不会让你长臂、隐身、加速和零后坐力,当然这个被举报了必死无疑,如此变态是挂、还是宏都不重要了吧。
那么,鼠标宏到底会不会封?有的人说不会,有的说会。答案是可能会。
封不封,取决于游戏开发商和运营商。
像《绝地求生》这样外挂泛滥,跟运营商很大关系,一般是先封第三方外挂,再考虑可能需要去的宏,当然前提这个宏被投诉太多或者有些变态,毕竟宏属于编程,软件的可能性很大,还需要人为进行判定对于平衡性的影响,一件瞬狙、盲僧插眼等这个都安全,至于EM915R这样的通用压枪,我在守望也试过,它算不上变态,你手自己控制也能做到甚至更好。
当然也不排除,游戏公司在设计架构游戏的时候就做防范措施,比如记录鼠标输出的指令、限制鼠标只能输出某类型指令等等,当然这看似是最公平的办法了。
正式的比赛可能会限制使用宏。这个具体看赛事组织方,如果一个游戏对于操作非常讲究,而宏确实能造成失衡。过去有过LOL赛事禁止一切宏,包括内置在鼠标存储芯片上的,都必须还原。
整个外设圈都有吃鸡宏,别搞国产针对。不管是达尔优,还是罗技、雷蛇,更不要说血手了,整个外设圈的品牌没有不弄吃鸡宏的,有吃鸡鼠标宏就一定有压枪宏,真的是挂吗?只需花200元买的鼠标都能做到这样的宏,可能你手上的鼠标也支持这样的宏,还认为宏真的破坏平衡了吗,毕竟为了喜欢的游戏买上200的鼠标真心不是事吧。
以上分析是结合这两款比较代表性的压枪宏鼠标,你觉得自己还会被封吗?
我从2005玩网游就开始使用鼠标宏,就是双飞燕的X7,结合驱动实现多键鼠标的改键,来提升操作效率(技能实在太多,键盘按不过来),几十种游戏下来没被封过,也没感觉这么屌的操作让我牛逼了,毕竟网游RMB是决定因素,那竞技游戏肯定是大脑更关键。双飞燕在CS时代的1键5连发、1键180°转身、这受到一些玩家的不齿,毕竟不是靠技术,靠的是装备,这个和时代、玩家年龄层有很大关系(现在血手可是大受追捧的吃鸡鼠标)。其实,反过来讲你用IE3.0虐了别人用国产鼠标的,你有一部分原因可能也是因为装备。其实装备本身的竞争也是电竞的一个部分,不能说你可以选择自己认可和擅长的装备、打法,别人就不能通过鼠标宏来弥补自己的操作短板,起码游戏商没认定这是作弊(可别觉得游戏商的人没你懂外设和宏)的话,真正电竞比的还是脑,不完全是手。
宏本身只是个游戏辅助,谈宏色变,是不够了解它而偏激;
而过分依赖宏,则是胸无大志和技术粗糙的表现。
某款竞技游戏如果你真的喜欢和在意,首先就应该确保你掌握着主流的装备和技术,这个技术就包含着装备设置、自定义改键、宏,学会善用它们来提升自己的竞战能力,别让游戏把你玩了。无脑喷什么宏是作弊外挂是意义的,无非是皇(运营)上(商)不急,太(玩)监(家)急,规则制定者是游戏厂商,它说宏作弊了,要玩就按他的来。本文不只是针对吃鸡的压枪宏,而是在做的所有游戏,总之合理善用宏,别过度,舞照跳妞照泡,摆正心态才能开心娱乐。
超详细压枪教学,欢迎来到盒教授课堂。这几期视频是非常重要的,如果你想真正掌握压枪技巧,一定要全部看完。今天是第二节课,我们将讨论显示器和输入延迟对压枪的影响。很多人可能会疑惑,为什么显示器会影响到压枪?现在我将为大家详细讲解。由于我们今天讨论的是压枪,所以我们将不讨论画面效果。我们只关注显示器的刷新率和输入延迟。
首先是输入延迟。输入延迟是指鼠标的反应时间。如果输入延迟高,会导致操作不流畅。例如,当移动鼠标时,画面的反应会慢半拍。如果输入延迟低,操作会更加流畅。这将对压枪产生什么影响?这一点不言而喻。
然而,输入延迟是可以优化的。例如,您可以打开英伟达控制面板,并选择“管理3D设置”选项。在该选项中,您可以选择“低延迟模式”,并将其设置为“超高”。这样可以改善输入延迟。但是,调整可能会降低游戏的真实度,因此请自行选择。帧率的高低也会影响输入延迟。这是硬件无法更改的。
接下来,让我们讨论最重要的问题,即刷新率。为了方便理解,我将不涉及详细的解释。我们只讨论刷新率对压枪的影响。刷新率和帧率是相同的概念,但它们也略有不同。帧率指的是显卡每秒生成的画面数量。而刷新率指的是显示器每秒可以显示多少张画面,包括前端和后端。
这个问题对压枪和控制枪有什么影响?让我们看一段视频。在这段视频中,我们可以看到高刷新率带来的流畅感。但是,我们今天不讨论画面效果,而是讨论压枪。因此,这不是我们关注的重点,我们更关注高频率下的画面效果。
例如,系统认为人物已经走到这里了,而高帧率会更接近系统的判断。但是,在低帧率的情况下,人物的显示和系统的判断位置可能不同。帧率越低,偏差越大。这会对您产生什么影响?我相信您已经理解了。
但是,这不是最严重的问题。真正的问题是,在游戏中,您的准心也会受到刷新率和真率的影响。
影响是什么?让我们做一个对比。在这种情况下,我们可以看到高刷新率下,您的准心移动非常流畅。但是,在低刷新率下,您的准心不是线性移动。这将对您产生什么影响?在压枪和控制的过程中,您的准心会像刚刚对比的人物画面一样,无法始终跟随系统的判断位置移动。
例如,当您压枪时,您的准心已经移动到左边,此时人物会向右移动鼠标,以进行一定的修正。然而,当使用低刷新率时,你的准心响应会变慢,因为它的反应速度慢于向左偏移的程度。因此,你的修正会滞后,例如向左偏移。
实际上,系统已经做出了判断,但显示还没有跟上,所以当你显示到这里准备向右修正时,实际上可能已经晚了一步。因为你的指针没有及时向右移动,所以你的枪可能会反应慢半拍。如果你想再次移动,这时系统认为你的枪在右边,你的枪就会疯狂向右跳动。
如果你明白了这些,那么你就会理解为什么低刷新率会导致你无法稳定发挥。这就是你无法稳定控制枪和修正弹道的原因。
如果你的输入延迟更高,那就更糟了。因此,如果你真的想控制好枪,你的帧率和显示器都必须达到要求。不要以为调整灵敏度就能让你控制好枪,这是不可能的。如果你的帧率和刷新率都足够高,但你仍然无法稳定控制枪和修正弹道,请关注我的下一个视频。
如何让你的低刷新率显示器与你的习惯完美匹配。
前言
我们的鼠标在进入最近十年后,迅速的发展,鼠标性能的提高,方案的多样化,使得鼠标在完成本身功能的前提下,能提供更多的按键和自定义的功能。
你如果是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绘制透视框的,还有读取内存地址的非内存挂来说,可能更高级一点,它一定程度来说是硬件外挂,是通过驱动程序执行的。
感谢观看