ハイテクのクレイジーな世界では、問題を解決しようとしている風変わりな小さなプロジェクトが常にあることに気づきましたか?
毎日のワークフローで2つの異なるコンピューターを使用し、それらの間にキーボード/マウスのペアを1つ共有しています。 Amazonで見つかったいくつかのUSBスイッチングボックスを試してみると、彼らはすべて同様の問題に苦しんでいることに気づきました - 切り替えるのに時間がかかります。ボタンを見つけようとすると、率直に言ってプロセスは非常に不器用です。
私が望んでいたのは、キーボードショートカットを使用して出力をすばやく切り替える方法だけで、モニター間でマウスポインターを魔法のように動かすことで同じことをする機能と組み合わせたものでした。このプロジェクトにより、コンピューターが異なるオペレーティングシステムを実行していても、両方を行うことができます!
このデバイスは、キーボード/マウスとコンピューターの間の仲介者として機能し、両方のコンピューターとの接続を一度に確立および維持します。次に、選択に応じて、マウスとキーストロークをどこに転送するかを選択します。キーボードはマウスに続き、その逆であるため、マウスを他のデスクトップにドラッグするだけで両方が切り替わります。
マウスカーソルを魔法のようにジャンプさせるために、マウスHIDレポート記述子を変更して絶対座標を使用し、マウスレポート(まだ相対的な動きがあります)が内部的に蓄積され、正確な集計が位置に蓄積されます。
モニター領域を他のモニターの方向に置いておくと、y座標を保持し、最小xに最大xを交換し、出力をフリップします。これにより、カーソルが他のモニターの同じ高さでシームレスに表示され、スムーズな遷移の認識が向上します。

マウスをMacからLinuxにドラッグすると、出力が自動的に切り替わります。
実際のスイッチは、1つの矢印が移動を停止し、もう1つが開始する瞬間に発生します。
USBホストとして機能し、定期的にキーボードをクエリするため、HIDレポートに事前に設定されたホットキーを探します(通常、CTRL + Caps Locks Lock)。見つかった場合、後続のすべての文字を他の出力に転送します。
いつでも使用している出力を視覚的に示すために、キーボード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/およびExecute ./render.pyをチェックするには、Jinja2がインストールする必要があります。
ディスクを再構築するには、ディスク/フォルダーをチェックして./create.shを実行し、必要に応じてシステムに微調整します。 dosfstoolsが必要です(mkdosfsを提供するには)、
または、事前に構築された画像を使用できます。バージョン0.6以来、単一のユニバーサル画像しかありません。次の方法のいずれかでデバイスにコピーする単純な.uf2ファイルが必要です。
オプション1- (ファームウェア0.6以降)左Ctrl +右シフト + C + oを同時に押して、デバイスを「構成モード」にします。キーボードがプラグインされるデバイスは、再起動し、「deskhop」と呼ばれるUSBドライブに変わります。必要なのは、.uf2ファイルをコピーすることだけです。画像が検証されると、デバイスが点滅して再起動し、他のボードのアップグレードに進みます。この操作中、LEDは点滅します。完了すると、フラッシュと再起動を書き込み、操作が完了します。
注- これは実際の汎用USBドライブではなく、ファイルをコピーするために使用することはできません。
オプション2- ROMブートローダーの使用 - 各PICOを接続しながらオンボードボタンを押し、UF2を表示するフラッシュドライブにコピーします。 0.6以降の画像は、電源をいじることなくボタンを保持することをサポートしますが、デバイスの状態に関係なく、「プラグ中の保留ボタン」は常に機能するはずです。
そのYTビデオスライダーを特定の位置に移動しようとしたことはありますが、マウスはびくびくしすぎて、突然5人のように手を動かして「操作」を再び演奏していますか?
右Ctrl +右Altを押して、スローマウスモードを切り替えます。マウスポインターはかなり遅くなり、より細かい精度の作業を完了し、同じキーを再び迅速に押すことでマウスを通常動かすことができます。
1つの画面に自分自身をロックしたい場合は、 RIGHT CTRL + Kを使用してください。これにより、現在の画面を誤って離れないようにします。オフにするには、同じキーコンボをもう一度押します。
RIGHT CTRL + L使用して、両方のコンピューターを一度にロックできます。この機能を使用するには、最初に構成の各出力のOSを設定します(ショートカットが異なるため)。
ゲームをしている場合、絶対マウスモードでゲームが適切に機能しない可能性があります。その問題に対処するために、 LEFT CTRL + RIGHT SHIFT + Gによって切り替えられるゲームモードが導入されます。ゲームモードでは、現在の画面にロックされ、マウスは標準的な相対マウスのように動作します。これにより、さまざまな仮想マシンの問題、現在サポートされていないオペレーティングシステムなども修正する必要があります。
おそらくコンピューターがスタンバイに入るのを防ぐために組み込まれていると思われますが、真実は語られます - 見るのは楽しいです。デフォルトでは、マウスポインターがポンボールのように画面の周りでバウンスします。有効にすると、ユーザー構成ヘッダーで定義された期間の不活性の後にアクティブになり、その画面に出力を送信するとすぐに自動的にオフになります。
潜在的な使用例 - スタンバイからビデオを再開しないバギーUSBドックがあるため、睡眠を許可しないと便利な回避策があります。
サーキットは、2つのRaspberry Pi Picoボードに基づいており、安価(4.10€ / PC)であるために選択され、手ではんだ付けでき、ほとんどのサプライヤーは在庫があります。
PicosはUARTを使用して接続され、アナログデバイスADUM1201デュアルチャネルデジタルアイソレーター(〜3€)またははるかに安価で、より速く、ピン互換のTI ISO7721DR(〜1.5€)で分離されています。
通常、デュアルUSBのサポートはありませんが、RP2040で見つかったプログラム可能なIOウィザードリーを使用してUSBが実装される素晴らしいプロジェクトのおかげで、USBホストとデバイスの両方として機能することがサポートされています。
DIYビルドのために可能な限りシンプルに保つために、トレースは片側に保持され、部品の数は最小限に抑えられました。

USB D+/D-微分線は長さが同一である必要がありますが、対応するGPIOトレースPico PCB自体の長さの違いに対抗するために意図的にわずかに非対称であるため、全長が一致するはずです。
ZD(差動インピーダンス)は、90オーム(〜107を得ることができ、十分に近い:))として対象です。
厚さは、スナップフィットが予想どおりに機能するように1.6 mmになるように設計されています。
PCBには2つのバージョンがあります(ユーザーに大きな違いはありません)。オリジナル(v1.0)ははんだ付けと組み立てが簡単ですが、v1.1は次のようなアップグレードを提供します。
このバージョンは、小さな過渡電圧サプレッサーICと0805抵抗器のため、手ではんだ付けをやや困難にしますが、完全に実行可能です。テレビは理論的には省略できます(アドバイスされていません)、それでも機能します。
今後 - ピコを必要としない裸のRP2040を備えたボードは、より小さく、より便利です。
私は3Dがあまり得意ではないので、ケースはシンプルで基本的ですが、仕事をします。印刷が簡単で、フィラメントが約33gを使用し、数時間かかります。
水平方向のPCBの動きは、穴を滑らせ、垂直方向の動きを側面にスナップフィットのラグで滑り込ませることで反論されます - ネジは必要ありません。ケースには、ロゴと2つの追加のスナップフィットラグを備えたわずかな再設計が与えられたため、より良いシールを提供します。
両方のボードのマイクロUSBコネクタはケースの側面からオフセットされるため、わずかに大きな穴がケーブルに届くようになります。
蓋はスナップフィットのデザインで、開口部用のドライバースロットがあります。上部のマーキングは埋め込まれており、例えばクレヨンで仕上げることができ、より良いコントラスト(または単に残されたまま)を与えます。

| 成分 | 数量 | 単価 /€ | 価格 /€ |
|---|---|---|---|
| Raspberry Pi Pico | 2 | 4.10 | 8.20 |
| ADUM1201BRZ | 1 | 2.59 | 2.59 |
| キャップ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 | Raspberry Pi Pico | 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 | 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フラッシュ構成を削除する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スクリーンセーバーを無効にするLeft CTRL + Caps Lock - 出力を切り替えます注:一部のキーボードは、両方のシフトを同時に適切に送信しないため、ショートカットが変更されました - すべての人のために機能します。混乱をお詫びします。
この手順は必要ありませんが、画面のサイズが完全に揃っていないか、サイズが異なる場合は便利です。目的は、マウスポインターをまったく同じ高さで出すことです。

マウスを小さな画面/下部画面(図解)の高さにある大きな画面に駐車し、 Right Shift + F12 + Yを押します。 LED(およびCaps Lock)は確認でフラッシュする必要があります。
底の境界線を繰り返します(大きな画面の境界線の上にある場合)。これにより、フラッシュに保存され、これからこのキャリブレーション値を保持する必要があります。
WindowsとMacには、複数の画面と絶対的なポジショニングに関する問題があるため、回避策が必要です(まだ実験的です)。建設中のより良い回避策がありますが、今のところ、各出力と画面の数のオペレーティングシステムを設定する必要があります。
メイン画面は中央にあり、エッジ上のセカンダリ画面にある必要があります。実際のオプションを構成するには、デバイスのWeb構成ページを開きます。

