6 pontos por GN⁺ 2023-12-28 | 1 comentários | Compartilhar no WhatsApp
  • DeskHop é um projeto de hardware open source que, quando dois computadores compartilham um único teclado/mouse, troca rapidamente o destino de entrada por atalhos de teclado e pelo movimento do ponteiro do mouse, em vez de usar um switch USB com botão
  • O dispositivo atua como USB Host/Device entre o teclado/mouse e os dois computadores, mantém as duas conexões simultaneamente e encaminha movimentos do mouse e pressionamentos de teclas para a saída selecionada
  • A alternância do mouse muda o descritor de relatório HID para coordenadas absolutas e acumula internamente os movimentos relativos, fazendo o cursor aparecer na tela do outro computador na mesma altura ao cruzar a borda da tela
  • Os principais destaques são ausência de latência perceptível, nenhuma instalação de software, suporte a Linux/macOS/Windows, peças por menos de 15€, case impresso em 3D e isolamento galvânico entre as saídas
  • As limitações também são claras: há um problema de coordenadas absolutas em múltiplas telas após o Windows 10 KB5003637, múltiplas telas no macOS exigem uma solução de contorno experimental, e a compatibilidade com teclados avançados, mouses com muitos botões e diversos dispositivos não é garantida

Um switch de hardware para alternar rapidamente entre dois computadores

  • DeskHop é um projeto que nasceu do caso de uso de pessoas que usam dois computadores diariamente e querem compartilhar um único teclado/mouse
  • Ele busca resolver o problema das caixas tradicionais de switching USB, que demoram para alternar e tornam inconveniente ter de procurar o botão
  • O comportamento desejado tem duas partes
    • Alternância de saída por atalho de teclado
    • Alternância automática ao arrastar o ponteiro do mouse entre monitores
  • Foi projetado para funcionar também entre computadores com sistemas operacionais diferentes
  • Um User Manual é fornecido

Principais recursos

  • É totalmente gratuito e open source e recebeu a certificação Open Source Hardware
  • Não há atraso perceptível durante a alternância
  • É possível arrastar o ponteiro do mouse entre computadores
  • Não instala software separado nos computadores
  • O custo das peças é apresentado como menos de 15€
  • Usa um case snap-fit que pode ser impresso em 3D
  • Oferece isolamento galvânico completo entre as saídas
  • Funciona em Linux, macOS e Windows

Como funciona

  • O dispositivo atua como um dispositivo intermediário entre o teclado/mouse e os computadores
  • Ele estabelece e mantém simultaneamente a conexão com os dois computadores
  • De acordo com o estado atualmente selecionado, decide para qual computador encaminhar movimentos do mouse e entradas de teclado
  • O teclado acompanha o mouse, e o mouse também acompanha o estado de alternância do teclado
    • Ao arrastar o mouse para outro desktop, o destino da entrada do teclado também é alternado junto

Implementação da alternância do mouse

  • Para criar a sensação de que o cursor do mouse se move entre telas, o descritor de relatório HID é alterado para o modo de coordenadas absolutas
  • Os relatórios reais do mouse continuam entrando como movimentos relativos, e o dispositivo os acumula internamente para gerenciar a posição atual
  • Quando o cursor tenta sair da área da tela atual na direção do outro monitor, ele mantém a coordenada Y, troca a coordenada X para a borda oposta e alterna a saída
  • Com isso, o cursor aparece na mesma altura na tela do outro computador, fazendo a transição parecer natural
  • A alternância real ocorre no momento em que uma seta para de se mover e a outra começa a se mover

Alternância do teclado e estado dos LEDs

  • O dispositivo atua como USB Host e consulta periodicamente o teclado
  • Quando encontra no relatório HID o atalho previamente configurado, passa a encaminhar os caracteres seguintes para a outra saída
    • Um exemplo de uso é Ctrl + Caps Lock
  • Os LEDs do teclado podem ser reaproveitados para mostrar qual saída está em uso
  • Como o estado dos LEDs é lembrado para cada computador, é possível retomar exatamente o estado anterior

