滑鼠加速

滑鼠加速

滑鼠加速就是指針的移動速度與滑鼠的物理速度的比值隨著滑鼠物理速度的增加而增大。也就是說滑鼠在滑鼠墊上同樣移動了一厘米的情況下,如果移動的速度更快則屏幕上指針移動的距離越大。

基本信息


加速作用

為了用戶能通過微調將指針定位到每個像素,同時不會覺得大幅度移動指針時速度過慢,滑鼠加速度是必須的。尤其是一些CAD製圖工作。

開啟加速

有種簡單的方法可以判斷是否開啟加速度:滑鼠一般放在鍵盤右邊,先讓滑鼠緊靠著鍵盤右側,記住當前屏幕上指針或準星所在的位置。以很慢的速度向右移動滑鼠一段距離,然後以很快的速度將滑鼠回靠到鍵盤右側。這時有3中情況:
1、指針在水平方向回到了原來的位置,說明沒有加速度,而且你的滑鼠性能很好沒有丟幀。
2、指針離原來的位置還差一點點,說明沒有加速度但你滑鼠有丟幀的現象。
3、滑鼠超過了原來的位置,而且一般還超過不少(大約1倍),說明有滑鼠加速。

滑鼠1


當滑鼠X軸的物理速度大於某個閥值時,對應的指針速度變為2倍原始速度,大於第二個閥值時變為4倍,Y軸同理。windows提供了4種規則,對應的關係如圖。默認為2級,1級為關閉滑鼠加速。
這個規則是通過註冊表
HKEY_CURRENT_USER\Control Panel\Mouse下MouseSpeed、MouseThreshold1、MouseThreshold2這三個值的配合實現的:
MouseSpeed的值表示指針速度變化的次數,
0為無變化(無加速),
1為在閥值1以上時變化為2倍速,
2為在閥值2以上時變化為4倍速。
MouseThreshold1、MouseThreshold2則分別表示2個閥值。
因為X軸和Y軸的速度是分開計算的,就會出現一個軸向上是原始速度而另一軸向上可能已是4倍速這種情況,而這時指針的移動方向會與滑鼠實際移動的方向發生嚴重偏離。所以有了XP之後的新型滑鼠加速演演算法。

滑鼠2


WinXP滑鼠加速曲線
WinXP滑鼠加速曲線
為了解決上述問題,XP開始,windows將滑鼠移動的方向和速度分開,只通過改變向量的大小而不改變向量的方向去應用滑鼠加速。而這個速度的變化不再像WIN2000那樣一段一段的,不平滑。微軟通過大量用戶試驗,得出了一個平滑的指針速度與實際速度的關係曲線,並將這個曲線的關鍵點記錄在註冊表里。
從圖上可以看出由5個關鍵點組成,每次登陸WINDOWS時,會根據這5個點計算出一條平滑的查表函數,並同個這個函數去定義滑鼠加速。
這五個點的信息存在註冊表HKEY_CURRENT_USER\Control Panel\Mouse下SmoothMouseXCurve和SmoothMouseYCurve。X對應X坐標,Y對應Y坐標。
打開SmoothMouseXCurve你會發現有5行,每行通過雙位取反得出實際數值的16進位值。這裡不再深究,有興趣的可與本人聯繫。
MouseSpeed這個值則控制是否使用這個函數(是否開啟加速度),MouseThreshold1、MouseThreshold2則在XP及之後的版本中失效,只是因為一些老的應用可能會用到,所以保留了下來。

遊戲


