6.1. 介紹

Linux 的搖桿驅動程式支援多種搖桿和類似裝置。它基於一個旨在支援 Linux 中所有輸入裝置的更大專案。

該專案的郵件列表是

傳送“subscribe linux-input”到 majordomo@vger.kernel.org 以訂閱該郵件列表。

6.2. 使用

對於基本用法,您只需在核心配置中選擇正確的選項即可。

6.2.1. 實用工具

出於測試及其他目的(例如序列埠裝置),有一套實用工具,例如 jstestjscalevtest,通常打包為 joystickinput-utilsevtest 等。

如果您的搖桿連線到序列埠,則需要 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 為它們模擬按鍵。