6P by neo 2달전 | favorite | 댓글 1개

DeskHop - 빠른 데스크탑 전환

  • 무료이며 오픈 소스
  • 전환 시 지연이 거의 없음
  • 마우스 포인터를 컴퓨터 간에 드래그하여 전환 가능
  • 소프트웨어 설치 불필요
  • 저렴하고 구하기 쉬운 부품 사용 (15유로 미만)
  • 3D 프린터로 출력 가능한 스냅핏 케이스
  • 출력 간 완전한 갈바닉 절연
  • 리눅스, macOS, 윈도우에서 작동

작동 원리

  • 장치는 키보드/마우스와 컴퓨터 사이의 중개자 역할을 하며, 두 컴퓨터와 동시에 연결을 유지함
  • 사용자의 선택에 따라 마우스와 키 입력을 어느 컴퓨터로 전달할지 결정
  • 마우스를 다른 데스크탑으로 드래그하면 키보드도 자동으로 전환됨

마우스

  • 마우스 HID 리포트 디스크립터를 절대 좌표를 사용하도록 변경하고, 마우스 리포트(상대 이동)를 내부적으로 누적하여 정확한 위치를 유지
  • 다른 모니터 방향으로 모니터 영역을 벗어나려고 하면 Y 좌표를 유지하고 최대 X를 최소 X로 바꾼 후 출력을 전환
  • 커서가 다른 모니터에서 같은 높이에 나타나도록 하여 부드러운 전환 인식

키보드

  • USB 호스트로서 키보드를 주기적으로 조회하고, 사전에 설정된 단축키(Caps Lock 등)를 찾아 다른 출력으로 문자를 전달
  • 어느 출력을 사용하고 있는지 시각적으로 알 수 있도록 키보드 LED를 재활용하여 피드백 제공
  • 각 컴퓨터의 LED 상태를 기억하여 이전 상태 그대로 작업을 이어갈 수 있음

미리 빌드된 이미지 사용

  • 미리 빌드된 이미지 사용 가능
  • Pico 보드를 PCB의 A 슬롯에 연결하고 케이블을 연결하는 동안 보드의 버튼을 누르고 있으면 시스템에 USB 드라이브로 나타남
  • 해당하는 board_A.uf2 파일을 복사하고 B에 대해서도 반복

펌웨어 업그레이드

  • 옵션 1: 케이스를 열고, 각 Pico를 연결하는 동안 버튼을 누르고 있는 상태에서 올바른 uf2 파일을 복사
  • 옵션 2: 특정 키 조합(Right Shift, P, H, X, Left Shift)을 사용하여 BOOTSEL 모드로 전환하여 Picos를 부트로더 업그레이드 모드로 전환

기타 기능

  • 마우스를 미세하게 조정할 필요가 있을 때 Right ALT를 누르고 있는 동안 마우스를 움직이면 마우스 속도가 상당히 느려져 정밀한 작업 수행 가능

하드웨어

  • 회로는 저렴하고(개당 4.10유로), 수작업으로 납땜 가능하며, 대부분의 공급업체가 재고를 가지고 있는 두 개의 라즈베리 파이 Pico 보드를 기반으로 함
  • Picos는 아날로그 디바이스 ADuM1201 듀얼 채널 디지털 아이솔레이터(~3유로)를 사용하여 UART로 연결됨
  • RP2040의 프로그래머블 IO 마법을 사용하여 USB를 구현하는 놀라운 프로젝트 덕분에 USB 호스트와 디바이스로 작동할 수 있음

PCB

  • DIY 빌드를 가능한 한 간단하게 유지하기 위해 트레이스를 한쪽 면에만 두고 부품 수를 최소한으로 유지
  • USB D+/D- 차동 라인은 길이가 동일해야 하지만, 전체 길이가 일치하도록 PICO PCB 자체에 해당하는 GPIO 트레이스 길이 차이를 상쇄하기 위해 의도적으로 약간 비대칭

케이스

  • 3D 모델링에 능숙하지 않아 케이스는 간단하고 기본적이지만 목적에 부합
  • 인쇄하기 쉽고, 약 33g의 필라멘트를 사용하며, 몇 시간이면 완성
  • 수평 PCB 이동은 구멍을 통과하는 핀으로 막고, 수직 이동은 측면의 스냅핏 돌기로 막아 나사가 필요 없음
  • 마이크로 USB 커넥터는 케이스의 옆면에서 벗어나므로 약간 큰 구멍을 뚫으면 케이블이 들어갈 수 있음
  • 뚜껑은 스냅핏 디자인으로, 스크루드라이버 슬롯이 있어 열 수 있음
  • 상단의 표시는 오목하게 되어 있어 크레용 등으로 마감하여 대비를 높일 수 있음(또는 그대로 둘 수 있음)

