Pythonでキーボード入力を検知する方法として、以下2つの手法が考えられます。
- 組み込み関数`input()`を使用する方法
- 第三者ライブラリを使用する方法
上記2つの手法について、簡単に解説していきます。
`input()`関数を使用したキーボード入力の取得
`input()`関数はPythonの組み込み関数で、キーボードからの文字列入力を取得できます。
【サンプルコード】
user_input = input("文字列を入力してください: ")
print(f"入力された文字列: {user_input}")
user_input = input("文字列を入力してください: ")は、キーボードからの入力を`user_input`という変数に保存します。
print(f"入力された文字列: {user_input}")は、キーボードから入力された文字列を表示します。
第三者ライブラリ`keyboard`を使用したキーボード入力の検知
`keyboard`は、キーボード入力を検知するためのライブラリです。
ライブラリのインストールは、`pip3 install keyboard`コマンドで行えます。
【サンプルコード】
import keyboard
while True:
if keyboard.is_pressed('q'): # 'q'キーが押された場合
print("qキーが押されました")
break
import keyboardは、`keyboard`ライブラリをインポートします。
while True:は無限ループを作成し、キーボード入力を常時監視できます。
if keyboard.is_pressed('q'):は、'q'キーが押されたかを検知し、print("qキーが押されました")は、'q'キーが押されたことを確認するためのメッセージを表示します。
breakは、'q'キーが押された場合に無限ループを終了する役割です。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
Gitでブランチ(branch)を作成する方法
crontabの書き方
PDFをExcelに変換する方法
Excelでプルダウンを設定する方法
エクセルでページ区切りを設定する方法
Markdownの取り消し線の書き方
ラズベリーパイでできること9選
Gitでbranch(ブランチ)を削除する方法をローカル・リモート別に解説
git addの取り消し方法を状況別に解説
CSSのstickyプロパティでWebサイトに固定要素を実装する方法
ITやプログラミングに関するニュース
アイアール技術者教育研究所がエクセルギー解析計算ウェビナーを開催、省エネと環境負荷低減に貢献
フラー株式会社がアプリ市場トレンド解説ウェビナーを3月25日に開催、成長アプリの共通項とデータ活用を解説
株式会社BOTANICOが2026年版X運用最新戦略ウェビナーを開催、成果につなげる資産型運用を解説
AIストーム株式会社がOpenClaw活用セミナーを開催、AIエージェントがビジネス現場を変革
株式会社オロが建設コンサルティング業向けウェビナーを開催、技術部門の損益可視化を支援
アルティウスリンク株式会社が経理向けBPO活用ウェビナーを開催、課題解決と業務効率化を支援
株式会社日本計画研究所がAI時代のインフラセミナー開催、GPUとデータセンターの課題を解説
株式会社カウンターワークスがリーシング業務AI活用ウェビナー開催、既存ツールでAIエージェント実践
株式会社セキドがDJI産業機セミナーを福井で開催、3Dデータ活用と機材選定を無料解説
株式会社ナビットが補助金活用ウェビナーを開催、販促費削減と集客力向上を解説

2件のコメント
コメントありがとうございます。
頂いたコメントのような現象が起こってしまう原因として、この関数を使ってキー入力を取得した後、input()関数でユーザーからの入力を待つと、keyboard.read_key()で取得したキー入力がinput()の入力バッファに残ってしまっていることが考えられます。
これは、keyboardライブラリが低レベルのキーイベントを扱っているために起こる現象です。
この問題を解決するための一つの方法は、input()を呼び出す前にキーボードバッファをクリアすることです。
しかし、Python標準ライブラリにはバッファを直接クリアする機能はありませんので、一つの解決策としてkeyboardライブラリを使ってinput()関数の代わりに、以下のような独自の入力関数を作成することです。
【サンプルコード】
import keyboard
def custom_input(prompt):
print(prompt, end=‘’, flush=True)
user_input = ’’
while True:
key = keyboard.read_key()
if key == ‘enter’:
print() # 改行を出力
break
elif key == ‘backspace’:
user_input = user_input[:-1] # 一文字削除
print(‘\b \b’, end=‘’, flush=True) # カーソルを一つ戻してスペースで上書き、再びカーソルを戻す
else:
user_input += key
print(key, end=’’, flush=True)
return user_input
kb = keyboard.read_key()
print(“You pressed:”, kb)
user_input = custom_input("Enter something: “)
print(”You entered:", user_input)
-—————————————
このcustom_input関数は、ユーザーが入力する各キーをkeyboard.read_key()を使って取得し、enterキーが押されるまで文字列を構築します。
これにより、標準のinput()関数を使用しないため、前に取得したキー入力が入力バッファに残る問題を避けることができます。
ただし、この方法はkeyboardライブラリの機能をフルに活用しており、特定の状況や環境では期待通りに動作しない可能性があります。
また、特別なキー(例えば矢印キーなど)のハンドリングや文字列入力の細かい制御には追加のロジックが必要になる場合があるので、一度試してみていただければと思います。
python で kb=keyboard.read_key() で押下キーを kb に取り込んだあと
input()の入力待ちで勝手に上記 kb で取り込んだ文字が表示
されて困惑しています。input()の前に kb="" としても del kb
としても同じです。対処法があればご教示下さい。