Windows7系统高阶鼠标调试详解
反恐精英online吧
全部回复
仅看楼主
level 6
刘呜呜º 楼主
 基本概念:无加速度与精确一比一   地球人都知道控制面板中的“Enhance pointer precision”(提高指针精准度,下文简称EPP)是开启鼠标加速的选项。由于在电竞、作图等领域需要对鼠标的精确控制,高阶用户都习惯关闭EPP。
每个人都会更改鼠标设置,又有几个人了解它?   加速是个老生常谈、经久不衰的话题,但鼠标设置不仅有加速度这一个方面。假设加速已经完全去除,那么手握鼠标的移动应与屏幕上指针移动呈一次线性关系,但这样就能保证鼠标移动的精确了吗?答案当然是否定的。   我们先略过鼠标引擎对信号的处理,只考虑软件方面。鼠标CPI全称counts per inch,每英寸测量数,一般容易误称为DPI,也就是dots per inch,每英寸点数,点代表屏幕上的点,即像素。只有当鼠标报告的单位移动导致指针在屏幕上移动正好一像素时,DPI才等于CPI。此时鼠标移动与指针移动之间的关系称为“精确一比一”。比如DPI最常用的为400,此时单位移动距离为1/400英寸,当鼠标移动1/400英寸时,鼠标向系统报告一个单位移动。如果设置为精确一比一,那么指针将精确地移动一个像素。   所以理想情况下,要达到指针对于鼠标移动的精确反映,那么不仅要去除加速,精确一比一也是必要的。如果设置不是精确一比一,那么一部分小幅鼠标操作会有延迟或被舍弃。

2012年02月29日 09点02分 1
level 6
刘呜呜º 楼主
各版本Windows系统对鼠标行为的处理   首先我们谈一下OS对鼠标数据的处理,也就是我们日常操作的桌面环境,游戏环境将于后文说明。   从Windows 2000,XP,到Vista,OS对数据的处理都存在缺陷,只有在Win7中得到了修复。我们先来看一小段早期Windows版本中的代码简略版本,通过分析对比详细代码我们可以得知,早期Windows在EPP开启时对于鼠标行为的计算存在严重缺陷。 function Initialise() ....if (MouseSensitivity <= 2) MouseSensitivityFactor = MouseSensitivity / 32 ....if (MouseSensitivity between 3 and 10) MouseSensitivityFactor = (MouseSensitivity - 2) / 8 ....if (MouseSensitivity between 11 and 20) MouseSensitivityFactor = (MouseSensitivity - 6) / 4 ....for i = 1 to 4 ........EnhancedSensitivityFactor[i] = (MouseSensitivity/10) ............* ScreenRefreshRate / SmoothMouseX[i] ............* SmoothMouseY[i] / (ScreenDPI * 3.5) ....end-for end-function if (MouseSpeed = 0) then ....PointerMovement = MouseMovement * MouseSensitivityFactor else ....i = FindSmoothMouseCurve(MouseMovement) ....PointerMovement = MouseMovement * EnhancedSensitivityFactor[i] end-if   1. 计算过程中对于分数的取舍导致指针抖动、漂移   在Windows 98中(至少Win98),OS内部对于加速度、速度缩放的多重计算会导致指针的分数移动,也就是说指针移动的计算结果不一定是整数。这一计算结果被分为整数和分数余数两部分,整数由结果取整得到,分数即不足一像素的余数部分,一般与整数同号。系统内部储存分数部分,并追加到下一次指针移动计算结果上。举例来说,比如+2.7像素被分为+2和+0.7两部分,-3.3像素被分为-3和-0.3两部分。   Windows XP有时追加前一余数,有时会舍弃前一余数,然后向负无穷方向近似结果,储存新的余数。向负无穷近似的意思是余数永远为正,比如-3.3像素被处理为-4和+0.7两部分。系统舍弃正余数会导致长时间后指针相对于鼠标在鼠标垫上的实际位置向上方漂移,还可能导致鼠标在水平或竖直方向轻微弯曲的移动反映在指针上成了完全水平或完全竖直的移动。这一效应在XP中最为明显,Vista略好一点。下图中小红点表示垫子上的鼠标实际移动,指针则表示XP的计算结果。
  
