PC에서 입력을 받아 다른 호스트로 전달하면됩니다.
이것은 USB 관점에서 비관적입니다. USB는 호스트 기반 프로토콜입니다. 호스트가 먼저 데이터를 요청하지 않으면 장치에서 데이터를 보내지 않습니다. 여기서 '호스트'와 '장치'는 프로토콜 자체 내에서 구체적인 의미를 지니고 있음을 기억하십시오. '호스트'를 마스터로, '디바이스'를 슬레이브로 생각할 수 있습니다. 이러한 역할은 USB 컨트롤러로 구워집니다. 특정 PC 또는 주변 장치의 표준 USB 컨트롤러가 스왑 역할을하도록 설득 할 수있는 방법은 없습니다. USB 장치 컨트롤러 인 PC 용 애드 인 카드가 있지만 ('PC'는 장치로 사용) '싼'것은 내가 설명하는 데 사용하는 단어가 아닙니다.
정말로하려고하는 것은 USB 장치 대 장치 브리지를 만드는 것입니다. 그렇다면 2 개의 USB (2.0) 장치 컨트롤러가 필요합니다 (가격이 비싸지도 않고, 이미 마이크로 컨트롤러가 필요합니다). 그런 다음 서로에게 의미있는 것을 전달하도록해야합니다. 위에서 언급했듯이 호스트는 데이터를 보내도록 장치에 지시해야하고 필요할 때마다 데이터를 장치에 보낼 수 있기 때문에 매우 어렵습니다. 게임 컨트롤러가 HID 장치로 나타나면 콘솔이 이상한 사용자 지정 설명자를 수신하지 않고 이상한 사용자 지정 프로토콜을 사용한다고 가정하면 인터럽트 파이프가 데이터를 전송하는 데 사용됩니다. 이 파이프는 최소 속도로 폴링되도록 보장됩니다. 따라서 콘솔이 고정 속도가 아닌 일정 비율로 데이터를 요청하고 호스트가 게임을 통해 일정 비율로 데이터를 전송하게됩니다. 이 둘은 동기화가 불가능하기 때문에 생성하려는 가제트에 적당한 크기의 버퍼가 필요할 것이므로 $$ 및 복잡성이 증가합니다.
USB도 꽤 빠릅니다. 고속 (USB2.0)에서 프레임은 125 마이크로 초입니다. 즉, 약 8KHz에서 요청을 완료해야한다는 것을 의미합니다. 마이크로 컨트롤러의 클록 속도에 비해 느린 것처럼 보이지만 한 번에 모든 작업을 수행해야한다는 점을 명심하십시오. 나는 당신이 필요로하는 모든 것, 특히 당신이 자신의 USB 스택을 굴릴 필요가없는 것들을 가질 수있는 아마추어 수준의 마이크로 컨트롤러가 있는지 확신하지 못합니다.
[가능한 스푸핑 게임 컨트롤러] (http : // stackoverflow.com/questions/4940825/spoofing-a-game-controller) –