Eu finalmente descobri que posso usar uma sandbox para realizar isso. Especificamente firejail. Eu criei um comando que não faz nada além de bloquear dispositivos hidraw (que inclui todos os controladores Bluetooth e é como o Steam detecta um Bluetooth DS4). O único controlador que uso através do Bluetooth é o meu DS4, o que é uma solução boa o suficiente para mim:
firejail --noprofile --blacklist="/dev/hidraw*" /usr/bin/steam
Funciona totalmente! O Steam não pode ver o DS4 e não falha. No entanto, certos jogos, como Shadow of Mordor, não parecem gostar deste método. A maioria dos jogos funcionam bem, mas SoM vai ver o meu DS4 (e até mesmo sei que é um DS4, porque ele vai com prompts botão PlayStation apesar da minha vapor enganar em pensar que é especificamente um controlador 360 com sc-controller
), e ainda se recusam a aceitar qualquer entrada a partir dele. Eu ainda tenho algum trabalho pela frente.
EDIT: Sucesso! Depois de mais testes, descobri que o problema do SoM era que o jogo não era a melhor porta do Linux, e simplesmente não é compatível com nada relacionado ao DS4 que não seja o próprio DS4. Ou seja, tentar tê-lo imitar outra coisa com qualquer driver userspace - xboxdrv, ds4drv, sc-controlador, etc .-- não jogar bonito com este jogo. Então, eu fui e fiz um script inteiro para o lançamento do Steam, que bloqueia todo o meu adaptador Bluetooth em vez de dispositivos hidraw. Uma vez que este bug vapor é causada por configurações PulseAudio, tomei um jogo e percebi que se eu simplesmente bloquear o acesso do Steam para todo o dispositivo USB do controlador, mas vamos vapor descobrir todos os pedaços de que, além disso, a partir hidraw para / dev / entrada / jsX, funcionaria. E funcionou. Aqui estão as partes relevantes do meu script:
#!/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]\+\).*//')"
DEV="$(echo "$BLUETOOTH" | sed 's/.*Device \([0-9]\+\).*//')"
BLACKLIST="/dev/bus/usb/$BUS/$DEV"
firejail --noprofile --blacklist="$BLACKLIST" /usr/bin/steam
(Tomei essa aposta, em vez de bloquear qualquer coisa relacionada som do controlador, porque, embora o controlador tem uma placa de som nele, e embora isso é provavelmente porque Vapor tem esse problema em tudo, não consigo encontrar uma maneira para acessar qualquer coisa relacionada à dita placa de som por / sys ou / dev.)