2012年02月29日 09点02分 2
level 6
刘呜呜º 楼主
Windows Vista有时叠加前一余数,有时会舍弃前一余数,然后向负无穷方向近似结果,储存新的余数。基本算法与XP一致,但Vista舍弃余数的频率比XP少得多。   Windows 7追加前一余数,然后将非整数的结果朝零的方向取整显示,并储存新的同号余数。这是正确的处理方法。如下图所示,当缓慢转动鼠标时,指针也进行圆周运动,没有XP或Vista明显的漂移现象,指针圆周半径小于鼠标圆周半径是由于移动速度慢所致。
  2. 利用显示器DPI缩放指针速度公式错误   从Win9x开始,微软添加了显示器DPI设置用于放大或缩小UI元素。从Windows XP开始微软将显示器DPI纳入缩放鼠标指针速度的算法中。在XP和Vista中,OS的EPP计算中对于DPI的处理是错误的。在固定鼠标和垫子的情况下,高桌面DPI导致更小的指针移动。内部计算公式包括一个除数“/DPI”。   在Windows 7中,指针速度也是根据DPI缩放的。但在固定鼠标和垫子的情况下,高桌面DPI导致更大的指针移动。内部计算公式包括一项“*DPI”。   3. 显示器分辨率和刷新率影响鼠标速度   XP和Vista在启用EPP时会根据显示器分辨率和刷新率调整鼠标速度,内部计算中包括一项“*RefreshUpdateRate/ScreenResolution”,即乘以显示器刷新率除以分辨率。所以更高的刷新率、更低的分辨率会导致更快的鼠标速度。首先,XP和Vista假定鼠标位置在显示器每次刷新的时候同时得到更新,但事实上,鼠标位置是由USB总线报告的每次信号更新的,与显示器刷新率并不同步。正确的公式应为
  而微软意图使用的公式为
  其次,即便我们暂且接受微软的理论推导,但可惜的是,在实施该理论的过程中编程人员再次犯了低级错误。XP和Vista中实际使用的公式如下
  也就是说,屏幕分辨率和屏幕刷新率两项的位置颠倒了。   为什么错误的公式如此之久后才被修复?   比如一块普通LCD屏幕使用-freq 75,桌面分辨率为默认96DPI(Win7中的100%),普通的鼠标刷新率为125Hz。   正确的系数为
  错误的系数为
  百分误差仅有
  难怪微软只有到了Win7才注意到并修复了这个错误。   Windows 7采用了正确的公式,即
  不过在此公式中,系统所采用的鼠标总线刷新率并非真实的鼠标USB回报率,而是一个固定值——150Hz。微软固定这个常数是出于如下考虑:绝大多数使用XP和Vista的低端用户设置为屏幕96DPI,屏幕刷新率60Hz,所以旧系统中系数为
  但当这些用户过渡到Win7时,为了避免使用体验上的明显差异,微软需要保持系数基本稳定,所以在Win7中需要保证新的系数公式值约为1.6
  解得鼠标总线刷新率≈153.6Hz,取整后为150Hz。因此我们可以看出,即便是在鼠标方面,Windows 7仍然是最为完善的系统,因为只有Win7使用了正确的EPP计算公式,并彻底解决了由于分数近似、取舍导致的鼠标抖动、漂移问题。