재료 목록

  • 라즈베리 파이 Pico 2개, ADuM1201BRZ 1개, Cap 1206 SMD 100nF 2개, USB-A PCB 커넥터 2개, Headers 2.54 1x03 2개
  • 총 가격: 11.53유로
  • USB-A 커넥터는 Molex MX-67643-0910 또는 동일한 치수를 공유하는 더 저렴한 대체품 사용 가능
  • 추가 단계: PCB 제작(Gerber 제공, JLC가 몇 달러에 제작, 1.6mm 두께 선택), 케이스 3D 프린팅(stl 파일 제공, 약 33g 필라멘트 필요)

FAQ

  1. PCB와 아이솔레이터 없이 두 개의 Pico만 가지고 있으면 작동하나요?
    • 아이솔레이터가 권장되지만 없어도 작동할 수 있음.
  2. 모니터의 해상도가 다르면 어떻게 되나요?
    • 마우스 이동은 추상적 좌표 공간에서 이루어지며 컴퓨터가 물리적 화면과의 대응을 계산하므로 문제없이 작동해야 함.
  3. 이 제품을 어디서 살 수 있나요?
    • 판매하지 않으며 개인적인 비상업적 취미 프로젝트임.
  4. 마우스로 활성화된 화면이 변경될 때 키보드도 따라가나요(반대의 경우도 마찬가지)?
    • 예, 마치 하나의 컴퓨터처럼 작동하도록 만들어짐.
  5. 로지텍 유니파잉 리시버와 같은 키보드/마우스 콤보 동글과 함께 작동하나요?
    • 현재 버전에서는 마우스가 다른 포트에 연결되어 있다고 가정하므로 작동하지 않음. 로지텍 유니파잉 리시버의 동작을 조사하고 지원을 구현해야 함.
  6. 마우스와 키보드에 각각 별도의 무선 리시버가 있는 무선 마우스 및 키보드와 함께 작동하나요?
    • 이러한 경우에 대해 테스트되지 않았으므로 예상치 못한 문제가 발생할 수 있지만 이론적으로는 바로 작동해야 함.

단점

  • 주의: 이 기능을 사용하려면 두 컴퓨터가 연결되어 있고 켜져 있어야 함(각 보드는 연결된 컴퓨터로부터 전원을 공급받음).
  • 코드 정리, 리팩토링 등이 필요함.
  • 가끔 버그와 이상한 동작이 발생함.
  • 다양한 장치와 테스트되지 않아 사용자의 하드웨어에서 어떻게 작동할지 알 수 없음.
  • Pico-PIO-USB는 키보드 LED 제어를 지원하기 위해 패치되었으며, 일반적으로 이는 호스트 모드에서 TinyUSB에 의해 처리됨.

면책 조항

  • 이 프로젝트를 시도하는 사람은 모든 부상, 손해 또는 기타 결과에 대해 본인이 책임을 지지 않음을 이해하고 인정해야 함.
  • 안전이 중요하므로 필요한 예방 조치를 취하고 프로젝트 전반에 걸쳐 본인의 안녕을 책임지는 것이 중요함.
  • 감전, 화상, 스트레스 또는 화를 내지 말고 즐겁게 작업하고 즐기길 바람.

GN⁺의 의견:

  • 이 기사는 두 대의 컴퓨터를 사용하는 사람들에게 매우 유용할 수 있음. 특히 하나의 키보드와 마우스를 공유하면서 작업 효율성을 높이고 싶은 사용자에게 매력적임.
  • 오픈 소스이며 DIY 접근 방식은 기술에 관심 있는 사람들에게 흥미로운 프로젝트가 될 수 있음. 사용자는 자신의 필요에 맞게 시스템을 조정하고 개선할 수 있음.
  • 이 프로젝트는 기술적 문제를 해결하려는 커뮤니티의 혁신적인 정신을 보여줌. 사용자가 직접 문제를 해결하고 그 과정을 공유함으로써 다른 사람들도 이점을 얻을 수 있음.