Build e atualização de firmware

  • Para reduzir incompatibilidades de versão e problemas de caminho, e evitar o download de SDKs grandes, o pico sdk mínimo e o tinyusb são incluídos junto
  • No Debian/Ubuntu, é necessário instalar build-essential, cmake, gcc-arm-none-eabi, libnewlib-arm-none-eabi e python3
  • O build básico é feito com os comandos abaixo
    • cmake -S . -B build
    • cmake --build build
  • Também é oferecido um build reproduzível usando Docker
    • docker-compose -f misc/docker.yml run --rm build_container
  • Também é possível usar pre-built images
    • A partir da versão 0.6, é fornecida uma única imagem universal
    • Use copiando o arquivo .uf2 para o dispositivo

Como atualizar o firmware

  • Option 1: no firmware 0.6 ou superior, entre no config mode com left ctrl + right shift + c + o
    • O dispositivo do lado em que o teclado está conectado reinicia e aparece como uma unidade USB chamada DESKHOP
    • Ao copiar o arquivo .uf2, a imagem é verificada, o flash e o reboot são executados, e o upgrade da outra placa também continua
    • Essa unidade não é um dispositivo USB de armazenamento comum, portanto não pode ser usada para copiar arquivos
  • Option 2: usando o ROM bootloader, conecte cada Pico mantendo pressionado o botão da placa e copie o .uf2 para o drive flash que aparecer
  • Option 3: em builds de debug feitos com DH_DEBUG_CDC_FLASH=ON, é possível entrar em bootloader mode por um comando serial CDC
    • echo -n 'flash' > /dev/tty.usbmodem11104

Recursos adicionais

  • Mouse slowdown

    • Alterna o modo de mouse lento com right CTRL + right ALT
    • Reduz bastante a velocidade do ponteiro quando é necessário fazer ajustes precisos de posição
  • Switch Lock

    • Fixa na tela atual com RIGHT CTRL + K
    • Evita passar acidentalmente para outra tela
  • Lock Both Screens

    • Permite bloquear os dois computadores ao mesmo tempo com RIGHT CTRL + L
    • É preciso configurar o sistema operacional de cada saída
  • Gaming Mode

    • Alterna com LEFT CTRL + RIGHT SHIFT + G
    • Fixa na tela atual e faz o mouse funcionar como um mouse padrão de coordenadas relativas
    • É um modo para lidar com jogos, máquinas virtuais e sistemas operacionais ainda não suportados que não combinam com o modo de mouse absoluto
  • Screensaver

    • O padrão é desligado
    • Quando ativado, após um período de inatividade o ponteiro do mouse quica pela tela como uma bola de Pong
    • É desligado automaticamente ao enviar entrada para essa tela

Configuração de hardware

  • O circuito é baseado em duas placas Raspberry Pi Pico
    • O Pico foi escolhido por custar 4,10€ cada, ser barato, permitir solda manual e ser fácil de obter
  • Os dois Picos são conectados por UART
  • Os dois lados são separados por isoladores digitais
    • O Analog Devices ADuM1201 custa cerca de 3€
    • O TI ISO7721DR custa cerca de 1,5€, é mais barato, mais rápido e compatível pino a pino, por isso é preferido
  • O RP2040 não oferece suporte nativo a dual USB, mas, por meio do Pico-PIO-USB, implementa USB via PIO e desempenha tanto o papel de USB Host quanto de Device

PCB e case

  • Para facilitar a fabricação DIY, as trilhas da PCB ficam em um lado e o número de componentes é minimizado
  • Em princípio, as linhas diferenciais USB D+/D- deveriam ter o mesmo comprimento, mas elas foram projetadas de forma intencionalmente um pouco assimétrica para compensar a diferença de comprimento das trilhas GPIO na PCB do Pico
  • A meta de impedância diferencial é 90Ω, e na prática foram atingidos cerca de 107Ω
  • A espessura da PCB foi projetada como 1,6mm para se ajustar ao case snap-fit
  • A PCB v1.1 adiciona os seguintes itens em relação à v1.0
    • Proteção ESD TPD4E1U06DBVR
    • Capacitores VBUS para conectores de teclado/mouse
    • Indicação de orientação em serigrafia
    • Furos e melhorias de alinhamento para placas clone com headers já soldados
    • Resistores USB de 27Ω
  • A v1.1 é um pouco mais difícil de soldar manualmente por causa do pequeno CI TVS e dos resistores 0805
  • O case é fornecido em case, usa cerca de 33g de filamento e pode ser impresso em algumas horas
  • Ele é fixado com uma estrutura snap-fit sem parafusos, e a tampa tem uma fenda que pode ser aberta com uma chave de fenda

