Skip to content

Shinoryo/AutoHoldClick

Repository files navigation

AutoHoldClick

概要

  • AutoHoldClickは、指定したトグルキーを押すことで、マウスの左クリックまたは右クリックを保持し続けるツールです。
  • トグルキーを再度押すことで、クリックの保持を解除できます。
  • このツールは、繰り返し行うクリック操作の自動化や、長時間マウスボタンを保持する必要がある場合に便利です。

入力

  • 設定ファイル:config.json
    • toggle_key:クリックの開始・停止を切り替えるためのキー。Pythonのkeyboardモジュールでの指定方法に従う。
    • mouse_button:マウスの左クリック(left)または右クリック(right)。
  • ログ設定ファイル:log_settings.json
    • 読み込みに成功した場合、ログファイルを出力します。
    • 読み込みに失敗した場合、ログファイルは出力されません。
  • トグルキー:クリックの開始・停止を切り替えるためのキー。

出力

  • マウス操作:トグルキーで切り替えると、クリックの保持を開始・停止します。
  • ログファイル:動作状況やエラーのログを記録します。
  • 標準出力:現在の状態(クリック開始・停止など)を表示します。

想定実行環境

  • Windows OSのPC
  • Python 3.8以降
  • 必要なPythonライブラリー
    • pynput
    • six

実行方法

  1. 必要なPythonライブラリをインストールします(初回のみ):

    pip install -r requirements.txt
  2. ツールを実行します:

    auto_hold_click.exe --config config/config.json --log-settings config/log_settings.json
    • --config は必須です。設定ファイルのパスを指定してください。
    • --log-settings は任意です。指定しない場合は標準出力のみでログファイルは生成されません。
  3. 設定ファイルやログ設定ファイルは、configフォルダー内のconfig.jsonおよびlog_settings.jsonを編集してください。

処理詳細

  1. ログ設定ファイルを読み込む。
    • 読み込みに成功した場合、ログファイルを出力する。
    • 次の場合、ログファイルは出力しない。
      • ログ設定ファイルが見つからない場合。
      • ログ設定ファイルのJSON形式が不正である場合。
      • ログ設定ファイルの読み込み中にIOエラーが発生した場合。
      • ログファイルの親フォルダーが存在しない場合。
  2. 設定ファイルを読み込み、設定項目(toggle_keymouse_button)の設定値を取得する。
    • 次の場合、エラーログを出力し、ツールを終了する。
      • 設定ファイルが見つからない場合。
      • 設定ファイルのJSON形式が不正である場合。
      • 設定ファイルの読み込み中にIOエラーが発生した場合。
      • 設定項目(toggle_keymouse_button)のいずれかが存在しない場合。
      • 設定項目(toggle_keymouse_button)のいずれかの設定値が空文字列である場合。
      • 設定項目(toggle_keymouse_button)のいずれかの設定値が不正である場合。
  3. 指定されたトグルキーの入力を受け付ける。
    • トグルキーが入力された場合、クリックの保持を開始または解除する。
  4. Ctrl+Cが入力された場合、ツールを終了する。

ファイル仕様

設定ファイル

項目 説明
ファイルパス(実行フォルダーからの相対) config/config.json
ファイル形式 テキスト(JSON)
文字コード UTF-8(BOMなし)

記載例:

{
    "toggle_key": "f6",
    "mouse_button": "left"
}

ログ設定ファイル

項目 説明
ファイルパス(実行フォルダーからの相対) config/log_settings.json
ファイル形式 テキスト(JSON)
文字コード UTF-8(BOMなし)

記載例:

{
    "version": 1,
    "disable_existing_loggers": false,
    "formatters": {
        "fileFormatter": {
            "format": "%(asctime)s [%(levelname)s] %(message)s",
            "datefmt": "%Y-%m-%d %H:%M:%S"
        }
    },

    "handlers": {
        "fileHandler": {
            "class": "logging.handlers.TimedRotatingFileHandler",
            "level": "INFO",
            "formatter": "fileFormatter",
            "filename": "./log/AutoHoldClick.log",
            "when": "midnight",
            "interval": 1,
            "encoding": "utf-8"
        }
    },

    "loggers": {
        "__main__": {
            "level": "DEBUG",
            "handlers": ["fileHandler"],
            "propagate": false
        }
    },

    "root": {
        "level": "DEBUG"
    }
}

