기술의 미친 세계에는 항상 문제를 해결하려는 기발한 작은 프로젝트가 어떻게 틈새 시장이 왼손 스크루 드라이버와 자조 알람 시계 일 수 있다는 틈새 시장이 어떻게 있다는 것을 알아 차렸습니까?
나는 매일 워크 플로에서 두 개의 다른 컴퓨터를 사용하고 그들 사이에 단일 키보드/마우스 쌍을 공유합니다. 아마존에서 발견 된 여러 USB 스위치 박스를 시도해 보면 모두 비슷한 문제로 고통 받고 있습니다. 전환하는 데 시간이 걸리며 버튼을 찾으려고 할 때 프로세스가 매우 서투른 것입니다. 솔직히 시간이 지나면 더 나아지지 않습니다.
내가 원했던 것은 키보드 단축키를 사용하여 출력을 빠르게 전환하는 방법이었습니다. 마우스 포인터를 모니터 사이에 마술처럼 움직일 수 있습니다. 이 프로젝트는 컴퓨터가 다른 운영 체제를 운영하더라도 두 가지를 모두 수행 할 수 있습니다!
이 장치는 키보드/마우스와 컴퓨터 사이의 중개자 역할을하며 두 컴퓨터와 한 번에 연결을 설정하고 유지 관리합니다. 그런 다음 선택에 따라 마우스와 키 스트로크를 전달할 위치를 선택합니다. 키보드는 마우스를 따르고 그 반대도 마찬가지입니다. 따라서 마우스를 다른 데스크탑으로 드래그하면 둘 다 전환됩니다.
마우스 커서를 마술처럼 뛰어 넘기 위해 마우스 hid 보고서 설명자는 절대 좌표를 사용하도록 변경 된 다음 마우스 보고서 (여전히 상대적으로 이동하는)가 내부적으로 축적되어 정확한 집계를 위치에 유지합니다.
모니터 영역을 다른 모니터의 방향으로 떠나려고하면 Y 좌표를 유지하고 최소 x를 최소 x로 교체 한 다음 출력을 뒤집습니다. 이렇게하면 커서가 다른 모니터의 동일한 높이에서 원활하게 나타나서 부드러운 전환에 대한 인식을 향상시킵니다.

마우스를 Mac에서 Linux로 끌어내는 것은 자동으로 출력을 스위치합니다.
실제 스위치는 한 화살표가 움직이지 않고 다른 하나가 시작되는 순간에 발생합니다.
USB 호스트 역할을하고 키보드를 정기적으로 쿼리하면 HID 보고서 (일반적으로 CTRL + 캡 잠금 장치)에서 미리 구성된 핫키를 찾습니다. 발견되면 모든 후속 문자를 다른 출력으로 전달합니다.
주어진 순간에 어떤 출력을 사용하는지 시각적으로 표시하려면 키보드 LED를 용도 변경하고 필요한 피드백을 제공 할 수 있습니다.
또한 각 컴퓨터에 대한 LED 상태를 기억하므로 어떻게 남은 방법을 선택할 수 있습니다.

