DeskHop – cambio rápido de escritorio
(github.com/hrvach)DeskHop - cambio rápido de escritorio
- Gratis y de código abierto
- Casi sin latencia al cambiar
- Permite cambiar arrastrando el puntero del mouse entre computadoras
- No requiere instalar software
- Usa componentes baratos y fáciles de conseguir (menos de 15 euros)
- Carcasa snap-fit imprimible en 3D
- Aislamiento galvánico completo entre salidas
- Funciona en Linux, macOS y Windows
Cómo funciona
- El dispositivo actúa como intermediario entre el teclado/mouse y las computadoras, manteniendo conexión simultánea con dos equipos
- Según la selección del usuario, decide a qué computadora enviar el mouse y las pulsaciones de teclado
- Al arrastrar el mouse al otro escritorio, el teclado también cambia automáticamente
Mouse
- Modifica el descriptor de reportes HID del mouse para usar coordenadas absolutas, y acumula internamente los reportes del mouse (movimiento relativo) para mantener una posición precisa
- Si intenta salir del área del monitor hacia la dirección del otro monitor, mantiene la coordenada Y y cambia el X máximo por el X mínimo antes de cambiar la salida
- Hace que el cursor aparezca a la misma altura en el otro monitor para que la transición se sienta fluida
Teclado
- Como host USB, consulta periódicamente el teclado y busca atajos preconfigurados (como Caps Lock) para enviar caracteres a la otra salida
- Reutiliza los LEDs del teclado para dar retroalimentación visual sobre qué salida está activa
- Recuerda el estado de los LEDs de cada computadora para poder continuar el trabajo exactamente como estaba
Uso de imágenes precompiladas
- Se pueden usar imágenes precompiladas
- Si conectas la placa Pico en la ranura A del PCB y mantienes presionado el botón de la placa mientras conectas el cable, aparecerá en el sistema como una unidad USB
- Copia el archivo
board_A.uf2correspondiente y repite lo mismo para B
Actualización de firmware
- Opción 1: abrir la carcasa y copiar el archivo
uf2correcto mientras mantienes presionado el botón al conectar cada Pico - Opción 2: usar una combinación específica de teclas (
Right Shift, P, H, X, Left Shift) para entrar en modo BOOTSEL y poner los Picos en modo de actualización del bootloader
Otras funciones
- Cuando necesites ajustar el mouse con precisión, si lo mueves mientras mantienes presionada
Right ALT, la velocidad del mouse baja considerablemente para permitir trabajo fino
Hardware
- El circuito es barato (4.10 euros por unidad), se puede soldar a mano y está basado en dos placas Raspberry Pi Pico que la mayoría de los proveedores tienen en stock
- Los Picos se conectan por UART usando un aislador digital de doble canal Analog Devices ADuM1201 (~3 euros)
- Puede funcionar como host y dispositivo USB gracias a un proyecto increíble que implementa USB usando la magia del Programmable IO del RP2040
PCB
- Para mantener el armado DIY lo más simple posible, las pistas están solo en un lado y la cantidad de componentes se mantuvo al mínimo
- Las líneas diferenciales USB D+/D- deben tener la misma longitud, pero son intencionalmente un poco asimétricas para compensar la diferencia de longitud de las pistas GPIO correspondientes en el propio PCB del PICO y así igualar la longitud total
Carcasa
- Como no tengo mucha experiencia en modelado 3D, la carcasa es simple y básica, pero cumple su propósito
- Es fácil de imprimir, usa unos 33 g de filamento y se termina en pocas horas
- El movimiento horizontal del PCB se bloquea con pines que pasan por agujeros, y el movimiento vertical con pestañas snap-fit laterales, así que no hacen falta tornillos
- El conector micro USB sobresale del lateral de la carcasa, así que con un orificio un poco más grande el cable puede entrar
- La tapa tiene diseño snap-fit y una ranura para destornillador que permite abrirla
- La marca en la parte superior está grabada en bajo relieve, así que se puede rellenar con crayón u otro material para aumentar el contraste (o dejarla tal cual)
Lista de materiales
- 2 Raspberry Pi Pico, 1 ADuM1201BRZ, 2 capacitores 1206 SMD de 100 nF, 2 conectores USB-A para PCB, 2 headers 2.54 1x03
- Precio total: 11.53 euros
- El conector USB-A puede ser Molex MX-67643-0910 o una alternativa más barata con las mismas dimensiones
- Pasos adicionales: fabricar el PCB (se incluyen Gerbers, JLC lo fabrica por unos pocos dólares, elegir grosor de 1.6 mm), imprimir la carcasa en 3D (se incluye archivo
stl, requiere unos 33 g de filamento)
FAQ
- ¿Funciona solo con dos Pico, sin PCB ni aislador?
- Se recomienda el aislador, pero puede funcionar sin él.
- ¿Qué pasa si los monitores tienen resoluciones distintas?
- El movimiento del mouse ocurre en un espacio de coordenadas abstracto y la computadora calcula la correspondencia con la pantalla física, por lo que debería funcionar sin problema.
- ¿Dónde se puede comprar este producto?
- No se vende; es un proyecto personal, no comercial y hecho por hobby.
- Cuando cambia la pantalla activa con el mouse, ¿el teclado también la sigue (y viceversa)?
- Sí, está hecho para funcionar como si fuera una sola computadora.
- ¿Funciona con dongles combo de teclado/mouse como el receptor Logitech Unifying?
- En la versión actual no funciona porque asume que el mouse está conectado a otro puerto. Habría que investigar el comportamiento del receptor Logitech Unifying e implementar soporte.
- ¿Funciona con mouse y teclado inalámbricos que tienen receptores separados?
- No se ha probado en esos casos, así que podrían aparecer problemas inesperados, pero en teoría debería funcionar de inmediato.
Desventajas
- Atención: para usar esta función, ambas computadoras deben estar conectadas y encendidas (cada placa se alimenta desde la computadora a la que está conectada).
- Hace falta limpiar el código, refactorizar, etc.
- A veces aparecen bugs y comportamientos extraños.
- No se ha probado con una gran variedad de dispositivos, así que no se sabe cómo funcionará con el hardware del usuario.
- Pico-PIO-USB fue parcheado para soportar el control de LEDs del teclado, algo que normalmente maneja TinyUSB en modo host.
Descargo de responsabilidad
- Quien intente este proyecto debe entender y aceptar que es responsable de cualquier lesión, daño u otra consecuencia.
- La seguridad es importante, así que es fundamental tomar las precauciones necesarias y hacerse responsable del propio bienestar durante todo el proyecto.
- Evita descargas eléctricas, quemaduras, estrés o enojo; trabaja con calma y disfrútalo.
Opinión de GN⁺:
- Este artículo puede ser muy útil para quienes usan dos computadoras. Es especialmente atractivo para usuarios que quieren compartir un solo teclado y mouse mientras mejoran su eficiencia de trabajo.
- Al ser de código abierto y con un enfoque DIY, puede ser un proyecto interesante para personas con interés en la tecnología. Los usuarios pueden ajustar y mejorar el sistema según sus necesidades.
- Este proyecto muestra el espíritu innovador de una comunidad que busca resolver problemas técnicos. Al solucionar un problema por cuenta propia y compartir el proceso, otras personas también pueden beneficiarse.
1 comentarios
Opiniones de Hacker News
Es notable que pueda detectar los bordes incluso sin software cliente.
Llevo más de diez años usando la solución de software llamada Synergy. Cambia al instante a través de Wi-Fi y también funciona entre Windows/Mac/Linux.
A veces, al intentar mover con precisión el deslizador de YouTube a una posición específica, el mouse se mueve con demasiada sensibilidad y uno termina moviendo la mano con muchísimo cuidado.
En Windows se puede usar una herramienta llamada Mouse Without Borders, desarrollada por Microsoft Garage y que ahora forma parte de Windows PowerToys.
Inspirado por otros proyectos similares, hice mi propia versión.
Compré 4 hubs USB para cambiar el teclado y el mouse, pero la mayoría de los dispositivos eran tan terribles que tenía que desconectar físicamente el hub varias veces al día.
Uno de mis grandes problemas al usar un switch USB 3.0 para cambiar la entrada del mouse y teclado entre dos PCs es lo incómodo que resulta.
Actualmente uso un switch KVM, y como tarda entre 2 y 3 segundos en cambiar, la mayoría de las veces me conecto por SSH a la otra computadora y uso una sesión de tmux.
Esto es un avance sorprendente.
Synergy resuelve bien este problema solo con software. No es gratis ni de código abierto, pero es relativamente económico.