STM32F103C8T6でMouse Jigglerを作ってみた

投稿者: | 2025/08/20

PCのスクリーンセーバーが頻繁に動作して解除が面倒くさくなりませんか?
個人で使用しているPCはスクリーンセーバーが動作する時間を長くしているのですが、仕事で使っているPCは5分程度でスクリーンセーバーが動作し、解除するにはパスワードを入力しなければなりません。しかも、セキュリティ対策とかいってパスワードはどんどん長くなる一方です。
そこで、今回は スクリーンセーバーを動作させないようにするツールを作ってみました。
作った後に調べてみると、どうも Mouse Jigglerと呼ばれているようで、なんと市販品まであるそうな。知らなかった…
リモートワークで離席中に「待機中」とならないようにするのが目的とか、ちゃんと仕事しろよ(笑)

仕様

  • USB Mouseをエミュレートする。
  • スイッチで動作をON/OFFできる。
  • STM32F103C8T6 BlackPillボードを使う。

USB Mouseエミュレーション

簡単でした Emulate STM32F103 as a MOUSE からUSB Mouse エミュレーションのサンプルコードを入手し、ちょっと改造しただけです。総製作時間 1時間

  • サンプルコードは3Dセンサーの傾きを検出してマウスカーソルを移動させるのですが、定期的にマウスカーソルを移動させるように変更しました。3Dセンサーとか持ってないですし。
  • PB7にタクトスイッチをつけて、動作をON/OFFできるようにしました。
    ONボードのスイッチはリセットなので使えないんですよね…ちょっと格好悪くなりました。
  • PB8でリセット解除後 USB D+ をプルアップしている 1.5kΩを一度GNDに落とし、USBコネクタの抜き差しすることなくデバイスを認識させるようにしました。

STM32F103 MOUSE として認識されました。

感想

  • 久しぶりにST-LINK V3を使いましたが、BlackPillにUSBケーブルをつないでいなかったので、ターゲットに電源が供給されないのに気づかず、しばらく悩みました。
    Fake Chipでデバッガがつながらないのかと疑ってしまいました。
  • 100均で購入したマイクロUSBのケーブルが充電専用でデータラインがつながっていなくて、なんで動かないのかしばらく悩みました。
    ケーブルを購入した時のパッケージには充電専用と書かれていたのでしょうが、ケーブルだけポロンとあったら分からなくなります。(私だけ?)
  • マウスカーソルの移動間隔を1秒とし、移動も1ステップにしたので、普通のマウスとの併用も特に問題なくできます。

まぁ、作ってみただけです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください