Saltar al contenido
← proyectosdev

united-stations

Tres intentos del mismo problema. Teclado, ratón y portapapeles entre macOS y Windows.

3implementaciones2 OSmacOS + WindowsRust / C++lenguajes

El problema

MacBook y PC Windows en el mismo escritorio, un solo teclado y ratón. Las soluciones existentes (Synergy, Barrier, InputLeap) tienen en común que son caras, que el setup es frágil, o que se rompen con actualizaciones del OS. Decidí entender el protocolo y construirlo yo — lo que resultó en tres implementaciones con tres estrategias distintas, cada una documentando por qué la anterior no era suficiente.

Los datos

Sin dataset: ingeniería de sistemas. El problema real es latencia de red local, comportamiento de los drivers de input de macOS (IOKit) y Windows (RAWINPUT), y la semántica del portapapeles en cada OS (tipos MIME, formato RTF, imágenes).

Enfoque

  • deskflow-plus: fork de Deskflow en C++ para solucionar tres bugs concretos de mi configuración de red con VLANs — la solución más rápida para tener algo funcionando
  • united-stations: reimplementación completa en Rust con protocolo de red propio — el objetivo era entender el problema real, no parchear el existente
  • cliptomaniac: subproblema aislado solo el portapapeles — en uso mientras los otros dos se desarrollan
  • Los tres siguen vivos y documentados: el código de deskflow-plus incluye comentarios sobre los bugs de Deskflow original que justifican cada cambio

Herramientas

rust
c++

Resultado

cliptomaniac está en producción activa. united-stations en desarrollo activo. Lo más valioso del proyecto es la documentación del proceso: por qué deskflow-plus no era la solución correcta aunque funcionara, y qué aprendí sobre el protocolo al reimplementarlo desde cero.

Próximos pasos

united-stations está pendiente de terminar el handling de imágenes en el portapapeles entre OS (el formato varía entre PNG crudo, BMP y tipos MIME compuestos). Una vez resuelto ese bloqueo, el objetivo es tenerlo en producción como reemplazo completo de deskflow-plus.