구축 할 때 버전 불일치 및보고 된 경로 문제를 피하고 대규모 SDK를 다운로드하지 않아도 된 프로젝트는 이제 Pico SDK 및 TinyUSB를 최소화합니다.
Debian/Ubuntu 시스템에서는 다음 사항을 설치하십시오.
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
실행을 통해 빌드 할 수 있어야합니다.
cmake -S . -B build
cmake --build build
또한 Web UI 확인 WebConfig/를 재구성하고 ./render.py 를 실행하려면 Jinja2를 설치해야합니다.
디스크를 재건하려면 디스크/ 폴더를 확인하고 ./create.sh 실행하고 필요한 경우 시스템을 조정하십시오. dosfstools (mkdosfs를 제공하려면),
또는 사전 제작 된 이미지를 사용할 수 있습니다. 버전 0.6이므로 단일 보편적 인 이미지 만 있습니다. 다음 방법 중 하나로 장치에 간단히 복사하는 .uf2 파일이 필요합니다.
옵션 1- (펌웨어 0.6 이상) 왼쪽 ctrl + 오른쪽 shift + c + o를 동시에 누르면 장치를 "구성 모드"에 넣습니다. 키보드가 연결된 장치는 재부팅되어 "데스크 호프"라는 USB 드라이브로 바뀝니다. .uf2 파일을 복사하기 만하면됩니다. 이미지가 확인되면 장치가 플래시 및 재부팅 된 다음 다른 보드를 업그레이드합니다. 이 작업 중에 LED가 깜박일 것입니다. 일단 완료되면 플래시 및 재부팅을 작성하여 작업을 완료합니다.
참고 - 이것은 실제 일반 USB 드라이브가 아니므로 파일을 복사하는 데 사용할 수 없습니다.
옵션 2- ROM 부트 로더 사용 - 각 피코를 연결하는 동안 온보드 버튼을 누르고 UF2를 나타나는 플래시 드라이브에 복사하십시오. 0.6 이하의 이미지는 전원 공급 장치 주위에서 바이올린없이 버튼을 유지하지만 장치 상태에 관계없이 "홀드 버튼"은 항상 작동해야합니다.
그 yt 비디오 슬라이더를 특정 위치로 옮기려고했지만 마우스가 너무 멍청 해져 갑자기 당신은 당신이 5 살처럼 손으로 손을 움직이고 다시 "작동"을 재생하고 있습니까?
오른쪽 ctrl + 오른쪽 alt를 눌러 느린 마우스 모드를 전환합니다. 마우스 포인터는 상당히 속도가 느려져 더 미세한 정밀 작업을 수행 할 수 있으며 동일한 키를 다시 빠르게 누르면 마우스가 정상적으로 움직일 수 있습니다.
하나의 화면에 자신을 잠그려면 RIGHT CTRL + K 사용하십시오. 이것은 실수로 현재 화면을 남기지 않도록합니다. 끄려면 동일한 키 콤보를 다시 누릅니다.
RIGHT CTRL + L 사용하여 두 컴퓨터를 한 번에 잠글 수 있습니다. 이 기능을 사용하려면 먼저 구성에서 각 출력에 대한 OS를 설정하십시오 (바로 가기가 다르기 때문에).
게임을하는 경우 절대 마우스 모드에서 게임이 제대로 작동하지 않을 가능성이 있습니다. 해당 문제를 해결하기 위해 게임 모드가 도입되어 LEFT CTRL + RIGHT SHIFT + G 에 의해 토글이 전환됩니다. 게임 모드에서는 현재 화면에 잠겨 있으며 마우스는 표준 상대 마우스처럼 작동합니다. 이것은 또한 현재 지원되지 않는 운영 체제 등 다양한 가상 머신 문제를 해결해야합니다.
컴퓨터가 대기에 들어가는 것을 막기 위해 내장 된 것으로 추정되지만 진실을 말해주십시오. 기본적으로 마우스 포인터가 화면 주위를 폰 볼처럼 튀어 오릅니다. 활성화되면 사용자 구성 헤더에 정의 된 비활성 기간 후에 활성화되고 해당 화면으로 출력을 보내 자마자 자동으로 꺼집니다.
잠재적 사용 예제 - 대기에서 비디오를 재개하지 않는 버기 USB 도크가 있으므로 잠을 자지 못하면 편리한 해결 방법이 될 수 있습니다.
이 회로는 2 개의 Raspberry Pi Pio 보드를 기반으로하며 저렴하기 때문에 (4.10 € / PC) 손으로 납땜 할 수 있으며 대부분의 공급 업체는 재고가 있습니다.
피코는 UART를 사용하여 연결되고 아날로그 장치 ADUM1201 듀얼 채널 디지털 차단기 (~ 3 €) 또는 훨씬 저렴하고 빠르며 핀 호환 TI ISO7721DR (~ 1.5 €)로 분리됩니다.
일반적으로 듀얼 USB를 지원하지는 않지만 RP2040에서 발견 된 프로그래밍 가능한 IO 마법사를 사용하여 USB가 구현되는 놀라운 프로젝트 덕분에 USB 호스트 및 장치로 작용할 수 있도록 지원됩니다.
DIY 빌드에 대해 가능한 한 간단하게 유지하기 위해 흔적을 한쪽에 유지하고 부품의 수를 최소로 유지했습니다.

