【クイズ】コピペを便利に(Windows専用)

最近、問読みの準備をしていて、固有名詞の読みやスペルを調べる機会が多くなりました。この時の作業は

  1. Webで検索

  2. 記事からコピー

  3. 原稿にペースト

なのですが、「ペーストの時には【】で囲いたい」「英数字、記号を半角に揃えたい」などの欲望が出てきたので、実現するプログラムを作ってみました

ソースコード(ClipBoardNormalizer.py)

> python ClipBoardNormalizer.py
で実行する

import json
import pyperclip
import keyboard
import time

def normalize_name(text, dictionary):
    for translate_item in dictionary["name_normalization"]["translate"]:
        text = text.translate(
            str.maketrans(translate_item["from"], translate_item["to"])
        )

    return text

with open("normalize.json", "r", encoding="utf-8") as f:
    config = json.load(f)

    shortcut_key = config["shortcut_key"]
    print(f"ショートカットキー: {shortcut_key}")

    is_shortcut_pressed = False

    while True:
        time.sleep(0.01)

        if keyboard.is_pressed(shortcut_key) and not is_shortcut_pressed:
            is_shortcut_pressed = True
            clipboard_text = pyperclip.paste()

            if len(clipboard_text) == 0:
                continue

            print(f"変換前: {clipboard_text}")

            for translate_item in config["text_normalization"]["translate"]:
                clipboard_text = clipboard_text.translate(
                    str.maketrans(translate_item["from"], translate_item["to"])
                )

            clipboard_text = f'【{clipboard_text}】'
            print(f"変換後: {clipboard_text}")

            pyperclip.copy(clipboard_text)

        elif not keyboard.is_pressed(shortcut_key):
            is_shortcut_pressed = False

設定ファイル(normalize.json)

ソースコードと同じ場所に配置する
"shortcut_key"に指定したいショートカットキーを指定する
"translate"に「変換前文字(from)→変換後文字(to)」の変換規則を記載する

{
    "shortcut_key": "ctrl+alt+d",
    "text_normalization": {
        "translate": [
            {
                "from": " ",
                "to": " "
            },
            {
                "from": "0123456789",
                "to": "0123456789"
            },
            {
                "from": "abcdefghijklmnopqrstuvwxyz",
                "to": "abcdefghijklmnopqrstuvwxyz"
            },
            {
                "from": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
                "to": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            },
            {
                "from": "!"#$%&'()*+,-./:;<=>?@[¥]^_`{|}~",
                "to": "!\"#$%&'()*+,-./:;<=>?@[¥]^_`{|}~"
            }
        ]
    }
}

上の例では、「Ctrl+C」でテキストをコピー後、「Ctrl+Alt+D」を押すと、クリップボード内のテキストが下記のように変換されます
「ABCdef123」→「【ABCdef123】」
この後に「Ctrl+V」すれば貼り付けできます

注意事項

本プログラムの動作はキーロガーそのものなので、使用は自己責任でお願いします

実行ファイル(64bit版Windows専用)

上記のpythonソースコードをpyinstallerで実行ファイル化したものです
完全無保証です

課題、今後の改善点

  • 1キーで「変換+貼り付け」を一気にできるようにしたい

この記事が気に入ったらサポートをしてみませんか?