CS在WIN2000下時,可以通過使系統強制將滑鼠速度固定在2倍加速的狀態下,從而相當於屏蔽了滑鼠加速。而從XP開始,因為微軟使用了全新的滑鼠加速演演算法,CS的強行加速滑鼠(forcemaccel)的功能失效了所以遊戲中出現了滑鼠加速。一些新的遊戲可以繞過滑鼠加速演演算法,或者其他方法在遊戲中消除滑鼠加速,我所知道的:《龍之谷》。有些則和CS一樣存在加速,比如《使命召喚4:現代戰爭》。
有滑鼠加速時可以提供更精確的微操定位,一些玩家喜歡滑鼠很慢很穩,提前判斷敵人出現的位置。這種人適合開啟滑鼠加速,因為當他大幅度轉身時可以提供更大的滑鼠速度,行動更靈活。壞處則是進行快速遠距離定位(相當於甩槍)時不準確,因為你無法保證每次以同樣的速度移動同樣的距離。
沒有加速的的壞處就是對應的滑鼠小範圍微調是覺得滑鼠太快瞄不準,而當你降低靈敏度之後又發現大範圍轉身變的很困難。但是通過大量的訓練,也就是專業選手,可以在很高的滑鼠靈敏度下精確控制準星(對滑鼠性能要求較高),而在快速定位時異常精準,身法也很靈活。當年的CS神話人物HeatON就是典型的代表(我也是,嘿嘿)。所以專業選手或想成為槍神的人應該關閉滑鼠加速,但是現行的關閉CS加速的方法有問題,有時還不如不關,下面我會說明並提供解決方法。

如何關閉


關閉

控制面板中找到滑鼠調整,在“指針選項”選項卡里去除“提高指針精度”前的鉤,並應用。

CS關閉

方法一:先關閉桌面加速度,再在CS的快捷方式里的目標中加入 -noforcemaccel -noforcemspd,或者只加入 -noforcemparms(此命令的功能包含了前面2個命令的功能)這兩種方法是等效的。滑鼠靈敏度剛好相當於WIN2000下一半。此方法的原理是關閉CS的'強制加速'功能,前面說過此與XP之後的系統不兼容,故關閉此功能后CS中也沒有了滑鼠加速。
方法二:徹底關閉系統加速度(有精神潔癖的可以用這種方法,但是不推薦)
申明:此方法是2010年9月由玩家YYP率先放出在此,不同於以往的mouse_fix.reg.mouse_fix.reg是很久以前玩家根據個人愛好製作的調整滑鼠加速度的補丁,有很多問題,大家別再使用。
將下面的內容複製到記事本,刪除每行前的空格,注意每串數字的\之後有1個回車2個半形空格,個並保存為NoMAccel.reg,雙擊導入后註銷或重啟。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Mouse]
"MouseSpeed"="1"
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,00,00,0a,00,00,00,00,00,00,00,\14,00,00,00,00,00,00,00,1e,00,00,00,00,00,00,00,28,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,00,00,64,00,00,00,00,00,00,00,\c8,00,00,00,00,00,00,00,2c,01,00,00,00,00,00,00,90,01,00,00,00,00
不加命令直接進入遊戲即可。這種方法適用於XP及之後的操作系統,但是CS中滑鼠靈敏度需要自己重新根據手感調整。(註:此方法可能根據不同的解析度靈敏度會不同,未經試驗證實。所以用此方法的話請固定使用一種解析度)
若想恢復系統默認值,以同樣的方法導入下面內容
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,15,6e,00,00,00,00,00,00,00,40,\ 01,00,00,00,00,00,29,dc,03,00,00,00,00,00,00,00,28,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,b8,5e,01,00,00,00,00,00,cd,4c,\ 05,00,00,00,00,00,cd,4c,18,00,00,00,00,00,00,00,38,02,00,00,00,00

最大加速


首先說明,這個概念與上述的滑鼠加速度完全無關。
大家都知道物體處於加速運動的情況下時相當於內部各處收到一個慣性力,加速度絕對值越大慣性力也越大。
滑鼠也是一樣,在使用時速度總是變化的,所以加速度有大有小,內部零件受到的慣性力也有大有小。比如15G的最大加速度意思就是滑鼠能在15G的加速度以下正常工作。
其實這個值間接代表了滑鼠的工藝和質量。