注目キーワード

【Raspberry Pi 】Pythonでキーボードのイベントを取得するぞ!(Python)

すけろく
うーむ
げんろく
どうした。
難しい顔をして。
すけろく
PythonでRaspberry Pi につないだ
キーボードのどのキーが押されたか
わからんのだ。
げんろく
よし。
今回はPythonでRaspberry Pi の
キーボードイベントを調べてみよう。
今回の記事は、Raspberry Pi OS上でのPython開発をしていると、
カメラ制御などの際に、画像や動画の取得の開始や停止を制御するのに
キーボードなどのイベントと連携させて行うことも多いはず。
そこで今回は、Raspberry Pi に接続したキーボードで、押されたキーを
Pythonで認識してプログラミングする方法をご紹介します。
この方法を使えば、キーボード以外のデバイスのイベントを有線/無線の区別なく
認識するPythonプログラムを記述することができます。
ぜひ試してみてくださいね!

今回使用するRaspberry Pi はこちら!

created by Rinker
Raspberry Pi
¥12,900 (2025/04/19 19:39:34時点 Amazon調べ-詳細)
created by Rinker
Traskit
¥11,300 (2025/04/19 19:39:35時点 Amazon調べ-詳細)
created by Rinker
¥3,350 (2025/04/19 09:36:02時点 Amazon調べ-詳細)
created by Rinker
¥3,780 (2025/04/19 09:36:02時点 Amazon調べ-詳細)

 

 

基本的に設定はコマンドベースで行います。入力コマンドは、「コマンド」と色を付けて記載します。入力の結果出力される内容については、「出力」のような色で記載しています。
各コマンドの頭にある「$ 」はプロンプト部分なので、入力は不要です。
本記事の前提としては、以下の記事で設定したPython仮想環境をベースにしています。
先にこちらの記事を読まれることをおススメします。
関連記事

すけろく んー なんだか、変わってしまったのう げんろく どうした? むずかしそうな顔をして。 すけろく Raspberry Pi OSのPythonにパッケージを 入れる[…]

Pythonの環境を準備する

今回使うPythonの環境は、Raspberry Pi OS上にPython仮想環境を立て、行います。

パッケージは、Raspberry Pi OS上にあるPython環境をPython仮想環境にコピーしています。

 

パッケージの準備

今回、Pythonでキーボードなどのイベントを取得するパッケージは次のものを使用します。

パッケージ名 ドキュメント
evdev パッケージのドキュメントはこちらをクリック!

パッケージのインストール

パッケージのインストールは、次のコマンドを実行します。

(env)$ pip3 install evdev

Pythonプログラムによる確認

インストールしたパッケージを使って、キーボードなどのイベントを取得します。

次の3つのプログラムで確認していきます。

  1. Raspberry Pi OSで認識されているイベント番号の確認プログラム
  2. キーイベントなどの「evdev」パッケージでの認識名の確認プログラム
  3. キーイベントを判定基準に使ったプログラム

Raspberry Pi OSのイベント番号確認プログラム

Raspberry Pi OSでは、電源ボタンなども含め、接続されているデバイスの

イベントを「/dev/input」で管理しています。

次のコマンドでもイベント番号を確認できます。
(env)$   ls /dev/input
by-id by-path event0 event1 event2 event3 event4 event5 event6 event7 event8 event9 mice mouse0
これを「evdev」パッケージを使って、もう少しわかりやすく表示するPythonプログラムを作成します。

Pythonプログラムの作成

