仕事やプライベートで複数のデスクトップPCを使用している人は、マウスやキーボードをいちいち切り替えるのが面倒に感じた経験があるかもしれません。ソフトウェアエンジニアのHrvoje Cavrak氏が、異なるOSで動いているPC間でも1組のマウスやキーボードの出力先を瞬時に切り替えられるUSB切替機を自作し、コードやハードウェアの設計をGitHubで公開しています。

GitHub - hrvach/deskhop: Fast Desktop Switching Device

https://github.com/hrvach/deskhop



Building A Better Keyboard And Mouse Switch | Hackaday

https://hackaday.com/2023/12/26/building-a-better-keyboard-and-mouse-switch/

Cavrak氏は毎日のワークフローで2台の異なるコンピューターを使用しており、それらを1組のマウスとキーボードで操作しているとのこと。しかし、Amazonで見つけたいくつかのUSB切替器を試したところ、出力先の切り替えにはタイムラグがあり、スイッチを押す手間も面倒だったそうです。

そこでCarvak氏は、キーボードショートカットキーを使用して出力を素早く切り替えたり、マウスポインタをデスクトップ間でドラッグするだけで出力を切り替えられるUSB切替器「DeskHop」を自作しました。

以下が、実際にCarvak氏が自作したDeskHopのレンダリング画像です。赤いのが3Dプリンタで出力したケースで、マウスやキーボード、PCを接続するための穴が空いており、ネジを使わずにはめることができるとのこと。内部のプリント基板は2枚のRaspberry Pi Picoをベースにしており、これはさまざまな通販サイトで数百円〜1000円台で入手可能です。



プリント基板の構成はこんな感じ。2枚のRaspberry Pi PicoはUARTを用いて接続され、Analog DevicesのデュアルアイソレータであるADuM1201で分離されているとのこと。DIYでの組み立てを簡単にするため、PCBトレースは片側に集められ、パーツの数も理論上最小限に抑えたとCarvak氏は述べています。



DeskHopはキーボード/マウスとPC間の中継器として機能し、2台のPCと同時に接続を確立・維持すると共に、状況に応じてマウス/キーボードの出力先を切り替えます。また、キーボードあるいはマウスの出力先が変わるともう一方もそれに追従するとのこと。

マウスカーソルはHIDレポート記述子が絶対座標を使用するように変更され、相対的な動きで送信されるマウスレポートを内部的に蓄積し、正確な位置測定が常に維持されるとのこと。マウスをドラッグして別のモニターがある方向に移動すると、Y座標(上下の位置)が維持されたまま最大X座標と最小X座標が交換され、スムーズにマウスが隣のモニターに移動するという仕組みです。

以下の画像をクリックすると、Macのデスクトップ(左)からLinuxのデスクトップ(右)にマウスをドラッグした際のGIF動画(約2MB)が再生されます。マウスの出力先が自動で切り替わり、スムーズに切り替えられていることがよくわかります。



また、キーボードはUSBホストとして機能し、事前に設定したホットキーを押すと出力先が別のPCに切り替わるようになっています。以下の画像をクリックすると、Macのデスクトップ(左)とLinuxのデスクトップ(右)でキーボードの出力先を切り替え、テキストを交互に書くGIF動画(約500KB)を見ることができます。



テクノロジー系メディアのHackadayは、DeskHopはWindows・Mac・Linuxで動作する上に、ハードウェアであるためPCにソフトウェアをインストールしないで済む点が素晴らしいと称賛しました。

DeskHopは完全に非商用かつオープンソースのプロジェクトとなっており、Carvak氏は必要なコンポーネントやコードをGitHubで公開しています。なお、テストされていないマウスやキーボードの組み合わせも多いため、時々予期しないバグが発生するとのことです。

GitHub - hrvach/deskhop: Fast Desktop Switching Device

https://github.com/hrvach/deskhop