精华内容
下载资源
问答
  • 火拼俄罗斯键盘加速器是一款专业的键盘加速工具,使用这款加速键盘软件,能够有效加快键盘输入的速度,软件使用简单,利用快捷键就可以触发对应的功能,加快键盘输入,下面有快捷键的详细介绍,火软件站提供了键盘...

      火拼俄罗斯键盘加速器是一款专业的键盘加速工具,使用这款加速键盘软件,能够有效加快键盘输入的速度,软件使用简单,利用快捷键就可以触发对应的功能,加快键盘输入,下面有快捷键的详细介绍,最火软件站提供了键盘加速软件下载地址,需要键盘加速工具的朋友,快来下载试试吧。

    9464147ebdf523f3bad3795540328485.png

    基本介绍

      这是一款非常专业的火拼俄罗斯键盘加速器,具有响应速度快、流畅、较为稳定等特点,并在等之前的版本中新增了游戏时间显示、速度曲线显示功能,为玩家带来更顺手的操作体验。总的来讲,这款软件实际上不是外挂/辅助之类的产品,只是能够设置你的按键习惯以及按键反应的速度,让你玩起游戏来更顺手。

    软件特色

      1、键盘速度

      是指按住一个键不放,一分钟能打出的字符个数,用来表示键盘速度的快慢

      2、首次延迟

      是指当按住键盘某个键不放时,出现第一个字符与出现第二个字符的时间间隔

      3、普通键盘的键盘速度一般为1800字节/分,首次延迟为250毫秒左右

      4、超级快键盘

      一种在理论上平移速度是无限,只能进行点移和贴边操作,而绝不可能平移到一半的地方停下的键盘。

      快捷键说明

      1、F2键

      开始游戏;

      2、F3键

      开始练习,只有当练习模式可用时可以按F3键启用而不需要再按鼠标,但只在开启本变速器进行加速的时候有效。

      3、F12键

      极速响应模式和超流畅模式切换快捷键。

    小编推荐

      以上是这款键盘加速软件的全部介绍,使用这款键盘输入加速软件,用户可以更快的输入相关的指令,在游戏中,还可以更加的操作游戏技能,在游戏中占据优势,有需要的朋友,快来最火软件站下载吧。

    展开全文
  • 大家好,我是波导终结者。现在机械键盘市场百花齐放,除了传统樱桃轴以外,...虽然动辄成千万上亿次寿命咱们是没办法测试,但是响应速度的提升却是实打实。ROG游侠RX光轴机械键盘的外包装封面字样是闪金,...

    大家好,我是波导终结者。

    现在机械键盘市场百花齐放,除了传统的樱桃轴以外,国产轴和各种自研轴也层出不穷。这其中,反响最好的大概就是几家大厂自研的光轴了。今天跟大家分享的是华硕ROG 游侠RX 光学机械红轴游戏键盘。

    4ca3a6ec53f9574233d92522b6a54217.png

    在使用寿命和响应速度上,光轴相较于传统机械轴有更大的优势。虽然动辄成千万上亿次的寿命咱们是没办法测试,但是响应速度的提升却是实打实的。

    ROG游侠RX光轴机械键盘的外包装封面字样是闪金的,会随着角度变化呈现不同颜色的反光,非常漂亮。

    185bce1caf80bcc844d9e1f761a86778.png

    右下角则非常精准扼要地标出了键盘的卖点,比如AURA光效同步,RX光学机械红轴,IP56防水防尘,以及美式键盘布局等。

    2cdfa61a4c7dd0ba5b9b41a452b0ec51.png

    里面的防尘套用的是布套,相较塑料壳更好收纳,毕竟可以折叠起来,几乎不占任何空间。

    277e75d6b896b5009b44a2b3c7ec4683.png

    说明书倒是很简单,类似于“把大象放进冰箱需要哪几步”,不过值得一提的是,上面给的驱动地址是外网的,在咱这里访问有点困难,可以直接去华硕中国的官网下ROG Armoury Crate奥创软件。

    d66cb0b1e6da962413971639287a35d9.png

    华硕ROG 游侠RX采用传统黑色键帽,灯光从中间缕空字体处透出会很好看,等下通了电就能看到。

    6acc831c434e024d881eb931487da376.png

    在保持了美式键盘布局的前提下,这把键盘也有一些独有的设计。像左下角的Ctrl键,就经过了加宽处理,以方便FPS选手进行下蹲操作。

    e40752737158f85d096666ac3924c01e.png

    右上角的指示灯区域也是有灯的,华硕ROG的这个标志再显眼不过了。

    4dbbe89bb73beed8e0615c22a49bd565.png

    键盘的上盖采用航空级铝合金面板,在增加重量手感的同时,也拥有更强的耐用性。

    华硕ROG 游侠RX光轴键盘通过Fn的组合键,可以直接脱离驱动控制键盘的灯光,配合F区按键也可以轻松进行多媒体控制。

    5f7f9088a6eb88261ee64ed30ac199e6.png

    刚才从侧面也看到了,华硕自研光轴的结构比较特殊,侧面是类似剪刀脚一样的结构,确保触发无抖动,以及按键敲击感的一致。从上面来看的话,轴体用了方形火山口结构,四个角固定加上剪刀脚X结构,最大限度减少键帽的晃动,提高敲击精度。

    f72e9d2428a935110d2de81fdaf7ffc3.png

    由于我自己是个五笔高手,也玩过不少的键盘,对这种结构的表现还是很期待的。这样的设计能够保证任何按键,从任何角度击下,受力都是均匀的,键帽不晃动,再加上光轴超快的响应速度,可以更有效提升录入速度。

    bb8d530a0a6d9bdc34188bca06e4da8a.png

    当然,这样的设计下,肯定就不可能兼容市面上的通用键帽了,如果有更换键帽的需求,就得买原厂的。

    562b73fdcb0342406f4f1184569a143e.png

    华硕ROG 游侠RX光轴机械键盘带有USB HUB设计,可以将电脑上的一个USB口延迟到键盘上,插个U盘或者鼠标接收器啥的更方便。

    7cec03f790a446f86f49799ee1359340.png

    不过这个口子应该是只有2.0,不太适合接移动硬盘之类的高速设备。

    ffadffdd8bb88557f2141f7f88839a13.png

    底部这个败……勤俭持家之眼的图案竟然还贴了膜,难道角度问题,这里是排水口或者散热孔?

    a36ec2f793a3997a7b73cbc7e2155a02.png

    好吧,想太多,就是强调一下这个标志。

    a3e7fb7caf43ad53761d52f6e1a012f3.png

    连底板的防滑橡胶,都有设计LOGO形状图案,不过底部并没有多向理线出口。脚撑一段式的倒也直接。

    1882537375993b00f00fcc426a73256c.png

    从侧面来看,每一行的键帽高度和角度都有经过特制,毕竟位置不同,作用也不同。这样的设计有助手盲打的时候增强手感,提高录入准确率。

    e0b67c2887f8dc63783028b1795bc6c1.png

    好,开始上机了。刚才从侧面也可以看到,这把键盘的键帽比较高,旁边一圈都可以透光出来,所以光效不仅是从字母出透出,四周也有非常好看的光晕效果。

    fce5070e1b39cd91faf24b233cab4153.png

    从侧面来看,字体的效果也非常清晰,这算半个侧刻了吧哈哈~

    ff6a225d515e288b8e50cdc147cb3e3e.png

    对于一线大厂来说,硬件配套的驱动程序,也是产品价值很大的一部分。现在产品线较齐全的厂子都会把驱动程序、灯光工具等统一化,管理和使用都方便。说明书上的地址在海外不好打开,我们可以来华硕中国的主页这里,下载Armoury Crate奥创软件(注意不要下成Uninstall Tool)。

    db1315f213a3f842c7ba8c8cb4c936bb.png

    安装的时候我是建议两个都安的。Armoury Crate算是主驱动程序,大部分的功能都在里面。而AURA这个是增强版的灯光管理,可以把不同的设备进行灯光统一设计,非常强大。

    64478e3d7d719e6b4d9eba812beaf549.png

    对于键盘上的每一个按键,我们都可以独立设置它的功能,不管是键盘鼠标,还是系统媒体快捷键,或者是宏,怎么安排就看各人需求了。

    fe3219abd9ebb5537fe45ef3cc0c5625.png

    灯光方面,内置十几种灯效方案,并且可以具体设置颜色、亮度、速度、方向等。我们一起来看看效果:

    eff2617b2a7e85c24037a72bd598e19f.png

    95eeef9db45da810db17609d171e85f6.png

    6ae340d0bf5666129b3a86998510d79d.png

    43e2d529990bc5fb205539ebeeabd12d.png

    不管是彩虹流光,还是白色呼吸,或者是随机颜色的涟漪效果,灯光效果都非常有辨识度,而且在靓眼的同时并不会造成光污染,一般用户使用这些默认的效果就已经足够。

    39996d6e19376dfe49b9145d248f92ed.png

    而对于高阶用户,AURA提供的光效设计功能更是将灯光效果的几乎所有设置权利都交还给了用户,可以实现几乎任何可能性。这里我们用华硕ROG 游侠RX光轴机械键盘,与ROG 棱镜S游戏耳机来展示一下。

    597538599bfb3342e35ad63d56b87cce.png

    首先在AURA中,每一个设备的位置都可以自由调整,这里我就是把耳机放在了下方,而不是左右放置。然后任意的按键或者发光块,都可以独立设置为一个图层,然后将发光方案拖到时间轴上去编辑。这样的设计方式足够自由和强大,除了不能写代码外,已经无可挑剔。

    e57d534cc0cb2380b88b6f90b868f7b3.png

    GIF图限于帧率和颜色数,看个大概效果。实际的体验,只有自己上手了之后才知道多好玩了。

    dd1405f87fa85b174bf059a5baf961c2.png

    在实际体验上,得益于方形火山口结构上的四角固定,以及剪刀脚底座提供的稳定支撑,在高速录入的时候键帽稳固不晃动,而且不管敲击的是键帽的哪个部位,以及敲击的角度如何,华硕ROG 游侠 RX光轴机械键盘都能提供最快速的响应时间,最舒适的触发压力和录入反馈。其实图中可以看到,因为正面摆了三脚架和相机,我整个人是侧过来打字,右手的角度比左手要斜得多,但是丝毫不影响我的打字速度。

    163fb54f7e3dbac773449c302586890f.png

    总的来说,华硕ROG游侠RX光轴键盘在大厂自研和强大驱动的加持下,各方面表现在同价位是相当的能打。光效自不必说,AURA我建议大家都玩一玩。而手感方面,RX光学机械红轴的四角方型火山口加剪刀脚总结出一个字:稳,不论是游戏还是办公打字都非常合适。除了键帽不通用、不送掌托之外,基本挑不出什么毛病来。

    感谢大家观看,喜欢的朋友请点个关注和赞吧,我们下期再见。

    展开全文
  • 罗技g103是一款非常好用游戏键盘,用户安装好键盘驱动程序以后,即可对6个编程按键进行自定义调节和控制,在玩...官方介绍罗技G103游戏键盘,操作精确至毫秒,响应速度快至毫秒。6个可编程按键,根,欢迎下载体验
  • 按键响应速度快; 支持全键无冲; 一、硬件方案 1. USB接口   USB接口有两种方案:一是采用外围USB驱动芯片,如CH9329串口转USB,傻瓜式配置即可实现USB键盘功能,这种方案虽然减少了软件开销和难度,但是增加了...
  • 通杀所有游戏鼠标键盘模拟方法:...性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟,有时1秒钟也就传递 十几条消息,这个速度达

    通杀所有游戏的鼠标键盘模拟的方法:

    驱动级模拟:

    驱动级模拟:直接读写键盘的硬件端口!
        有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时 性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式的,消息在传递时会有不少延迟,有时1秒钟也就传递 十几条消息,这个速度达不到游戏的要求。而DirectInput则绕过了windows消息,直接与键盘驱动程序打交道,效率当然提高了不少。因此也就 造成,对这样的程序无论用PostMessage或者是keybd_event都不会有反应,因为这些函数都在较高层。对于这样的程序,只好用直接读写键 盘端口的方法来模拟硬件事件了。要用这个方法来模拟键盘,需要先了解一下键盘编程的相关知识。
        在DOS时代,当用户按下或者放开一个键时,就会产生一个键盘中断(如果键盘中断是允许的),这样程序会跳转到BIOS中的键盘中断处理程序去执行。打开 windows的设备管理器,可以查看到键盘控制器由两个端口控制。其中&H60是数据端口,可以读出键盘数据,而&H64是控制端口, 用来发出控制信号。也就是,从&H60号端口可以读此键盘的按键信息,当从这个端口读取一个字节,该字节的低7位就是按键的扫描码,而高1位则表 示是按下键还是释放键。当按下键时,最高位为0,称为通码,当释放键时,最高位为1,称为断码。既然从这个端口读数据可以获得按键信息,那么向这个端口写 入数据就可以模拟按键了!用过QbASIC4.5的朋友可能知道,QB中有个OUT命令可以向指定端口写入数据,而INP函数可以读取指定端口的数据。那 我们先看看如果用QB该怎么写代码:
    假如你想模拟按下一个键,这个键的扫描码为&H50,那就这样
    OUT &H64,&HD2   '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,&H50   '把扫描码&H50发送到&H60端口,表示模拟按下扫描码为&H50的这个键
    那么要释放这个键呢?像这样,发送该键的断码:
    OUT &H64,&HD2   '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,(&H50 OR &H80)   '把扫描码&H50与数据&H80进行或运算,可以把它的高位置1,得到断码,表示释放这个键
        好了,现在的问题就是在VB中如何向端口写入数据了。因为在windows中,普通应用程序是无权操作端口的,于是我们就需要一个驱动程序来帮助我们实 现。在这里我们可以使用一个组件WINIO来完成读写端口操作。什么是WINIO?WINIO是一个全免费的、无需注册的、含源程序的 WINDOWS2000端口操作驱动程序组件(可以到http://www.internals.com/ 上 去下载)。它不仅可以操作端口,还可以操作内存;不仅能在VB下用,还可以在DELPHI、VC等其它环境下使用,性能特别优异。下载该组件,解压缩后可 以看到几个文件夹,其中Release文件夹下的3个文件就是我们需要的,这3个文件是WinIo.sys(用于win xp下的驱动程序),WINIO.VXD(用于win 98下的驱动程序),WinIo.dll(封装函数的动态链接库),我们只需要调用WinIo.dll中的函数,然后WinIo.dll就会安装并调用驱 动程序来完成相应的功能。值得一提的是这个组件完全是绿色的,无需安装,你只需要把这3个文件复制到与你的程序相同的文件夹下就可以使用了。用法很简单, 先用里面的InitializeWinIo函数安装驱动程序,然后就可以用GetPortVal来读取端口或者用SetPortVal来写入端口了。好, 让我们来做一个驱动级的键盘模拟吧。先把winio的3个文件拷贝到你的程序的文件夹下,然后在VB中新建一个工程,添加一个模块,在模块中加入下面的 winio函数声明:
    Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
    Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
    Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
    Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
    Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
    Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
    Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
    Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As Boolean
    ' ------------------------------------以上是WINIO函数声明-------------------------------------------
    Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
    '-----------------------------------以上是WIN32 API函数声明-----------------------------------------
    再添加下面这个过程:
    Sub KBCWait4IBE()   '等待键盘缓冲区为空
    Dim dwVal As Long
      Do
      GetPortVal &H64, dwVal, 1
    '这句表示从&H64端口读取一个字节并把读出的数据放到变量dwVal中
    'GetPortVal函数的用法是GetPortVal 端口号,存放读出数据的变量,读入的长度
      Loop While (dwVal And &H2)
    End Sub
    上面的是一个根据KBC规范写的过程,它的作用是在向键盘端口写入数据前等待一段时间,后面将会用到。
    然后再添加如下过程,这2个过程用来模拟按键:
    Public Const KBC_KEY_CMD = &H64    '键盘命令端口
    Public Const KBC_KEY_DATA = &H60   '键盘数据端口
    Sub MyKeyDown(ByVal vKeyCoad As Long)   
    '这个用来模拟按下键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
      
        KBCWait4IBE   '发送数据前应该先等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令
    'SetPortVal函数用于向端口写入数据,它的用法是SetPortVal 端口号,欲写入的数据,写入数据的长度
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, btScancode, 1  '写入按键信息,按下键
       
    End Sub
    Sub MyKeyUp(ByVal vKeyCoad As Long)   
    '这个用来模拟释放键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
      
        KBCWait4IBE   '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1  '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '写入按键信息,释放键
    End Sub

    定义了上面的过程后,就可以用它来模拟键盘输入了。在窗体模块中添加一个定时器控件,然后加入以下代码:Private Sub Form_Load()  If InitializeWinIo = False Then   
      '用InitializeWinIo函数加载驱动程序,如果成功会返回true,否则返回false
        MsgBox "驱动程序加载失败!"
        Unload Me
    End If
    Timer1.Interval=3000
    Timer1.Enabled=True
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ShutdownWinIo '程序结束时记得用ShutdownWinIo函数卸载驱动程序
    End Sub
    Private Sub Timer1_Timer()
    Dim VK_A as Long = &H41
    MyKeyDown VK_A   
    MyKeyUp VK_A    '模拟按下并释放A键
    End Sub
    [/quote]
    运行上面的程序,就会每隔3秒钟模拟按下一次A键,试试看,怎么样,是不是对所有程序都有效果了?
    需要注意的问题:
    要在VB的调试模式下使用WINIO,需要把那3个文件拷贝到VB的安装目录中。
    键盘上有些键属于扩展键(比如键盘上的方向键就是扩展键),对于扩展键不应该用上面的MyKeyDown和MyKeyUp过程来模拟,可以使用下面的2个过程来准确模拟扩展键:


    QUOTE:
    Sub MyKeyDownEx(ByVal vKeyCoad As Long)   '模拟扩展键按下,参数vKeyCoad是扩展键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
        KBCWait4IBE   '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '写入扩展键标志信息
       
       
        KBCWait4IBE   '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, btScancode, 1  '写入按键信息,按下键
       
       
    End Sub

    Sub MyKeyUpEx(ByVal vKeyCoad As Long)   '模拟扩展键弹起
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
        KBCWait4IBE   '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '写入扩展键标志信息
       
       
        KBCWait4IBE   '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '写入按键信息,释放键
       
    End Sub

    还 应该注意的是,如果要从扩展键转换到普通键,那么普通键的KeyDown事件应该发送两次。也就是说,如果我想模拟先按下一个扩展键,再按下一个普通键, 那么就应该向端口发送两次该普通键被按下的信息。比如,我想模拟先按下左方向键,再按下空格键这个事件,由于左方向键是扩展键,空格键是普通键,那么流程 就应该是这样的:
    [quote]MyKeyDownEx VK_LEFT   '按下左方向键
    Sleep 200             '延时200毫秒
    MyKeyUpEx VK_LEFT     '释放左方向键
    Sleep 500
    MyKeyDown VK_SPACE   '按下空格键,注意要发送两次
    MyKeyDown VK_SPACE
    Sleep 200
    MyKeyUp VK_SPACE     '释放空格键

    我用WINIO在VB下模拟鼠标左键点击,具体代码如下:
    Private Sub XR()
       Dim Result As Boolean
      
       Result = SetPortVal(Val("&H64"), Val("&HD3"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
         Sleep 100
       Result = SetPortVal(Val("&H64"), Val("&Hf4"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
      
       Result = SetPortVal(Val("&H60"), Val("&H09"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
        
       Result = SetPortVal(Val("&H60"), Val("&H00"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
        
       Result = SetPortVal(Val("&H60"), Val("&H00"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
        
       Result = SetPortVal(Val("&H60"), Val("&H08"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
        
       Result = SetPortVal(Val("&H60"), Val("&H00"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
        
       Result = SetPortVal(Val("&H60"), Val("&H00"), 1)
      
       If (Result = False) Then
         MsgBox "Whoops ! There is a problem with SetPortByte.", vbOKOnly + vbCritical, "VBDumpPort32"
         Unload FrmVBDumpPort32
       End If
    End Sub

    展开全文
  • 模拟键盘的终极模拟3

    千次阅读 2010-12-17 08:39:00
    3.驱动级模拟  如果上面方法...这是因为有些游戏对实时性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消
    3.驱动级模拟
        如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口!
        有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式的,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏的要求。而DirectInput则绕过了windows消息,直接与键盘驱动程序打交道,效率当然提高了不少。因此也就造成,对这样的程序无论用PostMessage或者是keybd_event都不会有反应,因为这些函数都在较高层。对于这样的程序,只好用直接读写键盘端口的方法来模拟硬件事件了。要用这个方法来模拟键盘,需要先了解一下键盘编程的相关知识。
        在DOS时代,当用户按下或者放开一个键时,就会产生一个键盘中断(如果键盘中断是允许的),这样程序会跳转到BIOS中的键盘中断处理程序去执行。打开windows的设备管理器,可以查看到键盘控制器由两个端口控制。其中&H60是数据端口,可以读出键盘数据,而&H64是控制端口,用来发出控制信号。也就是,从&H60号端口可以读此键盘的按键信息,当从这个端口读取一个字节,该字节的低7位就是按键的扫描码,而高1位则表示是按下键还是释放键。当按下键时,最高位为0,称为通码,当释放键时,最高位为1,称为断码。既然从这个端口读数据可以获得按键信息,那么向这个端口写入数据就可以模拟按键了!用过QbASIC4.5的朋友可能知道,QB中有个OUT命令可以向指定端口写入数据,而INP函数可以读取指定端口的数据。那我们先看看如果用QB该怎么写代码:
    假如你想模拟按下一个键,这个键的扫描码为&H50,那就这样
    OUT &H64,&HD2  '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,&H50  '把扫描码&H50发送到&H60端口,表示模拟按下扫描码为&H50的这个键
    那么要释放这个键呢?像这样,发送该键的断码:
    OUT &H64,&HD2  '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,(&H50 OR &H80)  '把扫描码&H50与数据&H80进行或运算,可以把它的高位置1,得到断码,表示释放这个键
        好了,现在的问题就是在VB中如何向端口写入数据了。因为在windows中,普通应用程序是无权操作端口的,于是我们就需要一个驱动程序来帮助我们实现。在这里我们可以使用一个组件WINIO来完成读写端口操作。什么是WINIO?WINIO是一个全免费的、无需注册的、含源程序的WINDOWS2000端口操作驱动程序组件(可以到http://www.internals.com/上去下载)。它不仅可以操作端口,还可以操作内存;不仅能在VB下用,还可以在DELPHI、VC等其它环境下使用,性能特别优异。下载该组件,解压缩后可以看到几个文件夹,其中Release文件夹下的3个文件就是我们需要的,这3个文件是WinIo.sys(用于win xp下的驱动程序),WINIO.VXD(用于win 98下的驱动程序),WinIo.dll(封装函数的动态链接库),我们只需要调用WinIo.dll中的函数,然后WinIo.dll就会安装并调用驱动程序来完成相应的功能。值得一提的是这个组件完全是绿色的,无需安装,你只需要把这3个文件复制到与你的程序相同的文件夹下就可以使用了。用法很简单,先用里面的InitializeWinIo函数安装驱动程序,然后就可以用GetPortVal来读取端口或者用SetPortVal来写入端口了。好,让我们来做一个驱动级的键盘模拟吧。先把winio的3个文件拷贝到你的程序的文件夹下,然后在VB中新建一个工程,添加一个模块,在模块中加入下面的winio函数声明:
    Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
    Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
    Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
    Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
    Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
    Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
    Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
    Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As Boolean
    ' ------------------------------------以上是WINIO函数声明-------------------------------------------
    Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
    '-----------------------------------以上是WIN32 API函数声明-----------------------------------------
    再添加下面这个过程:
    Sub KBCWait4IBE()  '等待键盘缓冲区为空
    Dim dwVal As Long
      Do
      GetPortVal &H64, dwVal, 1
    '这句表示从&H64端口读取一个字节并把读出的数据放到变量dwVal中
    'GetPortVal函数的用法是GetPortVal 端口号,存放读出数据的变量,读入的长度
      Loop While (dwVal And &H2)
    End Sub
    上面的是一个根据KBC规范写的过程,它的作用是在向键盘端口写入数据前等待一段时间,后面将会用到。
    然后再添加如下过程,这2个过程用来模拟按键:
    Public Const KBC_KEY_CMD = &H64    '键盘命令端口
    Public Const KBC_KEY_DATA = &H60  '键盘数据端口
    Sub MyKeyDown(ByVal vKeyCoad As Long)  
    '这个用来模拟按下键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
      
        KBCWait4IBE  '发送数据前应该先等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1    '发送键盘写入命令
    'SetPortVal函数用于向端口写入数据,它的用法是SetPortVal 端口号,欲写入的数据,写入数据的长度
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, btScancode, 1  '写入按键信息,按下键
       
    End Sub
    Sub MyKeyUp(ByVal vKeyCoad As Long)  
    '这个用来模拟释放键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
      
        KBCWait4IBE  '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1  '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '写入按键信息,释放键
    End Sub

    定义了上面的过程后,就可以用它来模拟键盘输入了。在窗体模块中添加一个定时器控件,然后加入以下代码:Private Sub Form_Load()
    If InitializeWinIo = False Then  
      '用InitializeWinIo函数加载驱动程序,如果成功会返回true,否则返回false
        MsgBox "驱动程序加载失败!"
        Unload Me
    End If
    Timer1.Interval=3000
    Timer1.Enabled=True
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ShutdownWinIo '程序结束时记得用ShutdownWinIo函数卸载驱动程序
    End Sub
    Private Sub Timer1_Timer()
    Dim VK_A as Long = &H41
    MyKeyDown VK_A   
    MyKeyUp VK_A    '模拟按下并释放A键
    End Sub

    运行上面的程序,就会每隔3秒钟模拟按下一次A键,试试看,怎么样,是不是对所有程序都有效果了?
    需要注意的问题:
    要在VB的调试模式下使用WINIO,需要把那3个文件拷贝到VB的安装目录中。
    键盘上有些键属于扩展键(比如键盘上的方向键就是扩展键),对于扩展键不应该用上面的MyKeyDown和MyKeyUp过程来模拟,可以使用下面的2个过程来准确模拟扩展键:



    引用:
    Sub MyKeyDownEx(ByVal vKeyCoad As Long)  '模拟扩展键按下,参数vKeyCoad是扩展键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
        KBCWait4IBE  '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1    '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '写入扩展键标志信息
       
       
        KBCWait4IBE  '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1    '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, btScancode, 1  '写入按键信息,按下键
       
       
    End Sub

    Sub MyKeyUpEx(ByVal vKeyCoad As Long)  '模拟扩展键弹起
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
        KBCWait4IBE  '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1    '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '写入扩展键标志信息
       
       
        KBCWait4IBE  '等待键盘缓冲区为空
        SetPortVal KBC_KEY_CMD, &HD2, 1    '发送键盘写入命令
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '写入按键信息,释放键
       
    End Sub


    还应该注意的是,如果要从扩展键转换到普通键,那么普通键的KeyDown事件应该发送两次。也就是说,如果我想模拟先按下一个扩展键,再按下一个普通键,那么就应该向端口发送两次该普通键被按下的信息。比如,我想模拟先按下左方向键,再按下空格键这个事件,由于左方向键是扩展键,空格键是普通键,那么流程就应该是这样的:
    MyKeyDownEx VK_LEFT  '按下左方向键
    Sleep 200            '延时200毫秒
    MyKeyUpEx VK_LEFT    '释放左方向键
    Sleep 500
    MyKeyDown VK_SPACE  '按下空格键,注意要发送两次
    MyKeyDown VK_SPACE
    Sleep 200
    MyKeyUp VK_SPACE    '释放空格键


    好了,相信到这里,你的模拟按键程序也就差不多了,测试一下,是不是很有效呢,嘿嘿~~~~
    WINIO组件的下载地址:http://www.114vip.com.cn/download/winio.zip
    4.骨灰级模拟
        方法3算是很底层的模拟了,我现在还没有发现有它模拟无效的程序。但是如果你用尽上面所有的方法,仍然无效的话,那么还有最后一个方法,绝对对任何程序都会有效,那就是:把键盘拿出来,老老实实地按下去吧。~~~~
    展开全文
  • 这是因为有些游戏对实时性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏要求。而...
  • 这是因为有些游戏对实时性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏要求。而...
  • windows模拟键盘鼠标事件DirectX游戏中

    千次阅读 2012-08-09 10:45:32
    这是因为有些游戏对实时性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏要求。而...
  • 模拟鼠标键盘操作(硬件模拟)

    千次阅读 2010-12-12 20:59:00
    3.驱动级模拟(硬件模拟) <br /> 如果上面方法你都试过...这是因为有些游戏对实时性控制要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式,消息在传递时会有不少延迟
  • 1.运行速度快。 2.Radmin支持被控端以服务方式运行、支持多个连接和IP 过滤(即允许特定IP控制远端机器)、个性化文件互传、远程关机、支持高分辨率模式、基于Windows NT安全支持及密码保护以及提供日志文件...
  • 1.运行速度快。 2.Radmin支持被控端以服务方式运行、支持多个连接和IP 过滤(即允许特定IP控制远端机器)、个性化文件互传、远程关机、支持高分辨率模式、基于Windows NT安全支持及密码保护以及提供日志文件...
  • ALTRun 是 ET 民工 独立开发一款快速启动软件,小巧绿色,简单易用,智能匹配,响应速度及运行畅快。 快速启动俨然成为了区别计算机新手老手典型应用。小众曾经对快速启动程序工具软件进行过讨论,是 Win +...
  • U 优化 再次打开项目时首次编译速度 U 优化 GPU 加速默认打开 U 优化 增加 navigationBarBackgroundColor 是否为合法颜色值监测提示 U 优化 只有未授权时直接调用 wx.getUserInfo 才会出现升级提示 U 优化 ...
  • 手机搜狗输入法拥有40万超大词库、算法智能、响应速度快、首选率高等优秀品质,提供整句输入、键盘语音、全屏手写、英文候选、表情输入等众多必备输入法功能。搜狗输入法手机版超级键盘支持中文、英文、数字、符号...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    可我找不到任何方法来声明这样函数——感觉我需要一个返回指针函数,返回指针指向又是返回指针函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致局部数组,或者由其他参数...
  • • 如果Main 线程处理速度不够,audioin 驱动就会因为分不到buffer,而将采集语音数据丢弃。 2.6、BLE数据传送 • 将audioin 驱动发送上来数据进行编码压缩。 • 然后将编码后压缩数据切成几个20byte ...
  • 二,让你的键盘会说话 长期面对无声的电脑,我们难免疲倦。如果正在输入的内容被系统一字(字母)不差地念出来,你还能在无声的疲倦中输入错误的内容吗?以Windows 2000/XP中一个鲜为人知的“讲述人”为例教你DIY一个...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    《你必须知道495个C语言问题》以问答形式组织内容,讨论了学习或使用C语言过程中经常遇到一些问题。书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...
  • 高,那单片机运行速度也就越。MCS-51 一般晶振选择范围为1~ 24MHz,但是单片机对时间要求比较高,能够精确定时一秒,所以也是为了 方便计算我们选择12MHz 晶振。 晶振两边电容:晶振标称值在测试时...
  • 可我找不到任何方法来声明这样函数——感觉我需要一个返回指针函数,返回指针指向又是返回指针函数……,如此往复,以至无穷。 12  数组大小 13 1.23 能否声明和传入数组大小一致局部数组,或者由...
  • 问:TreeCtrl控制显示速度太慢? 87 怎样使窗口总是浮现在上面? 88 改变拖放时光标外形? 89 如何定位到最新记录上? 90 MVC和Doc-View? 90 被禁止(Disable)控件如何改变其文本或背景色? 90 有ODBC查找函数...
  • 文字编辑程序显然是I/O消耗型的,因为它大部分时间都在等待用户的键盘输入(无论用户的输入速度有多,都不可能赶上处理的速度)。用户总是希望按下键系统就能马上响应。相反,视频编码程序是处理器消耗型的。除了...
  • “通过响应的时间影响用户感觉”。就是说我们可以通过操控这个时间来影响用户对网页感觉。 <p><img alt="图片" src="https://img-blog.csdnimg.cn/img_convert/a591c764338e9b9f23e62ff9fdd4dcab.png" /></p> ...
  • Python打字小游戏《Alphabet Zoo》

    千次阅读 多人点赞 2020-10-03 13:32:02
    屏幕顶部产生下落随机字母,敲击键盘响应的键对应字母消失。字母生成和坠落的速度随着时间由慢变,难度逐渐增大。坠落到屏幕下方字母超过十个,游戏结束。 游戏设置了记分系统,敲对一个键记50分,敲错扣...

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

响应速度最快的键盘