USB D+/D- 차동 라인의 길이는 동일해야하지만 해당 GPIO 트레이스 PICO PCB 자체의 길이 차이에 대응하기 위해 의도적으로 약간 비대칭이므로 전체 길이는 일치해야합니다.
ZD (차동 임피던스)는 90 옴 (~ 107, 충분히 가깝게)을 목표로합니다.
두께는 스냅 피팅이 예상대로 작동하기 위해 1.6mm로 설계되었습니다.
PCB에는 2 가지 버전이 있습니다 (사용자에게는 큰 차이가 없음). 원본 (v1.0)은 납땜하고 조립하기가 더 쉽고 v1.1은 다음과 같은 업그레이드를 제공합니다.
이 버전은 작은 과도 전압 억제 업체 IC와 0805 저항으로 인해 납땜하기가 약간 더 어렵지만 완전히 가능합니다. TV는 이론적으로 생략 할 수 있으며 (권장되지 않음) 여전히 작동합니다.
다가오는 - 피코가 필요하지 않은 rp2040을 가진 보드는 더 작고 편리합니다.
나는 3D에 좋지 않기 때문에 사건은 간단하고 기본적이지만 작업을 수행합니다. 인쇄하기 쉽고 ~ 33g의 필라멘트를 사용하며 몇 시간이 걸립니다.
수평 PCB 이동은 구멍을 뚫고 미끄러 져 나사가 필요하지 않아야합니다. 이 케이스에는 로고와 2 개의 추가 스냅 피트 러그가 특징으로 약간의 재 설계가 제공되었으므로 더 나은 씰을 제공합니다.
두 보드의 마이크로 USB 커넥터는 케이스 측면에서 오프셋되므로 약간 더 큰 구멍을 통해 케이블이 닿을 수 있습니다.
뚜껑은 스크루 드라이버 슬롯이있는 스냅 핏 디자인입니다. 상단의 표시는 오목하게되며 예를 들어 크레용으로 마무리하여 더 나은 대비를 제공합니다 (또는 단순히 as-is).

| 요소 | 수량 | 단가 / € | 가격 / € |
|---|---|---|---|
| 라즈베리 파이 피코 | 2 | 4.10 | 8.20 |
| ADUM1201BRZ | 1 | 2.59 | 2.59 |
| CAP 1206 SMD 100NF | 2 | 0.09 | 0.18 |
| USB-A PCB CONN. | 2 | 0.20 | 0.40 |
| 헤더 2.54 1x03 | 2 | 0.08 | 0.16 |
| 총 | 11.53 |
ti iso7721dr는 adum 대신에 사용할 수 있습니다. 핀 호환, 훨씬 저렴하며 더 나은 사양이 있습니다.
| 요소 | 부분 | 수량 | 단가 / € | 가격 / € |
|---|---|---|---|---|
| U1, U2 | 라즈베리 파이 피코 | 2 | 4.10 | 8.20 |
| J1, J4 | USB-A PCB CONN. | 2 | 0.20 | 0.40 |
| U4 | ti iso7721dr | 1 | 1.40 | 1.40 |
| ( 또는 ADUM1201BRZ) | ||||
| C1, C2 | CAP 0805 SMD 100NF | 2 | 0.09 | 0.18 |
| R1, R2, R3, R4 | RES 0805 SMD 27OHM | 4 | 0.03 | 0.12 |
| U3, U5 | TPD4E1U06DBVR | 2 | 0.31 | 0.62 |
| C3, C4 | 캡 4.7UF SMD 0805 | 2 | 0.07 | 0.14 |
| J2, J3 | 헤더 2.54 1x03 | 2 | 0.08 | 0.16 |
| 총 | 11.22 |
USB-A 커넥터는 Molex MX-67643-0910이거나 동일한 차원을 공유하는 저렴한/예산 일 수 있습니다.
추가 단계 :
전자 제품에 대한 경험이 있다면 필요하지 않습니다. 그러나 일부는 그렇지 않을 수도 있고,이 경우이 비디오는 프로세스를 안내하는 데 도움이 될 수 있습니다. 납땜 후에는 부식을 방지하기 위해 PCB의 플럭스를 청소해야합니다.
이를위한 표준 프로세스는 이소 프로필 알코올과 오래된 칫솔을 사용하는 것입니다. 하지만 뭐야? 나는 내 오래된 칫솔을 온라인으로 두지 않으므로 그 부분을 즉흥적으로해야 할 것입니다. :)

