6.1. 介紹¶
Linux 的搖桿驅動程式支援多種搖桿和類似裝置。它基於一個旨在支援 Linux 中所有輸入裝置的更大專案。
該專案的郵件列表是
傳送“subscribe linux-input”到 majordomo@vger.kernel.org 以訂閱該郵件列表。
6.2. 使用¶
對於基本用法,您只需在核心配置中選擇正確的選項即可。
6.2.1. 實用工具¶
出於測試及其他目的(例如序列埠裝置),有一套實用工具,例如 jstest、jscal 和 evtest,通常打包為 joystick、input-utils、evtest 等。
如果您的搖桿連線到序列埠,則需要 inputattach 實用工具。
6.2.2. 裝置節點¶
為了讓應用程式能夠使用搖桿,應在 /dev 中建立裝置節點。通常這由系統自動完成,但也可以手動完成。
cd /dev
rm js*
mkdir input
mknod input/js0 c 13 0
mknod input/js1 c 13 1
mknod input/js2 c 13 2
mknod input/js3 c 13 3
ln -s input/js0 js0
ln -s input/js1 js1
ln -s input/js2 js2
ln -s input/js3 js3
為了使用 inpututils 進行測試,建立這些裝置節點也很方便。
mknod input/event0 c 13 64
mknod input/event1 c 13 65
mknod input/event2 c 13 66
mknod input/event3 c 13 67
6.2.3. 所需模組¶
為了使所有搖桿驅動程式正常工作,您需要在核心中載入或編譯使用者空間介面模組。
modprobe joydev
對於遊戲埠搖桿,您還需要載入遊戲埠驅動程式。
modprobe ns558
對於序列埠搖桿,您需要載入序列埠輸入線路規程模組並啟動 inputattach 實用工具。
modprobe serport
inputattach -xxx /dev/tts/X &
除此之外,您還需要搖桿驅動程式模組本身,通常您會有一個模擬搖桿。
modprobe analog
對於自動模組載入,類似這樣的方法可能有效——請根據您的需求進行調整。
alias tty-ldisc-2 serport
alias char-major-13 input
above input joydev ns558 analog
options analog map=gamepad,none,2btn
6.2.4. 驗證其是否工作¶
為了測試搖桿驅動程式的功能,實用工具包中有一個 jstest 程式。您可以輸入以下命令執行它:
jstest /dev/input/js0
它應該顯示一行搖桿值,這些值會隨著您移動搖桿和按下按鈕而更新。當搖桿位於中心位置時,所有軸的值應為零。它們不應該自行抖動到其他接近的值,並且在搖桿的任何其他位置也應保持穩定。它們應具有從 -32767 到 32767 的完整範圍。如果所有這些都滿足,那麼一切都正常,您可以玩遊戲了。:)
如果不是,則可能存在問題。嘗試校準搖桿,如果仍然無法工作,請閱讀本文件的驅動程式部分、故障排除部分和常見問題解答。
6.2.5. 校準¶
對於大多數搖桿,您不需要任何手動校準,因為搖桿應該由驅動程式自動校準。但是,對於某些不使用線性電阻的模擬搖桿,或者如果您需要更高的精度,可以使用 jscal 程式
jscal -c /dev/input/js0
搖桿軟體包中包含該程式,用於設定比驅動程式自行選擇的更好的校正係數。
校準搖桿後,您可以使用 jstest 命令驗證新校準是否滿意,如果滿意,則可以將校正係數儲存到檔案中
jscal -p /dev/input/js0 > /etc/joystick.cal
並將一行新增到您的 rc 指令碼中以執行該檔案
source /etc/joystick.cal
這樣,在下次重啟後,您的搖桿將保持校準狀態。您還可以將 jscal -p 行新增到您的關機指令碼中。
6.3. 硬體特定驅動資訊¶
本節描述了每個獨立的硬體特定驅動程式。
6.3.1. 模擬搖桿¶
analog.c 驅動程式使用遊戲埠的標準模擬輸入,因此支援所有標準搖桿和遊戲手柄。它使用非常先進的例程,提供在任何其他系統上都找不到的資料精度。
它還支援 CH Flightstick Pro、ThrustMaster FCS 或 6 鍵和 8 鍵遊戲手柄相容的擴充套件,如附加的方向帽和按鈕。Saitek Cyborg '數字' 搖桿也受此驅動程式支援,因為它們本質上是增強型 CHF 搖桿。
然而,唯一可以自動檢測的型別是
2軸,4鍵搖桿
3軸,4鍵搖桿
4軸,4鍵搖桿
Saitek Cyborg ‘數字’ 搖桿
對於其他搖桿型別(更多/更少的軸、方向帽和按鈕),您需要在將 analog 模組插入核心時,在核心命令列或模組命令列上指定型別。引數是
analog.map=<type1>,<type2>,<type3>,....
‘type’ 是下表中搖桿的型別,定義了系統中游戲埠上存在的搖桿,從 gameport0 開始,第二個 ‘type’ 條目定義 gameport1 上的搖桿,依此類推。
型別
含義
無
該埠無模擬搖桿
自動
自動檢測搖桿
2鍵
2鍵 n軸搖桿
Y型搖桿
Y型線纜上的兩個2鍵2軸搖桿
Y型手柄
Y型線纜上的兩個2鍵2軸遊戲手柄
fcs
Thrustmaster FCS 相容搖桿
chf
帶 CH Flightstick 相容方向帽的搖桿
fullchf
CH Flightstick 相容,帶兩個方向帽和6個按鈕
遊戲手柄
4/6鍵 n軸遊戲手柄
8鍵手柄
8鍵 2軸遊戲手柄
如果您的搖桿不屬於上述任何類別,您可以透過組合下表中的位來將型別指定為數字。除非您確實知道自己在做什麼,否則不建議這樣做。這不危險,但也不簡單。
位
含義
0
軸 X1
1
軸 Y1
2
軸 X2
3
軸 Y2
4
按鈕 A
5
按鈕 B
6
按鈕 C
7
按鈕 D
8
CHF 按鈕 X 和 Y
9
CHF 方向帽 1
10
CHF 方向帽 2
11
FCS 方向帽
12
手柄按鈕 X
13
手柄按鈕 Y
14
手柄按鈕 U
15
手柄按鈕 V
16
Saitek F1-F4 按鈕
17
Saitek 數字模式
19
遊戲手柄
20
搖桿2 軸 X1
21
搖桿2 軸 Y1
22
搖桿2 軸 X2
23
搖桿2 軸 Y2
24
搖桿2 按鈕 A
25
搖桿2 按鈕 B
26
搖桿2 按鈕 C
27
搖桿2 按鈕 D
31
搖桿2 遊戲手柄
6.3.2. Microsoft SideWinder 搖桿¶
Microsoft ‘數字超速’ 協議由 sidewinder.c 模組支援。所有當前支援的搖桿
Microsoft SideWinder 3D Pro
Microsoft SideWinder 力反饋 Pro
Microsoft SideWinder 力反饋方向盤
Microsoft SideWinder FreeStyle Pro
Microsoft SideWinder 遊戲手柄(最多四個,可鏈式連線)
Microsoft SideWinder 精準 Pro
Microsoft SideWinder 精準 Pro USB
均可自動檢測,因此無需模組引數。
3D Pro 有一個注意事項。儘管搖桿只有8個按鈕,但報告有9個按鈕。第9個按鈕是搖桿背面上的模式開關。然而,移動它會重置搖桿,並使其在大約三分之一秒內無響應。此外,搖桿也會重新居中,將此時的位置作為新的中心位置。如果您想使用它,請三思。
SideWinder Standard 不是數字搖桿,因此由上述模擬驅動程式支援。
6.3.3. Logitech ADI 裝置¶
Logitech ADI 協議由 adi.c 模組支援。它應該支援任何使用此協議的羅技裝置。這包括但不限於
Logitech CyberMan 2
Logitech ThunderPad 數字版
Logitech WingMan Extreme 數字版
Logitech WingMan Formula
Logitech WingMan Interceptor
Logitech WingMan 遊戲手柄
Logitech WingMan 遊戲手柄 USB
Logitech WingMan 極限遊戲手柄
Logitech WingMan Extreme 數字 3D
ADI 裝置可自動檢測,該驅動程式支援在單個遊戲埠上連線多達兩個裝置(任意組合),可使用 Y 型線纜或鏈式連線。
Logitech WingMan Joystick、Logitech WingMan Attack、Logitech WingMan Extreme 和 Logitech WingMan ThunderPad 不是數字搖桿,由上述模擬驅動程式處理。Logitech WingMan Warrior 和 Logitech Magellan 由下面描述的序列埠驅動程式支援。Logitech WingMan Force 和 Logitech WingMan Formula Force 由下面描述的 I-Force 驅動程式支援。Logitech CyberMan 尚不受支援。
6.3.4. Gravis GrIP¶
Gravis GrIP 協議由 grip.c 模組支援。它目前支援
Gravis GamePad Pro
Gravis BlackHawk 數字版
Gravis Xterminator
Gravis Xterminator DualControl
所有這些裝置都可自動檢測,您甚至可以在單個遊戲埠上使用任意組合的最多兩個這些手柄,無論是鏈式連線還是使用 Y 型線纜。
GrIP MultiPort 尚不受支援。Gravis Stinger 是一個序列埠裝置,由 stinger 驅動程式支援。其他 Gravis 搖桿由模擬驅動程式支援。
6.3.5. FPGaming A3D 和 MadCatz A3D¶
由 FPGaming 建立的 Assassin 3D 協議,FPGaming 自己使用,並授權給 MadCatz。A3D 裝置由 a3d.c 模組支援。它目前支援
FPGaming Assassin 3D
MadCatz Panther
MadCatz Panther XL
所有這些裝置都可自動檢測。由於 Assassin 3D 和 Panther 允許連線模擬搖桿,因此您還需要載入模擬驅動程式來處理連線的搖桿。
軌跡球應與 USB mousedev 模組一起作為普通滑鼠使用。有關如何設定 USB 滑鼠,請參閱 USB 文件。
6.3.6. ThrustMaster DirectConnect (BSP)¶
TM DirectConnect (BSP) 協議由 tmdc.c 模組支援。這包括但不限於
ThrustMaster Millennium 3D Interceptor
ThrustMaster 3D Rage 手柄
ThrustMaster Fusion 數字遊戲手柄
未直接支援但有望工作的裝置有
ThrustMaster FragMaster
ThrustMaster Attack Throttle
如果您擁有其中之一,請與我聯絡。
TMDC 裝置可自動檢測,因此無需模組引數。最多兩個 TMDC 裝置可以使用 Y 型線纜連線到單個遊戲埠。
6.3.7. Creative Labs Blaster¶
Blaster 協議由 cobra.c 模組支援。它僅支援
Creative Blaster 遊戲手柄 Cobra
最多兩個此裝置可以使用 Y 型線纜連線到單個遊戲埠。
6.3.8. Genius 數字搖桿¶
Genius 數字通訊搖桿由 gf2k.c 模組支援。這包括
Genius Flight2000 F-23 搖桿
Genius Flight2000 F-31 搖桿
Genius G-09D 遊戲手柄
其他 Genius 數字搖桿尚不受支援,但可以相當容易地新增支援。
6.3.9. InterAct 數字搖桿¶
InterAct 數字通訊搖桿由 interact.c 模組支援。這包括
InterAct HammerHead/FX 遊戲手柄
InterAct ProPad8 遊戲手柄
其他 InterAct 數字搖桿尚不受支援,但可以相當容易地新增支援。
6.3.10. PDPI Lightning 4 遊戲卡¶
PDPI Lightning 4 遊戲卡由 lightning.c 模組支援。模組載入後,模擬驅動程式可用於處理搖桿。數字通訊搖桿僅在埠 0 上工作,而使用 Y 型線纜,您可以將最多 8 個模擬搖桿連線到單個 L4 卡,如果系統中有兩張卡,則可連線 16 個。
6.3.11. Trident 4DWave / Aureal Vortex¶
配備 Trident 4DWave DX/NX 或 Aureal Vortex/Vortex2 晶片組的音效卡提供“增強遊戲埠”模式,其中音效卡處理搖桿輪詢。此模式由 pcigame.c 模組支援。載入後,模擬驅動程式可以使用這些遊戲埠的增強功能。
6.3.12. Crystal SoundFusion¶
配備 Crystal SoundFusion 晶片組的音效卡提供“增強遊戲埠”,與上述 4DWave 或 Vortex 非常相似。SoundFusion 埠的此模式以及普通模式均由 cs461x.c 模組支援。
6.3.13. SoundBlaster Live!¶
Live! 有一個特殊的 PCI 遊戲埠,雖然它不提供像 4DWave 等“增強”功能,但比其 ISA 對應物快得多。它也需要特殊支援,因此為此使用 emu10k1-gp.c 模組而不是普通的 ns558.c 模組。
6.3.14. SoundBlaster 64 和 128 - ES1370 和 ES1371, ESS Solo1 和 S3 SonicVibes¶
這些 PCI 音效卡具有特定的遊戲埠。它們由音效卡驅動程式本身處理。請確保在搖桿選單中選擇遊戲埠支援,並在聲音選單中為您的相應音效卡選擇音效卡支援。
6.3.15. Amiga¶
連線到 Amiga 的 Amiga 搖桿由 amijoy.c 驅動程式支援。由於它們無法自動檢測,該驅動程式有一個命令列
amijoy.map=<a>,<b>
a 和 b 定義了連線到 Amiga 的 JOY0DAT 和 JOY1DAT 埠的搖桿。
值
搖桿型別
0
無
1
1鍵數字搖桿
目前不支援更多搖桿型別,但如果我能接觸到 Amiga,未來應該會有所改變。
6.3.16. 遊戲機和8位手柄及搖桿¶
這些手柄和搖桿並非為 PC 及其他執行 Linux 的計算機設計,通常需要特殊的聯結器才能透過並口連線。
更多資訊請參閱並口搖桿驅動。
6.3.17. SpaceTec/LabTec 裝置¶
SpaceTec 序列埠裝置使用 SpaceWare 協議通訊。它由 spaceorb.c 和 spaceball.c 驅動程式支援。spaceorb.c 目前支援的裝置有
SpaceTec SpaceBall Avenger
SpaceTec SpaceOrb 360
spaceball.c 目前支援的裝置有
SpaceTec SpaceBall 4000 FLX
除了在核心中包含 spaceorb/spaceball 和 serport 模組外,您還需要連線一個序列埠。為此,執行 inputattach 程式
inputattach --spaceorb /dev/tts/x &
或
inputattach --spaceball /dev/tts/x &
其中 /dev/tts/x 是裝置連線的序列埠。完成此操作後,裝置將被報告並開始工作。
SpaceOrb 有一個注意事項。按鈕 #6,即球體底部的那個按鈕,雖然被報告為普通按鈕,但會引起 spaceorb 的內部重新居中,將零點移動到按下按鈕時球體所在的位置。所以,在將其繫結到其他功能之前,請先三思。
SpaceTec SpaceBall 2003 FLX 和 3003 FLX 尚不受支援。
6.3.18. Logitech SWIFT 裝置¶
SWIFT 序列埠協議由 warrior.c 模組支援。它目前僅支援
Logitech WingMan Warrior
但未來,Logitech CyberMan(原始版本,非 CM2)也可能得到支援。要使用該模組,您需要在將模組插入/編譯到核心後執行 inputattach
inputattach --warrior /dev/tts/x &
/dev/tts/x 是您的 Warrior 連線的序列埠。
6.3.19. Magellan / Space Mouse¶
由 LogiCad3d(前身為 Space Systems)為許多其他公司(Logitech、HP 等)製造的 Magellan(或 Space Mouse)由 joy-magellan 模組支援。它目前僅支援
Magellan 3D
Space Mouse
型號;‘Plus’ 版本上的附加按鈕尚不受支援。
要使用它,您需要使用以下命令將序列埠連線到驅動程式
inputattach --magellan /dev/tts/x &
命令。之後 Magellan 將被檢測、初始化,會發出蜂鳴聲,並且 /dev/input/jsX 裝置應該變得可用。
6.3.20. I-Force 裝置¶
所有 I-Force 裝置都由 iforce 模組支援。這包括
AVB Mag Turbo Force
AVB Top Shot Pegasus
AVB Top Shot 力反饋方向盤
Boeder 力反饋方向盤
Logitech WingMan Force
Logitech WingMan Force 方向盤
Guillemot Race Leader 力反饋
Guillemot 力反饋賽車方向盤
Thrustmaster Motor Sport GT
要使用它,您需要使用以下命令將序列埠連線到驅動程式
inputattach --iforce /dev/tts/x &
命令。之後 I-Force 裝置將被檢測到,並且 /dev/input/jsX 裝置應該變得可用。
如果您透過 USB 埠使用該裝置,則不需要 inputattach 命令。
I-Force 驅動程式現在透過事件介面支援力反饋。
請注意,Logitech WingMan 3D 裝置 _不_ 受此模組支援,而是由 hid 支援。這些裝置不支援力反饋。羅技遊戲手柄也是 hid 裝置。
6.3.21. Gravis Stinger 遊戲手柄¶
Gravis Stinger 序列埠遊戲手柄,設計用於筆記型電腦,由 stinger.c 模組支援。要使用它,請使用以下命令將序列埠連線到驅動程式
inputattach --stinger /dev/tty/x &
其中 x 是序列埠的編號。
6.4. 故障排除¶
您很有可能會遇到一些問題。為了測試驅動程式是否工作,如有疑問,請使用 jstest 實用工具的某些模式。最常用的模式是“normal”(用於 1.x 介面)和“old”(用於“0.x”介面)。您可以輸入以下命令執行它:
jstest --normal /dev/input/js0
jstest --old /dev/input/js0
此外,您可以使用 evtest 實用工具進行測試
evtest /dev/input/event0
哦,別忘了閱讀常見問題解答!:)
6.5. 常見問題¶
- 問:
執行 ‘jstest /dev/input/js0’ 出現“檔案未找到”錯誤。原因是什麼?
- 答:
裝置檔案不存在。建立它們(參見 2.2 節)。
- 問:
是否可以將我的舊 Atari/Commodore/Amiga/遊戲機搖桿或使用 9 針 D 型 Cannon 聯結器的手柄連線到我的 PC 序列埠?
- 答:
是的,有可能,但這會燒壞您的序列埠或手柄。當然,它也無法工作。
- 問:
我的搖桿不適用於 Quake / Quake 2。原因是什麼?
- 答:
Quake / Quake 2 不支援搖桿。使用 joy2key 為它們模擬按鍵。