您是否曾經註意到,在瘋狂的技術世界中,總是有一個古怪的小項目試圖解決問題,以至於唯一的競爭對手可能是左手螺絲刀和一個自隱藏的鬧鐘?
我在日常工作流程中使用兩台不同的計算機,並在它們之間共享一個鍵盤/鼠標對。嘗試在亞馬遜上找到的幾個USB切換盒,使我意識到它們都遇到了類似的問題 - 需要一段時間才能切換,在嘗試找到該按鈕時,該過程非常笨拙,坦率地說,隨著時間的流逝,它不會變得更好。
我想要的是一種使用鍵盤快捷鍵來快速切換輸出的方法,並通過神奇地將鼠標指針移動在顯示器之間的功能,從而可以使用相同的功能。即使您的計算機運行了不同的操作系統,該項目也可以同時完成這兩者!
該設備充當鍵盤/鼠標和計算機之間的中介,同時建立和維護兩台計算機的連接。然後,它根據您的選擇,選擇將鼠標轉發的位置和擊鍵。鍵盤遵循鼠標,反之亦然,因此只需將鼠標拖到另一個桌面上,這兩個都會切換。
為了使鼠標光標神奇地越過,更改了鼠標HID報告描述符以使用絕對坐標,然後鼠標報告(仍然以相對運動為中)積累了內部,將精確的計數保持在位置上。
當您嘗試以其他監視器的方向離開監視器區域時,它可以保持Y坐標並將最大X交換為最小X,然後翻轉輸出。這樣可以確保光標無縫地出現在另一個監視器上的相同高度上,從而增強了光滑過渡的感知。

將鼠標從Mac拖到Linux自動切換輸出。
實際開關發生在一個箭頭停止移動而另一個箭頭開始的那一刻。
它充當USB主機並定期查詢您的鍵盤,它在HID報告中尋找預先配置的熱鍵(通常為我ctrl + Caps鎖定)。當發現時,它將將所有後續字符轉發到另一個輸出。
要具有視覺指示,您可以在任何給定時刻使用哪種輸出,您可以重新使用鍵盤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 +右移 + C + O ,將設備放在“配置模式”中。您的鍵盤被插入將重新啟動並變成稱為“ Desphop”的USB驅動器。您需要做的就是將.UF2文件複製到它。驗證圖像後,設備將閃爍並重新啟動,然後繼續升級另一個板。在此操作中,LED會閃爍。完成後,它將寫入Flash和Reboot,完成操作。
注意- 這不是實際的通用USB驅動器,您無法使用它將文件複製到它。
選項2-使用ROM啟動程序 - 連接每個PICO時,請按下板上按鈕,然後將UF2複製到出現的閃存驅動器。圖像較晚的0.6支撐持續按鈕而無需在電源供電周圍固定按鈕,但是無論設備狀態如何,“插入時保持按鈕”應始終工作。
曾經試圖將YT視頻滑塊移至特定位置,但是您的鼠標移動過於跳動,突然間,您像5歲那樣超級移動手,然後再次播放“操作”?
按右CTRL +右ALT切換慢小鼠模式。鼠標指針將大大減慢,使您能夠完成更精確的精度工作,並通過再次按相同的鍵來使鼠標正常移動。
如果要將自己鎖定到一個屏幕上,請使用RIGHT CTRL + K這將確保您不會意外離開當前屏幕。要關閉,請再次按相同的鍵組合。
您可以使用RIGHT CTRL + L一次鎖定這兩台計算機。要使用此功能,請首先為配置中的每個輸出設置OS(因為快捷方式不同)。
如果您是遊戲,那麼您的遊戲可能與絕對鼠標模式無法正常工作。為了解決該問題,引入了遊戲模式,由LEFT CTRL + RIGHT SHIFT + G進行切換。在遊戲模式下,您將鎖定到當前屏幕上,並且鼠標的行為就像是標準的相對鼠標。這還應解決各種虛擬機問題,當前不支持操作系統等。
據說是為了防止計算機進入待機,但說實話 - 看著很有趣。默認情況下,將使您的鼠標指針像乒乓球一樣在屏幕上彈跳。啟用後,它在用戶配置標頭定義的不活動時間後激活,並在向該屏幕發送任何輸出後自動關閉。
潛在的用法示例 - 我有一個越野車USB碼頭,該碼頭不會恢復待機視頻,因此不允許它睡覺可以是方便的解決方法。
該電路基於兩個Raspberry Pi Pico板,因為它們便宜(4.10€ / pc),因此可以手工焊接,大多數供應商都可以使用它們。
PICOS使用UART連接,並通過模擬設備ADUM1201雙通道數字隔離器(〜3€)或更便宜,更快且與PIN兼容的Ti ISO7721DR(〜1.5歐元),這是首選的選擇。
儘管他們通常不支持雙重USB,但由於一個驚人的項目,使用RP2040中的可編程io巫師實施了USB,因此有支持它既可以充當USB主機又是設備。
為了使DIY構建盡可能簡單,將軌跡保持在一側,並且零件數量保持在最小。

