😎

Pythonのライブラリで「お気に入りのショートカットキー作ってみる」 

2023/05/09に公開

下記のライブラリを利用してみます。
https://github.com/boppreh/keyboard

pip install keyboard

キーボードの押した内容を記録する。

escapeを押すまで記録する。
import keyboard

record_list = keyboard.record(until='escape')

for i in record_list:
    print(i)
実行結果
KeyboardEvent(w down)
KeyboardEvent(w up)
KeyboardEvent(e down)
KeyboardEvent(e up)
KeyboardEvent(r down)
KeyboardEvent(r up)
KeyboardEvent(t down)
KeyboardEvent(t up)
...

キーを押したタイミングで処理を実行する。

import keyboard

keyboard.add_hotkey('space', lambda: print('スペースキーが押された'))
keyboard.add_hotkey('w', lambda: print('wキーが押された'))
keyboard.wait()
実行して、キーを押すと...
wキーが押された
スペースキーが押された
wキーが押された
escapeで処理を終了させたい場合
import keyboard

keyboard.add_hotkey('space', lambda: print('スペースキーが押された'))
keyboard.add_hotkey('w', lambda: print('wキーが押された'))
keyboard.wait(hotkey='escape')

win32apiと連動させて、キー入力でアプリを起動する。

↓win32apiを活用して、ショートカットでアプリを起動してみましょう!
https://zenn.dev/timoneko/articles/c289e23dc997da

import keyboard
import win32api
import multiprocessing
from multiprocessing import Process
import os

pid_list = []


def terminate_pids():
    for i in pid_list:
        i.kill()


def open_notepad():
    """
    メモ帳を開く
    """
    print("メモ帳を起動")
    print(os.getpid())
    win32api.WinExec("C://Windows/System32/notepad.exe")


def exe_process():
    print("呼び出された")
    p = Process(target=open_notepad)
    pid_list.append(p)
    p.start()


if __name__ == '__main__':
    multiprocessing.freeze_support()  # windowsOS対応
    keyboard.add_hotkey('ctrl+i', lambda: exe_process())
    keyboard.add_hotkey('escape', lambda: terminate_pids())
    keyboard.wait(hotkey='escape')

「ctrl+i」キーを押すたびに、メモ帳が開きます(笑)
「escape」でPythonのプログラムが終了します。

好きなショートカットキーを作成してみましょう。

Discussion