ログファイル

項目 説明
ファイルパス(実行フォルダーからの相対) log/AutoHoldClick.log
ファイル形式 テキスト
文字コード UTF-8(BOMなし)

出力例:

2025-05-07 03:34:07 [INFO] 処理開始
2025-05-07 03:34:07 [INFO] 設定ファイルの読み込みに成功しました: トグルキー=f6, マウスボタン=left
2025-05-07 03:34:07 [INFO] トグルキーでクリックON/OFFします(Ctrl+Cで終了)
2025-05-07 03:34:08 [INFO] Ctrl+C が押されました
2025-05-07 03:34:08 [INFO] 処理終了

ログメッセージ

No. 種別 ログ内容(表示/記録される内容)
1 情報 処理開始
2 情報 設定ファイルの読み込みに成功しました: トグルキー={toggle_key}, マウスボタン={mouse_button}
3 情報 トグルキーでクリックON/OFFします (Ctrl+Cで終了)
4 情報 処理終了
5 デバッグ {button_name}クリックを開始しました。
6 デバッグ {button_name}クリックを解除しました。
7 エラー ツール実行中に予期せぬ例外が発生しました。エラーメッセージ: {error}
8 エラー ツール実行中に例外が発生しました。エラーメッセージ: {error}
9 エラー ログ設定ファイルの読み込み中に例外が発生しました。パス: {file_path}
10 エラー ログ設定ファイルの読み込み中に予期せぬ例外が発生しました。パス: {file_path}
11 エラー ログ設定ファイルの読み込み中にIOエラーが発生しました。パス: {file_path}
12 エラー ログ設定ファイルが見つかりません。パス: {file_path}
13 エラー ログ設定ファイルのJSON形式が不正です。パス: {file_path}
14 エラー 設定ファイルが見つかりません。パス: {file_path}
15 エラー 設定ファイルのJSON形式が不正です。パス: {file_path}
16 エラー 設定ファイルの読み込み中にIOエラーが発生しました: {error}
17 エラー 設定項目が見つかりません。設定項目: {key}
18 エラー 設定項目の値が空です。設定項目: {key}
19 エラー 設定項目の値が不正です。設定項目: {key}, 設定値: {value}

終了コード

終了コード 名前 説明
0 SUCCESS 正常に終了した場合
1 SPECIFIC_ERROR 例外が発生した場合
2 UNEXPECTED_ERROR 予期しない例外が発生した場合

ライセンス

本プログラムのライセンス

  • このプログラムはMITライセンスに基づいて提供されます。

使用ライブラリーのライセンス

ライブラリ名 バージョン ライセンス
pynput 1.8.1 GNU Lesser General Public License v3
six 1.17.0 MIT License

検証環境

  • OS:Microsoft Windows 11 Home
  • CPU:Intel64 Family 6 Model 154 Stepping 3 GenuineIntel ~2100 Mhz
  • メモリー:16 GB
  • Python 3.12.10
  • 使用ライブラリー
    • pynput==1.8.1
    • six==1.17.0

改訂履歴

バージョン 日付 内容
1.0.3 2026-02-14 ビルドしたモジュールを配布するように修正
1.0.2 2026-02-09 各ファイルに著作権情報を追加し、main.pyの著作権年を2026年に更新
README.mdの実行方法を修正
ビルドモジュールを削除
1.0.1 2025-07-31 ビルドできるように修正 by @Shinoryo in #5
ログフォルダーが存在しない場合の挙動を注意制限事項に追記 by @Shinoryo in #6
pyinstallerコマンドに--nameオプションを追加し、手順を更新 by @Shinoryo in #7
1.0.0 2025-07-31 初版リリース

About

AutoHoldClick is a tool that allows users to simulate continuous mouse clicks. This tool is useful for automating repetitive tasks or holding down the mouse button for extended periods.

Topics

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages