最終的に、サンドボックスを使用してこれを実現できることがわかりました。具体的には火刑務所。hidrawデバイス(すべてのBluetoothコントローラーを含み、SteamがBluetooth DS4を検出する方法)をブロックするだけのコマンドを思いつきました。Bluetoothを介して使用するコントローラーはDS4のみであるため、これで十分です。
firejail --noprofile --blacklist="/dev/hidraw*" /usr/bin/steam
それは完全に機能します!SteamはDS4を認識できず、クラッシュしません。ただし、Shadow of Mordorなどの特定のゲームは、この方法を好まないようです。ほとんどのゲームは正常に動作しますが、SoMは私のDS4を認識します(また、Steamが特にを備えた360コントローラーだと思い込んでいるにもかかわらず、PlayStationボタンプロンプトが表示されるため、DS4であることさえ認識しますsc-controller
)。私はまだ私の前にいくつかの仕事があります。
編集:成功!さらにテストを重ねた結果、SoMの問題は、ゲームが最高のLinuxポートではなく、DS4自体ではないDS4関連のものと互換性がないことであることがわかりました。つまり、ユーザー空間のドライバーで何か他のものをエミュレートさせようとすると、xboxdrv、ds4drv、sc-controllerなどがこのゲームでうまく動作しません。そこで、Steamを起動するためのスクリプト全体を作成しました。これは、hidrawデバイスではなく、Bluetoothアダプター全体をブロックします。このSteamのバグはPulseAudioの構成が原因であるため、ギャンブルを取り、SteamのコントローラーのUSBデバイス全体へのアクセスをブロックするだけで、steamがhidrawから/ dev / input / jsX、それは動作します。そしてそれは働いた。スクリプトの関連部分は次のとおりです。
#!/bin/bash
BLUETOOTH="$(lsusb | grep "8087:07dc")" # those are my BT adapter's device and vendor IDs; yours may be different
BUS="$(echo "$BLUETOOTH" | sed 's/.*Bus \([0-9]\+\).*/\1/')"
DEV="$(echo "$BLUETOOTH" | sed 's/.*Device \([0-9]\+\).*/\1/')"
BLACKLIST="/dev/bus/usb/$BUS/$DEV"
firejail --noprofile --blacklist="$BLACKLIST" /usr/bin/steam
(コントローラーからサウンド関連のものをブロックするのではなく、そのギャンブルを取りました。コントローラーにはサウンドカードがありますが、おそらくSteamがこの問題を抱えているのに、何かにアクセスする方法が見つからないからです。 / sysまたは/ devを介した上記サウンドカードに関連します。)