USB D+/D-差分線的長度應相同,但是它們的目的是略有不對稱的,以應對相應的GPIO痕跡PICO PCB本身的長度差,因此總長度應匹配。
ZD(差異阻抗)的目的為90歐姆(設法獲得〜107,足夠接近:))。
該厚度的設計為1.6毫米,可按預期工作。
PCB有2個版本(用戶沒有重大差異)。原始(v1.0)更容易焊接和組裝,而v1.1提供了一些升級,例如:
由於瞬態電壓抑制器IC和0805電阻器,該版本的焊接稍難稍難,但這完全可行。從理論上講,電視可以省略(不建議),它仍然可以起作用。
即將到來的 - 帶有裸露的RP2040的板,不需要Picos,更小,更方便。
由於我對3D不太好,因此案例簡單而基本,但可以做到這一點。它應該易於打印,使用〜33克細絲,需要幾個小時。
水平的PCB運動被釘在側面的孔和垂直運動的釘子上通過側面的凸耳滑動 - 不需要螺釘。該箱子進行了輕微的重新設計,以配備徽標和兩個額外的快照凸耳,因此它提供了更好的密封。
兩個板上的微型USB連接器都偏離了外殼的側面,因此稍大的孔應允許電纜伸入。
蓋子是一種快速設計的設計,帶有螺絲刀插槽以打開。頂部的標記是嵌入式的,可以用蠟筆完成,以提供更好的對比度(或簡單地左右)。

| 成分 | 數量 | 單價 /€ | 價格 /€ |
|---|---|---|---|
| 覆盆子pi pico | 2 | 4.10 | 8.20 |
| ADUM1201BRZ | 1 | 2.59 | 2.59 |
| CAP 1206 SMD 100NF | 2 | 0.09 | 0.18 |
| USB-A PCB連接。 | 2 | 0.20 | 0.40 |
| 標題2.54 1x03 | 2 | 0.08 | 0.16 |
| 全部的 | 11.53 |
可以使用Ti ISO7721DR代替ADUM - 它與PIN兼容,更便宜並且具有更好的規格。
| 成分 | 部分 | 數量 | 單價 /€ | 價格 /€ |
|---|---|---|---|---|
| U1,U2 | 覆盆子pi pico | 2 | 4.10 | 8.20 |
| J1,J4 | USB-A PCB連接。 | 2 | 0.20 | 0.40 |
| U4 | ti iso7721dr | 1 | 1.40 | 1.40 |
| (或ADUM1201BRZ) | ||||
| C1,C2 | 上限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 | CAP 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。修訂版非常相似,並且過程基本相同。
config
Left ShiftLeft Ctrl + Right Shift + C + O輸入配置模式Right Shift + F12 + D刪除Flash配置Right Shift + F12 + Y保存屏幕開關偏移量用法
Right CTRL + Right ALT切換較慢的鼠標模式Right CTRL + K鎖/解鎖鼠標桌面開關Right CTRL + L一次鎖定兩個輸出(在之前設置輸出操作系統,請參見下面的快捷方式)Left ShiftLeft CTRL + Right Shift + G切換遊戲模式(鎖定到屏幕,充當標準鼠標)Left CTRL + Right Shift + S啟用屏幕保護程序Left CTRL + Right Shift + X禁用屏幕保護程序Left CTRL + Caps Lock - 輸出之間切換注意:有些鍵盤不能同時正確發送這兩個轉變,這就是為什麼更改快捷方式的原因 - 為所有人工作。為混亂表示歉意。
不需要此步驟,但是如果您的屏幕不完全對齊或尺寸不同,則可以方便。目的是讓鼠標指針以完全相同的高度出現。