2012年02月29日 09点02分 3
level 6
刘呜呜º 楼主
Windows中鼠标输入数据的读取   Windows中应用程序共有四种方式读取鼠标输入数据:  1. WM_MOUSEMOVE函数(大多数非游戏程序、老游戏采用,受EPP影响)  2. GetCursorPos函数(老游戏采用,受EPP影响)  3. DirectInput(DirectX组件,涵盖鼠标、键盘、摇杆和其他手柄,不受EPP影响)  4. Raw Input/WM_INPUT函数(新游戏采用,不受EPP影响)   WM_MOUSEMOVE和GetCursorPos均为通过Windows读取鼠标动作,Raw Input/WM_INPUT为直接从鼠标读取的最底层数据,DirectInput与Raw Input类似但一般用于摇杆或手柄的读取。WM_INPUT对于游戏来说是最好的方式,因为它直接读取底层鼠标数据,给予精确一比一的鼠标灵敏度,并铲除了加速度的祸根。包括CS在内的大多数老游戏都采取了第一种方法WM_MOUSEMOVE。对于采取WM_MOUSEMOVE或者GetCursorPos的程序,EPP会影响程序中的鼠标加速度。一些程序会在默认情况下自动开启EPP,一些程序不会。   因此,如果一款游戏受Windows 加速度曲线(由注册表定义)的影响,它必须满足以下两个条件:  1. 使用WM_MOUSEMOVE或GetCursorPOS读取鼠标输入数据,而不是Raw Input或DirectInput   2. 程序运行时自动启用EPP   在EPP禁用的情况下如果程序运行时自动启用EPP,那么桌面控制面板的EPP设置会被覆盖。这时需要利用补丁等手段去除加速度;反之,在EPP禁用的情况下如果程序运行时不自动启用EPP,而是尊重用户的系统设置,那么在控制面板中禁用EPP已经足以去除加速度,不需要任何补丁。   负加速的始作俑者   在话题进入去加速之前,我们先谈一下所谓的负加速。对于包括CS在内的使用WM_MOUSEMOVE或GetCursorPos读取鼠标移动的游戏,鼠标被锁定在屏幕中心。游戏在每一帧过后都会不断重置鼠标的位置到屏幕中心,这是为了避免指针移动到屏幕边缘被挡住无法移动。当鼠标移动时游戏中隐藏的鼠标指针随之移动,在每一帧内,游戏计算出指针从屏幕中心移开的距离作为玩家准星的移动距离,然后将鼠标重置到屏幕中心。下一帧再重复相同步骤,以此往复。只有当控制台被调出时游戏才不会重置鼠标到屏幕中心。   当鼠标移动过快时,在一帧内指针很有可能从屏幕中央到达边缘,并撞在边缘上无法继续移动。在此距离基础上,超过屏幕边缘的任何移动都不会被系统采纳,也无法在游戏中反映出来。因此当鼠标移动过快时,准星经过的距离会小于鼠标移动距离,这就是对于常见负加速的解释。   由此可知,负加速与OS的加速度毫无关联,是任何去加速补丁都无法左右的现象。只有使用Raw Input或DirectInput才能根除负加速。高鼠标CPI,低分辨率会加剧负加速,显然提高分辨率对CS选手并不现实,所以降低CPI是避免负加速的最有效途径。
2012年02月29日 09点02分 4
level 14
太长,挽
2012年02月29日 09点02分 5
level 6
刘呜呜º 楼主
比例系数与6/11   对于所有常见的Windows系统,如果EPP关闭,则OS加速处于禁用状态。此时控制面板中的滑块对应一个比例系数用于缩放鼠标的运动,以达到增快或减慢鼠标速度的目的。如果EPP开启,则鼠标速度由比例系数和注册表加速曲线共同控制。下表为控制面板中鼠标灵敏度与比例系数的对应关系:
  为什么在任何系统中都推荐使用默认的6/11?因为只有6/11时倍乘系数为1,此时鼠标移动与指针移动是精确一比一的关系。即便加速已经去除,使用任何其他的档位时,系统都会通过倍乘缩放鼠标移动,导致移动的不准确。   举例来说,假设控制面板设置为3/11,鼠标移动3个单位,经过运算3*0.25=0.75,指针不会移动;下一次USB回报时报告鼠标再移动2个单位,经过运算2*0.25=0.5,与上次移动余数相加为1.25,这时指针才会移动1个像素。此时定位的不准确是由于倍乘系数<1,导致鼠标的细微运动在屏幕上没有反映。