Hacker News 의견
  • 클라이언트 소프트웨어 없이도 가장자리를 감지할 수 있다는 점이 주목할 만함.

    • 마우스 커서가 마법처럼 화면을 넘나들게 하기 위해 마우스 HID 보고서 디스크립터를 절대 좌표를 사용하도록 변경하고, 상대적인 움직임으로 들어오는 마우스 보고서는 내부적으로 누적되어 정확한 위치를 유지함.
    • SynergyKM/Barrier와 유사하게 작동하지만 클립보드 기능이나 클라이언트 소프트웨어는 필요하지 않음.
  • Synergy라는 소프트웨어 솔루션을 십여 년 넘게 사용해왔음. Wi-Fi를 통해 즉시 전환되며 Windows/Mac/Linux 간에도 작동함.

  • YouTube에서 특정 위치로 슬라이더를 정확하게 이동하려 할 때 마우스가 너무 민감하게 움직여서 손을 매우 조심스럽게 움직이는 경우가 있음.

    • YouTube에서는 커스텀 하드웨어 없이도 쉼표(,)와 마침표(.) 키를 사용하여 비디오를 프레임별로 스크럽할 수 있음.
  • Windows에서는 Microsoft Garage에서 개발하고 이제 Windows PowerToys의 일부인 Mouse Without Borders라는 도구를 사용할 수 있음.

  • 다른 유사한 프로젝트에 영감을 받아 자신만의 버전을 만들었음.

    • 한 프로그램은 Linux 데스크톱에서 실행되어 Linux 입력 서브시스템(evdev)에서 입력 이벤트를 수신함. 특정 키를 누르면 모든 이벤트를 소비하고 USB 시리얼을 통해 RPI Pico로 보냄. 키를 다시 누르면 수동 청취 모드로 전환됨.
    • RPI Pico는 Linux evdev 이벤트를 USB HID 이벤트로 변환하여 다른 Windows PC로 전송하도록 프로그래밍됨.
    • 결과적으로 Linux PC와 선택한 OS를 실행하는 PC 간에 즉시 전환할 수 있는 KM 스위치가 됨.
    • 하드웨어 초보자로서 단 2개의 전선만 필요했기 때문에 이 프로젝트가 다른 하드웨어 초보자들에게 좋은 시작 프로젝트라고 생각함.
  • USB 허브 4개를 구입해 키보드와 마우스를 전환했지만, 대부분의 장치가 너무 끔찍해서 하루에 여러 번 물리적으로 허브를 분리해야 함.

    • Synergy 소프트웨어를 사용하고 있으며 잘 작동하지만, 웹캠, 마이크, 오디오 등을 허용하는 제대로 된 KVM을 원함.
    • KVM 사용자는 확실히 더 나은 서비스를 받아야 함.
  • USB 3.0 스위치를 사용하여 두 PC 간에 마우스 및 키보드 입력을 전환하는 것이 큰 불만 중 하나임.

    • 팀즈 콜 미팅 중에 이름이 언급되거나 메시지를 받으면 갑자기 입력을 팀즈가 실행 중인 PC로 전환하기 위해 버튼을 찾아 헤매게 됨.
    • ESP32나 Rpi Pico W를 USB 스위치의 버튼 핀에 연결하고 HTTP 엔드포인트를 통해 두 기계 간의 입력을 전환할 수 있는 아이디어가 있었지만, 어떤 입력이 활성화되어 있는지 결정하는 방법을 찾지 못해 포기함.
  • 현재 KVM 스위치를 사용하고 있으며 전환하는 데 2-3초가 걸리기 때문에 대부분 다른 컴퓨터로 SSH 접속하여 tmux 세션을 사용함.

  • 이것은 놀라운 발전임.

    • Lin-Mac-Win 박스를 왼쪽에서 오른쪽으로 배열한 데스크톱 설정을 오랫동안 사용해온 사용자로서, SoC 디자인이 최근 몇 년 동안 확산됨에 따라 이러한 설정이 더 쉬워짐.
    • 현재 설정은 심천에서 직접 온 2x $250 Ryzen SoC Mac-mini 복제품과 M1 MBP로 구성됨.
    • 한때 번성했던 오픈 소스 KVM 솔루션의 세계가 비용 없이 작동하는 멀티플랫폼 오픈 소스 소프트웨어 KVM을 얻기 어려운 포크의 재귀적 악몽으로 퇴화한 것이 안타까움.
    • 현재 설정은 좋은 '올드' KVM 스위치를 사용하지만 버튼을 누르는 것이 방해가 됨.
  • Synergy는 소프트웨어만으로 이 문제를 잘 해결함. 무료 또는 오픈 소스는 아니지만 비교적 저렴함.