Custo e peças

  • O total da BOM da PCB v1.1 é apresentado como 11,22€
  • As principais peças são as seguintes
    • 2 Raspberry Pi Pico: 8,20€
    • 2 conectores USB-A para PCB: 0,40€
    • 1 TI ISO7721DR: 1,40€
    • 2 capacitores de 100nF: 0,18€
    • 4 resistores de 27Ω: 0,12€
    • 2 TPD4E1U06DBVR: 0,62€
    • 2 capacitores de 4.7uF: 0,14€
    • 2 headers 2.54mm 1x03: 0,16€
  • Além disso, é necessário fabricar a PCB, e os Gerber são fornecidos
  • Também são fornecidos arquivos STL para impressão 3D

Atalhos e configurações de uso

  • Considerando o firmware 0.68 ou superior, os principais atalhos são os seguintes
    • Left Ctrl + Right Shift + C + O: entrar no config mode
    • Right Shift + F12 + D: remover configurações do flash
    • Right Shift + F12 + Y: salvar offset de alternância de tela
    • Right CTRL + Right ALT: alternar modo de mouse lento
    • Right CTRL + K: bloquear/desbloquear alternância de desktop pelo mouse
    • Right CTRL + L: bloquear as duas saídas simultaneamente
    • Left CTRL + Right Shift + G: alternar gaming mode
    • Left CTRL + Right Shift + S: ativar screensaver
    • Left CTRL + Right Shift + X: desativar screensaver
    • Left CTRL + Caps Lock: alternar saída
  • O atalho foi alterado porque alguns teclados não enviam corretamente o pressionamento simultâneo dos dois Shift

Modo de configuração via web

  • A partir do firmware 0.6, foi introduzido um configuration mode aprimorado
  • Ao pressionar Left Ctrl + Right Shift + C + O, o dispositivo reinicia e entra no modo de configuração
  • Aparece uma unidade USB chamada DESKHOP, com um único arquivo config.htm dentro
  • Esse arquivo deve ser aberto no Chromium ou no Chrome
    • O Firefox evita a implementação de WebHID, portanto não é suportado atualmente
  • Depois de permitir a conexão, defina as opções e salve para gravá-las no dispositivo
  • O motivo de usar um arquivo local em vez de uma página de configuração online é que carregar JavaScript que interage com dispositivos de entrada a partir de um local online arbitrário é um risco potencial de segurança
  • A página web de configuração usa um método de autodescompactação por causa das limitações de armazenamento, e o código-fonte completo está incluído no repositório

Projeto de segurança

  • Não há função de copiar/colar nem compartilhamento de informações entre sistemas
    • É uma limitação intencional para evitar vazamento de informações
  • Não há conexões recebidas dos computadores de saída
    • A exceção são mensagens padrão de ligar/desligar LEDs do teclado, limitadas a 1 byte de dados
  • Os computadores de saída não podem acionar um upgrade de firmware
    • Apenas uma ação explícita do usuário por meio de um atalho especial de teclado é permitida
  • Não expõe endpoints customizados do teclado/mouse conectado nem repassa informações para o lado do dispositivo
  • Não armazena histórico de entradas
  • O dispositivo não gera pressionamentos de teclas por conta própria
    • Apenas o que o usuário digitou ou acionou é enviado à saída
  • As saídas são fisicamente separadas e usam isolamento galvânico com tensão de isolamento de pelo menos 2kV
  • Os pacotes entre dispositivos têm tamanho fixo, e as opções de configuração transmitidas são limitadas a uma lista curta
  • Não há Bluetooth, Wi‑Fi, rede ou acesso à internet
  • Computadores conectados nunca são considerados entidades confiáveis em nenhuma circunstância
  • O modo de configuração desliga automaticamente após um período de inatividade
  • O código é fornecido como open source, sem blobs binários