[참고] 비디오 어셈블리 안내서는 PCB v1.0을 다룹니다. 수정 된 버전은 매우 유사하며 절차는 기본적으로 동일합니다.
구성
Left ShiftLeft Ctrl + Right Shift + C + O 구성 모드 입력Right Shift + F12 + D 플래시 구성 제거Right Shift + F12 + Y 스크린 스위치 오프셋 저장용법
Right CTRL + Right ALT 느린 마우스 모드 토글Right CTRL + K 마우스 데스크탑 스위칭을 잠금/잠금 해제합니다Right CTRL + L 한 번에 두 출력을 잠그십시오 (이전 출력 OS 설정, 아래 바로 가기 참조)Left ShiftLeft CTRL + Right Shift + G 게임 모드 토글 (스크린으로 잠금, 표준 마우스 역할)Left CTRL + Right Shift + S 스크린 세이버 활성화Left CTRL + Right Shift + X -screensaver 비활성화Left CTRL + Caps Lock - 출력 간 전환참고 : 일부 키보드는 동시에 두 교대를 동시에 보내지 않기 때문에 바로 가기가 변경된 이유입니다. 혼란에 대한 사과.
이 단계는 필요하지 않지만 화면이 완벽하게 정렬되지 않거나 크기가 다르지 않으면 편리 할 수 있습니다. 목표는 마우스 포인터가 정확히 같은 높이에서 나오는 것입니다.

더 작은/하단 화면 (그림)의 높이에서 더 큰 화면에 마우스를 주차하고 Right Shift + F12 + Y 누릅니다. LED (및 캡 잠금 장치)가 확인시 플래시해야합니다.
하단 테두리에 대해 반복하십시오 (더 큰 화면의 테두리 위에있는 경우). 이것은 플래시로 저장되며 지금 부터이 교정 값을 유지해야합니다.
Windows 및 Mac은 여러 화면 및 절대 포지셔닝에 문제가 있으므로 해결 방법이 필요합니다 (여전히 실험적). 건설 중에는 더 나은 해결 방법이 있지만 현재는 각 출력 및 화면 수에 대한 운영 체제를 설정해야합니다.
메인 화면은 중간에 있고 가장자리의 보조 화면에 있어야합니다. 실제 옵션을 구성하려면 장치의 웹 구성 페이지를 엽니 다.

FW 0.6부터 개선 된 구성 모드가 도입됩니다. 장치를 구성하려면 다음과 같은 지침을 따르십시오.


