Linuxでゲームパッドを設定・キャリブレーションする方法

重要: 以下の手順は主にDebian/Ubuntu系ディストリビューション向けです。別のディストリビューションではコマンドやパッケージ名が異なる場合があります。
なぜxpadを置き換えるか
Linuxカーネルのxpadモジュールは多くのXbox系コントローラーを自動認識しますが、次のような制約があります。短くまとめると:
- 一部のコントローラーで挙動が不安定(例: LEDが点滅し続ける)。
- 細かいボタンマッピングやフォースフィードバックのチューニングが難しい。
- ユーザー空間での柔軟な割り当てやトラブルシュートがやりにくい。
このため、ユーザー空間ドライバー(xboxdrv系)で代替すると、より多くの設定オプションと安定化が得られる場合があります。
代替ドライバーを使う
まずは使いたいドライバーをインストールします。ターミナルを開き、Debian/Ubuntu系では次のように実行します。
sudo apt-get update
sudo apt-get install xboxdrv
注: パッケージリポジトリの状況により、ディストリによってはxboxdrvが非推奨・未パッケージの場合があります。その場合はソースからビルドするか、配布元の情報を確認してください。
インストール後、xboxdrvを起動してxpadを無効化するには、次のいずれかの方法を使います。
方法1(推奨: 起動時にカーネルドライバーをデタッチ):
sudo xboxdrv --detach-kernel-driver
方法2(手動でxpadを外してから起動):
sudo rmmod xpad
sudo xboxdrv
–detach-kernel-driver オプションは、同一デバイスに対してカーネルドライバーとユーザー空間ドライバーの二重起動を防ぎます。
起動に成功すると、ターミナル上にボタンや軸の入力値が出力されます。出力を抑えたい場合は –silent オプションを付けます。
sudo xboxdrv --silent
代替ドライバーとしては、xboxdrvをベースにして安定性や追加機能を目指した「ubuntu-xboxdrv」もあります。PPAを使って導入する例(自己責任でリポジトリを追加):
sudo add-apt-repository -y ppa:rael-gc/ubuntu-xboxdrv
sudo apt-get update
sudo apt-get install ubuntu-xboxdrv
注意: サードパーティPPAは保守状態を確認のうえ利用してください。
永続的にxpadを無効化する
一時的に rmmod するだけでなく、システム起動時からxpadを読み込ませたくない場合は、次のようにblacklistを追加します。
echo "blacklist xpad" | sudo tee /etc/modprobe.d/blacklist-xpad.conf
sudo update-initramfs -u
この設定により再起動後もxpadは自動読み込みされません。
ゲームパッドのキャリブレーション
軸のオフセットやスティックの中立点調整は jstest-gtk で行います。インストールして起動します。
sudo apt-get install jstest-gtk
jstest-gtk
ツールを開き、使用するデバイスを選択して「Properties」ボタンを押すと、ボタンや軸の位置が視覚的に表示されます。右下の「Calibration」を押し、「Start Calibration」から画面の指示に従ってください。完了すると軸の中立点とレンジが修正されます。
キャリブレーション手順の要点:
- キャリブレーション前にコントローラーが静止していることを確認。
- 画面の指示に従って全軸を最大・最小まで動かす。
- 完了後、中心に戻して中立値がほぼ0(中央)になるか確認。
ボタンのマッピング変更
jstest-gtkの「Mapping」を使えば、デバイス上の物理ボタンを論理番号に再割当てできます。これはシステム全体で有効になるため、ゲーム側の設定を変更せずとも期待したボタン動作を得られます。
キーやマウスに割り当てる(qjoypad)
ゲームパッドのボタンをキーボードやマウス入力に変換したい場合は qjoypad が便利です。インストールして起動します。
sudo apt-get install qjoypad
qjoypad --notray
アプリ上で「Add」を押してレイアウトを作成し、各ボタンや軸にキーボード/マウスイベントを割り当てます。Quick Setを使うとボタンを1つ押して自動で割り当てできます。終了後にメニューから起動すればトレイ常駐してプロファイル切替が可能です。
トラブルシューティングとインシデント対応(簡易ランブック)
動作しない/認識しない
- USBやワイヤレスレシーバーの接続を再確認。
- dmesg を確認してデバイスIDやエラーを探す: sudo dmesg | tail -n 50
- xpadが刺さっている場合は rmmod xpad してから xboxdrv を起動。
LEDが点滅し続ける、またはボタンが暴走する
- いったん xboxdrv を止め、カーネルで安定するか確認。
- 別のUSBポートで試す。USBハブ経由だと電力不足や遅延の原因になる。
jstest-gtkで軸が偏っている
- キャリブレーションを再実行。
- xboxdrv の起動オプションやマッピング設定で補正する。
qjoypadの割り当てが機能しない
- 実行ユーザーがXセッションを制御できるか確認。Waylandでは動作しない/制約がある場合があります。
重要: ゲームとOSの組み合わせや導入したツールによっては、オンラインゲームのアンチチートが外部入力エミュレーターを禁止する場合があります。使用前に各ゲームの規約を確認してください。
永続的な起動設定のサンプル(systemdサービス)
xboxdrvを起動時に常駐させたい場合は簡単なsystemdサービスを作れます(例)。/etc/systemd/system/xboxdrv.service を作成:
[Unit]
Description=xboxdrv user driver
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/xboxdrv --daemon --silent --detach-kernel-driver
Restart=on-failure
[Install]
WantedBy=multi-user.target
作成したら有効化します。
sudo systemctl daemon-reload
sudo systemctl enable --now xboxdrv.service
注意: デーモンオプションやフラグは環境に合わせて調整してください。
選択の判断フローチャート
flowchart TD
A[コントローラーを接続] --> B{自動で正常に動くか}
B -- はい --> C[そのまま使用]
B -- いいえ --> D{xpadの挙動に問題(LED/暴走)か}
D -- はい --> E[一時的にrmmod xpadしてxboxdrvで動作確認]
D -- いいえ --> F[jstest-gtkでキャリブレーション]
E --> G{安定するか}
G -- はい --> H[必要ならsystemdで常駐]
G -- いいえ --> I[別のドライバーやPPAを試す]
F --> J[問題が続く場合はxboxdrvを試す]
代替アプローチと互換性の注意
- Steamのプロトコルや Proton/Wine を使う場合、Steam Inputがコントローラーマッピングを上書きすることがあります。ゲーム毎にSteam側の設定も確認してください。
- Wayland環境では、qjoypadのようなX11依存ツールが動作しないことがあります。Wayland対応の代替ツールやレガシーXサーバ(XWayland)を検討してください。
- 一部の最新コントローラー(特に独自プロトコルや特殊機能を持つ製品)は、xboxdrvでも完全サポートされない場合があります。ベンダー提供のLinuxドライバーやコミュニティの情報を参照してください。
役割別チェックリスト
ゲーマー:
- jstest-gtkで軸を確認し、必要ならキャリブレーションを実行する。
- qjoypadでよく使うプロファイルを作る。
- ゲームの入力設定でSteam Inputやゲーム内設定を調整。
システム管理者:
- /etc/modprobe.d にblacklistの有無を管理する。
- systemdサービスで自動起動とログ監視を構成する。
- dmesgやjournalctlで接続エラーを追跡する。
開発者/チューナー:
- xboxdrvの起動オプションで軸/ボタンを微調整する。
- udevルールで特定デバイスの権限やシンボリックリンクを追加する。
受け入れ基準(テストケース)
- jstest-gtkで全軸がセンター0に調整されていること。
- ボタンを押した際にqjoypadで割り当てたキーが正しく送信されること。
- 再起動後に期待どおりのドライバー(xboxdrvまたはxpad)がロードされること。
ミニ用語集(1行)
- xpad: Linuxカーネルに組み込まれたXbox互換コントローラー用のドライバー。
- xboxdrv: ユーザー空間で動作する代替ドライバー。より多くのオプションが可能。
- jstest-gtk: ゲームパッドの入力値を可視化・キャリブレーションするGUIツール。
- qjoypad: ゲームパッドの入力をキーボード/マウスにマップするツール。
まとめ
Linuxでゲームパッドを安定して使うには、まず現状の動作を確認し、問題があればxboxdrvなどのユーザー空間ドライバーに切り替えます。jstest-gtkでキャリブレーションを行い、qjoypadで必要に応じてキーボード・マウスに割り当てます。永続化や自動起動はsystemdやmodprobeの設定で管理できます。
重要: オンラインゲームでは外部入力エミュレーターが禁止されることがあるため、利用規約を確認してください。
短いアナウンス文(参考):
Linux上でゲームパッドをより正確に使いたい方向けに、xpadの無効化からxboxdrv導入、jstest-gtkによるキャリブレーション、qjoypadによるキー割り当てまで、段階的に解説しました。トラブルシュートと永続化手順も含みます。設定がうまくいかない場合のチェックリストを活用してください。