FAQ e compatibilidade

  • Também pode funcionar apenas com dois Picos, sem PCB nem isolador, mas o uso do isolador é recomendado
  • Mesmo com resoluções de monitor diferentes, o movimento do mouse é tratado em um espaço abstrato de coordenadas e o computador o mapeia para a tela física, portanto deve funcionar
  • Não é um produto à venda, mas um projeto pessoal de hobby não comercial
  • Há uma atualização informando que a Elecrow permite encomendar, em unidade única, PCB, PCB montada e dispositivo pronto
    • Segundo relatos de usuários, a placa chega vazia e é preciso gravar o firmware manualmente
  • Dizem que dongles combinados de teclado/mouse como Logitech Unifying passaram a ter suporte melhor depois de atualizações recentes de firmware
  • Teclado e mouse sem fio com receptores sem fio separados funcionaram corretamente em um teste com mouse sem fio da Anker
  • Para problemas de build, consulte a Troubleshooting Wiki

Alternativas de software

Limitações conhecidas e planos

  • Após o Windows 10 KB5003637, o comportamento de coordenadas absolutas HID quebrou, impedindo o uso de mais de uma tela no Windows
    • O mouse permanece na tela principal; há uma solução de contorno experimental e uma solução melhor está em desenvolvimento
  • O código precisa de limpeza e refatoração
  • Como não foi testado suficientemente em vários dispositivos, pode não funcionar de imediato dependendo do hardware
  • Em teclados avançados com knobs, botões extras e sliders, esse hardware adicional pode não funcionar
  • Em mouses modernos com muitos botões, alguns botões podem não funcionar como esperado
  • Os dois computadores precisam estar conectados e fornecer energia via USB para funcionar
    • Isso ocorre porque cada placa recebe energia do computador ao qual está conectada
  • O macOS tem problemas com duas ou mais telas, e o firmware mais recente fornece uma solução de contorno experimental para isso
  • Os recursos planejados incluem melhorias nas soluções de contorno para múltiplas telas no Windows/macOS, modo transparente/gaming mode, suporte a mais de 2 saídas e melhorias na UI de configuração
  • Também está em desenvolvimento uma versão lite que oferece a funcionalidade básica usando apenas uma única placa Pico W
  • Atualmente, o polling do mouse pode operar a 1000Hz