除了过快的鼠标速度,强直线修正也会导致这种现象   假设控制面板设置为9/11,鼠标移动1个单位,经过运算1*2.5=2.5,指针移动2像素;下一次USB回报时报告鼠标再移动1个单位,经过运算1*2.5=2.5,与上次移动余数相加为3,这时指针移动3个像素。这样一来,同样的鼠标移动,在屏幕上却会导致不同的指针移动。而且,即便鼠标以最小单位逐步移动,屏幕上仍有某些像素一定会被跳过,无法用指针精确定位到。此时定位的不准确是由于倍乘系数>1,导致精密定位的困难。
2012年02月29日 09点02分 6
level 6
刘呜呜º 楼主
XP使用Cheese:精确一比一
Win7使用Cheese:大多数一比一,但常有误差   总结:Cheese为XP/Vista彻底去除加速度,并将屏幕刷新率考虑在内,在6/11时提供精确一比一。   3. MarkC Mouse Fix与生成器   MarkC补丁的横空出世弥补了CPL和Cheese的缺憾,解决了Win7下彻底去除EPP加速以及精确一比一的难题。MarkC去除Win7加速的效果与Cheese在XP/Vista中的效果完全一致。MarkC工具分为标准补丁和补丁生成器两款。   标准MarkC补丁用于在Win7中消除EPP加速并在6/11时提供精确一比一。首先确定桌面字体显示大小(系统默认值100%),并将控制面板中鼠标灵敏度设为默认6/11。然后在管理员权限下根据DPI选择相应补丁导入注册表,最后注销或重启生效。
桌面右键 选择外观与个性化, 选择显示    如果用户没有管理员权限,系统会显示部分补丁内容导入失败,这是由于补丁的一部分内容将Windows欢迎屏幕的加速关闭。如果这部分内容导入失败,而用户又使用欢迎屏幕登录系统的话,欢迎屏幕的加速度会使未完全导入的补丁产生误差,鼠标变向时将产生每鼠标单位移动1个像素的误差。1像素的微小误差一般很难注意到,但如果要修复这一问题,有以下几个方法可以任选其一使用:   1. 右键点击禁用欢迎屏幕加速的Disable_WelcomeScreen+Login_Accel.cmd,以管理员身份运行  2. 换用管理员账户登录系统,导入Disable_WelcomeScreen+Login_Accel.reg补全缺失的内容,或重新导入整个补丁文件。  3. 以管理员身份运行regedit,将HKEY_USERS\.DEFAULT\Control Panel\Mouse\MouseSpeed手动改为0   4. 在欢迎屏幕中不触碰鼠标,仅使用键盘(方向键和回车)选择用户登录系统   MarkC补丁生成器是一个生成自定义注册表补丁的VBS脚本,用于在任何系统任何设置下EPP启用时提供加速度去除和精确一比一。如果用户不使用6/11或者桌面自定义DPI不在默认选项之中,又希望享受精确一比一定位,MarkC生成器会根据OS版本采取不同公式,为任何控制面板设置、任何自动以桌面DPI、任何屏幕刷新率生成补丁文件。
按步骤输入参数生成专用补丁   运行MarkC_Windows7+Vista+XP_MouseFix_Builder.cmd或MarkC_Windows7+Vista+XP_MouseFix_Builder.vbs。对于XP/Vista,输入1选择OS类型,输入控制面板显示DPI(默认96)、游戏中的刷新率(-freq设置)以及控制面板中鼠标灵敏度,最后选择比例系数(建议一比一)。对于Win7,输入2选择OS类型,输入控制面板显示DPI(默认100%)以及控制面板中鼠标灵敏度,最后选择或输入自定义比例系数(建议一比一)。以管理员身份运行生成的补丁文件,注销或重启生效。
Win7使用MarkC:精确一比一   虽然MarkC补丁相对于CPL和Cheese有种种优势,但它唯一的劣势就是更容易出现负加速。由于保证了精确一比一,MarkC补丁的鼠标速度较于CPL和Cheese明显更快。举例来说,如果开启EPP,设置为3/11并分别使用CPL和MarkC补丁消除加速,CPL的比例系数为0.31,而MarkC的比例系数为1(精确一比一)。如果出现负加速可以尝试降低鼠标CPI,如果不愿降低鼠标CPI又不在乎精确一比一的话可以直接使用标准MarkC补丁文件,而不使用生成器,这样可以去除加速,但没有精确一比一。   结论:标准MarkC补丁为Win7完全去除加速,并在6/11时提供精确一比一的鼠标响应。MarkC补丁生成器在标准补丁的基础上,可以为任何控制面板鼠标灵敏度设置和个性化桌面DPI提供精确一比一。
2012年02月29日 09点02分 8
level 6
刘呜呜º 楼主
 CS的去加速参数   分析了所有注册表补丁后,我们讨论一下CS的去加速启动参数。先来看一段Goldsource引擎(HL,CS)的源代码: =========== IN_StartupMouse =========== */ void IN_StartupMouse (void) { if ( gEngfuncs.CheckParm ('-nomouse', NULL ) ) return; mouseinitialized = 1; mouseparmsvalid = SystemParametersInfo (SPI_GETMOUSE, 0, originalmouseparms, 0); if (mouseparmsvalid) { if ( gEngfuncs.CheckParm ('-noforcemspd', NULL ) ) newmouseparms[2] = originalmouseparms[2]; if ( gEngfuncs.CheckParm ('-noforcemaccel', NULL ) ) { newmouseparms[0] = originalmouseparms[0]; newmouseparms[1] = originalmouseparms[1]; } if ( gEngfuncs.CheckParm ('-noforcemparms', NULL ) ) { newmouseparms[0] = originalmouseparms[0]; newmouseparms[1] = originalmouseparms[1]; newmouseparms[2] = originalmouseparms[2]; } } mouse_buttons = MOUSE_BUTTON_COUNT; } /*   通过分析代码和Valve的文档我们可以得知,对于Goldsource引擎:   1. 默认运行参数为-useforcedmparms   2. -noforcemparms“禁用强制鼠标参数”,即恢复桌面鼠标按键设置,解除键位的功能绑定,是以下两个命令的前提  3. -noforcemaccel“禁用强制鼠标加速”,即恢复桌面鼠标加速设置,在EPP禁用的情况下不自动启用EPP,必须先开启-noforcemparms   4. -noforcemspd“禁用强制鼠标速度”,即使用桌面鼠标速度设置,此时鼠标速度由控制面板的倍乘系数与CS中鼠标灵敏度相乘共同决定,必须先开启-noforcemparms   同理,对于Source引擎:   1'. 默认运行参数为-noforcemparms   2'. -useforcedmparms“启用强制鼠标参数设置”,是以下两个命令的前提  3'. -noforcemaccel“禁用强制鼠标加速”,即恢复桌面鼠标加速设置,在EPP禁用的情况下不自动启用EPP,必须先开启-useforcedmparms   4'. -noforcemspd“禁用强制鼠标速度”,即使用桌面鼠标速度设置,此时鼠标速度由控制面板的倍乘系数与CS中鼠标灵敏度相乘共同决定,必须先开启-useforcedmparms
最常用的两参数在禁用EPP时已经可以完美去加速   因此在系统EPP禁用的情况下,-noforcemparms -noforcemaccel可以阻止CS 1.6开启EPP,从而达到避免加速的目的。如果使用这两个命令,注册表加速曲线对鼠标速度毫无影响,此时任何注册表补丁都是无效的。所以两参数配合注册表补丁共同使用是多余的,二者任选其一都可以去除加速。   如果要禁用EPP使用OS无加速设置,使用-noforcemparms -noforcemaccel作为启动参数即可,如果还需要精确一比一,将控制面板设置为6/11。Source引擎不需要添加任何启动参数。如果要启用EPP使用注册表补丁的去加速正比例函数,不需要使用-noforcemaccel,基本去加速导入修正CPL补丁,精确一比一使用Cheese或MarkC。Source引擎需要添加-useforcedmparms。
2012年02月29日 09点02分 9
level 10
[拍手]
2012年02月29日 09点02分 11
level 6
刘呜呜º 楼主
 Mouse Movement Recorder   Mouse Movement Recorder 1.6(MMR)是一款检测鼠标移动与指针移动之间对应关系和USB回报率的利器。MMR的原理是通过对比连续两帧屏幕中的指针位置得到指针位移,并与USB报告的鼠标位移相对比。第一栏为鼠标实际移动,第二栏为指针在屏幕上的移动,第三栏为实时USB回报率,最后一栏是程序检测的EPP是否关闭。绿色表示鼠标灵敏度比例系数<1,即指针移动慢于鼠标移动,红色表示>1,即指针快过鼠标移动。
G500 @ 1000Hz   如果加速度得到去除并且精确一比一的话,前两栏的两个矢量应该恒等。其实去加速没有那么难,上图为Win7 x64 Ultimate环境下无任何附加驱动或补丁,仅通过6/11禁用EPP得到的MMR截图,可以看出这样简单的设置就可以去除加速并得到精确一比一的对应关系。
MMR也会有误报,果断不予理会   在使用MMR时有几点需要注意。   1. 绿色或红色不代表一定有加速。如果使用CPL、Cheese或标准MarkC补丁,而滑块不在6/11的话,虽然加速已经去除,但没有精确一比一的关系,MMR也还是会显示绿或红色  2. 如果用MMR测试时有游戏在运行,游戏频繁将指针重置到屏幕中央会使MMR的检测失效(如CS,COD)  3. 如果使用了鼠标厂商的驱动管理速度和加速度,MMR无法检测到驱动在底层对鼠标数据施加的加速度  4. 如果MMR绝大多数时显示精确一比一,仅时而显示绿红相邻的两行或数行,而这几行内的总位移相等的话,那这是由于MMR的工作机制决定的,并不代表加速。举例来说如果系统资源紧张或鼠标USB回报率很高,在USB下一次报告鼠标移动时Windows还没有更新指针位置,这时MMR会纪录0 x 0,当系统终于反应过来根据两次报告的位移更新指针位置后,MMR探测到的指针位移是前两次之和,于是再次高亮显示。从上图第三栏频率可以看出这种延迟一般在1ms左右,与加速度无关而且完全可以忽略不计。
2012年02月29日 09点02分 12
level 6
刘呜呜º 楼主
 硬件与驱动因素   说了很多普遍适用的OS、程序和软件工具方面的问题,但鼠标本身及其驱动也是不可忽视的一环。鼠标需要注意的问题包括光头丢帧,硬件加速和直线修正(预测)。   丢帧是个无法克服的问题,只能通过换鼠标/垫子组合来解决。一般来说布垫兼容性最好,塑胶其次,玻璃最差。光头丢帧不仅会导致常见的鼠标满天飞,比如IE3和IO1.1的丢帧还会导致负加速的现象。据说这是由于一般的引擎如果丢帧会发送错误的鼠标移动数据,导致指针的大幅错误移动,而微软的第二代IntelliEye引擎如果追踪失败则不会发发送任何移动数据,所以指针不会乱飞而是停在原地,导致了快速挥动时转身不足。有用户报告某些垫子上通过调整USB回报率至500Hz或1000Hz可以减轻此现象,但IE/IO丢帧负加速的问题只能通过更换鼠标根除。   硬件加速并不常见,典型代表是Kinzu。更新固件有可能会解决硬件加速的问题,但软件手段是断然无能为力的,所以很多无法忍受加速的选手果断放弃了Kinzu。
IE3.0和IO1.1广受称赞的就是引擎无任何修正,罗技的修正也不强且开关自由   直线修正也是一个备受唾弃的功能,虽然少数用户喜欢修正带来的稳健感,但对于使用专业鼠标垫、需要精确定位的用户是无法容忍的。多数鼠标的修正是由引擎决定的不可更改,少数采用高端引擎的鼠标可以通过驱动或刷新固件来调整直线修正的开关及程度。比如罗技驱动中有角度锁定的选项,Razer老版1800cpi蝰蛇可选固件是否包含漂移控制,SteelSeries驱动中提供FreeMove和ExactAim两个选项。内建硬件强修正的代表是Zowie EC系列,可笑的是某些枪文鼓吹厂家通过提高USB回报率的设计来“抵消”修正,实际上任何用户都可以用简单测试一辨真伪,徒手画直线顷刻之间变得轻而易举。
自从用了EC,手也不抖了甩枪也不斜了,身体倍儿好吃嘛嘛香  微软的驱动基本与系统设置为一体。罗技驱动可以选择由驱动管理或由OS管理鼠标速度和加速度,如果选择由驱动管理,则驱动绕过系统完全接管鼠标,在任何系统环境下可以提供统一的手感。Razer驱动因鼠标和版本而异,某些驱动界面实际调整的是OS控制面板设置,某些驱动可以提供单独的速度和加速度设置,此外据用户反应某些版本存在bug,更改驱动设置并无效果。   结语   工欲善其事必先利其器,在选择了一款适合个人的鼠标后,软件方面的调试同样至关重要。诚然硬件和软件都不是最重要的,但却能显着影响能力的发挥。通过本文的介绍大家应该可以对鼠标调试的方方面面有一个清晰的认识,解释不同环境下调试结果不同的原因,并能找到最适合自己的方案。希望大家首先在调试机器方面与最高水平接轨,从而可以在不被客观条件束缚的环境下充分专注于个人能力的提升。最后特别感谢大神Mark Cranness对本文的贡献,他的杰作MarkC补丁、补丁生成器,对MMR的修订升级以及对鼠标问题耐心透彻的阐释使所有鼠标用户获益匪浅。作者才疏学浅,疏漏歧误在所难免,欢迎大家提出评论和建议使本文趋于完善。
2012年02月29日 09点02分 14
level 12
还以为是坟。。。吓尿了
2012年02月29日 09点02分 16
level 6
刘呜呜º 楼主
反正你们看不懂 !
2012年02月29日 09点02分 17
level 12
确认没来错贴吧?[汗]
2012年02月29日 10点02分 18
level 14
[啊!] 拜。
2012年02月29日 10点02分 19
level 6
刘呜呜º 楼主
我错了 !我就知道你们看不懂!
2012年02月29日 10点02分 20
level 13
真TM复杂
2012年02月29日 10点02分 21
level 14
这你妹也太专业了吧,又这么长,谁能看懂啊
2012年02月29日 10点02分 22
level 6
刘呜呜º 楼主
我把我承认 我 发错 贴吧了!
2012年02月29日 10点02分 23
1 2 尾页