DeskHop – troca rápida entre desktops
(github.com/hrvach)DeskHop - troca rápida entre desktops
- Gratuito e de código aberto
- Quase sem latência na troca
- Permite alternar arrastando o ponteiro do mouse entre os computadores
- Não requer instalação de software
- Usa componentes baratos e fáceis de encontrar (menos de 15 euros)
- Case snap-fit imprimível em impressora 3D
- Isolamento galvânico completo entre as saídas
- Funciona em Linux, macOS e Windows
Como funciona
- O dispositivo atua como intermediário entre teclado/mouse e os computadores, mantendo conexão com dois computadores ao mesmo tempo
- Decide para qual computador enviar o mouse e as entradas do teclado de acordo com a escolha do usuário
- Ao arrastar o mouse para o outro desktop, o teclado também muda automaticamente
Mouse
- Altera o descritor de relatório HID do mouse para usar coordenadas absolutas e acumula internamente os relatórios do mouse (movimento relativo) para manter a posição exata
- Ao tentar sair da área do monitor na direção do outro monitor, mantém a coordenada Y e troca o X máximo pelo X mínimo, então muda a saída
- Faz o cursor aparecer na mesma altura no outro monitor, para que a troca seja percebida como suave
Teclado
- Como host USB, consulta periodicamente o teclado e procura atalhos pré-configurados (como Caps Lock) para enviar os caracteres para a outra saída
- Reaproveita os LEDs do teclado para fornecer feedback visual sobre qual saída está em uso
- Memoriza o estado dos LEDs de cada computador para que seja possível continuar do ponto em que estava
Uso de imagens pré-compiladas
- É possível usar imagens pré-compiladas
- Conecte a placa Pico ao slot A da PCB e mantenha pressionado o botão da placa enquanto conecta o cabo; ela aparecerá no sistema como uma unidade USB
- Copie o arquivo
board_A.uf2correspondente e repita o processo para B
Upgrade de firmware
- Opção 1: abra o case e copie o arquivo
uf2correto mantendo o botão pressionado ao conectar cada Pico - Opção 2: use uma combinação específica de teclas (
Right Shift, P, H, X, Left Shift) para entrar no modo BOOTSEL e colocar os Picos no modo de upgrade do bootloader
Outros recursos
- Quando for necessário ajustar o mouse com precisão, mover o mouse enquanto mantém
Right ALTpressionado reduz bastante a velocidade do cursor, permitindo trabalho mais preciso
Hardware
- O circuito é barato (4,10 euros por unidade), pode ser soldado manualmente e é baseado em duas placas Raspberry Pi Pico, que a maioria dos fornecedores mantém em estoque
- Os Picos são conectados por UART usando um isolador digital de dois canais Analog Devices ADuM1201 (~3 euros)
- Pode funcionar como host e dispositivo USB graças a um projeto impressionante que implementa USB usando a magia de I/O programável do RP2040
PCB
- Para manter a montagem DIY o mais simples possível, as trilhas ficam em apenas um lado e a quantidade de componentes foi reduzida ao mínimo
- As linhas diferenciais USB D+/D- precisam ter o mesmo comprimento, mas foram deixadas propositalmente um pouco assimétricas para compensar a diferença de comprimento das trilhas GPIO correspondentes na própria PCB do PICO, de forma que o comprimento total coincida
Case
- Como o autor não tem muita habilidade com modelagem 3D, o case é simples e básico, mas cumpre seu papel
- É fácil de imprimir, usa cerca de 33 g de filamento e fica pronto em poucas horas
- O movimento horizontal da PCB é impedido por pinos que passam por furos, e o movimento vertical é travado por saliências snap-fit nas laterais, dispensando parafusos
- O conector micro USB fica um pouco para fora da lateral do case, então fazer um furo um pouco maior permite a passagem do cabo
- A tampa tem design snap-fit e inclui uma fenda para chave de fenda para poder ser aberta
- As marcações na parte superior são em baixo-relevo, então é possível dar acabamento com giz de cera ou similar para aumentar o contraste (ou deixar como está)
Lista de materiais
- 2 Raspberry Pi Pico, 1 ADuM1201BRZ, 2 capacitores SMD 1206 de 100 nF, 2 conectores USB-A para PCB, 2 headers 2.54 1x03
- Preço total: 11,53 euros
- O conector USB-A pode ser o Molex MX-67643-0910 ou uma alternativa mais barata com as mesmas dimensões
- Etapas adicionais: fabricar a PCB (Gerber fornecido, a JLC fabrica por alguns dólares, escolher espessura de 1,6 mm), imprimir o case em 3D (arquivo
.stlfornecido, cerca de 33 g de filamento)
FAQ
- Funciona apenas com dois Picos, sem PCB e sem o isolador?
- O isolador é recomendado, mas pode funcionar sem ele.
- O que acontece se os monitores tiverem resoluções diferentes?
- O movimento do mouse acontece em um espaço de coordenadas abstrato, e o computador calcula a correspondência com a tela física, então deve funcionar sem problemas.
- Onde posso comprar esse produto?
- Não é vendido; é um projeto pessoal e não comercial de hobby.
- Quando a tela ativa muda pelo mouse, o teclado acompanha (e vice-versa)?
- Sim, ele foi feito para funcionar como se fosse um único computador.
- Funciona com dongles combo de teclado/mouse, como o Logitech Unifying Receiver?
- Na versão atual, não funciona porque assume que o mouse está conectado a uma porta diferente. Seria necessário investigar o funcionamento do Logitech Unifying Receiver e implementar suporte.
- Funciona com mouse e teclado sem fio que têm receptores sem fio separados?
- Esses casos não foram testados, então podem surgir problemas inesperados, mas em teoria deve funcionar de imediato.
Desvantagens
- Atenção: para usar esse recurso, os dois computadores precisam estar conectados e ligados (cada placa é alimentada pelo computador ao qual está conectada).
- O código precisa de limpeza, refatoração etc.
- Ocasionalmente ocorrem bugs e comportamentos estranhos.
- Não foi testado com vários dispositivos, então não dá para saber como vai funcionar no hardware de cada usuário.
- O Pico-PIO-USB foi modificado com patch para dar suporte ao controle dos LEDs do teclado, algo que normalmente é tratado pelo TinyUSB no modo host.
Isenção de responsabilidade
- Qualquer pessoa que tente este projeto deve entender e reconhecer que o autor não se responsabiliza por lesões, danos ou quaisquer outros resultados.
- Como a segurança é importante, é essencial tomar as precauções necessárias e assumir a responsabilidade pelo próprio bem-estar durante todo o projeto.
- Evite choques elétricos, queimaduras, estresse ou passar raiva; a ideia é trabalhar com segurança e se divertir.
Opinião do GN⁺:
- Este artigo pode ser muito útil para quem usa dois computadores. É especialmente atraente para usuários que querem aumentar a eficiência compartilhando um único teclado e mouse.
- Por ser open source e adotar uma abordagem DIY, pode ser um projeto interessante para quem se interessa por tecnologia. Os usuários podem ajustar e melhorar o sistema de acordo com suas necessidades.
- Este projeto mostra o espírito inovador da comunidade ao tentar resolver problemas técnicos. Ao resolverem o problema por conta própria e compartilharem o processo, outras pessoas também podem se beneficiar.
1 comentários
Comentários do Hacker News
É notável que consiga detectar as bordas mesmo sem software cliente.
Uso uma solução de software chamada Synergy há mais de dez anos. A troca é instantânea via Wi‑Fi e também funciona entre Windows/Mac/Linux.
Às vezes, ao tentar mover o controle deslizante do YouTube exatamente para uma posição específica, o mouse fica sensível demais e você precisa mover a mão com muito cuidado.
,) e ponto (.).No Windows, dá para usar uma ferramenta chamada Mouse Without Borders, desenvolvida pela Microsoft Garage e agora parte do Windows PowerToys.
Inspirado por outros projetos parecidos, alguém criou sua própria versão.
evdev). Quando uma certa tecla é pressionada, ele consome todos os eventos e os envia para um RPI Pico via USB serial. Ao pressionar a tecla novamente, ele volta ao modo de escuta passiva.evdevdo Linux em eventos USB HID e enviá-los para outro PC com Windows.Comprei 4 hubs USB para alternar teclado e mouse, mas a maioria dos dispositivos era tão ruim que eu precisava desconectar fisicamente o hub várias vezes por dia.
Um dos grandes incômodos é usar um switch USB 3.0 para alternar a entrada de mouse e teclado entre dois PCs.
Atualmente uso um switch KVM, e como a troca leva de 2 a 3 segundos, na maior parte do tempo prefiro acessar o outro computador via SSH e usar uma sessão
tmux.Isso é um avanço impressionante.
O Synergy resolve bem esse problema só com software. Não é gratuito nem open source, mas é relativamente barato.