유선 Xbox One 컨트롤러가 lsusb에 표시되지만 때때로 Steam에서 입력 감지가 중지됨

유선 Xbox One 컨트롤러가 lsusb에 표시되지만 때때로 Steam에서 입력 감지가 중지됨

다시 시작한 후 유선 컨트롤러에서 Steam을 사용할 수 있습니다. 컨트롤러에는 작동할 때마다 켜지는 표시등이 있습니다. 그러나 때때로 조명이 무작위로 꺼지고 게임에서 입력이 작동하지 않는 경우가 있습니다. 재부팅하지 않고 컨트롤러를 다시 삽입한 경우에도 이런 일이 발생할 수 있습니다. 이 시점에서 장치는 여전히 lsusb에 나타납니다. usbreset을 실행하면 표시등이 다시 켜지고 다시 작동하기 시작합니다. 장치를 검색하고 필요한 경우 재설정하는 도우미 스크립트가 있지만 Alt+Tab을 사용하여 실행하는 것은 불편합니다.

이를 자동화하는 것이 일종의 시스템 작업이기를 바랍니다. 하지만 이 상태에 있을 때 프로그래밍 방식으로 어떻게 알 수 있는지 모르겠습니다. lsusb --verbose를 시도했지만 입력 감지 여부에 관계없이 출력은 동일합니다. 컨트롤러는 xinput에도 표시되지 않습니다. 다른 곳을 확인해야 할지 잘 모르겠으므로 스크립트를 사용하여 USB 장치에서 입력이 감지되는지 확인하는 방법에 대한 몇 가지 아이디어를 찾고 있습니다. 나머지는 내가 처리할 수 있어요. 도움을 주셔서 미리 감사드립니다!

답변1

나는 그것을 사용하여 jstest내가 원하는 것을 달성할 수 있다는 것을 알았습니다. 마지막으로 다음과 같은 스크립트를 작성했습니다.

#!/bin/bash
function xboxControllerReset() {
    device_id="$(docker run -it --rm --name my-running-script -v /home/<me>/.local/bin:/usr/src/myapp -w /usr/src/myapp python-runner python getLsUsbDeviceIdForXboxController.py)"
    echo "Resetting device with ID: $device_id"
    sudo usbreset "$device_id"
}

function detectControllerReset() {
  jstest --event /dev/input/js0 || sleep 1 && xboxControllerReset && sleep 1 && detectControllerReset
}

detectControllerReset

내 컨트롤러가 비활성화되면 jstest에서 "장치를 찾을 수 없음" 오류가 발생합니다. 저는 ||이 오류를 포착하고 재설정 deviceId한 다음 이 스크립트를 다시 호출하여 jstest피드를 시작하곤 했습니다. 약 1초의 가동 중지 시간이 있었습니다. 단 1초의 수면도 필요하지 않도록 최적화할 수 있다고 확신하지만 제 목적에는 이것이 필요하지 않습니다.

관련 정보