Raspberry Pi OSに以下のプログラムをファイルに保存します。
(例では、「src/KeyBoard_」というディレクトリに「device_event_info.py」という名前で保存しています。
保存したら、次のコマンドでプログラムを実行します。
(env)$  python3 src/KeyBoard_/device_event_info.py
/dev/input/event0 pwr_button gpio-keys/input0
/dev/input/event1 vc4-hdmi-0 vc4-hdmi-0/input0
/dev/input/event2 vc4-hdmi-0 HDMI Jack ALSA
/dev/input/event3 vc4-hdmi-1 vc4-hdmi-1/input0
/dev/input/event4 vc4-hdmi-1 HDMI Jack ALSA
/dev/input/event5 ELECOM ELECOM TK-FCP096 usb-xhci-hcd.0-2/input0
/dev/input/event6 ELECOM ELECOM TK-FCP096 Consumer Control usb-xhci-hcd.0-2/input1
/dev/input/event7 ELECOM ELECOM TK-FCP096 System Control usb-xhci-hcd.0-2/input1
/dev/input/event8 ELECOM ELECOM TK-FCP096 Wireless Radio Control usb-xhci-hcd.0-2/input1
/dev/input/event9 ELECOM ELECOM TK-FCP096 Mouse usb-xhci-hcd.0-2/input1
上記のようにイベントIDとデバイスが出力されます。
例えば 「event0」 は、電源ボタンとして認識されています。
今回はELECOM製の次のキーボードをRaspberry Pi のUSBポートに接続していますので、
「event5」~「event9」になりますが、実際にキーイベントを取るためには「event5」
を使います。
created by Rinker
エレコム(ELECOM)
¥2,600 (2025/04/19 13:35:54時点 Amazon調べ-詳細)
このキーボード、小さくて有線なので、Bluetoothが使えない場合にも使える貴重な商品です。

キーイベントの「evdev」パッケージでの認識名の確認プログラム

次に、キーボードなどでキーを押した場合に、「evdev」内でどのように認識されているかを
確認するプログラムを作成します。

Pythonプログラムの作成

Raspberry Pi OSに以下のプログラムをファイルに保存します。
(例では、「src/KeyBoard_」というディレクトリに「device_event_check.py」という名前で保存しています。
保存したら、次のコマンドでプログラムを実行します。
(env)$  python3 src/KeyBoard_/device_event_check.py
device /dev/input/event5, name "ELECOM ELECOM TK-FCP096", phys "usb-xhci-hcd.0-2/input0", uniq ""
key event at 1744942972.256194, 2 (KEY_1), down        ←「1」キーが押された
key event at 1744942972.376201, 2 (KEY_1), up
key event at 1744942975.448373, 17 (KEY_W), down       ←「W」キーが押された
key event at 1744942975.600380, 17 (KEY_W), up
key event at 1744942977.872511, 42 (KEY_LEFTSHIFT), down   ←「左Shift」キーが押された
key event at 1744942978.016518, 42 (KEY_LEFTSHIFT), up
key event at 1744942978.736559, 29 (KEY_LEFTCTRL), down   ←「左Ctrl」キーが押された
key event at 1744942978.920569, 29 (KEY_LEFTCTRL), up
key event at 1744942979.432597, 57 (KEY_SPACE), down     ←「SPACE」キーが押された
key event at 1744942979.560602, 57 (KEY_SPACE), up
key event at 1744942981.304706, 1 (KEY_ESC), down       ←「ESC」キーが押された
ESC : KEY Down Program Stop.
Program end
プログラムを実行するとキー入力待ちとなり、キーボードのキーを押すと
上記のようにイベントIDと認識名「KEY_1」などが出力されます。
「ESC」キーを押すと、プログラムが停止します。
この認識名を使うことで、Pythonプログラム内でどのキーが押されたかを
もとに処理をプログラミングすることができます。

キーイベントを判定基準に使ったプログラム

最後に、これまで調べた「evdev」の内容をもとに、
キーが押された際の処理を記述したプログラムを作成します。

Pythonプログラムの作成

Raspberry Pi OSに以下のプログラムをファイルに保存します。
(例では、「src/KeyBoard_」というディレクトリに「keyboad_test.py」という名前で保存しています。
保存したら、次のコマンドでプログラムを実行します。
(env)$  python3 src/KeyBoard_/keyboad_test.py
key event at 1744943900.420224, 2 (KEY_1), down
1 : KEY Down Program Stop.
key event at 1744943900.540231, 2 (KEY_1), up
key event at 1744943906.756578, 17 (KEY_W), down
w : KEY Down Program Stop.
key event at 1744943906.844585, 17 (KEY_W), up
key event at 1744943911.916870, 57 (KEY_SPACE), down
SPACE : KEY Down Program Stop.
key event at 1744943912.060876, 57 (KEY_SPACE), up
key event at 1744943918.093215, 1 (KEY_ESC), down
ESC : KEY Down Program Stop.
Program end
プログラムでは、「1」「w」「SPACE」「ESC」の4つのキーが押された場合の
処理を記述しています。その他のキーが押されても何もしません。
処理としては、上記の赤字の部分の出力をしています。
この部分に他の処理を記述することで、キー入力による処理制御が可能になります。

編集後記

いかがだったでしょうか。

今回は、Raspberry Pi に接続されたキーボードなどで押されたキーの情報を

Pythonプログラムで認識して処理するプログラムをご紹介しました。

これがあれば、ディスプレイ接続がない状態でもキーボードなどの入力デバイスを

使って処理を行うことができます。

記事は以上になります。

最後までご覧くださりありがとうございました。

今回使用したRaspberry Pi はこちら!

created by Rinker
Raspberry Pi
¥12,900 (2025/04/19 19:39:34時点 Amazon調べ-詳細)
created by Rinker
Traskit
¥11,300 (2025/04/19 19:39:35時点 Amazon調べ-詳細)
created by Rinker
¥3,350 (2025/04/19 09:36:02時点 Amazon調べ-詳細)
created by Rinker
¥3,780 (2025/04/19 09:36:02時点 Amazon調べ-詳細)

Raspberry Pi の他の記事はこちらからどうぞ!

すけろく うーむ げんろく どうした。 難しい顔をして。 すけろく PythonでRaspberry Pi につないだ キーボードのどのキーが押されたか わからんのだ。 げんろく よし。 今回はPythonでRaspberry Pi の キーボードイベントを調べてみよう。 今回の記事は、Raspberry Pi OS上でのPython開発をしていると、 カメラ制御などの際に、画像や動画の取得の開始 […]

すけろく Raspberry Pi OS上ではなく、リモートで 開発環境を作れないものか。 げんろく うむ。 ディスプレイやマウス、キーボードをつないで 開発するのは面倒だからな。 すけろく そうなのだ。 SSHだけでやるのも面倒だし。 げんろく わかった。 VNCとVScodeを使ってリモートで 開発できる環境を作ってみよう! Raspberry Pi 5でPython開発する際に思うのは、開発 […]

すけろく んー なんだか、変わってしまったのう げんろく どうした? むずかしそうな顔をして。 すけろく Raspberry Pi OSのPythonにパッケージを 入れるために「pip」を使ったら コマンドを受け付けないのだ。 げんろく うむ。 少し環境が変わっているからのぉ よし確認してみるか。 Raspberry Pi OSでプログラムを実行する場合、Pythonを使うことも多いですが、Ra […]

すけろく よし!ユーザも変更したし、自動ログインも できないようにしたぞ! これでやっと・・・ げんろく それは良い心がけだな。 Wi-Fiの設定(パスフレーズの暗号化状態)は 確認したのかな? すけろく 。。。 げんろく 今すぐやったほうがよいよ! 念のためにな。 Raspberry Pi のOSインストール、セキュリティ設定とこれまで説明してきました。 この記事では、セキュリティ設定の続きとし […]

すけろく Raspberry Pi は、OSの書き込みも簡単で すぐに使いはじめられるな! げんろく 初期設定はちゃんとしたのか? まさか、初期設定のまま使っていることはないよな? すけろく 。。。 げんろく 初期設定のままだと、特にユーザ名は公開名だから セキュリティ上よろしくないのだ。 そのあたりも含めて説明しよう。 Raspberry Pi のOSインストール(MicroSDへの書き込み)に […]

すけろく 「ラズベリーパイ」を買ってきたぞ! げんろく 「お!もしかして、有名店のおいしいやつか!」って ベタな反応はしないぞ。Raspberry Piだろ? 前回も同じくだりがあったような。 すけろく チッ、つまらんやつだのう。 まあ、その通りだが。。。 Raspberry Pi のOS書き込みツールやら Raspberry Pi 5やらいろいろと出たので 初期設定の方法を再度確認したいのだ。 […]

すけろく うーむ。 このカメラは、Raspberry Pi では使えないのか? げんろく どうした。 カメラを見つめて。 すけろく Raspberry Pi でカメラがうまく認識できないのだ。 公式のカメラではないからなのか。 わからなくてな。 げんろく Raspberry Pi では、カメラの自動認識機能があって 認識範囲外のカメラを使うときはコツがいるぞ。 今回はそのあたりを紹介してみよう。 […]

すけろく うっ。 拙者ももはや、これまでか。。。 げんろく どうした!? 気をしっかり持つのじゃ! 何があった? すけろく わしの相棒(ラズパイ)からの連絡がここしばらくない。。 嫌われたかのう(涙)。。。 げんろく なんだ、そんなことか。 心配して損したのう。Rassbery Pi OS側のネットワークが 無効になったりすることもあるぞ。。 すけろく ・・・なに! 嫌われたのではないのだな! げ […]

すけろく よし!ユーザも変更したし、自動ログインも できないようにしたぞ! これでやっと・・・ げんろく それは良い心がけだな。 Wi-Fiのパスフレーズの暗号化はしたのかな? すけろく 。。。 げんろく 今すぐやったほうがよいよ! 念のためにな。 Raspberry Pi のOSインストール、セキュリティ設定とこれまで説明してきました。 この記事では、セキュリティ設定の続きとして、Wi-Fiのパ […]

すけろく Raspberry Pi は、OSの書き込みも簡単で すぐに使いはじめられるな! げんろく 初期設定はちゃんとしたのか? まさか、初期設定のまま使っていることはないよな? すけろく 。。。 げんろく 初期設定のままだと、特にユーザ名は公開名だから セキュリティ上よろしくないのだ。 そのあたりも含めて説明しよう。 Raspberry Pi のOSインストール(MicroSDへの書き込み)に […]

すけろく 外出先でノートパソコンとRaspberry Piで いい感じにドヤれる開発手法はないか? げんろく ほう。それならUSB On-The-Goを使う手があるぞ。 パソコンとRaspberry PiをUSBケーブルでつないで ゴニョゴニョできるしな。電源もとれる。 すけろく なに!いいではないか! それを教えてくれ。 カフェで優越感に浸っている自分が見えるぞ! げんろく 不純な動機だな。 最 […]

すけろく 「ラズベリーパイ」を買ってきたぞ! げんろく 「お!もしかして、有名店のおいしいやつか!」って ベタな反応はしないぞ。Raspberry Piだろ? すけろく チッ、つまらんやつだのう。 まあ、その通りだが。。。 今回は初期設定を学びたいと思っている。 げんろく わかった。 OSのインストールから初期設定までを教えてやろう。 皆さんは「Raspberry Pi」ってご存じですか? 「ラズ […]

すけろく Raspberry PiやJetsonのシングルボードコンピュータを使っていると 必要になるmicroSDカード。 何を買えばよいのやら。。。 げんろく microSDカードには意外といろんな規格があるんだよな。 しかも安価なものは信頼性が低かったりするし。 すけろく 価格で選んで、結果動かなかったり、動作が遅かったりする。 悩みどころだな。 げんろく ここいらで、一度microSDカー […]