FW 0.6から始めて、改良された構成モードが導入されています。デバイスを構成するには、次の手順に従ってください。


Q:この奇妙なUSBドライブを処理する代わりに、Viaのような素敵なオンラインWebページを作成してみませんか? A:入力デバイスと対話するランダムなオンライン場所からJavaScriptをロードすることは、潜在的なセキュリティリスクです。構成Webページはローカルのみであり、外部からロードされるものはありません。
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"
意図的な難読化のために、構成Webページは「奇妙」ではありません。ストレージは非常に限られているため、自己受圧です。ソース全体が100%オープンで、このレポの一部です。すべてを自分で再構築することをお勧めします。
新しいUSB周辺機器を接続すると、ボードはLEDを2回フラッシュし、他のボードに同じことをするように指示します。これにより、各ボードでUSBおよび発信通信が機能するかどうかをテストできます。
最初に片側にキーボードを接続し、次にもう片方にプラグインしてこのテストを行います。すべてが問題ない場合、両方の場合にLEDがすばやく前後に点滅します。
デバイスの使用が容易になるか、構成がよりシンプルになるという事実にもかかわらず、いくつかの機能は意図的に欠落しています。これらの決定の迅速な内訳は次のとおりです。
これはまだ何も保証していませんが、あなたを安全で保護するための合理的な一連の基本ルールを作ると思います。
もちろん。アイソレータを持つことをお勧めしますが、それなしでは動作するはずです。
マウスの動きは抽象的な座標空間で行われ、コンピューターは物理画面にどのように対応するかを計算するため、機能するはずです。
私は何も売っていません、これは単なる個人的な非営利的な趣味プロジェクトです。
[更新]ユーザーが報告したようにこのリンクをたどると、Elecrowから1の数量(PCB、組み立てられたPCB、または完全に組み立てられたデバイスのいずれか)で注文できるようです。ボードが空白になり、ファームウェアを自分で書く必要があります。
[Update2] - 私はElecrowに何も頼んだことはありませんでしたが、数日前、彼らは将来のボードプロトタイピングに使用される小さな予算でプロジェクトを後援することを申し出ました。私の目標は、2つ以上の出力などを備えたより良いボードを作成することであるため、プロトタイピングサービスはプロジェクトにとって有益であると思います。
はい、アイデアは、単一のコンピューターのように振る舞うことでした。
それは機能するはずです。最近のFWアップデートの後、コンボレシーバーのサポートははるかに優れているはずです。
それは機能するはずです - 別のレシーバーを備えたAnkerワイヤレスマウスを試してみてください。
いくつかの答えがあるかもしれないThe TroubleshingWikiをチェックしてください。
特定の状況で機能する場合に使用できるソフトウェアの選択肢はいくつかあります。
それで、すべての熱意との取引は何ですか?私はそれを信じられません - 私に皆さんに感謝させてください!私はこの種の個人的なプロジェクトにこの種の関心を期待したことがないので、最初の機能はかなり基本的で(私の料理のスキルと同じように)、主に私自身のユーザーケースをカバーしています。より広いデバイスの互換性、より多くの機能、およびバグを減らすファームウェアの更新にご期待ください。これは趣味のプロジェクトであるため、時間が制約されていることを理解し、できる限り最善を尽くすことを約束します。
計画された機能:
単一のPico Wボードで基本的な機能を提供するLiteバージョンで作業し、コストをさらに引き下げ、ハードウェアやPCBが追加されていなくても試してみることができます。
マウスのポーリングは1000 Hzで動作するはずです(グラフのディップは、すべての動きで私の腕が傷つくのです:-):):

私はこれを利益や他の理由でこれを行っていません。プロジェクトをさらにサポートしたい場合は、国境のない医師のような慈善団体に少し寄付することを検討してください。
それを助けたり考えたりしてくれたすべての人に感謝してください!
このプロジェクトを構築しようとする人は、怪我、損害、またはその他の結果について責任を負わないことを理解し、認めていることをお願いします。あなたの安全は重要です。私はあなたがこのプロジェクトに注意深くアプローチし、必要な予防策を講じ、プロセス全体を通してあなたの幸福に対する個人的な責任を引き受けることをお勧めします。感電したり、火傷したり、ストレスを感じたり、怒ったりしないでください。楽しんで楽しんでください!
Happy Switchin '!