Python でキープレスを検出する
キーボードのような入力デバイスのようなハードウェアへのアクセスが必要な場合、Python で利用可能なモジュールがあり、あなたの生活をはるかに簡単にすることができます。そのようなモジュールを使用することで、複雑なシステムを扱うことなく、自分が望むタスクを簡単に実行することができます。
この記事では、Python でモジュールを使ってキープレスを検出する方法を紹介します。Python にはキープレスを検出するために使われるモジュールがたくさんありますが、その中でも特に人気があり広く使われているのは keyboard
と pynput
の 2つのモジュールです。
Python の keyboard
モジュールを使って Python でキープレスを検出する
keyboard
モジュールは、キーボードを完全に制御することを可能にし、様々な事前定義された方法から選択することができます。これらの方法により、キーボードを操作したり、キーボード上でのユーザの物理的なキー押下を検出したりするのが非常に簡単になります。
keyboard
モジュールをインストールするには、コマンドプロンプトまたはターミナルから以下のコマンドを実行します。
pip3 install keyboard
まず、keyboard
モジュールをプログラムにインポートする必要があります。ここでは、Python の read_key()
、is_pressed()
、on_press_key()
の 3つのメソッドを使ってキープレスを検出しています。
import keyboard
while True:
if keyboard.read_key() == "p":
print("You pressed p")
break
while True:
if keyboard.is_pressed("q"):
print("You pressed q")
break
keyboard.on_press_key("r", lambda _: print("You pressed r"))
出力:
You pressed p
You pressed q
You pressed r
read_key()
はユーザがキーボード上でどのキーを押したかを読み取って、それが目的のキー (この場合は p
) であれば You pressed p
というメッセージを出力します。関数 read_key()
は文字を返します。
is_pressed()
は文字を入力として受け取り、ユーザが押したキーと一致すれば True
を、そうでなければ False
を返します。
on_press_key()
は 2つのパラメータを入力として取り、1つ目は文字、2つ目は関数です。ユーザが on_press_key()
関数の最初のパラメータで指定したキーと一致するキーを押下した場合、2 番目のパラメータで指定した関数のみが実行されます。
Python の pynput
モジュールを使って Python でキープレスを検出する
pynput
モジュールは、主にマウスやキーボードなどの入力デバイスを検出して制御するために使われます。しかし、このチュートリアルでは、キーボードの押下を検出するためにこのモジュールを使用する方法のみを見ていきます。このモジュールを使用する前に、以下のコマンドを使用してインストールする必要があります。
pip3 install pynput
このモジュールを利用するには、まず pynput
モジュールから keyboard
をインポートする必要があります。
from pynput import keyboard
def on_press(key):
try:
print("Alphanumeric key pressed: {0} ".format(key.char))
except AttributeError:
print("special key pressed: {0}".format(key))
def on_release(key):
print("Key released: {0}".format(key))
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
出力:
Alphanumeric key pressed: a
Key released: 'a'
Alphanumeric key pressed: b
Key released: 'b'
special key pressed: Key.ctrl_l
Key released: Key.ctrl_l
上記の出力は、ユーザがどのキーを押したかによって変化することに注意してください。
キープレスを検出するために、on_press
と on_release
の 2つの関数を定義しています。関数 on_press
はユーザがキーボードのボタンを押したときに実行され、ユーザがボタンを離すとすぐに on_release
が実行されます。
どちらの関数も、ユーザが押したキーと離したキーをコンソールウィンドウに表示するだけです。この 2つの関数の実装は、必要に応じて変更することができます。
そして最後に、キーボードのイベントを受信するリスナーを用意し、それに応じて on_press
と on_release
関数を実行します。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn