360原裝手柄LT和RT在控制面板顯示為Z軸正常嗎?

其實我主要就是想知道Z軸是否正常.


當然正常。

標準的X360手柄在Win7系統下,使用官方驅動,在控制面板中如上圖所示。

可以看到,該驅動一共使用了5軸10按鍵1PoV,其中左搖桿對應X、Y軸;右搖桿對應rX、rY;而LT和RT鍵則對應了Z軸的增減。至於方向鍵,則是右下角的PoV。

我打賭你現在肯定犯嘀咕(要不然你就不會發帖來問了):這tm不是坑爹嗎,LT和RT一起按的話,Z軸就回中了啊!遊戲怎麼知道我是兩個都按了還是兩個都沒按?

沒錯,如果你直接用X360手柄+官方驅動,而且玩的是老遊戲的話,很可能不支持LT+RT同按的操作。

我再告訴你個更坑爹的事:微軟是故意這麼乾的。

——————長文預警——————

話要說回1994年底,當時微軟正在準備它屌炸天的新一代操作系統Windows95。一切看起來都似乎令人滿意,但還有個大問題——遊戲開發者不喜歡Windows,無論是1.0還是最新的3.1。在MSDOS中並沒有特別好用且有效的圖形編程辦法,為了最大程度發揮硬體性能,只能讓程序直接訪問顯存,而當時的顯卡晶元五花八門,做兼容的難度可想而知。即使如此,在卡馬克的引領下,程序員們依然我行我素地在MSDOS上開發遊戲,大有一條路干到黑的趨勢。

微軟想讓Windows95成為所有人家用辦公必備的系統,而這個目標離不開遊戲的支持。為了吸引開發者,微軟製作了一套API,稱為DirectX,其標準包括輸入、音頻、畫面等。遊戲程序通過DirectX中的統一介面,可以實現高性能的圖形操作,而硬體兼容性的部分,則由硬體廠商來搞定。這個想法非常的好,只是DirectX的初期版本並不是那麼靠譜(微軟的東西向來這樣),因此並沒有奏效。尤其是大神級卡馬克一直不買賬,死抱著OpenGL。而顯卡商3dfx也借著Voodoo卡的淫威,自己打起自己的小算盤,另推了一套Glide標準,風行一時。

但是微軟就像龜兔賽跑中的小王八,即使起跑落後,也並未放棄前行的腳步。DirectX依然在穩步改進,到了6已經有了不錯的評價。而新一代神卡,史上第一款GPU:GeForce256,則徹底把DirectX 7扶上了王座。

似乎又例行跑題了。不過,你還記得上文說了DirectX標準中有「輸入」這一項嗎?沒錯,它提供了一套叫做DirectInput的介面,用來兼容不同的輸入設備。對於遊戲搖桿/手柄這樣的設備(c_dfDIJoystick),DirectInput支持至少6個標準軸、32個按鍵和一個POV(Buffered Joystick Data)。從界面和映射上看,X360手柄在控制面板中的測試窗口,也就是上面一開始那張圖,應該就是用的DirectInput。

這裡我要說一下,以前的遊戲機手柄大多是數字按鍵,即每個鍵只有按下和抬起兩種狀態。從N64開始,模擬搖桿流行起來——輸入並不只是八個方向,而是兩個模擬軸在一定範圍內的坐標,從而實現力度感應、讓玩家能夠更精確控制角色。而PS2把這個噱頭玩到了極致,DS2/3手柄上幾乎所有的按鍵都帶壓感,只要遊戲支持,就可以做出輕按和重按的區別。

XBOX初代手柄也跟風支持了全壓感,微軟很快發現支持普通按鍵壓感的遊戲只是極少數(MGS淚目),因此,微軟又在X360手柄中取消了大部分壓感按鍵,除了搖桿外,只有兩個扳機鍵保留了壓感功能——明擺著就是給射擊遊戲和駕駛遊戲設計的。這樣做除了節省微乎其微的材料成本,還可以不讓遊戲支持那麼多模擬鍵(軸),方便移植Windows。兩個搖桿加兩個扳機,6個軸就夠用了。

(後來索尼在PS3上把扳機設計抄了過來,PS4上又抄了整個偷工減料的主意,由於輸入設備的縮水,那幾個用到壓感按鈕的老遊戲恐怕是無法完美移植了)

且慢,不是說好了6個軸嗎,為啥變5個軸了呢?

確實很蹊蹺。有人認為LT和RT的壓感主要是給賽車遊戲設計的,一個剎車一個油門,因此共用一個軸就夠了。我堅決不信這個說法——剎車和油門分開是常識需求(Special Case Mappings (Windows Drivers))。

微軟的官方說法是為了照顧兼容性。

(XInput and DirectInput (Windows))

原來,對於DirectInput設備,當用戶沒有操作時,遊戲通常認為軸的位置是居中的,但X360手柄不按扳機時發送的卻是最小值。這樣一來玩老遊戲時就可能出問題,沒按鍵遊戲卻認為你按了。於是微軟故意把兩個扳機放在同一個軸上,一個正一個負,都沒按的時候就相互抵消。

這個解決方案的副作用也就是上面說的同按不好使,DirectInput還有一些缺陷如不支持震動等。而在DirectX 9中,微軟引入了一套全新的輸入介面XInput,用來替代DirectInput。XInput完美兼容X360手柄,使用它可以更簡單地跨平台(Xbox-PC)開發。若遊戲開發者使用XInput來識別輸入,就不會有任何問題。

——————結論——————

所以,在控制面板中你看到的LT和RT互相干擾,是因為它用了DirectInput;而在遊戲中工作正常(例如GTA按住LT舉槍,再按RT射擊),則是因為遊戲支持XInput的緣故。這個維基頁面列出了大部分支持XInput的遊戲。注意,有一些遊戲是需要手動啟用XInput設置的,比如實況足球系列。

List of games with XInput support

如果你要玩的遊戲不支持XInput,則可以採用第三方手柄驅動,將其中一個扳機映射成rZ軸,或者乾脆把它們變成普通按鍵,來解決LT+RT同按問題。


因為360手柄的lt和rt鍵屬於線性輸入而非單純的按鍵,因此作為z軸顯示是正常的。有線和無線手柄都是。


你是插到pc上?如果是xp要下一個布丁 如果是win7直接就能用 跨平台的遊戲 比如刺客信條 龍騰世紀 nba2k15進遊戲後鍵位都是自動和xbox上一樣的不用自己設


自學 C++ 做了一個小程序 可以解決這個問題

搜索 X2DCLI

演示看這裡 https://www.bilibili.com/video/av9315491/


推薦閱讀:

小米最近會出小米槍戰的手柄嗎?
14寸筆記本電腦+北通的簡單遊戲手柄,求小遊戲推薦?
如何評價以觸控操縱為主的 Steam Controller 手柄,這是妥協嗎,和傳統的搖桿相比如何?

TAG:遊戲 | MicrosoftWindows | Xbox360 | 第一人稱視角射擊遊戲FPS | 遊戲手柄 |