1 comentários

 
GN⁺ 2023-12-28
Comentários do Hacker News
  • É legal que ele consiga detectar a borda da tela sem software cliente
    Para fazer o cursor do mouse passar de forma natural, ele altera o descritor de relatório HID do mouse para coordenadas absolutas e, internamente, acumula os relatórios do mouse que na prática chegam como movimento relativo para manter a posição exata
    Assim, funciona como o synergykm / Barrier, mas sem recurso de área de transferência e sem software cliente

    • É especialmente bom que os computadores não precisem estar conectados pela rede
    • Fico me perguntando se isso quebraria completamente quando o cursor é movido por algo que não seja o mouse
      Por exemplo, há scripts de automação ou jogos que travam o cursor no centro da tela
  • No YouTube, dá para avançar o vídeo quadro a quadro com as teclas , e . mesmo sem hardware dedicado

    • Seria bom se houvesse uma solução também no Android
      Fazer seleção fina com um slider em interface touch é realmente péssimo
    • Não dá para se mover entre 30 segundos e 1 quadro
    • Hoje em dia os mouses parecem muito precisos e funcionam bem, então fico curioso sobre que mouse a pessoa usa para ter que prender a respiração ao rolar
    • O mpv também usa os mesmos atalhos
      Não sei quem veio primeiro, mas conheci isso no mpv e, quando apertei por acaso no YouTube, funcionou
  • No Windows, dá para usar o Mouse Without Borders, desenvolvido pelo Microsoft Garage e hoje incluído no Windows PowerToys
    Links:
    https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders
    https://github.com/microsoft/PowerToys

    • O Barrier é um projeto open source multiplataforma derivado do Synergy e funciona bem sem hardware adicional
      Mas agora vi que a manutenção foi interrompida, e o sucessor é o Input Leap
      https://github.com/debauchee/barrier
      https://github.com/input-leap/input-leap
    • Já usei antes e funcionava muito bem
      Principalmente porque ficou fácil arrastar e soltar arquivos para copiar entre os computadores
  • Comprei até quatro hubs USB para alternar teclado e mouse, mas a maioria dos dispositivos é tão ruim que isso irrita
    Várias vezes por dia preciso desconectar e reconectar fisicamente o hub, e fica pior ainda quando ligo webcam ou microfone USB
    Uso o Synergy sem problemas, mas preciso de um KVM de verdade que lide direito com webcam, microfone e áudio, e que permita mover só o conjunto de dispositivos conectados com um atalho de teclado
    Os usuários de KVM claramente não recebem suporte suficiente

    • A melhor configuração que já usei por acaso no trabalho foi o KVM embutido em um monitor BenQ 32" 4K
      Cada entrada DisplayPort tem portas USB associadas, e o USB-C cuida dos periféricos, da entrada de vídeo e até de uma alimentação razoavelmente boa
      A troca é feita por um pequeno botão na mesa, e mesmo nas entradas não exibidas o monitor continua parecendo conectado, então o Windows não fica piscando ao reorganizar tudo de novo, e a troca é muito mais rápida e suave
    • Quero compartilhar teclado, mouse e monitor entre um PC e um MacBook, mas parece não existir KVM com DP+USB de um lado e Thunderbolt do outro
      Parece um caso de uso comum, então é uma pena
      Dá para passar antes por um dock, mas uso um monitor de alta resolução, então a maioria dos docks não aguenta ou só suporta 30Hz
    • Recentemente comprei um monitor Dell 32" 6K que tem hub Thunderbolt 4 e KVM embutidos, e funciona perfeitamente
      O Mac fica ligado com um único cabo Thunderbolt 4, e o PC com HDMI 2.1 e USB3 10Gbps no upstream
      Conectei Ethernet e teclado/mouse ao monitor, e ele alterna para o dispositivo certo por atalho ou pelo OSD do monitor
      Também dá para ver os dois dispositivos ao mesmo tempo com o recurso PIP
    • Estou muito satisfeito com o KVM tesmart dual DP de 4 portas
      A limitação é ter apenas um controlador host USB 2, então alguns dispositivos de alta velocidade, como certas webcams, são difíceis de alternar
      Se for misturar produtos Apple, como a Apple não gosta de MST, é preciso usar dois cabos USB3 físicos no Mac para separar os dois canais de vídeo
    • O KVM USB da ATEN aceita praticamente qualquer coisa
      Eu conecto um drive USB para transferir arquivos rapidamente, e, se o dispositivo funciona com alimentação USB, em geral funciona
      Se escolher USB 3+, DP etc., fica caro, mas também existem modelos baratos que alternam só USB
      Porém, há a grande desvantagem de que alguns mouses e teclados com teclas especiais não funcionam 100%
  • Uso o Synergy para isso há mais de 10 anos
    https://symless.com/synergy e é rápido, faz a troca instantaneamente até no Wi‑Fi e oferece suporte a Windows/Mac/Linux

    • Synergy, Barrier e Input Leap são soluções de software bem decentes que vieram do mesmo ancestral
      Os dois últimos são gratuitos e de código aberto, e o Synergy tem uma boa forma de configurar os limites entre os dispositivos
      Ainda assim, seria ótimo se qualquer solução desse suporte adequado a layouts de monitor personalizados
      No meu ambiente, os monitores não ficam em linha reta e cada monitor pode alternar independentemente para cada dispositivo, então seria excelente poder definir limites por monitor e por dispositivo, mas não parece haver nada assim, nem em software nem em hardware
      Perguntei recentemente ao pessoal do Synergy e disseram que isso está no roadmap como um pedido popular de recurso; espero que saia em breve
    • Quando se usam VPNs diferentes em vários computadores, o Synergy não funciona muito bem, então comprei um dispositivo comercial parecido com este DIY, e ele funciona muito bem
      Não é preciso primeiro fazer login no computador, e dá para alternar passando pela borda da tela ou com uma combinação de teclas
      Os dispositivos USB conectados também podem ser alternados independentemente do teclado e do mouse
      Esse tipo de produto às vezes é chamado de boundless, borderless ou roaming KM switch
      https://www.cdw.com/product/siig-4-port-roaming-km-switch-wi...
    • O ShareMouse também merece menção: https://www.sharemouse.com/
      Para mim, funcionou muito melhor do que o Synergy
      Migrei para ele depois que os desenvolvedores do Synergy deixaram de responder a bugs antigos e o produto ficou inviável para mim
      Ex.: https://github.com/symless/synergy-core/issues/5992
      A desvantagem é que, para continuar recebendo atualizações depois de 1 ano, é preciso fazer uma “renovação de manutenção”, mas mesmo sem renovar ainda continuo usando bem
    • Há alguns meses o mouse travou no segundo computador, e levei alguns minutos para corrigir porque simplesmente tinha esquecido que o Synergy estava rodando
      Fui conferir e a configuração estava funcionando sem problemas há 4~5 anos, e está entre os softwares pagos com melhor custo-benefício
    • Parece bom, mas é uma pena que tenham colocado o TLS como recurso premium, acima do SKU pago básico
      Segurança deve ser padrão e gratuita em tudo; não é luxo, é requisito mínimo
      Ainda assim, se eu testar e achar bom, penso em comprar a licença premium por causa do recurso de copiar e colar
  • Tenho um projeto inspirado em algo parecido, https://github.com/jfedor2/screen-hopper
    A versão que fiz é composta por dois programas
    Um roda no desktop Linux, escuta eventos de entrada do evdev, o subsistema de entrada do Linux, e quando uma tecla específica é pressionada ele consome todos os eventos e os envia por USB serial para um RPI Pico
    Ao pressionar de novo, ele volta ao modo de escuta passiva
    O RPI Pico converte os eventos Linux evdev recebidos pela serial em eventos USB HID e os envia para outro PC com Windows
    Na prática, isso vira um switch KM que alterna instantaneamente entre um PC Linux e um PC rodando qualquer outro sistema operacional
    Foto da fiação: https://ibb.co/m0zhzgz
    Usei outro Pico como adaptador USB serial, e como iniciante em hardware foi um grande alívio precisar de apenas dois fios
    Os dois programas tinham menos de 100 linhas cada, e há muitos crates Rust e pacotes Python para escutar o Linux evdev
    O lado do Pico também é praticamente um loop com um grande switch, e existe crate Rust para enviar eventos USB HID
    Se você usar COBS, dá para enviar pela serial sem se preocupar com framing
    Acabei não liberando como open source por causa de um bug no USB serial: depois que a conexão caía, ele não reconectava corretamente ao desktop Linux
    Não sei se o problema é do Linux ou do Pico, e como não desconecto o cabo sigo usando sem problemas até hoje
    Como jogo muito FPS, removi de propósito a funcionalidade de coordenadas absolutas, e vinculei a tecla de alternância a um botão lateral do mouse, assim posso trocar de sistema sem tirar as mãos do teclado

    • Ideia realmente muito legal
      Só fiquei sabendo do projeto screen-hopper ontem, e foi aquela sensação de confirmar a teoria de que, não importa o que você tente construir, alguém mais inteligente já fez algo melhor antes
      Não jogo nada, então coordenadas absolutas para mim seriam ok, mas há um item na lista de afazeres para tornar isso configurável
    • O bug no USB serial pode até ser um motivo para publicar
      Talvez dê para nerd-sniping alguém para investigar a sutileza que causa o bug
    • Já recebi muitas sugestões para publicar mesmo com o bug, e essa lógica faz sentido
      O código-fonte, exatamente como está, está aqui: https://github.com/null-dev/picokvm
    • Seria bom se você pudesse colocar no repositório com um aviso de que não há suporte e que o uso é por conta e risco do usuário
    • Acho que muita gente gostaria de ver isso mesmo com o bug ainda presente
  • Uma das minhas grandes irritações era alternar a entrada de mouse e teclado entre dois PCs com um switch USB 3.0
    Quando eu não tinha muito o que dizer numa reunião do Teams, se alguém chamava meu nome ou mandava uma mensagem, eu acabava me atrapalhando procurando o botão para devolver a entrada ao PC com o Teams aberto
    Pensei em ligar um ESP32 ou Rpi Pico W e alguns optoacopladores aos pinos do botão do switch USB, expor um endpoint HTTP e usar um script AutoHotkey com atalho para alternar a entrada entre os dois dispositivos
    Mas desisti porque não consegui pensar em uma forma de determinar qual entrada está ativa no momento, e gostei desta solução

    • Pode valer a pena olhar headsets compatíveis com Teams que tenham botão de mudo
      O headset Logitech que recebi da empresa tem botões de volume, encerrar chamada e mudo no cabo, então fica muito mais fácil tirar do mudo mesmo fazendo multitarefa
  • O Synergy lida bem com esse caso de uso com software puro
    Não é gratuito nem open source, mas é relativamente barato
    https://symless.com/synergy

    • Antes de o Synergy se tornar código fechado, ele gerou o fork Barrier[0], que depois gerou o fork input-leap[1]
      Ambos são open source
      [0] https://github.com/debauchee/barrier
      [1] https://github.com/input-leap/input-leap
    • O Synergy é open core, e estas partes são licenciadas sob GPL: https://github.com/symless/synergy-core/#License-1-ov-file
      Também existe um fork open source separado na versão 1.9: https://github.com/debauchee/barrier#what-is-it
    • O Synergy tem bugs com os quais aparentemente ninguém se importa
      Por exemplo, ao usar um host macOS, ele usa a curva de aceleração do macOS para calcular a posição do cursor nos clientes Windows/Linux, mas não a usa no movimento real do cursor
      Então, ao tentar trabalhar em um terço da tela do Windows que fica mais perto do host, você acaba voltando sem querer
    • Fico curioso se existe alguma sugestão que funcione para uma combinação de Windows com tablet Android
      Parece que todas as soluções só funcionam em sistemas operacionais de desktop
    • Dizem que “não existe nada tão irritante quanto o Synergy, mas todos são assim”
      Nenhuma dessas tecnologias é estável, e o Synergy já chegou a travar até teclados conectados várias vezes, deixando o computador num estado em que só voltava a responder depois de desligar e ligar de novo
  • Isso é realmente incrível
    Eu sinto isso especialmente como alguém que usa há pelo menos 20 anos uma configuração de desktop com máquinas Linux-Mac-Windows da esquerda para a direita
    Se linguagens de programação podem ser poliglotas, então o hardware tem uma configuração multiplataforma
    Felizmente, isso ficou mais fácil nos últimos anos com o aumento dos projetos de system-on-chip (SoC)
    Minha configuração atual é composta por duas réplicas de Mac mini com SoC Ryzen de 250 dólares vindas de Shenzhen e um M1 MBP
    É uma pena que o mundo das soluções KVM open source, como o Synergy, que antes eram robustas, tenha virado um pesadelo recursivo de forks, tornando difícil encontrar um software KVM multiplataforma open source que funcione de graça
    No fim, agora estou usando um switch KVM tradicional, mas precisar apertar botão é algo que distrai
    Quero tentar algo assim de novo algum dia

  • Se houver alguém disposto a trabalhar junto para comercializar isso, eu topo bancar e cuidar de injeção plástica, marketing, montagem em escala e o que mais for necessário
    Meu e-mail está no perfil

    • Se isso for comercializado, eu realmente gostaria que resolvessem a desvantagem de “só funcionar quando os dois computadores estão conectados e ligados”
      Para mim, isso é impeditivo
    • Já existe um produto comercial para isso
      Basta procurar por boundless, borderless, roaming KM switch