Como Construir um Switch KVM Hardware por 11 Euros Usando Duas Placas Raspberry Pi Pico
Já teve dois computadores na mesa, mas espaço para apenas um conjunto de teclado e mouse? Geralmente há duas formas de lidar com isso. A primeira é baseada em software (como Barrier ou Input Leap). Mas então os problemas começam: quedas de rede, VPN corporativa bloqueia tráfego local, ou sua máquina de trabalho não permite instalar software de terceiros. A segunda opção é um switch USB barato da AliExpress. Você pressiona um botão na caixinha, espera alguns segundos para o SO reinicializar os dispositivos, e repete isso dezenas de vezes ao dia.
O desenvolvedor hrvach encontrou essa mesma frustração e decidiu construir seu próprio hardware. O projeto se chama DeskHop. É um dispositivo aberto que alterna seu teclado e mouse entre dois computadores instantaneamente. Você pode alternar via atalho de teclado ou simplesmente arrastando o cursor do mouse além da borda da tela, assim como se tivesse um monitor conectado a dois PCs.

Como funciona por dentro
O circuito é construído em torno de duas placas Raspberry Pi Pico padrão baseadas no chip RP2040. Cada placa se conecta ao seu próprio computador via USB. Os microcontroladores se comunicam entre si via UART através de um chip de isolamento galvânico (TI ISO7721DR ou ADuM1).
O isolamento de energia aqui é genuíno: os fios de terra e energia dos dois PCs são completamente isolados um do outro. Se um computador queimar ou produzir um surto de energia, o outro permanece seguro.
A mágica USB do lado do host vem da biblioteca Pico-PIO-USB. A E/S programável (PIO) no chip RP2040 transforma pinos GPIO comuns em portas USB completas. Uma placa Pico atua como o host USB onde você conecta seu teclado e mouse, enquanto ambas as placas emulam dispositivos HID padrão para os computadores conectados.
Alternância perfeita entre telas
O melhor recurso do DeskHop é a emulação perfeita do desktop. Quando você move o cursor do mouse para a borda direita do monitor do primeiro computador, o DeskHop alterna instantaneamente o roteamento de sinal para o segundo computador, e o cursor aparece na borda esquerda da sua tela na mesma altura.

O teclado automaticamente acompanha o mouse. Você está digitando código no Linux, move o mouse para a direita até a tela do Mac, e sua próxima tecla vai para o macOS.

Para rastrear a posição do cursor, o DeskHop alterna o descritor do mouse HID para coordenadas absolutas. O dispositivo internamente soma os movimentos relativos para calcular a posição exata na tela.
Se a alternância com o mouse não for conveniente, o atalho de teclado Left Ctrl + Caps Lock sempre funciona.
Extras úteis e modos de operação
O autor adicionou vários modos especializados ao firmware para abordar problemas comuns ao trabalhar com dois sistemas:
- Modo de desaceleração do mouse (
Right Ctrl + Right Alt). Quando você pressiona a combinação, a sensibilidade do mouse cai drasticamente. Útil quando você precisa capturar um único pixel em um editor gráfico ou mover precisamente um controle deslizante em um vídeo. - Modo jogos (
Left Ctrl + Right Shift + G). Coordenadas absolutas do mouse quebram controles em muitos jogos 3D e máquinas virtuais. No modo jogos, o DeskHop desabilita a alternância automática de tela e retorna ao posicionamento relativo padrão. - Bloqueio de alternância (
Right Ctrl + K). Bloqueia o controle no computador atual para que um movimento acidental da mão não envie o cursor voando para o segundo monitor durante uma chamada. - Modo protetor de tela (
Left Ctrl + Right Shift + S). O cursor começa a pular aleatoriamente pela tela como uma bola de Pong, impedindo o computador de entrar em modo de suspensão.
Hardware e montagem DIY
O projeto foi desenhado desde o início para que qualquer pessoa pudesse montá-lo em uma mesa de cozinha. A PCB de duas camadas usa um número mínimo de componentes.

Componentes para montagem (PCB v1.1):
| Componente | Quantidade | Preço aproximado | | --- | --- | --- | | Raspberry Pi Pico | 2 pçs | ~8,20 € | | Conector USB-A para placa | 2 pçs | ~0,40 € | | Isolador TI ISO7721DR | 1 pç | ~1,40 € | | Capacitores e resistores (0805) | 8 pçs | ~0,44 € | | Chips de proteção ESD TPD4E1U06DBVR | 2 pçs | ~0,62 € |
O custo total dos componentes fica em torno de 11-12 euros. O gabinete é impresso em uma impressora 3D em algumas horas, e a placa se encaixa no lugar sem um único parafuso.

Para quem não quer soldar, os arquivos gerber estão disponíveis no repositório. Você pode solicitar uma placa montada ou um kit da Elecrow.
Firmware e configuração
Você pode compilar o projeto a partir do código-fonte usando CMake ou Docker:
docker-compose -f misc/docker.yml run --rm build_container
Se compilar a partir do código-fonte parecer muito trabalho, há um arquivo .uf2 pronto na seção de releases. Para gravar o dispositivo, basta segurar o botão BOOTSEL. O DeskHop reinicializa e finge ser uma unidade virtual chamada "DESKHOP" onde você simplesmente arrasta o arquivo .uf2.
Uma combinação de atalhos de teclado Right Shift + F12 + Y é fornecida para calibrar a altura de transição entre monitores de tamanhos diferentes.

A configuração foi projetada com segurança em mente. Sem servidores web ou serviços na nuvem. Quando você entra no modo de configuração, um arquivo config.htm aparece na unidade virtual. Você abre localmente no Chrome ou Yandex Browser e edita os parâmetros através de WebHID diretamente no navegador.



O autor dedicou uma seção separada às preocupações de segurança:
- Sem área de transferência compartilhada ou transferência de arquivos entre sistemas.
- Sem interfaces de rede, Wi-Fi ou Bluetooth.
- Os computadores não podem forçar a atualização do firmware do dispositivo sem pressionar botões físicos no teclado.
Limitações e advertências
O projeto ficou ótimo, mas nada é perfeito. Aqui estão algumas coisas para saber antes de começar a construir:
- Configurações com vários monitores. A partir da atualização do Windows 10 KB50036, o comportamento de coordenadas HID absolutas quebrou para vários monitores. O cursor pode ficar preso na primeira tela. Existem soluções alternativas experimentais no firmware, mas o problema ainda está sendo resolvido.
- Periféricos complexos. Teclados com telas, macropads e mouses com 20 botões extras podem não funcionar corretamente. Teclados de escritório simples e mecânicos sem codificadores exóticos funcionam bem.
- Energia. Ambos os computadores devem fornecer energia às suas portas USB. Se um PC estiver completamente sem energia, o dispositivo não inicializa sem um hub externo.

A taxa de polling do mouse chega a 1.000 Hz, então você não sentirá nenhum atraso durante o movimento.
Vale a pena fazer?
O DeskHop é um excelente projeto DIY para o fim de semana. Se você trabalha em duas estações de trabalho simultaneamente e está cansado de atrasos em KVMs de software ou de clicar em botões em switches chineses baratos, esta pequena caixinha se paga no primeiro dia. O código-fonte em C e os esquemas da PCB são totalmente abertos sob a licença GPL-3.0.
Projetos relacionados