只需將鼠標停在較小/下屏幕高的較大屏幕上(圖表),然後按Right Shift + F12 + Y 。您的LED(和CAPS鎖)應在確認中閃爍。
重複底部邊框(如果它在較大的屏幕邊框上方)。這將被保存到Flash,並且從現在開始就可以保持此校準值。
Windows和Mac有多個屏幕和絕對定位的問題,因此需要解決方法(仍然實驗)。正在建設中有一個更好的解決方法,但是目前您必須為每個輸出和屏幕數設置操作系統。
您的主屏幕需要在中間,邊緣屏幕上的屏幕。要配置實際選項,請打開設備的Web配置頁面。

從FW 0.6開始,引入了改進的配置模式。要配置設備,請按照以下說明:


問:為什麼不簡單地創建一個不錯的在線網頁,例如Via而不是處理這種怪異的USB驅動器?答:從隨機的在線位置加載JavaScript與輸入設備進行交互是一種潛在的安全風險。配置網頁僅是本地的,沒有外部加載。
問:Linux上的鉻無效。答:您可能需要調整 /開發權限或創建一個相應的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(用於PCB,組裝PCB或完全組裝的設備的數量訂購),如果您按照用戶報告的遵循此鏈接,您的董事會將空白到達,您必須自己編寫固件。
[UPDATE2] - 我從來沒有問Elecrow任何事情,但是幾天前,他們提出要贊助該項目,預算較小,該項目將用於未來的董事會原型製作。由於我的目標是創建一個擁有2個以上輸出等的更好董事會,因此我相信原型服務可能對該項目有益。
是的,這個想法是使其表現得像一台計算機一樣。
它應該起作用。經過最近的FW更新後,對組合接收器的支持應該更好。
它應該工作 - 嘗試使用單獨的接收器的Anker Wireless鼠標,而且工作正常。
查看可能有一些答案的故障排除Wiki。
如果在您的特定情況下可以使用,則可以使用幾種軟件替代方案。
那麼,所有熱情有什麼意義?我簡直不敢相信 - 請允許我感謝大家!我從沒想到過對一個簡單的個人項目的這種興趣,因此最初的功能非常基本(就像我的烹飪技能一樣),並且主要涵蓋我自己的用戶酶。請繼續關注固件更新,這些更新將帶來更廣泛的設備兼容性,更多功能和更少的錯誤。由於這是一個愛好項目,因此感謝您對時間限制並承諾盡我所能的理解。
計劃的功能:
在Lite版本上工作,該版本僅提供一個Pico W板提供基本功能,從而進一步降低了成本,即使沒有添加的硬件或PCB,也可以嘗試一下。
鼠標的投票現在應以1000 Hz的速度工作(圖中的傾角是我的手臂受到所有動作的傷害:-):):

我不是為了盈利或任何其他原因這樣做,只是嘗試通過為每個人創造更好的工作環境來幫助人們。如果您想進一步支持該項目,請考慮向像醫生這樣的慈善機構捐款。
請允許我感謝所有幫助或考慮的人!
我友好地要求任何試圖建立這個項目的人都了解並承認我對任何傷害,損害或其他後果都不承擔任何責任。您的安全很重要,我鼓勵您仔細處理該項目,採取必要的預防措施,並在整個過程中對您的福祉承擔個人責任。請不要被電死,燃燒,壓力或生氣。玩得開心,享受!
開關快樂!