Q :이 이상한 USB 드라이브를 다루는 대신 VIA와 같은 멋진 온라인 웹 페이지를 만들지 않겠습니까? A : 입력 장치와 상호 작용하는 임의의 온라인 위치에서 JavaScript를로드하는 것은 잠재적 인 보안 위험입니다. 구성 웹 페이지는 로컬이며 외부에서 아무것도로드되지 않습니다.
Q : Linux의 Chromium은 작동하지 않습니다. A : 아마도 권한을 조정하거나 해당 UDEV 규칙 파일을 작성하고 사용자가 올바른 그룹에 있는지 확인해야 할 것입니다.
/etc/udev/rules.d/99-deskhop.rules
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c000", GROUP="plugdev", MODE="0660"
구성 웹 페이지는 고의적 인 난독 화로 인해 "이상한"것이 아닙니다. 스토리지가 매우 제한되어 있기 때문에 자체 압축합니다. 전체 소스는 100% 열려 있으며이 리포지어의 일부입니다. 당신은 모든 것을 직접 재건하는 것이 좋습니다.
새 USB 주변 장치를 연결하면 보드는 LED를 두 번 플래시하고 다른 보드에도 동일한 작업을하도록 지시합니다. 이렇게하면 USB 및 나가는 커뮤니케이션이 각 보드마다 작동하는지 테스트 할 수 있습니다.
먼저 키보드를 한쪽에 연결 한 다음 다른쪽에 연결 하여이 테스트를 수행하십시오. 모든 것이 정상이라면 두 경우 모두 LED가 빠르게 앞뒤로 플래시됩니다.
장치를보다 쉽게 사용하거나 구성하기에 더 간단하게 만들 수 있음에도 불구하고 일부 기능은 의도적으로 누락되었습니다. 다음은 이러한 결정에 대한 빠른 분석입니다.
이것은 여전히 아무것도 보장하지는 않지만 안전하고 보호 할 수있는 합리적인 기본 규칙을 만든다고 생각합니다.
확신하는. 차단기가있는 것이 권장되지만 그것 없이는 작동해야합니다.
마우스 움직임은 추상 좌표 공간에서 수행되며 컴퓨터는 물리적 화면과 어떻게 일치하는지 알아 내므로 작동해야합니다.
나는 아무것도 팔지 않습니다. 이것은 개인적이고 비상업적 인 취미 프로젝트 일뿐입니다.
[업데이트] 사용자가보고 한 바에 따라이 링크를 따르면 ELECROW에서 1 QB (PCB, 조립 된 PCB 또는 완전히 조립 된 장치)로 주문할 수있는 것 같습니다. 보드가 빈 도착하여 펌웨어를 직접 작성해야합니다.
[Update2] - 나는 Elecrow에게 아무것도 요구 한 적이 없지만 며칠 전에 그들은 향후 보드 프로토 타이핑에 사용될 작은 예산으로 프로젝트를 후원하기 위해 제안했습니다. 내 목표는 2 개 이상의 출력 등을 가진 더 나은 보드를 만드는 것이기 때문에 프로토 타이핑 서비스가 프로젝트에 도움이 될 수 있다고 생각합니다.
그렇습니다. 아이디어는 하나의 컴퓨터처럼 행동하게하는 것이 었습니다.
작동해야합니다. 최근 FW 업데이트 후 콤보 수신기에 대한 지원이 훨씬 나아질 것입니다.
작동해야합니다 - 별도의 수신기가있는 Anker 무선 마우스를 사용해 보았고 잘 작동했습니다.
답이있을 수있는 문제 해결 위키를 확인하십시오.
특정 상황에서 작동하는 경우 사용할 수있는 몇 가지 소프트웨어 대안이 있습니다.
그렇다면 모든 열정과의 거래는 무엇입니까? 나는 그것을 믿을 수 없다 - 제발 여러분 모두에게 감사드립니다! 나는 간단한 개인 프로젝트에 대한 이런 종류의 관심을 기대 한 적이 없으므로 초기 기능은 매우 기본적이며 (내 요리 기술과 마찬가지로) 대부분 내 우주를 다루고 있습니다. 더 넓은 장치 호환성, 더 많은 기능 및 버그가 적어야하는 펌웨어 업데이트를 계속 지켜봐주십시오. 이것은 취미 프로젝트이므로 시간이 지남에 따라 이해하고 최선을 다해 약속합니다.
계획된 기능 :
단일 Pico W 보드만으로 기본 기능을 제공하는 Lite 버전에서 작업하여 비용을 더욱 낮추고 추가 하드웨어 나 PCB가 추가되지 않더라도 시도해 볼 수 있습니다.
마우스 폴링은 이제 1000Hz에서 작동해야합니다 (그래프의 딥은 내 팔이 모든 움직임에서 아프다 :-)) : :

나는 모든 사람을 위해 더 나은 근무 환경을 조성함으로써 사람들을 돕고 도와주는 것을 제외하고는 이익이나 다른 이유를 위해 이것을하지 않습니다. 프로젝트를 더욱 지원하려면 국경없는 의사 와 같은 자선 단체에 대한 작은 기부를 고려하십시오.
도움을 주거나 고려해 주신 모든 분들께 감사드립니다!
나는이 프로젝트를 구축하려는 모든 사람이 내가 부상, 손해 또는 기타 결과에 대해 책임을지지 않는다는 것을 이해하고 인정하도록 친절하게 요청합니다. 귀하의 안전은 중요하며, 필요한 예방 조치를 취하고 프로세스 전반에 걸쳐 귀하의 복지에 대한 개인적인 책임을 가정 하면서이 프로젝트에 신중하게 접근하는 것이 좋습니다. 감전사, 불타고, 스트레스를 받거나 화를 내지 마십시오. 재미 있고 즐기십시오!
행복한 스위치!