技術の木

簡単!PCの画面ロックを回避!?Raspberry Pi Picoでマウスエミュレーターを作る

スポンサーリンク

テレワーク中などちょっと離席したすきに画面ロックされて・・・

リモートによる在宅ワークする機会が増える昨今、自宅でパソコンを使っている方も多いと思いますが、ちょっと目を離したすきに画面がロックされてしまい、パスワードを入力して解除・・・
という事はないでしょうか?

私自身、宅配便の受取やトイレ・飲み物を取りになど、席を外すことがよくあるのですが、少し時間がかかってしまって、パソコンの前に戻るとロック画面がお出迎え・・・ということがしばしばあります。

画面ロックされないようにしたい!

そもそもどうして画面ロックされてしまうかというと、「スクリーンセーバーの設定」で「再開時にログオン画面に戻る」にチェックが入った状態になっているためです。

プライベート用のPCであればこちらのチェックを外せば問題は解決できるのですが、リモートワーク用のPCだった場合、セキュリティの為に設定を変えることができないという人もいるのではないでしょうか。

スクリーンセーバーを回避しよう!

スクリーンセーバーが起動される理由はシンプルで、「一定時間マウスやキーボードの操作がない」です。
なので定期的にキーボードかマウスを操作していればスクリーンセーバーが起動されることはありません。

自動的に操作されるようにしたい!

Amazonや楽天市場で「スクリーンセーバー防止」で検索してみたところ何やら怪しげな商品が・・・
値段も数千円~6千円くらいするようです。

ここでは紹介しませんが気になる方は検索してみてください。

ただし、値段はそこそこですが、そもそもあまり見かけない商品ですので、思い通りに動作するのか心配なのはもちろんのこと、万が一余計な動作(セキュリティ的な意味も含めて)をすることも心配なので、私としてはオススメしません。

自分で作れば安心

はい、ようやく本題です。

たかがスクリーンセーバーを回避する為だけに数千円以上もするあまり見慣れない商品に手を出すのはちょっと・・・

じゃあ、安くてお手軽に自分で作れないかなと思い、考えついたのはRaspberry Pi Picoでマウスやキーボードの操作をエミュレートしてやれば良いのでは?という事でした。

調べてみるとCIrcuitPythonにマウスとキーボードのライブラリがあったので、こちらを使うことにしました。

簡易版を作る

とりあえず画面ロックを回避できればよいので、難しいことはせず簡単なものを作ってみました。

ソースコード(code.py)
from board import *
import digitalio
import usb_hid
from adafruit_hid.mouse import Mouse
import time

###
# LED定義Pin25
led = digitalio.DigitalInOut(GP25)
led.direction = digitalio.Direction.OUTPUT
# Mouse定義
mouse = Mouse(usb_hid.devices)
###
# Mouse move
def movingMouseX(x=0):
    #移動速度を定義
    speed = 3
    #xの絶対値を取得
    l = abs(x)
    # l = speed * loop
    loop = int(l/speed) + 1
    xSign = 1 if x > 0 else -1
    # speed分ずつマウス移動する(ゆっくり移動)
    for m in range(loop):
        mouse.move(speed * xSign, 0, 0)

### メイン処理
if __name__ == "__main__":
    # LED On (起動確認用)
    led.value = True
    # マウス移動距離(右)
    distanceX = 200
    while True:
        movingMouseX(x=distanceX)
        # 移動方向を反転する(右⇔左)
        distanceX = distanceX * -1
        time.sleep(60)
ポイント

まず自動起動させるため、ファイル名をcode.pyとします。

マウス操作のために使うライブラリはusb_hidadafruit_hid.mouse.Mouseになります。

マウスカーソルを操作するにはmouse.move(x=0, y=0, wheel=0)を使ます。
引数には現在値からの移動量を指定します。
x:カーソルを左右に移動(左 < 0 < 右)
y:カーソルを上下に移動(上 < 0 < 下)
wheel:ホイールを前後に移動(後 < 0 < 前)

このコードのメイン処理では、60秒毎にマウスカーソルを左右に移させています。

ユーザ関数のmovingMouseX(x)では、マウスカーソルがゆっくりと移動するように引数に指定したX軸の移動量分、speedの量ずつカーソルを移動するようにしています。

あとは出来上がったプログラムファイルをRaspberry Pi Picoに転送します。

まとめ

今回、スクリーンセーバーの回避だけなので単純な操作だけのシンプルな形で実装しています。

例えば、カーソル移動をランダム化やAIで操作させたり、絵を描く動きをしてみたりと、グレードアップしたものへと作り変えていくのも面白いと思います。

また使用したRaspberry Pi Picoも低価格で手に入るので、手軽にプログラミングや電子工作をやってみたい方にもオススメできるかなと思いました。

Picoのプログラミング環境や入手先などについては以前の記事で紹介していますので、良かったら参考にしてみてください。

タイトルとURLをコピーしました