¿Cómo puedo conectar un dispositivo USB arbitrario en dos computadoras?

En última instancia, mi objetivo es tener un "teclado" con entre 5 y 10 botones, en el que al presionar uno de esos botones se presiona de manera efectiva alguna tecla en dos computadoras simultáneamente.

En el escenario ideal, el "teclado" simplemente se conectaría a ambas computadoras, enviando cualquier señal que generé a través de 2 líneas USB. Por lo que puedo decir, este plano no funciona (un solo dispositivo USB no puede conectarse a dos hosts).

Vi en línea algunas instrucciones para conectar un teclado USB a un par de adaptadores PS2-USB pirateados (conectando el lado de PS2, que aparentemente está feliz de tener múltiples "hosts" con un solo dispositivo). Incluso sin hacer la parte de la piratería, mi teclado actual no funcionará cuando esté conectado a través del teclado->USB a PS2->PS2 a USB->computadora. Cortar los conectores para permitir que sea teclado->USB a PS2->2 x PS2 a USB->computadora no es probable que mejore eso. No tengo claro si Windows ya no es compatible con PS2 (lo vi en algún lugar en línea), si el teclado de hardware no envía la señal necesaria para "convertirse" a PS2, o qué.

¿Hay otros enfoques que me estoy perdiendo? ¿Alguna forma inteligente de hacerlo con software (para que el teclado se conecte a una computadora y esa computadora envíe la señal a la otra computadora)? La inmediatez es bastante importante, pero esa ruta parece tener algunas piernas.

Siempre podría convertirlo en un proyecto de manualidades: sites.google.com/site/khromtor ... Windows todavía es compatible con PS2, estoy escribiendo esto en un teclado PS2 de ~ 10 años en Win7 x64
Los controladores USB comunes no se conectarán a 2 hosts, pero ¿quizás pueda reescribir los suyos? LUFA es de código abierto.
Para que Windows reconozca los nuevos dispositivos PS/2, generalmente debe reiniciarlo con el teclado enchufado. De cualquier manera, no veo que funcione: PS/2 también tiene que transmitir datos al teclado (para cambiar la configuración y el teclado). LED), no solo recibirlo.
Lo que realmente quieres es esto... Producto especializado que funcione entre windows y windows o uno separado entre windows y mac. Mire la categoría de productos J5 Connect Wormhole JUC400, JUC500 y JUC700.

Respuestas (3)

Se está perdiendo el hecho de que USB es un protocolo serial bidireccional, y tener dos hosts USB hablando con un solo dispositivo USB no es compatible ni en el nivel físico ni en el lógico del protocolo. Lo que puede hacer es hacer que cada tecla del teclado esté conectada a dos MCU, cada una capaz de ser USB HID, y tener sus cables USB conectados a dos PC. Puede usar dos MCU AVR baratos para esto y usar la implementación del software USB HID, simplemente haga dos HIDkeys idénticas y conecte cada llave a ambas. Por cierto, lea la licencia cuidadosamente.

Puede usar una sola MCU siempre que pueda diferenciar entre las conexiones físicas.
¿Cuál es el problema con la licencia?
Guau. Este es el escenario perfecto. Pero probablemente sea demasiado tarde para construir. Gracias por el aporte.
@smashtastic: si no recuerdo mal, puede usarlo de forma gratuita con proyectos no comerciales y pagar una tarifa si necesita usarlo en proyectos comerciales.
¿Licencia para qué? ¿Teclas HID? ¿La especificación USB HID?
@ebynum: claves HID
Licencia HIDkeys GPLV2. Sin duda, puede usarlo en un producto comercial siempre que cumpla con la GPL (consulte gnu.org/licenses/gpl-faq.en.html#GPLCommercially ). El sitio de HIDkeys tiene pautas sobre lo que ellos creen que es el cumplimiento, pero realmente depende de usted y de su abogado decidir. GPL no requiere que se distribuya la fuente para aplicaciones de uso interno ( gnu.org/licenses/gpl-faq.en.html#GPLRequireSourcePostedPublic ). Algunos argumentarían que un trabajo por contrato para uso interno de sus Clientes no es una distribución pública. Debería hablar con su abogado.
Otra opción es una MCU con dos interfaces USB distintas. Pero dos MCU USB baratos que ven el mismo evento pueden ser los más simples. Las cosas serán bastante simultáneas en términos humanos, pero no realmente en términos informáticos, ya que se sondea el USB y los teclados a un ritmo bastante bajo.

Puede evitar jugar con el hardware con bastante facilidad al transmitir las pulsaciones de teclas en una computadora con Windows a otra con algo como PyKeyLogger y SendKeys

Entonces, en este escenario, estaría ejecutando PyKeyLogger en la computadora con el teclado (para detectar las pulsaciones de teclas), agregando una aplicación en el medio para recibir las pulsaciones de teclas y conectarme a la computadora remota, y una aplicación en la computadora remota para recibir las señales del servidor de teclado que usa SendKeys para "presionar" las teclas en la computadora remota?
@ebynum Sí. Puede haber un software que ya haga esto para el multiboxing de software (vea el enlace en el comentario a la pregunta, aunque eso es hardware). Busque "software de multiboxing" y vea lo que obtiene.
Guau. Si tan solo hubiera oído hablar de este multiboxing antes. Gracias. Parece que HotkeyNet va a hacer exactamente lo que quería.
Y, de hecho, HotkeyNet hizo exactamente lo que yo quería. Todavía preferiría la solución de hardware (que no depende de la latencia de la red), pero esta fue una solución intermedia perfecta.

Esto probablemente no lo ayudará a lograr su objetivo general de uso simultáneo de un periférico USB desde dos computadoras, pero un conmutador USB puede permitir el uso no simultáneo de un periférico USB desde dos o más computadoras. Parecen funcionar de manera similar a un conmutador KVM, y los conmutadores baratos deben cambiarse manualmente, pero algunos también admiten el cambio a través del software.